// JavaScript Document

function ajax(option){
	option= {
		 type: 			option.type || "POST",
		 url: 			option.url || "",
		 timeout: 		option.timeout || 5000,
		 onComplite: 	option.onComplite || function (){},
		 onError:  		option.onError || function (){},
		 onSuccess:     option.onSuccess || function (){},
		 data: 			option.data || ""
	};
		
	 var xml;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         xml= new XMLHttpRequest();
      } else if (window.ActiveXObject) { // IE
         try {xml = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xml = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}}
      }


    xml.open( option.type, option.url, true);
	var timeuotLength = option.timeout ;
	var requestDone = false;
		
	setTimeout( function(){requestDone = true;}, timeuotLength );
			
	xml.onreadystatechange = function (){	
		if (xml.readyState==4 && !requestDone ){
			if ( httpSuccess(xml) ){
				option.onSuccess ( httpData(xml, option.type) );
			}else{
				option.onError();
			}			 
			option.onComplite();
			xml=  null;			 
		}
	};
		
		xml.send( );
		
	function httpSuccess(r) {
		try{
			return  !r.status && location.protocol == "file:" ||
				   ( r.status >= 200 && r.status < 303 )  ||
				    r.status == 304 ||
				    navigator.UserAgent.indexOf("Safari") >= 0 && typeof r.status == "undefined";
			
		} catch(e){
           document.title=r.status; /*alert("eroor" ); */
        }
		return false;
    }
	
	function httpData(r,type){
			var ct =r.getResponseHeader("content-type");
			var data = !type && ct && ct.indexOf("xml") >=0;
			data = type == "xml" || data ? r.responseXML : r.responseText;
			if (type=="script") {
				eval.call( window, data);
				}
			return data;
	}
	
}








