/** generic routines **/

function getPageCoords (element) 
{
    var coords = {x: 0, y: 0};
    
	while (element) {
		coords.x += element.offsetLeft;
		coords.y += element.offsetTop;
		element = element.offsetParent;
    }

    return coords;
}

function setEventHandler(element, evt, code)
{
    if( element.addEventListener ) {
	element.addEventListener( evt, code, true );
    } else if( element.attachEvent ) {
	element.attachEvent( "on" + evt, code );
    } else {
	/** this part is hard-coded for obvious reasons **/
	switch( evt ) {
	    case	"click"	    :
		element.onclick = code;
		break;

	    case	"change"    :
		element.onchange = code;
		break;

	    case	"unload"    :
		element.onunload = code;
		break;
	}
    }
}

function getDocMetrics(){
    var metrics = {
        offX : 0, 
        offY : 0,
        width : 0,
        height: 0
    };  
    
    if( window.pageXOffset !== undefined ) {
        metrics.offX = window.pageXOffset; 
    } else if( document.documentElement.scrollLeft !== undefined ) {
        metrics.offX = document.documentElement.scrollLeft;
    } else if( document.body.scrollLeft !== undefined ) {
        metrics.offX = document.body.scrollLeft;
    }   
    
    if( window.pageYOffset !== undefined ) {
        metrics.offY = window.pageYOffset; 
    } else if( document.documentElement.scrollTop !== undefined ) {
        metrics.offY = document.documentElement.scrollTop;
    } else if( document.body.scrollTop !== undefined ) {
        metrics.offY = document.body.scrollTop;
    }   
    
    if( window.innerWidth ) {
        metrics.width = window.innerWidth ;
        metrics.height = window.innerHeight;
    } else if( document.documentElement.clientWidth ) {
        metrics.width = document.documentElement.clientWidth;
        metrics.height = document.documentElement.clientHeight;
    } else if( document.body.clientWidth ) {
        metrics.width = document.body.clientWidth;
        metrics.height = document.body.clientHeight;
    }

    return metrics;
}

function setClassName(el, cname)
{
	if( el.className !== undefined )
		el.className = cname;
	else if( el.setAttribute )
		el.setAttribute( "class", cname );
}

function getSafeEvent(e)
{
	if (!e) return window.event;
	return e;
}

function markEvent(e)
{       
	if( e.preventDefault !== undefined )
		e.preventDefault();
	else if( e.returnValue !== undefined )
		e.returnValue = false;
}
