//variables globales
var activeAjax = false;
var request = null;
var queryString = null;
var htmlElements = [];
var propiedades = null;	
function requestAjax(url,secciones,opciones){
  	if(!activeAjax) {
		initOptions();
		setOptions(opciones);
		queryString = propiedades.parameters;
		if(propiedades.forma!=null){
			queryString += getFormAsString(propiedades.forma);
		}		
	  	document.location.href = url + '?' + propiedades.parameters + '&' + queryString;
	  	return false;
	}
	else{
		if (request != null && request.readyState != 0 && request.readyState != 4){}
		else{
	        initOptions();
			setOptions(opciones);
		    queryString = "";
			if(propiedades.forma!=null){
				queryString = propiedades.parameters + getFormAsString(propiedades.forma);
			}else{
				queryString = propiedades.parameters;
			}	
		    if(window.XMLHttpRequest){ // No Internet Explorer
	        	request = new XMLHttpRequest();
	    	}else if (window.ActiveXObject){
	        	request = new ActiveXObject("Msxml2.XMLHTTP");
	        	if (!request){
	            	request=new ActiveXObject("Microsoft.XMLHTTP");
	        	}
	     	}
	    	if(request){  
				htmlElements = secciones;
	            request.onreadystatechange = processStateChange; //se procesan los cambios de estado
		  		request.open(propiedades.method, url, propiedades.asynchronous);
				var tipoContenido = propiedades.contentType + "; charset=" + propiedades.encoding;
		  		request.setRequestHeader("Content-Type",tipoContenido);
		        request.send(queryString); //se envia la petición
	    	}else{
	    		alert('No se pudo realizar la petición');
	    	}
	    }
    }
  }
  function initOptions(){
  	propiedades = {
            method:			'post',
            asynchronous: 	true,
            contentType:  	'application/x-www-form-urlencoded',
            encoding:     	'UTF-8',
            parameters:   	'',
            popWait: 		true,
            indexForm:		0,
            evalScripts:	false,
	    	forma:            null
	}
  }
  function setOptions(opciones){
	propiedades.parameters= opciones.parameters;
	propiedades.popWait=opciones.popWait;
    propiedades.indexForm=opciones.indexForm;
    propiedades.evalScripts=opciones.evalScripts;
	propiedades.forma=opciones.forma;	
  }
  function processStateChange() 
  {
  		switch(request.readyState){
			case 1:
				if(propiedades.popWait){
                	popWait('div_wait');
				}break;
			case 2: break;
			case 3: break;
			case 4:	
				killWait('div_wait');
    			if (request.status == 200){ 
    				updateHTML(htmlElements, request.responseText);
	  			}
	    }
  }
 function getFormAsString(formulario) {
 	returnString ="";
 	formElements = formulario.elements;
	for ( var i=0; i<formElements.length; i++ ){
	 	if(encodeURIComponent(formElements[i].type)!="button" && encodeURIComponent(formElements[i].type)!="submit"){
 			if(encodeURIComponent(formElements[i].type)=="file") {
			}
			else if(encodeURIComponent(formElements[i].type)!="checkbox" && encodeURIComponent(formElements[i].type)!="radio")
				returnString=returnString+"&"+encodeURIComponent(formElements[i].name)+"="+encodeURIComponent(formElements[i].value);
			else if(encodeURIComponent(formElements[i].type)=="checkbox" && encodeURIComponent(formElements[i].checked)=="true")
				returnString=returnString+"&"+encodeURIComponent(formElements[i].name)+"="+encodeURIComponent(formElements[i].value);
			else if(encodeURIComponent(formElements[i].type)=="radio" && encodeURIComponent(formElements[i].checked)=="true")
				returnString=returnString+"&"+encodeURIComponent(formElements[i].name)+"="+encodeURIComponent(formElements[i].value);	
		}
 	}
 	return returnString; 
 }
 function getInnerHTMLById(id, responseText){
	var tagName = document.getElementById(id).nodeName.toLowerCase();
	var startTagName = "<" + tagName;
	var finishTagName = "</" + tagName;
	var startPos = responseText.indexOf('>', responseText.indexOf('id="' + id + '"'));
	var startPosTemp = startPos;
	var finishPos = startPos;	
	do{
	    startPosTemp = responseText.indexOf(startTagName, startPosTemp + 1);
	    finishPos = responseText.indexOf(finishTagName, finishPos + 1);
	} while (startPosTemp != -1 && startPosTemp < finishPos);
	return responseText.substring(startPos + 1, finishPos);
 }
 function updateHTML(ids, responseText){
 	var newHTML = null; 	
 	for(var i = 0; i < ids.length; i++){
 		if (document.getElementById(ids[i])) {
 			newHTML = getInnerHTMLById(ids[i], responseText);
 			document.getElementById(ids[i]).innerHTML = newHTML; 
 			if (propiedades.evalScripts) {
 				newHTML.evalScripts(); 
 			}	 				
 		}	
 	}
 }
function popWait(id){
	procesando = document.getElementById(id);
	if(procesando == null ){
		var disabledZone = document.createElement('div');
      	disabledZone.setAttribute('id', 'disabledZone');
		disabledZone.id=id;
      	disabledZone.style.position = "absolute";
      	disabledZone.style.zIndex = "200";
      	disabledZone.style.right = "550px";
      	disabledZone.style.top = "150px";
     	disabledZone.style.width = "100%";
      	disabledZone.style.height = "100%";
		document.body.appendChild(disabledZone);
		var messageZone = document.createElement('div');
      	messageZone.setAttribute('id', 'messageZone');
      	messageZone.style.position = "absolute";
     	messageZone.style.top = "0px";
      	messageZone.style.right = "0px";
		messageZone.style.backgroundImage = "url(images/cargando.gif)";
		messageZone.style.backgroundRepeat = "no-repeat";
		messageZone.style.backgroundPosition = "center bottom";
		messageZone.style.margin = "0px";
		messageZone.style.padding = "92px";
      	disabledZone.appendChild(messageZone);
	}
}
function killWait(id){
	procesando = document.getElementById(id);
	if(procesando != null){
		document.body.removeChild(procesando); 
	}
}
function requestAjaxEnter(url,secciones,opciones){
	var keycode;
	if (window.event)
		keycode = window.event.keyCode;
	else return true;

	if (keycode == 13){
		requestAjax(url,secciones,opciones);
   		return false;
  	}else return true;
}
function getFormByFormName( formName ){
	var frm = null;
	if(window.XMLHttpRequest){ // No Internet Explorer
		for( index=0;index<document.forms.length;index++){
			var frmAux = document.forms[index];
			if(frmAux.name == formName ){
				frm = frmAux;
				break;
			}
		}        	
    }else if (window.ActiveXObject){ // Internet Explorer
		frm = document.forms( formName );
    }
    return frm;
}
function requestAjaxEnterCargarArbolPerfiles(){
	var keycode;
	if (window.event)
		keycode = window.event.keyCode;
	else return true;

	if (keycode == 13){
		requestAjax('contenidoByUsuario.ks',['div_pagina'],{parameters: 'btnVerUsuarios=1',evalScripts:true, forma:contenidoByUsuarioForm});
   		return false;
  	}else return true;
}
