var XMLHttpRequestObject = false;

if (window.XMLHttpRequest) {
	XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
	XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}

function getData(dataSource, nfunction) {

	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open("GET", dataSource);
		XMLHttpRequestObject.onreadystatechange = nfunction;
		XMLHttpRequestObject.send(null);
	}
}

function QHTTPOK() { return (XMLHttpRequestObject.readyState == 4 &&	XMLHttpRequestObject.status == 200); }
function ResetHTTP() { XMLHttpRequestObject = false; }
function HTTPData() { return XMLHttpRequestObject.responseText; }


/*
Session.codepage = 65001
function XmlHttp(){}

XmlHttp.getAvailableActiveX = function(){
	if(XmlHttp.availableActiveX)
		return XmlHttp.availableActiveX;

	var ids = ["MSXML4.XmlHttp", 
			   "MSXML3.XmlHttp",
			   "MSXML2.XmlHttp", 
			   "MSXML.XmlHttp",
			   "Microsoft.XmlHttp"];

	for(var i=0; i<ids.length; i++){ 
		try{
			var obj = new ActiveXObject(ids[i]);
			XmlHttp.availableActiveX = ids[i];
			return ids[i];
		} 
		catch(ex){
			xmlhttp = false; 
		}
	}
	throw new Exception('XmlHttp objects not supported by the browser');
}

XmlHttp.create = function(){
	try{
		if(window.ActiveXObject){
			return new ActiveXObject(XmlHttp.getAvailableActiveX());
		}
		else if (window.XMLHttpRequest){
			var r = new XMLHttpRequest();

			// para alguna versiones de Mozilla que no disponen de readyState y onReadyState
			if(r.readyState == null){
				r.readyState = 1;
				r.addEventListener('load', function(){
					r.readyState = 4;
					if(typeof(r.onreadystatechange)=='function')
						r.onreadystatechange();
				}, false);
			}
			return r;
		}
	}
	catch (ex) {}
	throw new Error('XmlHttp objects not supported by the browser');
}

function loadContentsOnDemand(divname,fillingUrl){
   var xmlHttp = XmlHttp.create();
   xmlHttp.open("POST", fillingUrl, true);   // async
   xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');

//Send the proper header information along with the request
//http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//http.setRequestHeader("Content-length", params.length);
//http.setRequestHeader("Connection", "close");

   xmlHttp.onreadystatechange = function () {
      if (xmlHttp.readyState == 4) {
         document.getElementById(divname).innerHTML = xmlHttp.responseText;
      }
   };
   document.getElementById(divname).innerHTML = '<span class="txtrojo10"><b>Cargando...</b></span>';
   // llamada en otro hilo para permitir actualizar el interfaz
   window.setTimeout(function () {
      xmlHttp.send('nid='+nid);
   }, 10);
}


function formData(formId) {
	formId=document.getElementById(formId)
	var postStr= '';
	for (i = 0; i < formId.elements.length; i++) {
		formElem = formId.elements[i];
		switch (formElem.type) {
			case 'text':
			case 'select-one':
			case 'hidden':
			case 'password':
			case 'textarea':
			postStr += formElem.name + '=' + escape(formElem.value) + '&'
		break;
		}
	}
}

*/


function XmlHttp(){}

XmlHttp.getAvailableActiveX = function(){
	if(XmlHttp.availableActiveX)
		return XmlHttp.availableActiveX;

	var ids = ["MSXML4.XmlHttp", 
			   "MSXML3.XmlHttp",
			   "MSXML2.XmlHttp", 
			   "MSXML.XmlHttp",
			   "Microsoft.XmlHttp"];

	for(var i=0; i<ids.length; i++){ 
		try{
			var obj = new ActiveXObject(ids[i]);
			XmlHttp.availableActiveX = ids[i];
			return ids[i];
		} 
		catch(ex){
			xmlhttp = false; 
		}
	}
	throw new Exception('XmlHttp objects not supported by the browser');
}

XmlHttp.create = function(){
	try{
		if(window.ActiveXObject){
			return new ActiveXObject(XmlHttp.getAvailableActiveX());
		}
		else if (window.XMLHttpRequest){
			var r = new XMLHttpRequest();

			// para alguna versiones de Mozilla que no disponen de readyState y onReadyState
			if(r.readyState == null){
				r.readyState = 1;
				r.addEventListener('load', function(){
					r.readyState = 4;
					if(typeof(r.onreadystatechange)=='function')
						r.onreadystatechange();
				}, false);
			}
			return r;
		}
	}
	catch (ex) {}
	throw new Error('XmlHttp objects not supported by the browser');
}

var BgHttpRequest_params_pending = false;
function BgHttpRequest_params(nurl, nfunction, nparams, nerror ){
/*
	// ** Si ya esta en uso.
	if ( BgHttpRequest_params_pending ) { 
		var nfunc = function(){
			BgHttpRequest_params(nurl, nfunction, nparams, nerror );
		}
		setTimeout( nfunc, 500 ); 
		return; 
	}	else BgHttpRequest_params_pending = true;
	
	var str = "BgHttpRequest_params_pending = false; alert('hola');";
	AddToThisFunction( nfunction, str );
*/
   var XMLHttpRequestObject = XmlHttp.create();
   XMLHttpRequestObject.open("POST", nurl, true);   // async
		//Send the proper header information along with the request
   XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
   XMLHttpRequestObject.setRequestHeader("Content-length", nparams.length);
   XMLHttpRequestObject.setRequestHeader("Connection", "close");

   XMLHttpRequestObject.onreadystatechange = function () {
      if (XMLHttpRequestObject.readyState == 4 &&	XMLHttpRequestObject.status == 200) {
					nfunction( XMLHttpRequestObject.responseText );
      } else if (XMLHttpRequestObject.readyState == 4) { } // alert(nerror);
   };
	  
	 window.setTimeout( function () { XMLHttpRequestObject.send(nparams); }, 10);
}

function BgHttpRequest_form(nurl, nfunction, form, nerror ){
	var nparams = formData(form);
	
   var XMLHttpRequestObject = XmlHttp.create();
   XMLHttpRequestObject.open("POST", nurl, true);   // async
		//Send the proper header information along with the request
   XMLHttpRequestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
   XMLHttpRequestObject.setRequestHeader("Content-length", nparams.length);
   XMLHttpRequestObject.setRequestHeader("Connection", "close");

   XMLHttpRequestObject.onreadystatechange = function () {
      if (XMLHttpRequestObject.readyState == 4 &&	XMLHttpRequestObject.status == 200) {
					nfunction( XMLHttpRequestObject.responseText );
      } else if (XMLHttpRequestObject.readyState == 4) alert(nerror);
   };
	 window.setTimeout( function () { XMLHttpRequestObject.send(nparams); }, 10);
}

function formData(formId) {
	var postStr= '';
	for (i = 0; i < formId.elements.length; i++) {
		formElem = formId.elements[i];
		switch (formElem.type) {
			case 'text':
			case 'select-one':
			case 'hidden':
			case 'password':
			case 'textarea':
			postStr += formElem.name + '=' + escape(formElem.value) + '&'
		break;
		}
	}
	
	return postStr;
}

		// ** Lee un CSS de forma dinamica.
	function LoadCSS( file ) {
/*		
	var oLink = document.createElement("link")
		oLink.href = file;
		oLink.rel = "stylesheet";
		oLink.type = "text/css";
		document.body.appendChild(oLink);
*/		
	var headID = document.getElementsByTagName("head")[0];         
	var cssNode = document.createElement('link');
		cssNode.type = 'text/css';
		cssNode.rel = 'stylesheet';
		cssNode.href = file;
		cssNode.media = 'screen';
		headID.appendChild(cssNode);		
	}

	function LoadJS( file ) {
	var headID = document.getElementsByTagName("head")[0];         
	var newScript = document.createElement('script');
		newScript.type = 'text/javascript';
//		newScript.onload=scriptLoaded;		// ** Load Handler
		newScript.src = file;
		headID.appendChild(newScript);		
	}	