/**
* Librerias Javascript - AJAX
* @author Jorge Casas [jorgecasas@iternova.net]
* @version: 2.0.5 - 20091230
* @package libs/ajax
**/
/** XHConn - Simple XMLHTTP Interface - 20050408 **/
function XHConn(){var xmlhttp, bComplete = false;try{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){try{xmlhttp = new XMLHttpRequest();}catch(e){xmlhttp = false;}}}if (!xmlhttp) return null;this.connect = function(sURL, sMethod, sVars, fnDone){if (!xmlhttp) return false;bComplete = false;sMethod = sMethod.toUpperCase();try{if (sMethod == "GET"){xmlhttp.open(sMethod, sURL+"?"+sVars, true);sVars = "";}else{xmlhttp.open(sMethod, sURL, true);xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");}xmlhttp.onreadystatechange = function(){if (xmlhttp.readyState == 4 && !bComplete){bComplete = true;fnDone(xmlhttp);}};xmlhttp.send(sVars);}catch(z){return false;}return true;};return this;}
/**
 * Enviar por GET a la url dada usando AJAX, mostrando los resultados en div.
 */
function cargar_contenido_div(target,url,showloading){
	if (typeof(showloading)=="undefined" || showloading=="true"){
		document.getElementById(target).innerHTML = '<div class=\"load\"><img src=\"images/ajaxloading.gif\" alt=\"+\" class=\"floatleft\" /> Cargando...</div>';
	}
	var myConn = new XHConn();
	if (!myConn) alert("XMLHTTP no disponible. Use un navegador reciente");
	var finalizado = function (oXML){document.getElementById(target).innerHTML = oXML.responseText;};
	myConn.connect(url, "GET", "", finalizado);
}
/**
 * Envia parametros de un formulario por POST al servidor (p.e. para modificar variables de sesion en el servidor)
 */
function ajax_send_post(url,paramkey,paramvalue){
	var myConn = new XHConn();
	if (!myConn) alert("XMLHTTP no disponible. Use un navegador reciente");
	var finalizado = function (oXML) { };
	myConn.connect(url, "POST", "&" + paramkey + "=" + paramvalue, finalizado);
}
/**
 * Enviar por POST a la url dada un campo con id == campoid usando AJAX, mostrando los resultados en div. Puede que no funcione con textarea, 
 */
function cargar_contenido_div_post(target,url,div,campoid,showloading){
	if (typeof(showloading)=="undefined" || showloading=="true"){
		document.getElementById(target).innerHTML = '<div class=\"load\"><img src=\"images/ajaxloading.gif\" alt=\"+\" class=\"floatleft\" /> Cargando...</div>';
	}
	var myConn = new XHConn();
	if (!myConn)alert("XMLHTTP no disponible. Use un navegador reciente");
	var valorcampo = getRadioButtonSelectedValue(document.getElementById(campoid));
	var finalizado = function (oXML){ document.getElementById(target).innerHTML = oXML.responseText;};
	myConn.connect(url, "POST", "divID=" + div + "&codeID=" + valorcampo, finalizado);
}

/**
 * Enviar por POST a la url dada varios campos de un formulario con id == idFormulario usando AJAX, mostrando resultados en div. Puede que no funcione con textarea
 */
function cargar_contenido_array_post(div,url,idFormulario,showloading){
	if (typeof(showloading)=="undefined" || showloading=="true"){
		document.getElementById(div).innerHTML = '<div class=\"load\"><img src=\"images/ajaxloading.gif\" alt=\"+\" class=\"floatleft\" /> Cargando...</div>';
	}
	var myConn = new XHConn();
	if (!myConn) alert("XMLHTTP no disponible. Use un navegador reciente");
	var salida="";
	var param_value = undefined;
	var formulario=document.getElementById(idFormulario);
	for (var i=0; i <formulario.elements.length;i++) {
		param_value = getRadioButtonSelectedValue(formulario.elements[i]);
		if (param_value != undefined) salida+="&"+formulario.elements[i].id+'='+encodeURI(param_value);
	}
	var finalizado = function (oXML){document.getElementById(div).innerHTML = oXML.responseText;};
	myConn.connect(url, "POST", "divID=" + div + "&"+salida, finalizado);
}
/**
 * Actualiza un div (divtarget) de forma periodica, cargando de la url ajaxurl el contenido mediante AJAX
 */
function reloadDivPeriodically(divtarget,ajaxurl,refresh,showloading){if(refreshIdVM){clearTimeout(refreshIdVM);refreshIdVM=0;}cargar_contenido_div(divtarget,ajaxurl,showloading);refreshIdVM = setTimeout('cargar_contenido_div(\''+ divtarget+ '\',\''+ ajaxurl +'\',\''+showloading+'\'); reloadDivPeriodically(\''+ divtarget+ '\',\''+ ajaxurl +'\','+refresh+',\''+showloading+'\');', refresh);}
function loadIframe(iframeName, url){if ( window.frames[iframeName]){window.frames[iframeName].location = url;return false;}return true;}
function get_url_param(name){name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS = "[\\?&]"+name+"=([^&#]*)";var regex = new RegExp( regexS );var results = regex.exec( window.location.href );if(results==null)return "";else return results[1];}
function checkAll(field){var numElements = field.length;if (numElements == undefined) field.checked=true;else{for (i = 0; i < numElements; i++) field[i].checked = true;}}
function uncheckAll(field){var numElements = field.length;if (numElements == undefined) field.checked=false;else{for (i = 0; i < numElements; i++) field[i].checked = false;}}
function changeAll(field, fieldHijo) {if (field.checked == true) checkAll(fieldHijo);else uncheckAll(fieldHijo);}
function showcontent(id,is_tr){var e = document.getElementById(id); if (is_tr)  e.style.display = 'table-row'; else e.style.display = "block";}
function hidecontent(id){document.getElementById(id).style.display = "none";}
function toggle_visibility(id,is_tr){var e = document.getElementById(id);if(e.style.display=='table-row' || e.style.display=='block') e.style.display='none';else if(is_tr) e.style.display='table-row'; else e.style.display='block';}
function getRadioButtonSelectedValue(ctrl){if(ctrl.length == undefined && ctrl.type!='radio' && ctrl.type!='checkbox'){return ctrl.value;} if (ctrl.selectedIndex != undefined){return ctrl.value;} if ((ctrl.type=='checkbox' || ctrl.type=='radio') && ctrl.checked){return ctrl.value;} if(ctrl.length!=undefined){for(i=0;i<ctrl.length;i++){if(ctrl[i].checked) return ctrl[i].value;}} return undefined;}
function getCheckBoxChecked(ctrl){if(ctrl.checked) return '1';else return '0';}
function ajaxFadeEffect(element){new Effect.Fade(element,{ duration:1});}
function ajaxAppearEffect(element){new Effect.Appear(element,{ duration:1});}
function confirmacion(url,question,answerok){var r=confirm(question); if (r==true){alert(answerok);location.href=url;}}
function getURLparam(param){ param=param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS = "[\\?&]"+param+"=([^&#]*)";var regex=new RegExp( regexS ); var results = regex.exec( window.location.href ); if( results == null ) return ""; else return results[1];}
function T$(i){return document.getElementById(i)}
function field_plus(id, minValue, maxValue){var current = parseInt(T$(id).value);if(isNaN(current)){T$(id).value=1;}else{if(current<maxValue) T$(id).value++;}}
function field_minus(id, minValue, maxValue){var current = parseInt(T$(id).value);if(isNaN(current)){T$(id).value=1;}else{if(current>minValue) T$(id).value--;}}
function checkUncheckAll(el){var f=el.form;for(z=0;z<f.length;z++){if(f[z].type=='checkbox' && f[z].name!='checkall'){f[z].checked=el.checked;}}}


function cargar_contenido_div_2post(target,url,div,campoid1,campoid2,showloading){if (typeof(showloading)=="undefined" || showloading=="true"){document.getElementById(target).innerHTML = '<div class=\"load\"><img src=\"images/ajaxloading.gif\" alt=\"+\" class=\"floatleft\" /> Cargando...</div>';} var myConn = new XHConn(); if (!myConn) alert("XMLHTTP no esta disponible. Intentalo con un navegador mas reciente.");var valorcampo1 = document.getElementById(campoid1).value; var valorcampo2 = document.getElementById(campoid2).value; var finalizado = function (oXML) {document.getElementById(target).innerHTML = oXML.responseText;};myConn.connect(url, "POST", "divID=" + div + "&"+campoid1+ "=" + valorcampo1+ "&"+campoid2+ "=" + valorcampo2, finalizado);}
function cargar_contenido_div_post_params(target,url,div,campoid,extraparam,extravalue,showloading){if (typeof(showloading)=="undefined" || showloading=="true"){document.getElementById(target).innerHTML = '<div class=\"load\"><img src=\"images/ajaxloading.gif\" alt=\"+\" class=\"floatleft\" /> Cargando...</div>';}var myConn = new XHConn();if (!myConn) alert("XMLHTTP no esta disponible. Intentalo con un navegador mas reciente.");var valorcampo = document.getElementById(campoid).value;var finalizado = function (oXML) { document.getElementById(target).innerHTML = oXML.responseText; };myConn.connect(url, "POST", "divID=" + div + "&codeID=" + valorcampo + "&" + extraparam + "=" + extravalue, finalizado);}
function openPopUp(url,titulo,sizex,sizey){cont=1;popUp=window.open(url,titulo + " [" + cont + "]","width="+sizex+", height="+sizey+",menubar=no,scrollbars=no,status=no,titlebar=no");popUp.moveTo((screen.width-sizex)/2,(screen.height-sizey)/2);cont++;}