function Highlight(elem)
{
	//var elem = document.getElementById(RowID)
	jscss('remove',elem, 'normal');
	jscss('add',elem, 'highlight');
}

function DeHighlight(elem)
{
	//var elem = document.getElementById(RowID)
	jscss('remove',elem, 'highlight');
	jscss('add',elem, 'normal');
}



/*
======================
Javascript library
======================
*/


// Modify add, remove or swap classes of an element!

function jscss(action,elem,c1,c2)
{
  switch (action){
    case 'swap':
      elem.className=!jscss('check',elem,c1)?elem.className.replace(c2,c1):elem.className.replace(c1,c2);
    break;
    case 'add':
      if(!jscss('check',elem,c1)){elem.className+=elem.className?' '+c1:c1;}
    break;
    case 'remove':
      var rep=elem.className.match(' '+c1)?' '+c1:c1;
      elem.className=elem.className.replace(rep,'');
    break;
    case 'check':
      return new RegExp('\\b'+c1+'\\b').test(elem.className)
    break;
  }
}



function getElementsByClassName(className, tag, elm)
{
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}


// Custom reFresh to maintain scroll position

function reFresh()
{
        var pos = getScrollXY()
        createCookie("scrollLeft",pos[0])
        createCookie("scrollTop",pos[1])
        document.location.reload(true); 	
}
  


function setScroll(x,y) 
{
    document.documentElement.scrollTop = y
    document.documentElement.scrollLeft = x
}

window.onload = function() { 
          var x = readCookie("scrollLeft");
          var y = readCookie("scrollTop");
         
          if ((!isNaN(x)) || (!isNaN(y)) )     
	{
		setScroll(x,y)
	}
	eraseCookie("scrollLeft");
	eraseCookie("scrollTop");
  }


function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfX = document.documentElement.scrollLeft;
    scrOfY = document.documentElement.scrollTop;
  }
  return [ scrOfX, scrOfY ];
}



function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}







// ===========   AJAX  ====================

var http = getXMLHTTPRequest();

function ajaxGet(url,handler)
{    
	http.open("GET", url, true);		//url will include the params in the query string
	http.onreadystatechange = eval(handler);
	http.send(null);
}


function ajaxPost(url,params, handler)
{

	http.open("POST", url, true);

	//Send the proper header information along with the request
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", params.length);
	http.setRequestHeader("Connection", "close");

	http.onreadystatechange = eval(handler);

	http.send(params);
}

	
function getXMLHTTPRequest() {

	var xmlHttp=null;
	try
 	{
 		// Firefox, Opera 8.0+, Safari
 		xmlHttp=new XMLHttpRequest();
 	}
	catch (e)
 		{
 		// Internet Explorer
 		try
  		{
  			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  		}
 		catch (e)
  			{
  			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  		}
 	}

	return xmlHttp;
}

function ajaxHandler() {
	if (http.readyState == 4) {
        	if (http.status == 200) {
			alert(http.responseText)
	        } else {
			alert("Oops!")
        	}
	} else {
	     	//alert("What?");
    	}
}



//===============
//====================================================










