var Ajax = {	
	
	instance : function(){
		var xmlHttp;		
		try{ 
			xmlHttp = new XMLHttpRequest();
		}catch (e){			
			try{
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e){
				try{
					xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				}catch (e){
					alert("Seu navegador nao da suporte a tecnologia AJAX");
					return false;
				}
			}
		}		
		return xmlHttp;
	},
	
	load : function (url, target){
		var oAjax = new this.instance();		
		oAjax.onreadystatechange = function(){			
			if(oAjax.readyState == 4)	{ 
				target.innerHTML = oAjax.responseText; 
				return true;
			}
		}		
		with (oAjax){
			open("GET", url, true);
			send(null);
		}	
	},
	
	retToObject : function(url){
		var oAjax = new this.instance();		
		oAjax.onreadystatechange = function(){			
			if(oAjax.readyState == 4)	{ 
				ret = eval(oAjax.responseText); 
				if (ret.length>0){
					return {values:ret};
				}else{
					return {values:[]}
				}
			}
		}		
		with (oAjax){
			open("GET", url, true);
			send(null);
		}	
	},
	
	send : function(url, Ref, target){
		var oAjax =  this.instance();
		var oTypes = new Array("INPUT","TEXTAREA","SELECT");	
		var params = "";
		
		//MONTA OS PARAMENTROS	
		for(i=0;i<oTypes.length;i++){
			obj = Ref.getElementsByTagName(oTypes[i]);
			for(j=0;j<obj.length;j++){
				switch ( oTypes[i] ){
					case "INPUT" :  if (obj[j].type == 'text' || obj[j].type == 'password' || obj[j].type == 'hidden'){
														params += obj[j].id + "=" + escape(obj[j].value) + "&" ;
													}else{
														params += obj[j].checked ? obj[j].id + "=" + escape(obj[j].value) + "&" : '' ;
													};
													break;						
					default : params += obj[j].id + "=" + escape(obj[j].value) + "&"; 
										break;
				}
			}
		}		
		//LIMPA PARAMETRO
		params = params.substring(0,params.length-1);
		
		//EXECUTA ENQUANTO PROCESSA
		oAjax.onreadystatechange = function(){
			if( oAjax.readyState == 4 ){ target.innerHTML = oAjax.responseText; }
		}		
		with (oAjax){			
			open("POST", url, true);
			setRequestHeader( "Content-type", "application/x-www-form-urlencoded" )
			setRequestHeader( "Content-length", params.length );
			//setRequestHeader( "Content-type", "multipart/form-data" ) ;
			send(params);
		}	
		return false;
	},
	
	loadList : function(url,target,iniValue){		
		var oAjax = new this.instance();			
					
		oAjax.onreadystatechange = function(){
			if (oAjax.readyState==4){				
				try{
					while(target.options.length>0) target.options[0] = null;			
					var ret = eval(oAjax.responseText);
					for(var i=0;i<ret.length;i++){
						opt = ret[i].split(':');
						target.options[target.options.length] = new Option(opt[1],opt[0]);
						if( opt[0] == iniValue ) target.selectedIndex = target.options.length - 1; // seleciona um valor inicial				
					}
				}catch (err){
					alert(err)
				}
			}			
		}		
		with (oAjax){
			open("GET", url, true);
			send(null);
		}		
	},
	
	setValues : function(url,target){		
		var oAjax = new this.instance();		
		oAjax.onreadystatechange = function(){			
			if(oAjax.readyState == 4)	{ 
				try{
					ret = eval(oAjax.responseText);
					for(i=0;i<target.length;i++){					
						target[i].value = ret[i];
					}
				}catch (err){
					return false;
				}
			}
		}		
		with (oAjax){
			open("GET", url, true);
			send(null);
		}	
	}	
}
