/**
* Librerias Javascript - AJAX
* @author Jorge Casas [jorgecasas@iternova.net]
* @version 2.1.2 - 20100930
* @package libs/ajax
* @link https://wiki.iternova.net/doku.php?id=smartportal:modules:libs:ajax_ajax  
**/

/**Interprete codigo JS para AJAX*/
var sp_tagScript='(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
String.prototype.sp_evalScript = function(){return (this.match(new RegExp(sp_tagScript,'img'))||[]).sp_evalScript();};
String.prototype.sp_stripScript = function(){return this.replace(new RegExp(sp_tagScript,'img'),'');};
String.prototype.sp_extractScript = function(){var matchAll=new RegExp(sp_tagScript,'img');return (this.match(matchAll)||[]);};
Array.prototype.sp_evalScript = function(extracted){var s=this.sp_map(function(sr){var sc=(sr.match(new RegExp(sp_tagScript, 'im'))||['',''])[1];window.setTimeout(sc,0);});return true;};
Array.prototype.sp_map = function(fun){if(typeof fun!=="function"){return false;}var i=0,l=this.length;for(i=0;i<l;i++){fun(this[i]);}return true;};  

function T$(i){return document.getElementById(i)}
/**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;}
/**Envio GET a URL con AJAX. Resultados en div */
function cargar_contenido_div(div,url,showloading){
	if (typeof(showloading)=="undefined" || showloading=="true"){sp_loading(div);}
	var myConn=new XHConn();
	if (!myConn)alert("XMLHTTP no disponible. Use un navegador reciente");
	var endc=function(oXML){var scs=oXML.responseText.sp_extractScript();T$(div).innerHTML=oXML.responseText;if(typeof(Cufon)!=='undefined') Cufon.refresh();scs.sp_evalScript();};
	myConn.connect(url,"GET","",endc);
}
/** Envia vars de formulario por POST */
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){var scs=oXML.responseText.extractScript();if(typeof(Cufon)!=='undefined') Cufon.refresh();scs.evalScript();};	myConn.connect(url,"POST","&"+paramkey+"="+paramvalue,finalizado);}
/** Envia POST a url un campo con id == campoid con AJAX. Resultados en div */
function cargar_contenido_div_post(target,url,div,campoid,showloading){
	if (typeof(showloading)=="undefined"||showloading=="true"){sp_loading(div);}
	var myConn=new XHConn();
	if (!myConn)alert("XMLHTTP no disponible. Use un navegador reciente");
	var valorcampo=getRadioButtonSelectedValue(T$(campoid));
	var finalizado=function (oXML){var scs=oXML.responseText.sp_extractScript();T$(target).innerHTML=oXML.responseText;if(typeof(Cufon)!=='undefined') Cufon.refresh();scs.sp_evalScript();};
	myConn.connect(url,"POST","divID="+div+"&codeID="+valorcampo,finalizado);
}
/** Envia POST AJAX a URL varios campos de formulario con id == idFormulario. Resultados en div */
function cargar_contenido_array_post(div,url,idFormulario,showloading){
	if (typeof(showloading)=="undefined"||showloading=="true"){sp_loading(div);}
	var myConn=new XHConn();
	if (!myConn)alert("XMLHTTP no disponible. Use un navegador reciente");
	var salida="";
	var param_value=undefined;
	var form=T$(idFormulario);
	for (var i=0;i<form.elements.length;i++){
		param_value=getRadioButtonSelectedValue(form.elements[i]);
		if (param_value!=undefined)salida+="&"+form.elements[i].id+'='+encodeURI(param_value);
	}
	var finalizado=function (oXML){var scs=oXML.responseText.sp_extractScript();T$(div).innerHTML=oXML.responseText;if(typeof(Cufon)!=='undefined') Cufon.refresh();scs.sp_evalScript();};
	myConn.connect(url,"POST","divID="+div+"&"+salida,finalizado);
}
function reloadDivPeriodically(div,url,refresh,loading){cargar_contenido_div(div,url,loading);if(typeof(Cufon)!=='undefined'){Cufon.refresh();}setTimeout('reloadDivPeriodically(\''+div+'\',\''+url+'\','+refresh+',\''+loading+'\');',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 ne=field.length;if(ne==undefined) field.checked=true;else{for(i=0;i<ne;i++)field[i].checked = true;}}
function uncheckAll(field){var ne=field.length;if(ne==undefined)field.checked=false;else{for(i=0;i<ne;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=T$(id);if(is_tr)e.style.display='table-row';else e.style.display="block";}
function hidecontent(id){T$(id).style.display="none";}
function toggle_visibility(id,is_tr){var e=T$(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 toggle_enabled(f){if(!(f instanceof Array))f=[f];for(var i=0;i<f.length;i++)T$(f[i]).disabled=!T$(f[i]).disabled;}
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 field_plus(id,min,max){var x=parseInt(T$(id).value);if(isNaN(x)){T$(id).value=1;}else{if(x<max)T$(id).value++;}}
function field_minus(id,min,max){var x=parseInt(T$(id).value);if(isNaN(x)){T$(id).value=1;}else{if(x>min)T$(id).value--;}}
function checkUncheckAll(state,grp){if(T$(grp).childNodes.length>0){for(i=0;i<T$(grp).childNodes.length;i++){if(T$(grp).childNodes[i].name!=undefined) T$(grp).childNodes[i].checked=state.checked;}}else{grp.checked=state.checked;}}
function cookie_set(name,value){document.cookie=name+"="+value+"; path=/";}
function cookie_get(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return c.substring(nameEQ.length,c.length);}return null;}
function sp_get_url(){var url=window.location.href.split('/web/');if(url.lenght==2)return url[0];else{url=url[0].split('/index.php');return url[0];}}
function sp_loading(div){T$(div).innerHTML="<div class='padding5px center'><img src='"+sp_get_url()+"/images/ajaxloading.gif' alt='' /></div>";}
