// JavaScript Document



GluedTools._DOM = {



	getBrowserType : function () {

		if (navigator.userAgent.indexOf("Opera")!=-1 && document.getElementById) { 

			return "OP";

		} else if (document.all) {

			return "IE";

		} else if (document.layers) { 

			return "NN";

		} else if (!document.all && document.getElementById) {

			return "MO";

		} else {

			return "IE";

		}

	},

	

	getElementByID : function (elementID) {

		if (document.layers) {

			// NN4+

			return document.layers[elementID];

		} else if (document.getElementById) {

			// NN6 + IE5+

			return document.getElementById(elementID);

		} else if (document.all) {

			// IE4

			return document.all[elementID];

		}

	},

	

	getElementsByTagName : function (elementTag) {

		if (document.layers) {

			// NN4+ - Find out about this one

			return null;

		} else if (document.getElementsByTagName) {

			// NN6 + IE5+

			return document.getElementsByTagName(elementID);

		} else if (document.all) {

			// IE4

			return document.all.tags(elementID);

		}

	},

	

	getElementsByClassName : function (className) {

		var foundElements = [];

		var regexp = new RegExp('\\b' + className + '\\b');

		var all_elements = document.all ? document.all : document.getElementsByTagName("*");

		for (var i = 0, j = all_elements.length; i < j; i++) {

			if (regexp.test( all_elements[i].className)) {

				foundElements.push(all_elements[i]);

			}

		}

		return foundElements;

	},

	

	setElementStyle : function (element, attribute, value) {

		if(document.layers) {

			element[attribute] = value;

		} else {

			if (attribute == 'opacity') {

				if (element.filters) {

					element.style.filter = 'alpha(opacity=' + value * 100 + ')';

				} else {

					element.style.opacity = value;

					element.style['-moz-opacity'] = value;

					element.style['-khtml-opacity'] = value;

				}

			} else {

				element.style[attribute] = value;

			}

		}

	},

	

	getElementStyle : function (element, attribute) {

		if(document.layers) {

			return element[attribute];

		} else {

			if (!element.style[attribute]) { 

				if (window.getComputedStyle) {

					this.setElementStyle(element, attribute, window.getComputedStyle(element, null)[attribute]); 

				} else {

					this.setElementStyle(element, attribute, element.currentStyle[attribute]); 

				}

			}

			return element.style[attribute];

		}

	},

	

	addEventListener : function (element, eventtype, callback, captures) {

		if (element.addEventListener) {

			element.addEventListener(eventtype, callback, captures);

		} else if (element.attachEvent) {

			element.attachEvent('on'+eventtype, callback, captures);

		} else {

			element['on'+eventtype] = callback;

		}

	},

	

	getElementPosition : function (element) {

		var position = new Array;

		if (document.getBoxObjectFor) {

			var box = document.getBoxObjectFor(element);

			position['left'] = box.x;

			position['width'] = box.width;

			position['top'] = box.y;

			position['height'] = box.height;

		} else if (element.getBoundingClientRect) {

			var box = element.getBoundingClientRect();

			position['left'] = box.left;

			position['width'] = box.right - box.left;

			position['top'] = box.top;

			position['height'] = box.bottom - box.top;

		} 

		return position;

	},

	

	pageX : function (pos) {

		if (document.all) {

			return document.body.scrollLeft + pos;

		} else {

			return window.pageXOffset + pos;

		}

	},



	pageY : function (pos) {

		if (document.all) {

			return document.body.scrollTop + pos;

		} else {

			return window.pageYOffset + pos;

		}

	},

	

	swapNodes : function (elementA, elementB) {

		var cloneA = elementA.cloneNode(true);

		elementB.parentNode.insertBefore(clonedA, elementB);

		elementA.parentNode.replaceNode(elementB, elementA);

		return true;

	},

	

	getViewportSize : function () {



		var windowSize = { width : 0, height : 0 };

		

		if (typeof window.innerWidth != 'undefined') {

			windowSize = { width : window.innerWidth, height : window.innerHeight };

		} else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {

			windowSize = { width : document.documentElement.clientWidth, height : document.documentElement.clientHeight };

		} else {

			windowSize = { width : document.getElementsByTagName('body')[0].clientWidth, height : document.getElementsByTagName('body')[0].clientHeight };

		}

		

		return windowSize;

	},

	

	cloneObject : function (object) {

		var clone = {}



		for (property in object) {

			if (typeof(object[property]) == "object") {

				clone[property] = new GluedTools._DOM.cloneObject(object[property]);

			} else {

				clone[property] = object[property];

			}

		}

		return clone;

	},

	

	checkElementOverlap : function (positionA, positionB) {

		var overlapFlag = true;

		

		if (positionA.top > (positionB.top + positionB.height) && (positionA.top + positionA.height) > (positionB.top + positionB.height)) { overlapFlag = false; }

		if (positionA.top < positionB.top && (positionA.top + positionA.height) < positionB.top) { overlapFlag = false; }



		if (positionA.left > (positionB.left + positionB.width) && (positionA.left + positionA.width) > (positionB.left + positionB.width)) { overlapFlag = false; }

		if (positionA.left < positionB.left && (positionA.left  + positionA.width) < positionB.left) { overlapFlag = false; }

		

		return overlapFlag;

	}



}