// Commonly-used functions, reduced.
function d(s) {return document.getElementById(s);}
function dE(o,s) {return o.getElementsByTagName(s);}
/**
* toggleDisplay()
*
* Will toggle the display property of the style object for any
* DOM element or object that supports style as a property.
*
* Warning: This'll wreak havoc if applied to
elements. Those
* babies got different types "table-row" | "block" dependant on
* what browser's being used.
*
* Warning: Written in Texas. Yeehaw.
*
* Typical usage:
* toggleDisplay(document.getElementById("foo"));
*/
function toggleDisplay(o)
{
var display = getStyle(o, "display");
if (o.style)
o.style.display =
(display != "none") ? "none" : getDisplayStyleByTagName(o);
}
function getDisplayStyleByTagName(o)
{
var n = o.nodeName.toLowerCase();
return (
n == "span"
|| n == "img"
|| n == "a"
) ? "inline" : "block";
}
/**
* hideElement()
*
* Hides an element from view.
*
* Typical usage:
* hideElement(getElement("the-id-of-the-element"));
*/
function hideElement(o)
{
if (o && o.style) o.style.display = "none";
}
/**
* showElement()
*
* Shows an element that was hidden from view.
*
* Typical usage:
* showElement(getElement("the-id-of-the-element"));
*/
function showElement(o)
{
if (o && o.style) o.style.display = getDisplayStyleByTagName(o);
}
/**
* getElement()
*
* Returns an element by its ID or shows an alert if it can't be found.
*
* Typical usage:
* getElement("the-id-of-the-element");
*/
function getElement(id) {
var e = d(id);
if (!e) {
alert("Cannot get element: " + id);
}
return e;
}
/**
* setInnerHTML()
*
* Sets the innerHTML of an element or shows an alert if can't be set.
*
* Typical usage:
* setInnerHTML("the-id-of-the-element");
*/
function setInnerHTML(id, html) {
try {
getElement(id).innerHTML = html;
} catch (ex) {
alert("Cannot set inner HTML: " + id);
}
}
/**
* setCssStyle()
*
* Sets the style of an element by its id or shows an alert if can't be set.
*
* Typical usage:
* setCssStyle("the-id-of-the-element", "display", "block");
*/
function setCssStyle(id, name, value) {
try {
getElement(id).style[name] = value;
} catch (ex) {
alert("Cannot set style: " + id);
}
}
/**
* getStyle()
*
* Gets the computed style of any object.
*
* WARNING: Produces unexpected results in Safari. To achieve best
* results, explicitly set the style property for that browser when the
* element is rendered.
*
* Typical usage:
* getStyle(object, "display");
*/
function getStyle(el, style) {
if (!document.getElementById || !el) return;
if (document.defaultView
&& document.defaultView.getComputedStyle) {
return document.defaultView.
getComputedStyle(el, "").getPropertyValue(style);
}
else if (el.currentStyle) {
return el.currentStyle[style];
}
else {
return el.style.display;
}
}
/**
* getStyleAttribute()
*
* Returns the style attribute of the specified node.
*/
function getStyleAttribute(node) {
if (Detect.IE()) {
return node.getAttribute('style').value;
}else {
return node.getAttribute('style');
}
}
/*
* showProps()
*
* Displays all the properties for a given element
*/
function showProps(o) {
var s=""; for (var p in o) {
s+=p+": "+o[p]+"\n
";
}
document.write(s);
}
function setIFrameEvent(iframe, eventName, func)
{
if (document.all) {
eval('getIFrameDocument(iframe).on' + eventName + ' = func;');
} else {
iframe.contentWindow.addEventListener(eventName, func, true);
}
}
function setIFrameBody(iframe, strStyle, innerHtml)
{
if (!innerHtml) innerHtml = '';
if (innerHtml == '' && Detect.IE()) {
innerHtml = '';
}
var doc = getIFrameDocument(iframe);
doc.open();
doc.write(''
+ innerHtml + '');
doc.close();
}
function getIFrameDocument(iframe)
{
if (Detect.IE()) {
return iframe.document;
} else {
return iframe.contentDocument;
}
}
function getIFrame(strId)
{
if (Detect.IE()) {
return document.frames[strId];
} else {
return document.getElementById(strId);
}
}
function createElementandAppend(nodeName, strId, appendTo) {
var el = document.createElement(nodeName);
el.setAttribute("id", strId);
if (appendTo) {
appendTo.appendChild(el);
} else {
document.body.appendChild(el);
}
return el;
}
function createElementandInsertBefore(nodeName, strId, appendTo, sibling) {
var el = document.createElement(nodeName);
el.setAttribute("id", strId);
if (appendTo) {
appendTo.insertBefore(el, sibling);
} else {
document.body.insertBefore(el, sibling);
}
return el;
}
/**
* getXY()
*
* Returns the position of any element as an object.
*
* Typical usage:
* var pos = getXY(object);
* alert(pos.x + " " +pos.y);
*/
function getXY(el) {
var x = el.offsetLeft;
var y = el.offsetTop;
if (el.offsetParent != null) {
var pos = getXY(el.offsetParent);
x += pos.x;
y += pos.y;
}
return {x: x, y: y}
}
// The following 3 functions are taken from common.js
function hasClass(el, cl) {
if (el == null || el.className == null) return false;
var classes = el.className.split(" ");
for (var i = 0; i < classes.length; i++) {
if (classes[i] == cl) {
return true;
}
}
return false;
}
// Add a class to element
function addClass(el, cl) {
if (hasClass(el, cl)) return;
el.className += " " + cl;
}
// Remove a class from an element
function removeClass(el, cl) {
if (el.className == null) return;
var classes = el.className.split(" ");
var result = [];
var changed = false;
for (var i = 0; i < classes.length; i++) {
if (classes[i] != cl) {
if (classes[i]) { result.push(classes[i]); }
} else {
changed = true;
}
}
if (changed) { el.className = result.join(" "); }
}
function toggleClass(el, cl) {
if (hasClass(el, cl)) {
removeClass(el, cl);
} else {
addClass(el, cl);
}
}
/* Constants for node types, since IE doesn't support Node.TEXT_NODE */
var TEXT_NODE = 3;
var ELEMENT_NODE = 1;