var globalId    = "";
var runningAjax = 0;
var chkHttps ="";
var strHTTP     = "http://"+window.location.hostname+"/";
var strHTTPS    = "https://"+window.location.hostname+"/";
if(chkHttps==1){
	strHTTP = strHTTPS;	
}
//alert(strHTTP);

//*
function ajaxManager()
{
	var args = ajaxManager.arguments;
	var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP"): new XMLHttpRequest();			
	var REQ = args[1]+'&AJAX=A&rnd='+getRnd();	
	//var REQ = strHTTP+args[1]+'&AJAX=A&rnd='+getRnd();
	if (args[2] != "") {
		if (args[3]) {
		}
		else {
			globalId = args[2];
		}
	}
	switch (args[0])
	{
		case "load_page":
			if (x) {
				if (runningAjax) { 
					sleep(1000);
				}
				else {
						try{
							
							runningAjax = 1;
							var elId = args[2].toString();
							var loader = args[3].toString();
							el = document.getElementById(elId);
							var oldData = el.innerHTML;
							document.getElementById(loader).style.display='inline';
							x.onreadystatechange = function()
							{
								if (x.readyState == 4 && x.status == 200)
								{
									el = document.getElementById(elId);
									if (x.responseText.indexOf('NO RESPONSE') >= 0 || x.responseText==='') {
										if(oldData) {
											el.innerHTML = oldData;
											document.getElementById(loader).style.display='none';
										}
									} else {
										el.innerHTML = x.responseText;
										document.getElementById(loader).style.display='none';
									}
								}
								//*
								else
								{
									blnFlag = false;
									blnFlag = args[4];
									if (blnFlag)
									{
										aCover();
									}
								}
								//*/
							}
							x.open("GET", REQ, true);
							x.send(null);
							runningAjax = 0;
					
						}
						catch(err)
						{
							//var txt;
							//txt = "An error occured"+"\n";
							//txt += "Error: "+ err.description+"\n";
							//txt += "Related Info:"+"\n";
							//txt += "Arg1: "+args[1].toString();+"\n";
							//txt += "Arg2: "+args[2].toString();+"\n";
							//txt += "Arg3: "+args[3].toString();+"\n";
							//alert(txt);
							return true;
						}
						
						//document.getElementById(loader).style.display='none';
					}
			}
			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]);
			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)
		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&rnd='+getRnd();
	var REQ = strHTTP+args[0]+'&AJAX=A&rnd='+getRnd();
	//alert(REQ);
	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)
{
	var cache = new Array();

	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){
			if(elem.value.indexOf('&')) {
				elem.value = elem.value.replace(/&/g, '!@#$%REPLACE!@#$%');
			}
			cache.push(elem.name +"="+encodeURI(elem.value));			
		}
    }
    /*
    alert(cache.join("&"));
    //*/
	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&rnd='+getRnd();
				if(divIdForGlobal!=""){
					globalId = divIdForGlobal;
				}
				// make a server request to validate the extracted data
				//xmlHttp.open("POST", "index.php", true);
				xmlHttp.open("POST", strHTTP+"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{
                            //    alert(globalId);
				myDiv = document.getElementById(globalId);
				var strText = xmlHttp.responseText.replace(/^(\s)*/,'');
                             
				var pos = strText.indexOf('#####javascriptStartHere#####');
				if(pos >= 0){
					
					myDiv.innerHTML = parseResponse(strText, pos);
					sUncover();
					
             			}else {
					// read the response from the server
					response = strText;
					//alert(response);
					myDiv.innerHTML = response;
					sUncover();					
				}
			}
			catch(e){
				// display error message
				alert(e.toString());
			}
		}
		else
		{
			// display error message
			alert(xmlHttp.statusText);
		}
	}
	else {
		sCover();
	}
}

function aCover()
{
	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+"overlay2.gif' align='absmiddle' />&nbsp;Loading, please wait...</td></tr></table>";
	}
}

function sCover()
{
	var objTransparent = document.getElementById("transparent");
	var objIllusion = document.getElementById("illusion");	
	if(objTransparent && objIllusion)
	{
		objTransparent.style.display="block";
		objIllusion.style.display="block";
	}
}
function sUncover()
{
	var objTransparent = document.getElementById("transparent");
	var objIllusion = document.getElementById("illusion");	
	if(objTransparent && objIllusion)
	{
		objTransparent.style.display="none";
		objIllusion.style.display="none";
	}
}

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 getRnd()
{
	return String((new Date()).getTime()).replace(/\D/gi,'');
}

function sleep(msecs) {
	var start = new Date().getTime();
	var cur = start;
	while(cur - start < msecs) {
		if (runningAjax) {
			cur = new Date().getTime();
		}
		else {
			break;
		}
	}
 }

/*function waitAWhile(msecs) {
	var objDt = new Date();
	var start = objDt.getTime();
	var cur = start;
	//var cur = objDt.getTime();
	while((cur - start) < msecs) {
		cur = objDt.getTime();
	}
}*/

function ajaxManager2()
{
	var args = ajaxManager2.arguments;
	var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP"): new XMLHttpRequest();			
	//var REQ = args[1]+'&AJAX=A&rnd='+getRnd();	
	var REQ = strHTTPS+args[1]+'&AJAX=A&rnd='+getRnd();
	//alert(REQ);
	if (args[2] != "") {
		if (args[3]) {
		}
		else {
			globalId = args[2];
		}
	}
	switch (args[0])
	{
		case "load_page":
			if (x) {
				if (runningAjax) {
					sleep(1000);
				}
				else {
					runningAjax = 1;
					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
							{
								el.innerHTML = x.responseText;
							}
						}
						//*
						else
						{
							blnFlag = false;
							blnFlag = args[4];
							if (blnFlag)
							{
								aCover();								
							}
						}
						//*/
					}					
					x.open("GET", REQ, true);
					x.send(null);
					runningAjax = 0;
				}
			}
			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":
				ajaxManager2('load_page',args[1],args[2]);
			break;
	}
}
function ajaxManagerSimple()
{
	var args = ajaxManagerSimple.arguments;
	var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP"): new XMLHttpRequest();			
	//var REQ = args[1]+'&AJAX=A&rnd='+getRnd();	
	var REQ = strHTTP+args[1]+'&AJAX=A&rnd='+getRnd();
	//alert(REQ);
	switch (args[0])
	{
		case "load_page":
			if (x) {
				if (runningAjax) {
					sleep(1000);
				}
				else {
					runningAjax = 1;
					x.onreadystatechange = function()
					{
						if (x.readyState == 4 && x.status == 200)
						{
							divId =args[1].toString();
							el = document.getElementById(divId);
							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
							{
								el.innerHTML = x.responseText;
							}
						}
						//*
						else
						{
							blnFlag = false;
							blnFlag = args[4];
							if (blnFlag)
							{
								aCover();								
							}
						}
						//*/
					}					
					x.open("GET", REQ, true);
					x.send(null);
					runningAjax = 0;
				}
			}
			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":
				ajaxManagerSimple('load_page',args[1]);
			break;
	}
}

function ajaxSimple()
{
	var args = ajaxManagerSimple.arguments;
	var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP"): new XMLHttpRequest();			
	//var REQ = args[1]+'&AJAX=A&rnd='+getRnd();	
	var REQ = strHTTP+args[1];
	//alert(REQ);
	switch (args[0])
	{
		case "load_page":
			if (x) {
				if (runningAjax) {
					sleep(1000);
				}
				else {
					runningAjax = 1;
					x.onreadystatechange = function()
					{
						if (x.readyState == 4 && x.status == 200)
						{
							divId =args[1].toString();
							el = document.getElementById(divId);
							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
							{
								el.innerHTML = x.responseText;
							}
						}
						//*
						else
						{
							blnFlag = false;
							blnFlag = args[4];
							if (blnFlag)
							{
								aCover();								
							}
						}
						//*/
					}					
					x.open("GET", REQ, true);
					x.send(null);
					runningAjax = 0;
				}
			}
			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":
				ajaxManagerSimple('load_page',args[1]);
			break;
	}
}


function doNothing(){
	// doing Nothing	
	return true;
}
