function findElementById(id) {
    return oak_findById(id);
}

function oak_findById(id) {
    //alert("findElementById(" + id + ")");
    if (document.getElementById) { //ie5+ /ns6+
	    obj = document.getElementById(id);
        return obj;
	}
	if (document.all){ //ie4+
	    obj = document.all[id];
	    return obj;
	}
	if (document.layers){ //ns4+
	    obj = document.layers[id];
	    return obj;
	}
}

function oak_swapClass(obj, className1, className2) {
	obj.className = ((obj.className == className1) ? className2 : className1);
}

function oak_setContent(elem, newcontent) {
    if (document.getElementById) { //ie5+ /ns6+
	    obj = document.getElementById(elem);
        obj.innerHTML=newcontent;
        return true;
	}
	if (document.all){ //ie4+
	    document.all[elem].innerHTML=newcontent;
	    return true;
	}
	if (document.layers){ //ns4+
	    with (document.layers[elem].document) {
	        write(newcontent);
	        close();
        }
	}
}

function oak_getContent(elem) {
	if(document.getElementById) {	//ie5+ /ns6+
		obj = document.getElementById(elem);
		return obj.innerHTML;
	}
	if(document.all) {	//ie4+
		return document.all[elem].innerHTML;
	}
	if(document.layers) {	//ns4+
		return document.layers[elem].body;
	}
}

function oak_setClassName(elem, name) {
    if (document.getElementById) { //ie5+ /ns6+
	    obj = document.getElementById(elem);
        obj.className=name;
        return true;
	}
	if (document.all){ //ie4+
	    document.all[elem].className=name;
	    return true;
	}
	if (document.layers){ //ns4+
	      document.layers[elem].className = name;
	}
}

function oak_reposition(divid, divleft, divtop, divwidth, divheight) {

	var val = navigator.userAgent.toUpperCase();
	
	if(divleft > 0) {
		oak_setLeft(divid, divleft);
	}
	
	if(divtop > 0) {
		oak_setTop(divid, divtop);
	}

	if(divwidth > 0) {
		oak_setWidth(divid, divwidth);	
	}	
	
	if(divheight > 0) {
		oak_setHeight(divid, divheight);
	}
}

function oak_getTop(divid){
	
	var obj = findElementById(divid);

	if(document.getElementById) { 	//ie5+/ns6+
		return parseInt(obj.style.top);
	}
	if (document.all){ //ie4+
		return obj.style.posTop;
	} 
	if(document.layers){ //ns4+
		return parseInt(obj.top);
	}
}

function oak_getLeft(divid){

	var obj = findElementById(divid);
	
	if(document.getElementById) { //ie5+/ns6+
		return parseInt(obj.style.left);
	}
	if (document.all){ //ie4+
		return obj.style.posLeft;
	}
	if (document.layers){ //ns4+
		return parseInt(obj.left);
	}
}

function oak_getWidth(divid){

	var obj = findElementById(divid);
	
	if(document.getElementById) { 	//ie5+/ns6+
		return parseInt(obj.style.width);
	}
	if (document.all){ //ie4+
		return pos.style.posWidth;
	}
	if (document.layers){ //ns4+
		return parseInt(obj.width);
	}
}

function oak_getHeight(divid){
	
	var obj = findElementById(divid);
	
	if (document.getElementById) { 	//ie5+/ns6+
		return parseInt(obj.style.height);
	}
	if (document.all){ //ie4+
		return obj.style.posHeight;
	}
	if (document.layers){ //ns4+
		return parseInt(obj.height);
	}
}

function oak_setLeft(divid, divLeft) {
	
	var obj = findElementById(divid);
	
	if(document.getElementById) { 	//ie5+/ns6+
		obj.style.left = divLeft + "px";
	} 
	
	if(document.all) { 	//ie4+
		obj.style.posLeft = divLeft;
	}
	
	if(document.layers) { 	//ns4+
		obj.left = divLeft;
	}
}

function oak_setTop(divid, divTop) {
	
	var obj = findElementById(divid);
	
	if(document.getElementById) { 	//ie5+/ns6+
		obj.style.top = divTop + "px";
	} 
	
	if(document.all) { 	//ie4+
		obj.style.posTop = divTop;
	}
	
	if(document.layers) { 	//ns4+
		obj.top = divTop;
	}
}

function oak_setWidth(divid, divWidth) {
	
	var obj = findElementById(divid);
	
	if(document.getElementById) { 	//ie5+/ns6+
		obj.style.width = divWidth + "px";
	} 
	
	if(document.all) { 	//ie4+
		obj.style.posWidth = divWidth;
	}
	
	if(document.layers) { 	//ns4+
		obj.width = divWidth;
	}
}

function oak_setHeight(divid, divHeight) {
	
	var obj = findElementById(divid);
	
	if(document.getElementById) { 	//ie5+/ns6+
		obj.style.height = divHeight + "px";
	} 
	
	if(document.all) { 	//ie4+
		obj.style.posHeight = divHeight;
	}
	
	if(document.layers) { 	//ns4+
		obj.height = divHeight;
	}
}

function oak_hide(elem) {
    if (document.getElementById) { //ie5+ /ns6
        obj = document.getElementById(elem);
        obj.style.visibility = "hidden";
        return true;
    }
    if (document.all) { //ie4+
        obj = document.all[elem].style.visibility = "hidden";
        return true;
    }

    if (document.layers) { //ns4
        document.layers[elem].layer.visibility = "hide";
        return true;
    }


    return false;
}

function oak_show(elem) {
    if (document.getElementById) { //ie5+ /ns6
        obj = document.getElementById(elem);
        obj.style.visibility = "visible";
        return true;
    }
    if (document.all) {
        document.all[elem].style.visibility = "visible";
        return true;
    }
    if (document.layers) {
        document.layers[elem].layer.visibility = "show";
        return true;
    }
    return false;
}

function oak_toggleVisibility(elem) {
    if (document.getElementById) { //ie5+ /ns6
        obj = document.getElementById(elem);
        obj = obj.style;
        if (obj.visibility == "hidden") obj.visibility = "visible";
        else obj.visibility = "hidden";
        return true;
    }
    if (document.all) { //ie4+
        obj = document.all[elem].style
        if (obj.visibility == "hidden") obj.visibility = "visible";
        else obj.visibility = "hidden";
    }
    if (document.layers) { //ns4+
        obj = document.layers[elem].layer;
        if (obj.visibility == "hide") obj.visibility = "show";
        else obj.visibility = "hide";
    }
    return true;
}

function oak_setDisplay(elem, disp) {
    if (document.getElementById) { //ie5+ / ns6+
        obj = document.getElementById(elem);
        obj = obj.style;
    }
    else if (document.all) obj = document.all[elem].style
    else if (document.layers) obj = document.layers[elem].layer;
    if (!obj) return false;

	if (disp == true)
	{
    	obj.display = "block";
    }
    else
    {
    	obj.display =  "none";
    }

    return true;
}

function oak_toggleDisplay(elem) {
    if (document.getElementById) { //ie5+ / ns6+
        obj = document.getElementById(elem);
        obj = obj.style;
    }
    else if (document.all) obj = document.all[elem].style
    else if (document.layers) obj = document.layers[elem].layer;
    if (!obj) return false;

    if (obj.display == "none") obj.display = "";
    else obj.display = "none";

   return true;
}

function oak_isDisplayed(elem) {
	if (document.getElementById) { //ie5+ / ns6+
        obj = document.getElementById(elem);
        obj = obj.style;
    }
 	else if (document.all) obj = document.all[elem].style
  else if (document.layers) obj = document.layers[elem].layer;
    
  if (!obj) return false;

  if (obj.display == "none") return false;
  else return true;
}
/**
 * Animated toggle display.
 *
 * @elem the element id to toggle
 * @property the style property ('height', 'width', etc.') to animate
 * @maxValue the maximum value of the property.
 */
function oak_animatedToggleDisplay(elem, property, maxValue) {			
	var SPEED = 3; // lower = faster
	var obj = oak_findById(elem);
	if(!obj) return false;

	if(obj.style.display == 'none') {
		eval("obj.style." + property + " = 1;");
		window.setTimeout("oak_toggleDisplay('" + elem + "');", 1);
		for(var i=0; i<=maxValue; i+=2) {
			window.setTimeout("oak_findById('" + elem + "').style." + property + " = " + i + ";", (i+1)*SPEED);
		}
	}
	else {
		for(var i=maxValue; i>-1; i-=2) {
			window.setTimeout("oak_findById('" + elem + "').style." + property + " = " + i + ";", (maxValue-i)*SPEED);
		}
		window.setTimeout("oak_toggleDisplay('" + elem + "');", maxValue * SPEED);
		window.setTimeout("oak_findById('" + elem + "').style." + property + " = " + maxValue + ";", maxValue*SPEED);
	}
}


function oak_getClientWidth(){
	if(typeof(window.innerWidth) == 'number') {	//non-ie
		return window.innerWidth;
	} else { 
		return window.document.body.clientWidth;
	}
}

function oak_getClientHeight() {
	if(typeof(window.innerHeight) == 'number') {	//non-ie
		return window.innerHeight;
	} else {
		return window.document.body.clientHeight;
	}
}

function oak_getScrollTop() {
	if(typeof(window.pageYOffset) == 'number') { //non-ie
		return window.pageYOffset;
	} else {
		return window.document.body.scrollTop;
	}
}

function oak_getScrollLeft() {
	if(typeof(window.pageXOffset) == 'number') { //non-ie
		return window.pageXOffset;
	} else {
		return window.document.body.scrollLeft;
	}
}

function oak_autoMove(elem){

	var obj = findElementById(elem);
	
	var windowX = oak_getClientWidth();
  var windowY = oak_getScrollTop();
  var windowHeight = oak_getClientHeight();

  var currentX = oak_getLeft(elem);
  var currentY = oak_getTop(elem);

  var newX = windowX - 200;
  var newY = (windowY + 25);

  var deltaX = ((newX - currentX) * 0.25);
  var deltaY = ((newY - currentY) * 0.25);
	
	deltaX = (currentX + ((Math.abs(deltaX) > 0.25) ? deltaX : 0));
	deltaY = (currentY + ((Math.abs(deltaY) > 0.25) ? deltaY : 0));
	
	oak_reposition(elem, deltaX, deltaY);
	
	setTimeout('oak_autoMove("' + elem + '")', 10);
}

/**
 * Sets a Cookie with the given name and value.
 *
 * name       Name of the cookie
 * value      Value of the cookie
 * [expires]  Expiration date of the cookie (default: end of current session)
 * [path]     Path where the cookie is valid (default: path of calling document)
 * [domain]   Domain where the cookie is valid
 *              (default: domain of calling document)
 * [secure]   Boolean value indicating if the cookie transmission requires a
 *              secure transmission
 */
function oak_SetCookie(name, value, expires, path, domain, secure)
{
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}
	
/**
 * Gets the value of the specified cookie.
 *
 * name  Name of the desired cookie.
 *
 * Returns a string containing value of specified cookie,
 *   or null if cookie does not exist.
 */
function oak_GetCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}
