
/*================ get XMLHttpRequest methods ===========================*/
function newXMLHttpRequest() {
   var xmlHttpReq = null;
   // branch for native XMLHttpRequest object
   if(window.XMLHttpRequest) {
       try {
           xmlHttpReq = new XMLHttpRequest();
       } catch(e) {}
   // branch for IE/Windows ActiveX version
   } else if(window.ActiveXObject) {
       try {
           xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
       } catch(e) {
           try {
               xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
           } catch(e) {}
       }
   }
   
   return xmlHttpReq;
}



/*================ sycronized methods ===========================*/

function loadText(url,reqData) 
{
	try
	{
		var xmlHttp = newXMLHttpRequest();
       	xmlHttp.open("POST", url, false);//sycronized
       	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
       	xmlHttp.send(reqData);
		var text= xmlHttp.responseText;
		if(xmlHttp.status!=200)
			{ alert("HTTP error: "+xmlHttp.status+"\r\n"+xmlHttp.responseText); }
		if(text)
			text=trim(text);
		return text;
	}catch(exception)
	{
		alert("Time out! Please login again! ");//alert(exception);
	}
}

function loadTextArray(url,reqData) 
{
	var text=loadText(url,reqData);
	if(text == "" || text == null )
		return new Array();
	var results = text.split(",");
	return results;
}



/*================ Asycronized methods ===========================*/

function loadAsync(url,reqData,func){
	try
	{
		var xmlHttp = newXMLHttpRequest();
		var handlerFunction = getAyncReadyStateHandler(xmlHttp,func);
		xmlHttp.onreadystatechange = handlerFunction;
		xmlHttp.open("POST", url, true);
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlHttp.send(reqData);
	}catch(exception)
	{
		alert(exception);
	}
}


function getAyncReadyStateHandler(xmlHttp,func) {
  return function () {
    if (xmlHttp.readyState == 4) {
      if (xmlHttp.status == 200) {
        var text = xmlHttp.responseText;
		eval(func+"(xmlHttp)");
      } else {
        alert("HTTP error: "+xmlHttp.status+"\r\n"+xmlHttp.responseText);
      }
    }
  }
}


function loadAsyncHtml(url,reqData,div) 
{
	try
	{
		var xmlHttp = newXMLHttpRequest();
		var handlerFunction = getAyncHTMLReadyStateHandler(xmlHttp,div);
		xmlHttp.onreadystatechange = handlerFunction;
       	xmlHttp.open("POST", url, true);
       	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
       	xmlHttp.send(reqData);
	}catch(exception)
	{
		alert(exception);
	}
}


function getAyncHTMLReadyStateHandler(xmlHttp,div) {
  return function () {
    if (xmlHttp.readyState == 4) {
      if (xmlHttp.status == 200) {
        var text= xmlHttp.responseText;
		var divSection=$(div);
		if(divSection)
			divSection.innerHTML=text;
		else
			{ alert("Can't find div"); }
      } else {
        alert("HTTP error: "+xmlHttp.status);
      }
    }
  }
}



/*================ form methods ===========================*/

/*
	get the elments of the whole form. It's used for submit simple form;
	return the params String;(except the textarea)
	formObj: not used
*/
function getFormParams(formObj) {
    var getstr = "";
    var objTagName = "";
    var objType = "";
    var objValue = "";
    var objName = "";
    var i=0;
    var fileds = formObj.elements;
    
    for(i=0;i<fileds.length;i++)
    {
    	var objTagName = fileds[i].tagName;
	   
       if (objTagName == "INPUT" || objTagName == "TEXTAREA") {
       		objType = fileds[i].type;
       		objName = fileds[i].name;
	    	objValue = trim(fileds[i].value);
	    	objValue = encodeURIComponent( objValue );//encode
	    	
	      //alert(objType + ":" + objName + "=" + objValue );
	      
	      if ( objType == "button" || objType == "reset" )
	      {
	      	continue;
	      }
	      
	      if (objType == "checkbox") {
             if (fileds[i].checked) {
              getstr += generateParamStr(objName,objValue);
             } 
             //else {
             //   getstr += objName + "=&";
             //}
          }
          else if (objType == "radio") {
             if (fileds[i].checked) {
                getstr += generateParamStr(objName,objValue);
             }
          }
	      else	//objType == "text" || objType == "textarea" || objType="hidden"
          {
             getstr += generateParamStr(objName,objValue);
          }
          
       }   
       else if (objTagName == "SELECT") {
          var sel = fileds[i];
          getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
       }
       
    }
    
    return getstr;
     
}


function generateParamStr(objName,objValue)
{
	return objName + "=" + objValue + "&";
}


function getFailMessage(message)
{
	return message.split(":");
}

function getSimpleFailMessage(message)
{
	return message.split(":")[1]; //[0] is fail
}



