var m_sAction ;	
var m_sLan ;
// used to find the Automation server name
function getDomDocumentPrefix()
{
	//SetCookie("mytest","1001",60*60*1000);
	if (getDomDocumentPrefix.prefix)
		return getDomDocumentPrefix.prefix;
	

	var prefixes = ["Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DomDocument", "Microsoft.DomDocument", "MSXML.DomDocument", "MSXML3.DomDocument"];  //Msxml2.DOMDocument.4.0 
	var o;
	for (var i = 0; i < prefixes.length; i++) 
	{
		try { 
			// try to create the objects
			//o = new ActiveXObject(prefixes[i] + ".DomDocument");
			o = new ActiveXObject(prefixes[i]);
			return getDomDocumentPrefix.prefix = prefixes[i];
		}
		catch (ex) {};
	}
	throw new Error("bdmt100:Could not find an installed XML parser");
}

function getXmlHttpPrefix() {
	//SetCookie("mytest","1002",60*60*1000);
	if (getXmlHttpPrefix.prefix)
		return getXmlHttpPrefix.prefix;
	
	var prefixes = ["MSXML2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XmlHttp", "Microsoft.XmlHttp", "MSXML.XmlHttp", "MSXML3.XmlHttp"];
	//var prefixes = ["MSXML2.XmlHttp","Microsoft.XmlHttp", "MSXML.XmlHttp", "MSXML3.XmlHttp"];
	var o;
	for (var i = 0; i < prefixes.length; i++) {
		try {
			// try to create the objects
			o = new ActiveXObject(prefixes[i] ); //var xml = new ActiveXObject("Msxml2.DOMDocument.4.0");
			return getXmlHttpPrefix.prefix = prefixes[i];
		}
		catch (ex) {};
	}
	
	throw new Error("bdmt200:Could not find an installed XML parser");
}

//////////////////////////
// Start the Real stuff //
//////////////////////////


// XmlHttp factory
function XmlHttp() {}
XmlHttp.create = function ()
{
	//SetCookie("mytest","1003",60*60*1000);
	try 
	{
		if (window.XMLHttpRequest) 
		{
			var req = new XMLHttpRequest();
			// some versions of Moz do not support the readyState property
			// and the onreadystate event so we patch it!
			if (req.readyState == null) 
			{
				req.readyState = 1;
				req.addEventListener("load", function () 
				{
					req.readyState = 4;
					if (typeof req.onreadystatechange == "function")
						req.onreadystatechange();
				}, false);
			}
			
			return req;
		}
		if (window.ActiveXObject)
		{
			return new ActiveXObject(getXmlHttpPrefix() );  //return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");
		}
	}
	catch (ex) { alert("error")}
	// fell through
	throw new Error("bdmt130:Your browser does not support XmlHttp objects");
};

// XmlDocument factory
function XmlDocument() {}
XmlDocument.create = function () 
{
	
	//SetCookie("mytest","1005",60*60*1000);
	try
	{
		// DOM2
		if (document.implementation && document.implementation.createDocument) 
		{
			var doc = document.implementation.createDocument("", "", null);
			
			// some versions of Moz do not support the readyState property
			// and the onreadystate event so we patch it!
			if (doc.readyState == null) 
			{
				doc.readyState = 1;
				doc.addEventListener("load", function () 
				{
					doc.readyState = 4;
					if (typeof doc.onreadystatechange == "function")
						doc.onreadystatechange();
				}, false);
			}
			
			return doc;
		}
		if (window.ActiveXObject)
		{
		    //alert("profiee:"+getDomDocumentPrefix());
			return new ActiveXObject(getDomDocumentPrefix());
		}
	}
	catch (ex) {}
	throw new Error("bdmt150:Your browser does not support XmlDocument objects");
};
	
	
	
	function query(sConxml,sFid) //teid :table id;page:page
	{    
		
		 sXmlString = buildURL(sConxml); //code the xml to utf-8
		 var vRan= Math.random();
		 sUrlRam = "&Lan=" +m_sLan +"&Ram=" + vRan;
		 sUrl = m_sAction +"?EventID=get&" +sUrlRam;
		 loadasync(sUrl,sXmlString,sFid);
		 
		 //return sXml;
	}
	function query2(sAction,sXmlString,sFid) //teid :table id;page:page
	{    
		 sXmlString = buildURL(sXmlString); //code the xml to utf-8
		 var vRan= Math.random();
		 sUrlRam = "&Lan=" +m_sLan +"&Ram=" + vRan;
		 sUrl = sAction +"?EventID=get&" +sUrlRam;
		 loadasync(sUrl,sXmlString,sFid);
	}

	/*
	 *this EventID=check
	 */
	function querycheck(sXmlString,event,sFid) //teid :table id;page:page
	{    
		try
		{
			 sXmlString = buildURL(sXmlString); //code the xml to utf-8
			 var vRan= Math.random();
			 sUrlRam = "&Lan=" +m_sLan +"&Ram=" + vRan;
			 sUrl = m_sAction +"?EventID="+event+"&" +sUrlRam;
			 
			 saParm   = new Array;
			 //storein(sFid,saParm);
			//alert(sUrl);
			//alert("sFid:"+sFid);
			 loadasync(sUrl,sXmlString,sFid);
		}
		catch(err)
		{
			if(err.message != "stop")
				alert(err.message);
		}
	}


	
var m_xmlHttp ;
function loadasync(sUrl,sUtf8Xml,sFid)
{
	if(typeof(sFid) == "undefined")
	{
		alert("系统错误,请联系eguanli.com的工作人员");
		return ;
	}
	try
	{
		m_dCurWin.progress.style.visibility='visible';
		m_dCurWin.progress.style.top='25%';
		m_dCurWin.progress.style.left='40%';
		//alert("2wwwwwwww");
	}
	catch(e)
	{}
   	sUrl = sUrl+ "&fid=" + sFid;
	//if(sFid == "SaveBigClass")
		//alert("url2:"+sUrl);
   	m_xmlHttp = XmlHttp.create();
    m_xmlHttp.open("POST",sUrl, true);
    m_xmlHttp.onreadystatechange = processLoad;
    m_xmlHttp.send(sUtf8Xml);
}

function processLoad()
{
	try
	{
		//alert("m_xmlHttp.readyState:"+m_xmlHttp.readyState);
		if (m_xmlHttp.readyState == 2)
		{
			
		}
		if (m_xmlHttp.readyState == 4)
		{
			if (m_xmlHttp.status == 200) 
			{
				 sXml =  m_xmlHttp.responseText; // responseXML : XmlDocument
				 //alert(sXml+"LLLL");
				 sFid = sXml.substring(0,sXml.indexOf("*zwm*"));
				 //sXml2 = sXml.substring(sXml.indexOf("*zwm*")+5,sXml.length);
				 sXml2 = sXml.substring(sXml.indexOf("*zwm*")+5,sXml.indexOf("\n")-1);

				 sRparam = checkerror(sXml2);
				 //alert(sXml);
				 if((sRparam != "nohint")||(sFid == "flush"))//check if error
				 {
					 try
					 {
						 //alert(sFid + "/"+sXml2+"/"+sRparam);
						// document.all("dd").value="";
						 FinishLoad(sFid,sXml2,sRparam);
					 }
					 catch(e)
					 {
					 
					 }
				 }
			}
	 	}
	}
	catch(err)
	{
		 if(err.message != "stop")
			alert(err.message);
	}
}



function AsncParam() 
{
	/* public properties */
	this.m_sFid = null;
	this.m_saAllParm   = new Array;
}

function storein(sFid,saParm)
{
	apParam = new AsncParam();
	apParam.m_sFid = sFid;
	apParam.m_saAllParm = saParm;
	iLen = m_apParam.length;
	//alert("m_apParam.length:"+iLen);
	v=-1;
	for(var j=0;j<iLen;j++)
	{
		sFidTmp = m_apParam[j].m_sFid;
		if( sFid == sFidTmp)
		{
			v = j;
			delete m_apParam[j];
			break;
		}
	}
	iLen = m_apParam.length;
	//alert("m_apParam.length2:"+iLen);
	if(v>-1)
	{
		m_apParam[v] = apParam;	
	}
	else
	{
		m_apParam.push(apParam);//pop windows not put
	}
}

function FinishLoad(sFid,sXml2,sRparam)
{
	iLen = m_apParam.length;
	v=-1;
	//alert("dddddddddddddb");
	for(var j=0;j<iLen;j++)
	{
		sFidTmp = m_apParam[j].m_sFid;
		if( sFid == sFidTmp)
		{
			v = j;
			break;
		}
	}
	if(v != -1)//
	{
		saParm = m_apParam[j].m_saAllParm;
	}
	else
	{
		saParm = new Array();
	}
	//alert("c");
	 try
	 {
		 LoadEnd(sFid,saParm,sXml2,sRparam);
	 }
	 catch(e)
	 {
	 
	 }
}


function checkerror(sXml)
{
	if(sXml == "")
	{
	   throw new Error("bdmt300:system error xml is null");
	} 
	sRparam = "";
	if(sXml.indexOf("<?xml") == 0)
	{
		var xdDoc = XmlDocument.create();
		xdDoc.async = false;
		xdDoc.resolveExternals = false;
		xdDoc.loadXML(sXml);
		if (xdDoc.parseError.errorCode != 0) {
		   var myErr = xdDoc.parseError;
		   alert("errXml:"+sXml);
		   throw new Error("bdmt310:system error" + myErr.reason);
		} 
		var testEls = xdDoc.getElementsByTagName("message");//error
		var sColumns = null;
		
		if(testEls.length > 0)
		{
		  sErrtext =  testEls[0].getAttribute("errtext");
		  sErrcode =  testEls[0].getAttribute("errcode");
		  sRparam =  testEls[0].getAttribute("rparam");
		  if((sErrcode != "0")&&(sRparam != "nohint"))
			 throw new Error(sErrtext);
			// throw new Error("bdmt318-"+sErrcode + ":" + sErrtext);
		  if(sRparam != "nohint")//if save sucess also alert success
			alert(sErrtext);
		}
	}
	return sRparam;
}