var errNotObject  = 1;
var errNotObjectStr  = 'خطا داخلی وبسایت';
var errNotConnect = 2;
var errNotConnectStr = 'خطا در ارتباط با سرویس دهند';
var errNotRunTime = 3;
var errNotRunTimeStr = 'خطای زمان اجرا';
var errNotknowStr = 'خطای نامشخص';
var errNotPath = 404 
var errNotPathStr = 'خطا در یافتن مسیر مورد نظر';
function encodeuri( uri ) {
    if (encodeURIComponent) {
        return encodeURIComponent(uri);
    }
    if (escape) {
        return escape(uri);
    }
}
 //-----------------------------------------------------------
function decodeuri( uri ) {
    uri = uri.replace(/\+/g, ' ');
    if (decodeURIComponent) {
        return decodeURIComponent(uri);
    }
    if (unescape) {
        return unescape(uri);
    }
    return uri;
}
 //-----------------------------------------------------------
 //-----------------------------------------------------------
 //-----------------------------------------------------------
//-----------------------------------------------------------

function ajax_api(method, req,modeType,vonload){
//-----------------------------------------------------------
function _Ajaxonload(){
var resultObjet;
try
 {
  resultObjet = document.getElementById (resultLayerL);
  if (resultObjet) 
       {resultObjet.innerHTML = obj.response;}
   else 
    {_AjaxonError(errNotObject);}
 }
 catch(err){_AjaxonError(errNotRunTime);}
}
//-----------------------------------------------------------

function _AjaxonError(ErrID){
 var errorObject;
 var errStr = '';
 switch (ErrID){
  case errNotConnect :
   errStr = errNotConnectStr ;
  break;
  case errNotObject :
   errStr = errNotObjectStr  ;
  break;
  case errNotRunTime:
   errStr = errNotRunTimeStr ; 
  break;
  case errNotPath :
   errStr = errNotPathStr ; 
  break;
  caseelse:
   errStr = errNotknowStr;
  break;
 }
 try{
   errorObject = document.getElementById (errorLayerL);
   errorObject.innerHTML = errStr;
 }  
 catch(err){alet('Error')}
}
//-----------------------------------------------------------
function removeWhite(doc){
 var i;
 var isWhite = /\S/;
  for (var i=0; i<doc.childNodes.length; i++)
  {
	var child = doc.childNodes[i];
	if (child.nodeType == 3 && !isWhite.test(child.nodeValue) )
	 {
      doc.removeChild(doc.childNodes[i]);
	  i--;
	 }
	if (child.nodeType == 1 && child.hasChildNodes())
	 {
	  removeWhite(child);
	 }
	}
}
//-----------------------------------------------------------
function _AjaxOpen(url)
   {
    this.isOpen = true;
    this.xmlhttp.open(this.method,url,true);
    
    if (this.method == "POST") {
        this.xmlhttp.setRequestHeader("Connection", "close");
        this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        this.xmlhttp.setRequestHeader("Method", "POST " + url + "HTTP/1.1");
    }
   }
//-----------------------------------------------------------
function _Ajaxonreadystatechange()
   {
    if (xmlhttpL.readyState == 4)
     {
      obj.onRecieve();
     }
   }
 //-----------------------------------------------------------  
function _Ajaxload(url)
   {
    if(url.indexOf("?",url) > 0)
     {url += "&bustcache="+new Date().getTime();}
     else
     {url += "?bustcache="+new Date().getTime();}
     onLoadL = this.onLoad;
     xmlhttpL.onreadystatechange = _Ajaxonreadystatechange;
		if (!this.isOpen)
		this.open(url);
		this.xmlhttp.send(this.req);
   }
//-----------------------------------------------------------
 function _AjaxsetReqHeade(hname,hvalue){
  		xmlhttpL.setRequestHeader(hname,hvalue);
 }
//-----------------------------------------------------------
function _AjaxonRecieve()
 {
 	if(xmlhttpL.status == 200)
 	{
 		obj.response = xmlhttpL.responseText;
 		 if (xmlhttpL.responseXML !=null)
 		  {
 		 	if (xmlhttpL.responseXML.documentElement !=null){
 		 		obj.DOM = xmlhttpL.responseXML.documentElement;
 		 		removeWhite(obj.DOM);
 		 	}
 		  }
 		onLoadL();
 	}
 	else
 	{
 	 _AjaxonError(xmlhttpL.status);
 	}
 }
//-----------------------------------------------------------
  function _AjaxgetTagValue(tagName)
  {
  		var t = this.getTag(tagName);
  				return t.firstChild? t.firstChild.nodeValue : false;
  }

//-----------------------------------------------------------
 function _AjaxgetTag(tagName)
  {
 		var t = obj.DOM.getElementsByTagName(tagName);
 		return t[0] || false;
  }
//-----------------------------------------------------------   
 function _AjaxgetTagContent(tagName)
  {
 	node = xMain.DOM.getElementsByTagName(tagName)[0].firstChild
 	return node.xml || node.data || false;
  }
//----------------------------------------------------------- 
//----------------------------------------------------------- 
//----------------------------------------------------------- 
//----------------------------------------------------------- 
//----------------------------------------------------------- 
 var xmlhttpL = "";
 var obj;
 var onLoadL;
 var resultLayerL;
 var errorLayerL;
 var modeType;
 this.modeType = modeType ? modeType : 1;
 this.xmlhttp = "";
 this.DOM = "";
 this.response = "";
 this.method = method? method :"GET";
 this.req = req? req : null;
 this.isOpen=false;
 if (window.XMLHttpRequest)
  {
   this.xmlhttp=new XMLHttpRequest()
  }
 else if (window.ActiveXObject)
  {
   this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
  }
 obj = this;
 xmlhttpL = this.xmlhttp;
 this.open = _AjaxOpen;
 this.load = _Ajaxload;
 this.setReqHeader = _AjaxsetReqHeade;
 this.onLoad = vonload?vonload:_Ajaxonload;
 this.onRecieve = _AjaxonRecieve;
 this.getTagValue = _AjaxgetTagValue;
 this.getTag = _AjaxgetTag;
 this.getTagContent = _AjaxgetTagContent;
}
//----------------------------------------------------------- 
//--------------
function createQS(frm){
	qs = "";
		for (i=0;i<frm.length;i++){
		 if(frm[i].type == "checkbox" || frm[i].type == "radio")
		  {qs += frm[i].name+"="+(frm[i].checked?1:0)+"&";}
		 else
		  {qs += frm[i].name+"="+(encodeuri(frm[i].value))+"&";}

		 }
	return qs;
}
//----------------------------------------------------------- 
function showError(msg){
  alert(msg);
}
//----------------------------------------------------------- 
