//Creative Department by DH v1.1b
//dependencies: point, dimension
/*
	This object is a means of encapsulating browser specific code. Other objects should use this object
	instead of coding for specific browsers specifically in routine tasks.
*/
function Equalizer () {}
Equalizer.prototype.isInternetExplorer = function () {
    if (document.all) {return true};
    return false;
};
Equalizer.prototype.isNetscape6Compat = function () {
    if (!document.all && document.getElementById) {return true;}
    return false;
};
Equalizer.prototype.isNetscape4 = function () {
    if (!document.all && !document.getElementById) {return true;}
    return false;
};
Equalizer.prototype.isMacintosh = function () {
    return (navigator.platform.toLowerCase().indexOf("mac") > -1);
};

Equalizer.prototype.getElementById = function (elementName) {
    var obj = null;
    if (document.getElementById) {
        obj = document.getElementById(elementName);
    }
    if (document.all && obj == null) {
        obj = eval('document.all.'+elementName);
    }
    if (obj == null) {
        obj = eval('document.'+elementName);
    }
    if (obj == null && document.layers) {
        obj = eval('document.layers['+elementName+']');
    }
    if (obj == null && document.images) {
        obj = eval('document.images['+elementName+']');
    }
    if (obj == null && document.links) {
        obj = eval('document.links['+elementName+']');
    }
    if (obj == null && document.applets) {
        obj = eval('document.applets['+elementName+']');
    }
    //alert('finding obj='+elementName+', was='+obj);
    return obj;
};

Equalizer.prototype.getElementPoint = function (element) {
    if (element != null) {
        var point = new Point();
        if (element.style) {
            var current = element;
            while (current) {
                point.x += current.offsetLeft;
                point.y += current.offsetTop;
                current = current.offsetParent;
            }
            //alert('point offset found was ('+point.getX()+','+point.getY()+')');
            return point;
        //} else if (element.style.pixelLeft && element.style.pixelTop) {
        //    point.setX(element.style.pixelLeft);
        //    point.setY(element.style.pixelTop);
        //    alert('point pixel found was ('+point.getX()+','+point.getY()+')');
        //    return point;
        } else if (element.top && element.left) {
            point.setX(element.left);
            point.setY(element.top);
            //alert('point left,top found was ('+point.getX()+','+point.getY()+')');
            return point;
        } else {
            point.setX(element.x);
            point.setY(element.y);
            //alert('point x,y found was ('+point.getX()+','+point.getY()+')');
            return point;
        }
    }
    return null;
};
Equalizer.prototype.setElementPoint = function (element, point) {
    var offset = new Point();
    offset.setX(point.getX());
    offset.setY(point.getY());
    if (this.isInternetExplorer() && this.isMacintosh()) {
       //offset.setX(offset.getX()+9);
       //offset.setY(offset.getY()+14);
    }
    this.setElementPointAbsolute(element, offset);
};
Equalizer.prototype.setElementPointAbsolute = function (element, point) {
    if (element.style.left && element.style.top) {
        //alert('setting element.style.left,top point to ('+point.getX()+','+point.getY()+')');
        element.style.left = point.getX() + 'px';
        element.style.top  = point.getY() + 'px';
    } else if (element.style.pixelLeft && element.style.pixelTop) {
        //alert('setting element.style.pixel* point to ('+point.getX()+','+point.getY()+')');
        element.style.pixelLeft = point.getX() + 'px';
        element.style.pixelTop  = point.getY() + 'px';
    } else {
        //alert('setting point other');
        element.left = point.getX();
        element.top  = point.getY();
    }
    //alert('done setting element point');
};
Equalizer.prototype.getElementDimension = function (element) {
    var point = this.getElementPoint(element);
    var dimension = new Dimension();
    dimension.setPoint(point);
    if (element.offsetHeight) {
        dimension.setHeight(element.offsetHeight);
    } else if (element.height) {
        dimension.setHeight(element.height);
    }
    if (element.offsetWidth) {
        dimension.setWidth(element.offsetWidth);
    } else if (element.width) {
        dimension.setWidth(element.width);
    }
    return dimension;
};
Equalizer.prototype.setElementDimensionAbsolute = function (element, dimension) {
	this.setElementDimension(element, dimension);
	this.setElementPointAbsolute(element, dimension.getPoint());
};
Equalizer.prototype.setElementDimension = function (element, dimension) {
    this.setElementPoint(element, dimension.getPoint());
    if (element.style) {
	element.style.width = dimension.getWidth();
	element.style.height = dimension.getHeight();
    } else if (element.height || element.width) {
	element.width = dimension.getWidth();
	element.height = dimension.getHeight();
    }
};
Equalizer.prototype.elementContainsElement = function (element, parentElement) {
    if (element.parentNode) {
        var current = element;
        while (current && current != parentElement) {
            current = current.parentNode;
        }
        if (current == parentElement) {
            return true;
        }
    }
    return false;
};
Equalizer.prototype.showElement = function (element) {
    if (element.style) {
        element.style.visibility = 'visible';
    } else {
        element.visibility = 'show';
    }
    //alert('show element '+element);
};
Equalizer.prototype.hideElement = function (element) {
    if (element.style) {
        element.style.visibility = 'hidden';
    } else {
        element.visibility = 'hide';
    }
    //alert('hide element '+element);
};

document.equalizer = new Equalizer();
