﻿Object.extend = function(destination, source) {
  for (var property in source)
    destination[property] = source[property];
  return destination;
};
Ajax={
    _getRequestObject:function(){
        var requestObj;
		try{
		    requestObj=new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				requestObj=new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e1){
				requestObj=null;
			}
		}
		if(!requestObj&&typeof requestObj!="undefined"){
			requestObj = new XMLHttpRequest();
		}			
		return requestObj;
	},
	open:function(requestMethod,destination,parameter,dataType,objDataProcessor,div,btn){
	    destination=destination+(/\?/.test(destination)?'&':'?')+'r='+Math.random();
		var requestObj=Ajax._getRequestObject();
		var me=this;		
		requestObj.onreadystatechange=function() {
                if(requestObj.readyState==1 ) 
                {
                   if(div!=null){if(div!=''){$(div).innerHTML="<img  src='/image/loading.gif' />";}}
                   if(btn!=null){if(btn!=''){$(btn).disabled=true;}}
                }
			    if(requestObj.readyState==4 ) {
				    if(requestObj.status==200 ) {
				        if(btn!=null){if(btn!=''){$(btn).disabled=false;}}
				         if(div!=null){if(div!=''){$(div).innerHTML="";}}
					    if ( dataType == "TEXT" ) {	
						    objDataProcessor(me.ChangeHtml(requestObj.responseText));
					    } else if ( dataType == "XML" ) {
						    objDataProcessor(requestObj.responseXML);
					    } else {
						    alert("Response type error:"+dataType);
						    return;
					    }
				    } else {
				    me.onFaile()
				    alert(requestObj.responseText);
				    }
			    }
		}
		requestObj.open(requestMethod, destination, true);
		requestObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		if(parameter==null){requestObj.send('');}else{requestObj.send(parameter);}
	},
	onFaile:function(s){
	   location.href="/error";
	},
	 ChangeHtml:function(str)
    {
        str=str.replace(/&lt;/g,"<").replace(/&gt;/g,">");
        str=str.replace(/\"/g,"");
        return str;
    }
}
