// JavaScript Document

//get highest z index
function highest_zindex() {
	var elems = document.getElementsByTagName('*');
	var highest_index = 0;
	for(var i=0; i<elems.length; i++) {
		
		//we must get the computed style as this will account for all external stylesheets a well as inline styles
		var zindex;
		
		//w3
		if(window.getComputedStyle) {
			zindex = window.getComputedStyle(elems[i],null).getPropertyValue("z-index");
		}
		//ie
		else if(elems[i].currentStyle) {
			zindex = elems[i].currentStyle.zIndex;
		}
		
		if(!isNaN(zindex)) {
			highest_index = zindex > highest_index ? zindex : highest_index;
		}
	}
	
	return highest_index;
}

function get_window_geometry() {
	
	var doc = (!document.compatMode || document.compatMode == 'CSS1Compat') ? document.documentElement : document.body;
	
	if (window.innerWidth)	{
		// Most Browsers
		var browserWidth = window.innerWidth;
		var browserHeight = window.innerHeight;
	}
	else {		
		// IE
		var browserWidth = doc.clientWidth;
		var browserHeight = doc.clientHeight;								
	}
	
	var bodyWidth = Math.max(doc.scrollWidth, browserWidth);
	var bodyHeight = Math.max(doc.scrollHeight, browserHeight);
	
	var scrollX = (bodyWidth > browserWidth);
	var scrollY = (bodyHeight > browserHeight);
	
	return {windowWidth: browserWidth, windowHeight: browserHeight, bodyWidth:bodyWidth, bodyHeight:bodyHeight, scrollX: scrollX, scrollY:scrollY};	
	
}

function getCoords(elObj) {	
    if (elObj.getBoundingClientRect) {
        var coords = elObj.getBoundingClientRect();
        // Internet Explorer
        var scrollX = document.body.scrollLeft;
        var scrollY = document.body.scrollTop;
        
		if (window.pageXOffset) {
            // Firefox
            scrollX = window.pageXOffset;
            scrollY = window.pageYOffset;
        }
        
		coords = {
            left:Math.round(coords.left)+scrollX,
            right:Math.round(coords.right)+scrollX,
            top:Math.round(coords.top)+scrollY,
            bottom:Math.round(coords.bottom)+scrollY
        };
    }
	else if (document.getBoxObjectFor) {
        var coords = document.getBoxObjectFor(elObj);
        coords = {
            left:coords.x,
            right:coords.x+coords.width,
            top:coords.y,
            bottom:coords.y+coords.height
        };			
    }
	else {
        var elCopy = elObj;
        var originalElement = elObj;
        for (var lx=0,ly=0;elObj!=null;
           lx+=elObj.offsetLeft,ly+=elObj.offsetTop,elObj=elObj.offsetParent);
        for (;elCopy!=document.body;
            lx-=elCopy.scrollLeft,ly-=elCopy.scrollTop,elCopy=elCopy.parentNode);
        coords = {
            left:lx,
            right:lx+originalElement.offsetWidth,
            top:ly,
            bottom:ly+originalElement.offsetHeight
        };				
    }
    return coords;
}

function add_event(target,eventType,eventHandler) {
	if (target.addEventListener) {
		target.addEventListener(eventType,eventHandler,false);
	}
	else if (target.attachEvent) {
		target.attachEvent('on'+eventType,eventHandler);
	}
}

function remove_event(target,eventType,eventHandler) {
	if (target.removeEventListener) {
		target.removeEventListener(eventType,eventHandler,false);
	}
	else if (target.detachEvent) {
		target.detachEvent('on'+eventType,eventHandler);
	}
}
