var globalId = "";

function ajaxManager()
	{
	var args = ajaxManager.arguments;
	var x = createXmlHttpRequestObject();
	//alert(args[1]);
	//x.overrideMimeType('text/xml; charset=iso-8859-1');
	/*if (x.overrideMimeType) {
        x.overrideMimeType('text/xml; charset=iso-8859-1');
     }*/
	var REQ = args[1]+'&AJAX=A&rnd='+getRnd();
	
	if (args[2] != "") {
		if (args[3]) {
		}
		else {
			globalId = args[2];
		}
	}
	switch (args[0])
		{
		case "load_page":
			if (x)
				{
					
				x.onreadystatechange = function()
					{
						if (x.readyState == 4 && x.status == 200)
						{
							el = document.getElementById(args[2]);
							if(x.responseText.indexOf('#####javascriptStartHere#####') > 0){
                        		                        start = x.responseText.indexOf('#####javascriptStartHere#####');
                                        			end =   x.responseText.indexOf('#####javascriptEndHere#####');
			                                        javaText = x.responseText.substr((start+29), (end-start-29));
                        		                        divText = x.responseText.substr(0, start);
                                        		        el.innerHTML = divText;
								var getheadTag = document.getElementsByTagName('head')[0];
                                                                setjs = document.createElement('script');
                                                                setjs.setAttribute('type', 'text/javascript');
                                                                getheadTag.appendChild(setjs);
                                                                setjs.text = javaText;

			                                }
							else
							{
								//alert(x.responseText);
								el.innerHTML = x.responseText;
							}
						}
						else
						{
							//alert(args[4]);
							blnFlag = false;
							blnFlag = args[4];
							if (blnFlag)
							{
								cover();//aCover();								
							}
						}
					}
					
				x.open("GET", REQ, true);
				x.send(null);
				}
			break;
		case "load_js":
			if (x)
				{					
				x.onreadystatechange = function()
					{
					if (x.readyState == 4 && x.status == 200)
						{
						//var getheadTag = document.getElementsByTagName('head')[0];
						//setjs = document.createElement('script');
						//setjs.setAttribute('type', 'text/javascript');
						//getheadTag.appendChild(setjs);
						//setjs.text = x.responseText;
						}
					}
				x.open("GET", REQ, true);
				x.send(null);
				}
			break;
		case "display_info":
			document.getElementById(args[2]).innerHTML = REQ;		
			break;

		case "start_up":
	    	ajaxManager('load_page',args[1],args[2],args[3],args[4]);
			break;
		} 
	}

/*
Codes implemented below this lines are for paging.
//*/
var xmlHttp = createXmlHttpRequestObject();
/*try{var prefs = Components.classes["@mozilla.org/preferences-service;1"].
                    getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch(null);
prefs.setBoolPref("signed.applets.codebase_principal_support", true);}
catch(e){
	alert(e.toString());
}*/
function createXmlHttpRequestObject()
{
	// will store the reference to the XMLHttpRequest object
	// this should work for all browsers except IE6 and older
	try
	{
		// try to create XMLHttpRequest object
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		// assume IE6 or older
		var XmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP');
		// try every prog id until one works
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
		{
			try
			{
			// try to create XMLHttpRequest object
			xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch (e) {} // ignore potential error
		}
	}
	// return the created object or display an error message
	if (xmlHttp) {
		if (xmlHttp.overrideMimeType) {
	        xmlHttp.overrideMimeType('text/xml; charset=iso-8859-1');
	     }
		return xmlHttp;
	}
	else {
		alert("Error creating the XMLHttpRequest object.");
	}
}

// called to read a file from the server by asynchronous
function asynchronousProcessByGet()
{
	var args = asynchronousProcessByGet.arguments;
	// only continue if xmlHttp isn't void
	var REQ = args[0]+'&AJAX=A';
	if (xmlHttp)
	{
		// try to connect to the server
		try
		{
			 if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) ){

                                if(args[1] != ""){
                                        globalId = args[1];
                                }
                                // make a server request to validate the extracted data
				xmlHttp.open("GET", REQ, true);
//				alert(xmlHttp.onreadystatechange);
				xmlHttp.onreadystatechange = handleRequestStateChange;

				xmlHttp.send(null);
			}
		}
		// display the error in case of failure
		catch (e)
		{
			alert("Can't connect to server:\n" + e.toString());
		}
	}
}


function asynchronousProcessByPost(form,divIdForGlobal)
{
	//alert(form+"-"+divIdForGlobal);
	var cache = new Array();
	//alert(form+"/"+divIdForGlobal);
	for (var i = 0; i < form.length; i++)
  	{
    		var elem = form[i];
		//elem.name = encodeURIComponent(elem.name);
		//elem.value = encodeURIComponent(elem.value);
		if(elem.type=="radio"){
			if(elem.checked){
                        	cache.push(elem.name +"="+elem.value);
			}
		}
		else if(elem.type=="checkbox"){
                        if(elem.checked){
                                cache.push(elem.name +"="+elem.value);
			}
                     
                }
		else if(elem.name){
			cache.push(elem.name +"="+encodeURI(elem.value));
		}
		//alert(elem.name +"="+elem.value);
    }
	if (xmlHttp)
	{
		// try to connect to the server
		try
		{
			// continue only if the XMLHttpRequest object isn't busy
			// and the cache is not empty
			if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0){
				// get a new set of parameters from the cache
				var cacheEntry = cache.join("&");
				//var test = cache.join("\n");
				//alert(test);
				//set the global div
				
				//var objDate = new Date();
				var REQ = cacheEntry+'&AJAX=A';
				if(divIdForGlobal!=""){
					globalId = divIdForGlobal;
				}
				// make a server request to validate the extracted data
				//alert("glogID: "+globalId);
				xmlHttp.open("POST", "index.php", true);
				xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				xmlHttp.onreadystatechange = handleRequestStateChange;
				xmlHttp.send(REQ);
			}
		}
		catch (e)
		{
		// display an error when failing to connect to the server
		alert(e.toString());
		}
	}
}
// function that handles the HTTP response
function handleRequestStateChange(){
	// when readyState is 4, we read the server response
	
	if (xmlHttp.readyState == 4){
	// continue only if HTTP status is "OK"
		if (xmlHttp.status == 200){
			try{
				myDiv = document.getElementById(globalId);
				//alert(myDiv);
				var strText = xmlHttp.responseText.replace(/^(\s)*/, '');
				strText = strText.replace(/(\s)*$/, '');
				var pos = strText.indexOf('#####javascriptStartHere#####');
				if(pos >= 0){
					/*start = xmlHttp.responseText.indexOf('#####javascriptStartHere#####');
					end =   xmlHttp.responseText.indexOf('#####javascriptEndHere#####');
					alert(end);
					javaText = xmlHttp.responseText.substr((start+29), (end-start-29));
					divText = xmlHttp.responseText.substr(0, start);
					myDiv.innerHTML = divText;

					var getheadTag = document.getElementsByTagName('head')[0];
					setjs = document.createElement('script');
					setjs.setAttribute('type', 'text/javascript');
					getheadTag.appendChild(setjs);
					setjs.text = javaText;*/
					myDiv.innerHTML = parseResponse(strText, pos);
					//myDiv.innerHTML = parseResponse(xmlHttp.responseText, pos);
             			}else {
					// read the response from the server
					response = strText;
					//alert(response);
					myDiv.innerHTML = response;
				}
			}
			catch(e){
				// display error message
				alert(e.toString());
			}
		}
		else
		{
			// display error message
			alert(xmlHttp.statusText);
		}
	}
	else {
		//alert('hi');
		cover();
	}
}

function cover() {
        var obj = document.getElementById(globalId);
	if(obj) {
	        obj.innerHTML = "";
        	obj.innerHTML = "<table height='100%' width='100%'><tr><td align='center' valign='middle'><img src='"+imagesUrl+"overlay3.gif' align='absmiddle' />&nbsp;loading, please wait...</td></tr></table>";
	}
}

function parseResponse(textResponse, parsePosition) {
	start = parsePosition;
        end   = textResponse.indexOf('#####javascriptEndHere#####');
        javaText = textResponse.substr((start+29), (end-start-29));
	if(parsePosition == 0) {
		divText = textResponse.substr(end+27);
	}
	else {
		divText = textResponse.substr(0, start);
	}
        var getheadTag = document.getElementsByTagName('head')[0];
        setjs = document.createElement('script');
        setjs.setAttribute('type', 'text/javascript');
	getheadTag.appendChild(setjs);
      	setjs.text = javaText;
	nextPos = divText.indexOf('#####javascriptStartHere#####');
	if (nextPos >= 0) {
		divText = parseResponse(divText, nextPos);
	}
	else {
		return divText;
	}
	return divText;
}

function evaluateJs()
      {
            window.jsCode = new Array();
            var scriptTags = document.getElementsByTagName('SCRIPT');
            var head = document.getElementsByTagName('HEAD')[0];
            for(var no=0;no<scriptTags.length;no++){                  
                if (scriptTags[no].src){
                    var head = document.getElementsByTagName("head")[0];
                    var scriptObj = document.createElement("script");            
                    scriptObj.setAttribute("type", "text/javascript");
                    scriptObj.setAttribute("src", scriptTags[no].src);             
                    head.appendChild(scriptObj);
            
                }else{                      
                        var code = scriptTags[no].innerHTML;                        
                        window.jsCode[no] = code;
                        setTimeout('eval(window.jsCode[' + no + '])',100);      // Has to wait because we want to make all objects part of the window object(global variables) instead of locale
                }            
            }      
      }
      
function openWindow(imagePath, imageName) {
	objWindow = window.open(imagePath+imageName, "", "menubar=no,resizable=yes,scrollbar=yes,status=no,titlebar=no,width=400,height=350");
}

function getRnd()
{
	return String((new Date()).getTime()).replace(/\D/gi,'');
}



