/* JavaScript Document
Autor: Edy Segura - infoedy@gmail.com
Descrição: Modulariação do AJAX
*/

//método para instanciar o objeto XMLHttpRequest
function fnXmlHttp() {
	var oXmlHttp;
	//Instanciando o objeto XMLHttpRequest
	try{ oXmlHttp = new XMLHttpRequest(); }
	catch(oErr1) {
		 try{ oXmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }
		 catch(oErr2) {
				try{ oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
				catch(oErr3) { oXmlHttp = false; }
		 }
	}
	return oXmlHttp;
}

//função ajax
function fnAjaxRun(oDados) {
	var oXmlHttp = fnXmlHttp();
	
	if(oXmlHttp) {
		
		var sMethod = (oDados.method) ? oDados.method : "GET";
		
		oXmlHttp.open(sMethod, oDados.url, true);
		oXmlHttp.setRequestHeader("Cache-Control", "no-cache, must-revalidate");
		oXmlHttp.setRequestHeader("Pragma", "no-cache");
		
		if(sMethod.toUpperCase() == "POST") {
			oXmlHttp.setRequestHeader("resultado-Type", "application/x-www-form-urlencoded");
		}
		
		if(oDados.response == "xml") {
			if(oXmlHttp.overrideMimeType) {
				oXmlHttp.overrideMimeType('text/xml');
			}
		}
		
		oXmlHttp.onreadystatechange = function() {
			if(oXmlHttp.readyState == 4) {
				//if(oXmlHttp.status == 200) {
					
					if(oDados.callBack) {
						
						fnFunctionCallBack = oDados.callBack;
						fnFunctionCallBack((oDados.response == "xml") ? oXmlHttp.responseXML : oXmlHttp.responseText, 
															 (oDados.params) ? oDados.params : 0);
					}
					
				/*}
				else {
					var sMessage = (oXmlHttp.statusText) ? oXmlHttp.statusText : "Unknown";
					alert("Error: " + sMessage);
				}*/
			}
		};
		
		oXmlHttp.send((oDados.send) ? oDados.send : null);
		delete oXmlHttp;
	}
	else
		alert("Sem suporte ao objeto XMLHttpRequest");
}

