﻿// 
//Send the data to server 
function XmlHttpSend(url, method, params, asyn)
{
	var headers = new Array( 
					new Array("Content-Type", "application/x-www-form-urlencoded"), //multipart/form-data 
					new Array("Connection", "Keep-Alive"),
					new Array("Pragma", "no-cache"),
					new Array("Cache-Control", "no-cache")
				);
				
	return XmlHttpSendEx(url, method, params, asyn, headers);

}

function XmlHttpSendExAsyn(url, method, params, parseResults)
{
	var headers = new Array(
					new Array("Content-Type", "application/x-www-form-urlencoded"), //multipart/form-data 
					new Array("Connection", "Keep-Alive"),
					new Array("Pragma", "no-cache"),
					new Array("Cache-Control", "no-cache")
				);
	var objXMLHTTP = null;
	var i, result = null;
	
	if (window.XMLHttpRequest) 
	{  
		objXMLHTTP = new XMLHttpRequest(); 
	} 
	else 
	{  
		var MSXML = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'); 
		for(var i = 0; i < MSXML.length; i ++) 
		{  
			try 
			{  
				objXMLHTTP = new ActiveXObject(MSXML[i]); 
				break; 
			} 
			catch(e) 
			{  
			} 
		} 
	} 

	//compose the parameters	
	var strparam = null;
	if(params != null)
	{
		for(i = 0; i < params.length; i++)
		{
			var tmp = params[i];
			if(typeof(tmp) == 'object' && (tmp instanceof Array) && tmp.length >= 2)
			{
				if(strparam == null)
				{
					strparam = tmp[0] + "=" + tmp[1];
				}
				else
				{
					strparam += "&" + tmp[0] + "=" + tmp[1];
				}
			}
		}
	}	

	if(strparam != null)
	{
		if(method == "GET")
		{
			if(url.indexOf("?") == -1)
			{
				url += "?" + strparam;
			}
			else
			{
				url += "&" + strparam;
			}
		}
	}

    objXMLHTTP.open(method, url, false);//false为同步[等待服务器返回消息]，true为异步[不等待服务器返回消息]
    
    objXMLHTTP.onreadystatechange=function() 
		{
			if (objXMLHTTP.readyState == 4) 
			{
				result = objXMLHTTP.responseText;
				//alert("parseResults:"+parseResults);
				eval(parseResults);				
			}
		}
     
	if(headers != null && typeof(headers) == 'object' && (headers instanceof Array))
	{
		for(i = 0; i < headers.length; i++)
		{
			var tmp = headers[i];
			if(typeof(tmp) == 'object' && (tmp instanceof Array) && tmp.length >= 2)
			{
				objXMLHTTP.setRequestHeader(tmp[0], tmp[1]);
			}
		}
	}

	if(method == "POST")
	{
		objXMLHTTP.setRequestHeader("Content-length", strparam.length);
		objXMLHTTP.send(strparam); 
	}
	else
	{
		objXMLHTTP.send(null); 
	}
}

function XmlHttpSendEx(url, method, params, asyn, headers)
{
	var objXMLHTTP = null;
	var i, result = null, bie = true;
	
	if (window.XMLHttpRequest) 
	{  
		bie = false;
		objXMLHTTP = new XMLHttpRequest(); 
	} 
	else 
	{  
		var MSXML = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'); 
		for(var i = 0; i < MSXML.length; i ++) 
		{  
			try 
			{  
				objXMLHTTP = new ActiveXObject(MSXML[i]); 
				break; 
			} 
			catch(e) 
			{  
			} 
		} 
	} 

	//compose the parameters	
	var strparam = null;
	if(params != null)
	{
		for(i = 0; i < params.length; i++)
		{
			var tmp = params[i];
			if(typeof(tmp) == 'object' && (tmp instanceof Array) && tmp.length >= 2)
			{
				if(strparam == null)
				{
					strparam = tmp[0] + "=" + tmp[1];
				}
				else
				{
					strparam += "&" + tmp[0] + "=" + tmp[1];
				}
			}
		}
	}	

	if(strparam != null)
	{
		if(method == "GET")
		{
			if(url.indexOf("?") == -1)
			{
				url += "?" + strparam;
			}
			else
			{
				url += "&" + strparam;
			}
		}
	}

	objXMLHTTP.open(method, url, asyn);

	if(headers != null && typeof(headers) == 'object' && (headers instanceof Array))
	{
		for(i = 0; i < headers.length; i++)
		{
			var tmp = headers[i];
			if(typeof(tmp) == 'object' && (tmp instanceof Array) && tmp.length >= 2)
			{
				objXMLHTTP.setRequestHeader(tmp[0], tmp[1]);
			}
		}
	}

	if(bie)
	{
		objXMLHTTP.onreadystatechange=function() 
		{
			if (objXMLHTTP.readyState == 4) 
			{
				result = objXMLHTTP.responseText;
			}
		}
	}

	if(method == "POST")
	{
		objXMLHTTP.setRequestHeader("Content-length", strparam.length);
		objXMLHTTP.send(strparam); 
	}
	else
	{
		objXMLHTTP.send(null); 
	}

	if(!bie)
	{
		result = objXMLHTTP.responseText;
	}
	return result;
}
 
 //动态获得js文件 2006.12.21 yaojianrong
function IncludeJS(script_id, url)
{    
    var oXmlHttp = null; 
    var  result = null, bie = true;
    if(window.XMLHttpRequest )   
    {
        bie = false
        oXmlHttp = new XMLHttpRequest() ; 
    }
	else                       //ie
	{ 
		var MSXML = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'); 
		for(var i = 0; i < MSXML.length; i ++) 
		{  
			try 
			{  
				oXmlHttp = new ActiveXObject(MSXML[i]); 
			} 
			catch(e) 
			{  
			} 
		} 
	}
    if(bie)
	{
		oXmlHttp.OnReadyStateChange = function()  
		{ 
			if ( oXmlHttp.readyState == 4 ) 
			{
				if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 ) 
				{
					result = oXmlHttp.responseText;					
				} 
			} 
		} 
	}
	if(!bie)
	{
		result = oXmlHttp.responseText;
	}	
    oXmlHttp.open('GET',url, false); 
    oXmlHttp.send(null); 
    IncludeFile(script_id,result);
} 
function IncludeFile(script_id,source) 
{ //alert(source);
    if (( source != null ) && ( !oo( script_id ) ) ){ 
        var oHead = document.getElementsByTagName('HEAD').item(0); 
        var oScript = document.createElement( "script" ); 
        oScript.language = "javascript"; 
        oScript.type = "text/javascript"; 
        oScript.id = script_id; 
        oScript.defer = true; 
        oScript.text = source; 
        oHead.appendChild( oScript ); 
    } 
} 
//Send page's data to server  [yaojianrong]
function postPageData(url,method,params,isAsyn)
{
    var result;
    if(isAsyn != undefined)
        result = XmlHttpSend(url,method,params,isAsyn);	 
    else
	    result = XmlHttpSend(url,method,params,false);	 
	return result;
}
//Send form's data to server 
function postFormData(thefrm)
{
	var params = new Array();
	var j = 0;
	var result = "";
	for (var i = 0; i < thefrm.elements.length; i++) 
	{
		var e = thefrm.elements[i];
		if (e.type == 'text' || e.type == 'hidden' || e.type == 'password'||e.type =='textarea' ||e.type == 'select-one')
		{						
			params[j] = new Array(e.name, e.value);
			j++;
		}
		else if(e.type == 'checkbox' && e.checked)
		{
			params[j] = new Array(e.name, e.value);
			j++;
		}
	}

	if(j > 0)
	{
		result = XmlHttpSend(thefrm.action, thefrm.method.toUpperCase(), params, true);
	}
	return result;
}	

//Send form's data to server 
function postFormDataAsyn(thefrm, parseResults)
{
	var params = new Array();
	var j = 0;
	var result = "";
	for (var i = 0; i < thefrm.elements.length; i++) 
	{
		var e = thefrm.elements[i];
		if (e.type == 'text' || e.type == 'hidden' || e.type == 'password'||e.type =='textarea' ||e.type == 'select-one')
		{						
			params[j] = new Array(e.name, e.value);
			j++;
		}
		else if(e.type == 'checkbox' && e.checked)
		{
			params[j] = new Array(e.name, e.value);
			j++;
		}
	}

	if(j > 0)
	{
//		result = XmlHttpSend(thefrm.action, thefrm.method.toUpperCase(), params, true);
		result = XmlHttpSendExAsyn(thefrm.action, thefrm.method.toUpperCase(), params, parseResults)
	}
	return result;
}	


//执行成功时返回200
var SUCC_COMPLETE = 200;
 
//得到执行结果，取到第一个字符空格之前的字符，如果等于200那么说明执行成功
function getResultCode(result)
{
	var p = result.indexOf(' ');	 
	var ret = null;
	if(p > -1)
	{
		try
		{
			ret = parseInt(result.substr(0,p));
		}
		catch(e)
		{
			ret = null;
		}
	}	
	return ret;
}

//得到执行错误的返回信息 
function getResultErrMsg(result)
{
	var p = result.indexOf(' ');
	var ret = null;
	//alert("p:"+p);
	if(p > -1)
	{
		j = result.toLowerCase().indexOf("\r\n", p);
		ret = result.substr(p, j - p);
	}
	return ret;
}

//得到返回的参数的值
function getResultParameter(result, param)
{
	var ret = null;
	param += ":";
	var p = result.indexOf(param);	
	if(p > -1)
	{
		j = result.toLowerCase().indexOf("\r\n", p);
		ret = result.substr(p + param.length, j - p - param.length);
	}
	return ret;
}
//得到返回的参数的值[数组]
//return array
function getResultParameters(result, param)
{
	var ret = new Array();
	param += ":";
	var p = result.indexOf(param);
	var i = 0;
	while(p > -1)
	{
		j = result.toLowerCase().indexOf("\r\n", p);
		ret[i] = result.substr(p + param.length, j - p - param.length);
		p = result.indexOf(param, j);
		i++;
	}
	return ret;
}



