﻿var XMLHttpFactories = [
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")},
	function () {return new XMLHttpRequest()}	
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++) {
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}

function SendRequestHTML(url,writeElementId) {
	var req = createXMLHTTPObject();
	var writeElement = document.getElementById(writeElementId);
	var strResponse;
	if (!req) return;
	req.open("GET",url,true);
	//req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	req.setRequestHeader('Content-type','text/html; charset=iso-8859-1');
	req.onreadystatechange = function () 
	                         {
                                 if (req.readyState != 4) return;
                                 if (req.status != 200 && req.status != 304) {
                                    alert('HTTP error ' + req.status);
                                    return;
                                 }
                                 strResponse = req.responseText;      
                                 var innerElement = document.createElement("DIV");                        
                                 innerElement.innerHTML = unescape(strResponse);
                                 writeElement.appendChild(innerElement);                                                                
	                         }	
	req.send("");
}


//Se usa desde SearchCitiesByCountry
/*
function SendRequestHTMLValue(url,writeElementId) {
	var req = createXMLHTTPObject();
	var writeElement = document.getElementById(writeElementId);
	var strResponse;
	if (!req) return;
	req.open("GET",url,false);
	//req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	req.setRequestHeader('Content-type','text/html; charset=iso-8859-1');

	req.send("");
	//2007-10-08 firefox no detecta el evento req.onreadystatechange
	//si el aprametro async es false en el req.open
	//por lo tanto hay que procesar despues de hacer el send	
    if (req.readyState != 4) return;
    if (req.status != 200 && req.status != 304) {
       alert('HTTP error ' + req.status);
       return;
    }
    strResponse = req.responseText;      
    writeElement.value = unescape(strResponse);
                                 
	                         
}
*/


//Se usa desde SearchAvailability
/*
function sendRequestPOSTValue(url, writeElementId, postData, async) {
	var req = createXMLHTTPObject();
	var writeElement = document.getElementById(writeElementId);
	var strResponse;	
	if (!req) return;
	req.open("POST",url,async);
	//req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	//2007-10-08 Se comento el renglon de arriba por que con firefox no funciona
	req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	//2007-10-08 si es asincronico funciona onreadystatechange en IE 
	// y en FireFox, si es sincronico hay que procesar la respuesta
	// despues del send para que funcione en firefox 
	if (async)
	{
	    req.onreadystatechange = function () 
	                         {
		                       if (req.readyState != 4) return;
		                       if (req.status != 200 && req.status != 304) {
    	                         alert('HTTP error ' + req.status);
			                     return;
		                       }
		                       strResponse = req.responseText; 
                               writeElement.value = unescape(strResponse);
                             }
	    req.send(postData);
	}
	else
	{
	    req.send(postData);
        if (req.readyState != 4) return;
        if (req.status != 200 && req.status != 304) {
          alert('HTTP error ' + req.status);
          return;
        }
        strResponse = req.responseText; 
        writeElement.value = unescape(strResponse);
	    
	}
}
*/

function sendRequestPOSTValue(url, writeElementId, postData, async, callback) {
	var req = createXMLHTTPObject();
	var writeElement = document.getElementById(writeElementId);
	var strResponse;	
	if (!req) return;
	req.open("POST",url,async);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	req.onreadystatechange = function () 
	                         {
		                       if (req.readyState != 4) return;
		                       if (req.status != 200 && req.status != 304) {
    	                         alert('HTTP error ' + req.status);
			                     return;
		                       }
		                       strResponse = req.responseText;
                               writeElement.value = unescape(strResponse);                              
		                       callback();                               
                             }
	req.send(postData);
}


function sendRequestPOST(url, writeElementId, postData, async, callback) {
	var req = createXMLHTTPObject();
	var writeElement = document.getElementById(writeElementId);
	var strResponse;	
	if (!req) return;
	req.open("POST",url,async);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	req.onreadystatechange = function () 
	                         {
		                       if (req.readyState != 4) return;
		                       if (req.status != 200 && req.status != 304) {
    	                         alert('HTTP error ' + req.status);
			                     return;
		                       }
		                       strResponse = req.responseText; 
                               var innerElement = document.createElement("DIV");  
                               innerElement.innerHTML = unescape(strResponse);
                               writeElement.appendChild(innerElement);                               
		                       callback();                               
                             }
	req.send(postData);
}

function sendRequestPOSTOneWay(url, postData, async, callback, param) {
	var req = createXMLHTTPObject();
	if (!req) return;
	req.open("POST",url,async);
	req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	req.onreadystatechange = function () 
	                         {
		                       if (req.readyState != 4) return;
		                       if (req.status != 200 && req.status != 304) {
    	                         alert('HTTP error ' + req.status);
			                     return;
		                       }
		                       callback(param);                               
                             }
	req.send(postData);
}
