// JavaScript Document

var xmlreqs = new Array();
var theDiv;
  
function CXMLReq(type, xmlhttp, theDiv) 
{
	this.type = type;
	this.xmlhttp = xmlhttp;
	this.theDiv = theDiv;
}


function ajax_call(url,tDiv)
{
	object = document.getElementById(tDiv).style;
	if(object != null)
	{
		var opacity = 100;
		object.opacity = (opacity / 100); 
	    object.MozOpacity = (opacity / 100); 
	    object.KhtmlOpacity = (opacity / 100); 
	    object.filter = "alpha(opacity=" + opacity + ")";
	}
	xmlreqGET(url,tDiv);
}


function xmlreqGET(url, theDiv) 
{
	var xmlhttp = false;
	var theDiv = theDiv;
	
	//alert('theUrl: ' + url);
	//alert('theDiv: ' + theDiv);
	
	if (window.XMLHttpRequest) 
	{      // Mozilla, etc.
		xmlhttp = new XMLHttpRequest();
		xmlhttp.onreadystatechange = xmlhttpChange;
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);
	} 
	else if (window.ActiveXObject) 
	{      // IE
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		if (xmlhttp) 
		{
			xmlhttp.onreadystatechange = xmlhttpChange;
			xmlhttp.open("GET",url,true);
			xmlhttp.send();
		}
	}
	
	var xmlreq = new CXMLReq('', xmlhttp, theDiv);
	
	xmlreqs.push(xmlreq);
	
}

  
function xmlhttpChange() 
{
	if (typeof(window['xmlreqs']) == "undefined") return;
	
	for (var i=0; i < xmlreqs.length; i++) 
	{
		if (xmlreqs[i].xmlhttp.readyState == 4) 
		{
			//alert('status: ' + xmlreqs[i].xmlhttp.status);
			if (xmlreqs[i].xmlhttp.status == 200 || xmlreqs[i].xmlhttp.status == 304) 
			{
				// 200 OK
				handle_response(xmlreqs[i].theDiv, xmlreqs[i].xmlhttp);
				object = document.getElementById(xmlreqs[i].theDiv).style;
				if(object != null)
				{
					var opacity = 100;
					object.opacity = (opacity / 100); 
				    object.MozOpacity = (opacity / 100); 
				    object.KhtmlOpacity = (opacity / 100); 
				    object.filter = "alpha(opacity=" + opacity + ")";
				}
				xmlreqs.splice(i,1); i--;
			} 
			else 
			{
				// error
				// alert('error' + xmlreqs[i]);
				xmlreqs.splice(i,1); i--;
			}
		}
	}
}





function handle_response(theDiv, xmlhttp)
{
  //alert(theDiv);
  var thisResponse = xmlhttp.responseText;
  document.getElementById(theDiv).innerHTML = thisResponse;
}


function URLEncode(input)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = input;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for

	return encoded;
};

function URLDecode(input)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var encoded = input;
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   return plaintext;
};
