var xmlhttp = null;
var xmlhttp1 = null;
var xmlhttp2 = null;
var xmlhttp3 = null;
var method = "POST";
var queryStringSeparator = "?";
var argumentSeparator = "&";
var URLString = "";
var encodeURIString = true;
var element = null;
var elementObj = null;
var requestFile = null;
var vars = new Object();
var responseStatus = new Array(2);
var objForm;
var blurActVal;
var formTrs = new Array();
var FCKeditorAPI;

/***** Create the XMLHttp object depends on the browser *****/
 function createAJAX() 
 {
	//document.getElementById('img_process').style.display="";
	//loadingimage();
	try{ 
		//alert("TRY - GENERAL FUNCTION");
		return new XMLHttpRequest();
		//xmlhttp = new XMLHttpRequest()					
	}
	catch(e){
		  try{ 
		  	//alert("TRY - MICROSOFT FUNCTION - MSXML3.XMLHTTP"); 
			return new ActiveXObject("MSXML3.XMLHTTP") 
		}catch(e){}
		try{ 
			//alert("TRY - MICROSOFT FUNCTION - MSXML2.XMLHttp.5.0"); 
			return new ActiveXObject("MSXML2.XMLHttp.5.0") 
		}catch(e){}
		try{ 
			//  alert("TRY - MICROSOFT FUNCTION - MSXML2.XMLHttp.4.0"); 
			  return new ActiveXObject("MSXML2.XMLHttp.4.0") 
		}catch(e){}
		try{ 
			//  alert("TRY - MICROSOFT FUNCTION - MSXML2.XMLHTTP.3.0"); 
			  return new ActiveXObject("MSXML2.XMLHTTP.3.0") 
		}catch(e){}
		try{ 
			 // alert("TRY - MICROSOFT FUNCTION - Msxml2.XMLHTTP"); 
			  return new ActiveXObject("Msxml2.XMLHTTP") 
		}catch(e){}
		try{ 
			 // alert("TRY - MICROSOFT FUNCTION - Microsoft.XMLHTTP"); 
			  return new ActiveXObject("Microsoft.XMLHTTP") }
		catch(e){
			  	alert("AJAX is not supported. Could not find an XMLHttpRequest alternative.");
		}
		  //throw new Error("Could not find an XMLHttpRequest alternative.")
    }
	
	
	
	/*try 
	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e1) 
	{
		try 
		{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch (e2) 
		{
			xmlhttp = null;
		}
	}

	if (! xmlhttp)
	{
		if (typeof XMLHttpRequest != "undefined") 
		{
			xmlhttp = new XMLHttpRequest();
		} 
		else 
		{
			var failed = true;
		}
	}
*/
}

/***** Set the URL parameters using this function *****/	
function setVar(name, value)
{
	vars[name] = Array(value, false);
}

/***** Set the URL parameters using this function *****/	
function unsetVar()
{
	vars.Destroy();
}


/***** Hide the TR which are being shown*****/
function HideFormIds()
{
	
	var TrsIds = 0;	
	while (TrsIds < formTrs.length)
	{
		//alert(formTrs[TrsIds]);
		document.getElementById(formTrs[TrsIds]).style.display="none";		
		TrsIds+=1;
	}	
}

/***** Create the URL with all the parameters using this function *****/
function createURLString()
{
	setVar("rndval", new Date().getTime());
	urlstringtemp = new Array();
	for (key in vars) 
	{ 
		urlstringtemp[urlstringtemp.length] = key + "=" + vars[key][0];
	}
		
	URLString += urlstringtemp.join(argumentSeparator);
	//alert(URLString);
	return URLString;
}
function createAJAXURLString(arrayobject)
{
	//setVar("rndval", new Date().getTime());
	URLString="";
	arrayobject["rndval"] = Array(new Date().getTime(), false);
	urlstringtemp = new Array();
	for (key in arrayobject) 
	{ 
		urlstringtemp[urlstringtemp.length] = key + "=" + arrayobject[key][0];
	}
		
	URLString += urlstringtemp.join(argumentSeparator);
	//alert(URLString);
	return URLString;
}
/***** If the browser doesn't support AJAX *****/
function onFail()
{
	alert("Ajax is not supported");
	return false;
}


/***** Running the AJAX to use all the functions  *****/
function runAJAX()
{
	URLString = "";
	URLString = createURLString();
	elementObj = document.getElementById(element);
	loadingimage();	
	if (xmlhttp) 
	{
		//alert(xmlhttp.readyState);
		
		if(xmlhttp.readyState==4 || xmlhttp.readyState==0)
		{
			totalurlstring = requestFile + queryStringSeparator + URLString; 
			//alert(totalurlstring);
			//xmlhttp.open(method, totalurlstring, true);
			xmlhttp.open("POST", requestFile, true);
			//Send the proper header information along with the request
			xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			//xmlhttp.setRequestHeader("Content-length", totalurlstring.length);
			//xmlhttp.setRequestHeader("Connection", "close");				
			xmlhttp.onreadystatechange = mainFunction;
			xmlhttp.send(URLString);
		}

	 }	
}


function mainFunction()
{
	//alert(xmlhttp.status);	
	//alert(xmlhttp.readyState);		
	if(xmlhttp.readyState==4) 
	{
		//alert(xmlhttp.getAllResponseHeaders());
	 if (xmlhttp.status==200)
	 {
		//var response="";
		response = xmlhttp.responseText;
		//alert(response);			
		responseXML = xmlhttp.responseXML;				
		responseStatus[0] = xmlhttp.status;
		responseStatus[1] = xmlhttp.statusText;		
		AjaxMessage=response.split("~"); // New code
		if(AjaxMessage[0]!="FormMsg" && response!="NoErrors" && response!="AJAX" && AjaxMessage[0]!="FormMsgUpdate" && AjaxMessage[0]!="Session-Expired" && response!="NEWPAGE" && AjaxMessage[0]!="FormMsgUpdate_Listing")
		{
			var errorsFieldNames = response.split("<BR>");
			var fields=0;
			var field;
			var TrsIds = 0;			
			var pos = response.split("-");
			if(pos[0] =="Position")
			{
				DisplayPosition(pos[1]);
			}
			/***** Hide the TR which are being shown*****/
			while (TrsIds < formTrs.length)
			{
				//alert(formTrs[TrsIds]);
				document.getElementById(formTrs[TrsIds]).style.display="none";		
				TrsIds+=1;
			}
			/***** Hide the TR which are being shown*****/
			while (fields < errorsFieldNames.length)
			{
				var t="";
				field = errorsFieldNames[fields].split("-");				
				if(field!="")
				{
					var fieldName=field[0];
					//alert(fieldName);
					var errorMsg = field[1];
					//alert(errorMsg);
					//alert(objForm.elements[fieldName]);
					if(objForm.elements[fieldName]=="[object NodeList]")
					{
						tempobjname=eval("objForm.elements[fieldName]");
						tempobjname[0].focus();
					}
					else if(fields==0 && objForm.elements[fieldName].type=="text")
						objForm.elements[fieldName].focus();
					document.getElementById(fieldName+"_idTr").style.display="";
					document.getElementById(fieldName+"_idDiv").innerHTML=errorMsg;
				}
				fields+=1; 
			}
			//document.getElementById('img_process').style.display="none";
			unloadingimage()
			if(document.getElementById('formmessage_idTr')!=null)
			{
				document.getElementById('formmessage_idTr').style.display="none";
				//document.getElementById('formmessage_idDiv').style.display="none";				
			}					
		}	
		else if(response=="AJAX")
		{
			AJAXCODE();
		}
		else if(response=="NEWPAGE")
		{
			NEWPAGECODE();
		}
		else if(response=="NoErrors")
		{			
			objForm.submit();	
			//return true;
		}
		else if(AjaxMessage[0]=="FormMsg") 
		{
			//objForm.submit(); 			
			HideFormIds();	
			SetBlankofFormControls();
			if(document.getElementById('formmessage_idTr')!=null)
			{
				document.getElementById('formmessage_idDiv').innerHTML="";
				document.getElementById('formmessage_idDiv').innerHTML=AjaxMessage[1];			
				document.getElementById('formmessage_idTr').style.display="";
			}
				
			//document.getElementById('img_process').style.display="none";
			unloadingimage();
		}
		else if(AjaxMessage[0]=="FormMsgUpdate") 
		{
				
			HideFormIds();				
			if(document.getElementById('formmessage_idTr')!=null)
			{
				document.getElementById('formmessage_idDiv').innerHTML="";
				document.getElementById('formmessage_idDiv').innerHTML=AjaxMessage[1];			
				document.getElementById('formmessage_idTr').style.display="";
			}
			//document.getElementById('img_process').style.display="none";	
			unloadingimage();
		}
		else if(AjaxMessage[0]=="FormMsgUpdate_Listing") 
		{
				
			HideFormIds();				
			if(document.getElementById('formmessage_idTr')!=null)
			{
				document.getElementById('formmessage_idDiv').innerHTML="";
				document.getElementById('formmessage_idDiv').innerHTML=AjaxMessage[1];			
				document.getElementById('formmessage_idTr').style.display="";			
				document.getElementById('listingtable_idDiv').innerHTML=AjaxMessage[2];						
			}
			//document.getElementById('img_process').style.display="none";			
			responsefun();
			unloadingimage();
		}
		else if(AjaxMessage[0]=="Session-Expired")
		{
			unloadingimage();
			alert(AjaxMessage[1]);
			window.location.reload();
		}
		//xmlhttp=null;
	}	
	else // Show Errors - Accordingly Error Status Code
	{		
		ShowStatusError(xmlhttp.status)
	}
  }	
	
}
function ShowStatusError(statuscode)
{
	if(statuscode==404)
	{
		alert("Status is "+statuscode+" (Page Not Found), Please try again.");
		window.location.reload();	
	}
	else if(statuscode==500)
	{
		alert("Status is "+statuscode+" (Internal Server Error), Please try again.");
		window.location.reload();	
	}
	else
	{
		alert("Status is "+statuscode+"- Server is busy, Please try again.");
		window.location.reload();
	}
}
/***** Create the XMLHttp object depends on the browser *****/
 function createHttpObject1() 
 {
	/*try 
	{
		xmlhttp1 = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e1) 
	{
		try 
		{
			xmlhttp1 = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch (e2) 
		{
			xmlhttp1 = null;
		}
	}

	if (! xmlhttp1)
	{
		if (typeof XMLHttpRequest != "undefined") 
		{
			xmlhttp1 = new XMLHttpRequest();
		} 
		else 
		{
			var failed = true;
		}
	}*/
	//xmlhttp1 = createAJAX();
	//return xmlhttp1;
}
function createHttpObject2() 
 {	
	/*try 
	{
		xmlhttp2 = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e1) 
	{
		try 
		{
			xmlhttp2 = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch (e2) 
		{
			xmlhttp2 = null;
		}
	}

	if (! xmlhttp2)
	{
		if (typeof XMLHttpRequest != "undefined") 
		{
			xmlhttp2 = new XMLHttpRequest();
		} 
		else 
		{
			var failed = true;
		}
	}*/
	//xmlhttp2 = createAJAX();
	//return xmlhttp2;
}
function createHttpObject3() 
 {	
	/*try 
	{
		xmlhttp3 = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e1) 
	{
		try 
		{
			xmlhttp3 = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch (e2) 
		{
			xmlhttp3 = null;
		}
	}

	if (! xmlhttp3)
	{
		if (typeof XMLHttpRequest != "undefined") 
		{
			xmlhttp3 = new XMLHttpRequest();
		} 
		else 
		{
			var failed = true;
		}
	}*/
	//xmlhttp3 = createAJAX();
	//return xmlhttp3;
	//return xmlhttp3;
}
function SetBlankofFormControls()
{
	for(i=0;i<objForm.elements.length;i++)
	{	
		//alert(objForm.elements[i].type);
		if(objForm.elements[i].type=="text" || objForm.elements[i].type=="password" || objForm.elements[i].type=="select-one")
		{
			objForm.elements[i].value="";
		}
		
		if(objForm.elements[i].type=="checkbox")
		{
			objForm.elements[i].checked=false;			
		}
		if(objForm.elements[i].type=="textarea")
		{
			objForm.elements[i].value="";
		}
	}
	
	if(FCKeditorAPI)
	{
		var oEditor = FCKeditorAPI.GetInstance('FCKeditor1') ;
		oEditor.SetHTML("");
	}
	
	
}

// Show hide div
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() 
{ //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
 // alert(args.value);
  for (i=0; i<(args.length-2); i+=3)
  	if ((obj=MM_findObj(args[i]))!=null)
	{ 
		v=args[i+2];
		v1=args[i+1];				
		if (obj.style)
		{
			obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; 
		}
    	obj.visibility=v; 
		
	}	
}

function addOption(selectbox,text,value )
{
var optn = document.createElement("OPTION");
optn.text = text;
optn.value = value;
selectbox.options.add(optn);
}
function removeOptions(selectbox,selvalue)
{
	var i;	
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		if(selectbox.options[i].value==selvalue)
			selectbox.remove(i);
	}
}
function entsub(event,ourform)
{
  if (event && event.keyCode == 13)
    AjaxFormValid();
  else
    return true;
}
function BtnOverEffect(obj)
{
	obj.className="abutactive";
}
function BtnOutEffect(obj)
{
	obj.className="abut";
}
function BtnOverEffect1(obj)
{
	obj.className="abutactive1";
}
function BtnOutEffect1(obj)
{
	obj.className="abut1";
}
function BtnOverEffect2(obj)
{
	obj.className="abutactive2";
}
function BtnOutEffect2(obj)
{
	obj.className="abut2";
}
function BtnOverEffect3(obj)
{
	obj.className="abutactive3";
}
function BtnOutEffect3(obj)
{
	obj.className="abut3";
}
