function addLoadEvent(func) { 
	  var oldonload = window.onload; 
	  if (typeof window.onload != 'function') { 
	    window.onload = func; 
	  } else { 
	    window.onload = function() { 
	      if (oldonload) { 
	        oldonload(); 
	      } 
	      func(); 
	    } 
	  } 
	}

function logEvent(event) {
	for(var foo in event) {
		loggi(foo + "-->" + event[foo] + "<br>");
	}
}




function getCoords(e){
	var coords = [0,0];
	var x, y;
	if (self.pageYOffset) // all except Explorers
	{
		x = self.pageXOffset; // not used in event code
		y = self.pageYOffset; // not used in event code
	}
	else if(document.documentElement
	&& document.documentElement.scrollTop) // Explorer 6 Strict
	{
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	}
	coords[0] = (document.all) ? x + event.clientX : e.pageX;
	coords[1] = (document.all) ? y + event.clientY : e.pageY;
	return coords;
}



function dispatchDelayed(functionCall, delay) {
	setTimeout(functionCall, delay);
}


function loggi(txt) {
	foo = _get("debugfield");
	foo.innerHTML += "--" + txt;
}
function _get(id) {
	return document.getElementById(id);
}
function _setField(name, theValue) {
	_get(name).value = theValue;
}
function _getField(name) {
	return _get(name).value;
}


function FadeOpacity(elemId, fromOpacity, toOpacity, time, fps) {
    var steps = Math.ceil(fps * (time / 1000));
    var delta = (toOpacity - fromOpacity) / steps;
//	loggi("FADE " + "--" + fromOpacity + "--" + contextMenuOpen[elemId] + "<br>");
//    if(contextMenuOpen[elemId] == 0) {
    	FadeOpacityStep(elemId, 0, steps, fromOpacity, delta, (time / steps));
//    }
}



function FadeOpacityStep(elemId, stepNum, steps, fromOpacity, delta, timePerStep) {
//	loggi("<br>FOS " + elemId + "," + fromOpacity + "->" + delta + "*" + stepNum);
	elem = _get(elemId);
	if(elem) {
	    SetOpacity(_get(elemId),  Math.round(parseInt(fromOpacity) + (delta * stepNum)));
	
	    if (stepNum < steps)
	        setTimeout("FadeOpacityStep('" + elemId + "', " + (stepNum+1) 
	                 + ", " + steps + ", " + fromOpacity + ", "
	                 + delta + ", " + timePerStep + ");", 
	                   timePerStep
			);
	}
}



function SetOpacity(elem, opacityAsInt) {
    var opacityAsDecimal = opacityAsInt;
    
    if (opacityAsInt > 100)
        opacityAsInt = opacityAsDecimal = 100; 
    else if (opacityAsInt < 0)
        opacityAsInt = opacityAsDecimal = 0; 
    
    opacityAsDecimal /= 100;
    if (opacityAsInt < 1)
        opacityAsInt = 1; // IE7 bug, text smoothing cuts out if 0
    
 //   loggi("current opacity:" + elem.style.opacity);
    elem.style.opacity = (opacityAsDecimal);
    elem.style.filter  = "alpha(opacity=" + opacityAsInt + ")";
    
//	loggi("<br>op" + opacityAsInt);
    if(opacityAsInt == 1) {
    	elem.style.visibility = 'hidden';
//    	document.body.removeChild(elem);
	}
}




















function FadeSize(elemId, fromSize, toSize, time, fps)
{
    var steps = Math.ceil(fps * (time / 1000));
    var delta = (toSize - fromSize) / steps;
    
    FadeSizeStep(elemId, 0, steps, fromSize, 
                    delta, (time / steps));
}
function FadeSizeStep(elemId, stepNum, steps, fromSize, 
                         delta, timePerStep)
{
//	loggi("<br>FOS " + elemId);
    SetSize(_get(elemId), 
               Math.round(parseInt(fromSize) + (delta * stepNum)));

    if (stepNum < steps)
        setTimeout("FadeSizeStep('" + elemId + "', " + (stepNum+1) 
                 + ", " + steps + ", " + fromSize + ", "
                 + delta + ", " + timePerStep + ");", 
                   timePerStep);
}
function SetSize(elem, sizeAsInt)
{
//    loggi("<br>op" + sizeAsInt);
	elem.style.width=sizeAsInt;
	elem.style.height=sizeAsInt;
}

function rand() {
	return (new Date()).getTime();
}
