// This array holds all of the document's DHTML-able objects var dhtml_objects = new Array() // This function creates the custom objects that serve as cross-browser front-ends function create_object_array() { // All the
and tags are stored in these variables var div_tags var span_tags var css_tags // Is the browser W3C DOM compliant? if (document.getElementById) { // If so, use getElementsByTagName() to get the
tags div_tags = document.getElementsByTagName("div") // Loop through the
tags for (var counter = 0; counter < div_tags.length; counter++) { // Store the current object current_object = div_tags[counter] // Store how the browser accesses styles object_css = current_object.style // Store the object's id object_id = current_object.id // Only store those tags that have an id if (object_id) { // Create a new dhtml_object and store it in dhtml_objects dhtml_objects[object_id] = new dhtml_object(current_object, object_css, object_id) } } // Use getElementsByTagName() to get the tags span_tags = document.getElementsByTagName("span") // Loop through the tags for (var counter = 0; counter < span_tags.length; counter++) { // Store the current object current_object = span_tags[counter] // Store how the browser accesses styles object_css = current_object.style // Store the object's id object_id = current_object.id // Only store those tags that have an id if (object_id) { // Create a new dhtml_object and store it in dhtml_objects dhtml_objects[object_id] = new dhtml_object(current_object, object_css, object_id) } } } // Is the browser DHTML DOM compliant? else if (document.all) { // If so, use document.all to get the
tags div_tags = document.all.tags("div") // Loop through the
tags for (var counter = 0; counter < div_tags.length; counter++) { // Store the current object current_object = div_tags[counter] // Store how the browser accesses styles object_css = current_object.style // Store the object's id object_id = current_object.id // Only store those tags that have an id if (object_id) { // Create a new dhtml_object and store it in dhtml_objects dhtml_objects[object_id] = new dhtml_object(current_object, object_css, object_id) } } // Use document.all to get the tags span_tags = document.all.tags("span") // Loop through the tags for (var counter = 0; counter < span_tags.length; counter++) { // Store the current object current_object = span_tags[counter] // Store how the browser accesses styles object_css = current_object.style // Store the object's id object_id = current_object.id // Only store those tags that have an id if (object_id) { // Create a new dhtml_object and store it in dhtml_objects dhtml_objects[object_id] = new dhtml_object(current_object, object_css, object_id) } } } // Is the browser LDOM compliant? else if (document.layers) { // Use document.layers to get the positioned
and tags css_tags = document.layers // Loop through the layers for (var counter = 0; counter < css_tags.length; counter++) { // Store the current object current_object = css_tags[counter] // Store how the browser accesses styles object_css = current_object // Store the object's id object_id = current_object.id // Only store those tags that have an id if (object_id) { // Create a new dhtml_object and store it in dhtml_objects dhtml_objects[object_id] = new dhtml_object(current_object, object_css, object_id) } } } } function dhtml_object (obj, css, id) { this.obj = obj this.css = css this.id = id this.left = get_left this.right = get_right this.top = get_top this.bottom = get_bottom this.width = get_width this.height = get_height this.visibility = get_visibility this.zIndex = get_zIndex this.move_to = move_to this.move_by = move_by this.set_left = set_left this.set_top = set_top this.set_width = set_width this.set_height = set_height this.set_visibility = set_visibility this.set_zIndex = set_zIndex this.move_above = move_above this.move_below = move_below this.set_backgroundColor = set_backgroundColor this.set_backgroundImage = set_backgroundImage this.set_html = set_html this.get_clip_top = get_clip_top this.get_clip_right = get_clip_right this.get_clip_bottom = get_clip_bottom this.get_clip_left = get_clip_left this.get_clip_width = get_clip_width this.get_clip_height = get_clip_height this.resize_clip_to = resize_clip_to this.resize_clip_by = resize_clip_by } function get_left() { return parseInt(this.css.left) } function get_right() { return this.left() + this.width() } function get_top() { return parseInt(this.css.top) } function get_bottom() { return this.top() + this.height() } function get_width() { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, is the width defined? if (this.css.width) { // If so, return the width property return parseInt(this.css.width) } else { // If not, return the offsetWidth property return parseInt(this.obj.offsetWidth) } } else { // If not, return the layer's document width return parseInt(this.obj.document.width) } } function get_height() { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, is the height defined? if (this.css.height) { // If so, return the height property return parseInt(this.css.height) } else { // If not, return the offsetHeight property return parseInt(this.obj.offsetHeight) } } else { // If not, return the layer's document height return parseInt(this.obj.document.height) } } function get_visibility() { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, is the visibility defined? if (this.css.visibility) { // If so, return the visibility property return this.css.visibility } } else { // Otherwise, it's an LDOM browser, so // handle the proprietary visibility values if (this.css.visibility == "show") { return "visible" } if (this.css.visibility == "hide") { return "hidden" } } // If we get this far, just return "inherit" return "inherit" } function get_zIndex() { return this.css.zIndex } function move_to (new_left, new_top) { this.css.left = new_left this.css.top = new_top } function move_by (delta_left, delta_top) { // Add the delta values this.css.left = this.left() + parseInt(delta_left) this.css.top = this.top() + parseInt(delta_top) } function set_left (new_left) { this.css.left = new_left } function set_top (new_top) { this.css.top = new_top } function set_width (new_width) { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, just set the width property this.css.width = new_width } } function set_height (new_height) { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, just set the width property this.css.height = new_height } } function set_visibility (new_visibility) { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, just set the visibility // to the value of the argument this.css.visibility = new_visibility } else { // Otherwise, set the proprietary visibility values if (new_visibility == "visible") { this.css.visibility = "show" } else if (new_visibility == "hidden") { this.css.visibility = "hide" } else { this.css.visibility = "inherit" } } } function set_zIndex(new_zindex) { // Is the new z-index greater than 0? if (new_zindex > 0) { // If so, set it this.css.zIndex = new_zindex } else { // If not, set it to 0 this.css.zIndex = 0 } } function move_above(reference_object) { this.css.zIndex = reference_object.css.zIndex + 1 } function move_below(reference_object) { // Get the z-index of the reference object reference_zindex = reference_object.css.zIndex // Is it greater than 0? if (reference_zindex > 0) { // If so, set this object's zindex to one less this.css.zIndex = reference_zindex - 1 } else { // If not, set the reference object's z-index to 1 // and this object's z-index to 0 reference_object.css.zIndex = 1 this.css.zIndex = 0 } } function set_backgroundColor(new_color) { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, use the backgroundColor property this.css.backgroundColor = new_color } else { // If not, use the bgcolor property this.css.bgColor = new_color } } function set_backgroundImage(new_image) { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, use the backgroundImage property this.css.backgroundImage = "url(" + new_image + ")" } else { // If not, use the background property this.css.background.src = new_image } } function set_html(new_html) { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, use the innerHTML property this.obj.innerHTML = new_html } else { // If not, use the document.write() method this.obj.document.open() this.obj.document.write(new_html) this.obj.document.close() } } function get_clip_top() { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, first parse the clip string parse_dom_clip(this) // Clip values are now in the current_clip object return current_clip.top } else { // Otherwise, use clip.top return this.css.clip.top } } var current_clip function clip_object(top, right, bottom, left) { this.top = top this.right = right this.bottom = bottom this.left = left } function parse_dom_clip(current_object) { clip_string = current_object.css.clip if (clip_string.length > 0) { var values_string = clip_string.slice(5, clip_string.length - 1) var clip_values = values_string.split(" ") var clip_top = parseInt(clip_values[0]) var clip_right = parseInt(clip_values[1]) var clip_bottom = parseInt(clip_values[2]) var clip_left = parseInt(clip_values[3]) } else { var clip_top = 0 var clip_right = current_object.width() var clip_bottom = current_object.height() var clip_left = 0 } current_clip = new clip_object(clip_top, clip_right, clip_bottom, clip_left) } function get_clip_right() { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, first parse the clip string parse_dom_clip(this) // Clip values are now in the current_clip object return current_clip.right } else { // Otherwise, use clip.right return this.css.clip.right } } function get_clip_bottom() { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, first parse the clip string parse_dom_clip(this) // Clip values are now in the current_clip object return current_clip.bottom } else { // Otherwise, use clip.bottom return this.css.clip.bottom } } function get_clip_left() { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, first parse the clip string parse_dom_clip(this) // Clip values are now in the current_clip object return current_clip.left } else { // Otherwise, use clip.left return this.css.clip.left } } function get_clip_width() { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, first parse the clip string parse_dom_clip(this) // Clip values are now in the current_clip object return current_clip.right - current_clip.left } else { // Otherwise, use clip.width return this.css.clip.width } } function get_clip_height() { // Is this a W3C or DHTML DOM browser? if (!document.layers) { // If so, first parse the clip string parse_dom_clip(this) // Clip values are now in the current_clip object return current_clip.bottom - current_clip.top } else { // Otherwise, use clip.width return this.css.clip.height } } function resize_clip_to(new_top, new_right, new_bottom, new_left) { if (new_top == "auto") {new_top = this.get_clip_top() } if (new_right == "auto") {new_right = this.get_clip_right() } if (new_bottom == "auto") {new_bottom = this.get_clip_bottom() } if (new_left == "auto") {new_left = this.get_clip_left() } // Is this a W3C or DHTML DOM browser? if (!document.layers) { // Clip values are now in the current_clip object this.css.clip = "rect(" + new_top + " " + new_right + " " + new_bottom + " " + new_left + ")" } else { // Otherwise, use clip properties this.css.clip.top = new_top this.css.clip.right = new_right this.css.clip.bottom = new_bottom this.css.clip.left = new_left } } function resize_clip_by(delta_top, delta_right, delta_bottom, delta_left) { var new_top = this.get_clip_top() + delta_top var new_right = this.get_clip_right() + delta_right var new_bottom = this.get_clip_bottom() + delta_bottom var new_left = this.get_clip_left() + delta_left // Is this a W3C or DHTML DOM browser? if (!document.layers) { // Clip values are now in the current_clip object this.css.clip = "rect(" + new_top + " " + new_right + " " + new_bottom + " " + new_left + ")" } else { // Otherwise, use clip properties this.css.clip.top = new_top this.css.clip.right = new_right this.css.clip.bottom = new_bottom this.css.clip.left = new_left } } function get_mouse_x(current_event) { // Is this Internet Explorer 4 or later? if (its_ie4plus) { // If so, return the event.clientX property return event.clientX } // Is this Netscape Explorer 4 or later? else if (its_ns4plus) { // Otherwise, return the pageX property return current_event.pageX } else { // Otherwise, return null return null } } function get_mouse_y(current_event) { // Is this Internet Explorer 4 or later? if (its_ie4plus) { // If so, return the event.clientY property return event.clientY } // Is this Netscape Explorer 4 or later? else if (its_ns4plus) { // If so, return the pageY property return current_event.pageY } else { // Otherwise, return null return null } } function get_client_width() { // Is this Internet Explorer 4 or later? if (its_ie4plus) { // If so, return the clientWidth property return document.body.clientWidth } else if (its_ns4plus) { // If so, return the innerWidth property return window.innerWidth - 18 } else { // Otherwise, return null return null } } function get_client_height() { // Is this Internet Explorer 4 or later? if (its_ie4plus) { // If so, return the clientHeight property return document.body.clientHeight } // Is this Netscape Explorer 4 or later? else if (its_ns4plus) { // If so, return the innerHeight property return window.innerHeight - 18 } else { // Otherwise, return null return null } } function get_client_scroll_left() { // Is this Internet Explorer 4 or later? if (its_ie4plus) { // If so, return the scrollLeft property return document.body.scrollLeft } // Is this Netscape Explorer 4 or later? else if (its_ns4plus) { // If so, return the pageXOffset property return pageXOffset } else { // Otherwise, return null return null } } function get_client_scroll_top() { // Is this Internet Explorer 4 or later? if (its_ie4plus) { // If so, return the scrollTop property return document.body.scrollTop } // Is this Netscape Explorer 4 or later? else if (its_ns4plus) { // If so, return the pageYOffset property return pageYOffset } else { // Otherwise, return null return null } }