function Ajax(){
	this.assincrono = false;
	this.metodo = "GET";
	this.validar = "";
	this.xmlhttp = null;
	
	try{
		this.xmlhttp =  new ActiveXObject("Microsoft.XMLHTTP");
	}catch(e){
		try{
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(ex){
			try{
				this.xmlhttp = new XMLHttpRequest();
			}catch(exc){
				alert("Esse browser não tem recursos para uso do Ajax");
				this.xmlhttp = null;
			}
		}
	}
	
	this.urlRand = function(uri){
		var dt = new Date();
		if(uri.indexOf("?")>=0){
			return uri+"&"+encodeURI(Math.random()+"_"+dt.getTime());
		}else{
			return uri+"?"+encodeURI(Math.random()+"_"+dt.getTime());
		}
	}
	
	//executa os script que estiverem dentro do text
	this.loadScripts = function(content){
		var start, src_pos, end, source;  
		var objScript = null;  
		start = content.indexOf('<script', 0)  
		while (start!=-1){  
			var objScript = document.createElement("script");  
			src_pos = content.indexOf(' src', start)  
			start = content.indexOf('>', start) + 1;  
			if (src_pos < start && src_pos >=0){
				start = src_pos + 4;  
				end = content.indexOf('.', start)+4;  
				source = content.substring(start,end);  
				source = source.replace("=","").replace(" ","").replace("\"","").replace("\"","").replace("\'","").replace("\'","").replace(">","");  
				objScript.src = source;  
			}else{
				end = content.indexOf('</script>', start);  
				source = content.substring(start,end);  
				objScript.text = source;  
			}  
			document.body.appendChild(objScript);  
			start = content.indexOf('<script', end);  
			objScript = null;  
		}  
	}


	//carrega o conteudo de uma ajax em uma var
	this.loadResult = function(url){
		if(this.xmlhttp) {
			this.xmlhttp.open(this.metodo, this.urlRand(url) , this.assincrono);
			//headers, vulnerável
			this.xmlhttp.setRequestHeader("Cache-Control", "no-cache");
        	this.xmlhttp.setRequestHeader("Pragma", "no-cache");
			//
			if(this.metodo == 'GET'){
				this.xmlhttp.send(null);
			}else if(this.metodo == 'POST'){
				this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
				try{
					this.xmlhttp.send(url.split("?")[1]);
				}catch(e){}
			}
			//
			if(this.assincrono){
				this.xmlhttp.onreadystatechange = function(){
					if(ajax.xmlhttp.readyState == 4){
						if(ajax.xmlhttp.status == 200){
							ajax.validar = ajax.xmlhttp.responseText;
						}else{
							alert(ajax.xmlhttp.statusText);
						}
					}
				}
			}else{
				ajax.validar = ajax.xmlhttp.responseText;
			}

			ajax.loadScripts(ajax.validar);
		}		
		
		return this.validar;
	}
	
	this.loadContent = function(url, div_name){
		if(this.xmlhttp) {
			this.xmlhttp.open(this.metodo, this.urlRand(url) , this.assincrono);
			//headers, vulnerável
			this.xmlhttp.setRequestHeader("Cache-Control", "no-cache");
        	this.xmlhttp.setRequestHeader("Pragma", "no-cache");
			//
			if(this.metodo == 'GET'){
				this.xmlhttp.send(null);
			}else if(this.metodo == 'POST'){
				this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
				try{
					this.xmlhttp.send(url.split("?")[1]);
				}catch(e){}
			}
			//
			if(this.assincrono){
				this.xmlhttp.onreadystatechange = function(){
					if(ajax.xmlhttp.readyState == 4){
						if(ajax.xmlhttp.status == 200){
							ajax.validar = ajax.xmlhttp.responseText;
						}else{
							alert(ajax.xmlhttp.statusText);
						}
					}
				}
			}else{
				ajax.validar = ajax.xmlhttp.responseText;
				ajax.loadScripts(ajax.xmlhttp.responseText);
			}
			
			try{
				get(div_name).innerHTML = ajax.validar;
			}catch(e){}
		}
	}
	
}

var ajax = new Ajax();
ajax.assincrono = false;
ajax.metodo = "POST";


