function AbrirPopup(sUrl,iWidth,iHeight,iLeft,iTop,Scroll){
	if (!bResul)
		bResul = window.open(sUrl,"Seguridad","width=" + iWidth + ",height=" + iHeight + ",top=" + iTop + ",left=" + iLeft + "toolbar=no,menubar=yes,location=no,resizable=yes,scrollbars=" + Scroll);
	else
	if (!bResul.closed){
		bResul.location = sUrl;
		bResul.focus();
		}
	else
		bResul = window.open(sUrl,"Seguridad","width=" + iWidth + ",height=" + iHeight + ",top=" + iTop + ",left=" + iLeft + "toolbar=no,menubar=yes,location=no,resizable=yes,scrollbars=" + Scroll);
}

function ValidaMail(sEmail){
	var bSal;
	var reValMail=/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	sEmail=Trim(sEmail);
	bSal=!(sEmail.search(reValMail)==-1 || sEmail==""); 
	return bSal;
}

function ValHTML(sString){
	var sSal, re;
	
	//HTML----------------
	re = /\>/g;
	sSal = sString.replace(re,"&gt;");
	re = /\</;
	sSal = sSal.replace(re,"&lt;");
	re = /\'/g;
	sSal = sSal.replace(re,"&prime;"); 
	re = /\"/g;
	sSal = sSal.replace(re,"&Prime;"); 
	
	//Smiles--------------
	//	:)
	re = /\:(?:O|-|)\)/ig;
	sImg = "<img src='Images/ico/Smile01.gif'>";
	sSal = sSal.replace(re,sImg);
	
	//	:(
	re = /\:(?:O|-|)\(/ig;
	sImg = "<img src='Images/ico/Smile02.gif'>";
	sSal = sSal.replace(re,sImg);
	
	//	;)
	re = /\;(?:O|-|)\)/ig;
	sImg = "<img src='Images/ico/Smile03.gif'>";
	sSal = sSal.replace(re,sImg);
	
	//	:D
	re = /\:(?:O|-|)D/ig;
	sImg = "<img src='Images/ico/Smile04.gif'>";
	sSal = sSal.replace(re,sImg);

	//	:S
	re = /\:(?:O|-|)S/ig;
	sImg = "<img src='Images/ico/Smile05.gif'>";
	sSal = sSal.replace(re,sImg);
	
	return sSal;
}
 
function Trim(sText){
	return sText.replace(/(\s+$)|(^\s+)/g, "");
}

function LTrim(sText){
	return sText.replace(/^\s+/g, "");
}

function RTrim(sText){
	return sText.replace(/\s+$/g, "");
}

function CVNum(sValor){
	if (isNaN(sValor))
		return(0);
	else
		return(parseInt(sValor,10));
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


function MM_preloadImages() { //v3.0
	var d=document;
	if(d.images){
		if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
		for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){
			d.MM_p[j]=new Image; 
			d.MM_p[j++].src=a[i];
		}
	}
}


function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


//Elije un elemento de un combo/lista
function SelElem(objCbo,ValEle){
	var i=0;
	for (i=0 ; i < objCbo.length; i++){
		if (objCbo.options[i].value == ValEle){objCbo.options[i].selected = true; return;}
	}
}

function Left(sString, iLen){
	if(iLen>sString.length)iLen=sString.length;
	if(iLen<0)iLen=0;
	return(sString.substring(0,iLen));
}

function Right(sString, iLen){
	if(iLen>sString.length)iLen=sString.length;
	if(iLen<0)iLen=0;
	return(sString.substring(sString.length-iLen, sString.length));
}


function Repeat(sString, iNumRep){
	var sSal="";
	for(var i=1 ; i <= iNumRep; i++) sSal+=sString;
	return(sSal);
}

function IsExplorer(){
	var sNavigator = window.navigator.userAgent.toLowerCase();
	return (sNavigator.indexOf('msie') != -1);
}

function StyleTextArea(){
	if(!IsExplorer()){
		var oTextAreas=document.getElementsByTagName("textarea");
		for(var i=0;i<oTextAreas.length;i++)oTextAreas.item(i).style.borderBottomWidth="1px";
	}
}

function AddComboItem(oCombo, lValue, sText){
	var oOption = document.createElement("OPTION");
	oCombo.options.add(oOption);
	oOption.value = lValue;
	oOption.innerHTML = sText;
}

function GetCurrFrame(){
	var sTopName = top.name;
	var sMe = self.name;
	var sSal = sMe;
	var oLast = parent;
	//validar x id también además de x name
	if (sTopName==oLast.name) 
		sSal = "document.frames";
	else
		while(sTopName!=oLast.name){
			sSal = oLast.name + "." + sSal;
			oLast=oLast.parent;
		}
	return(sSal);
}

/*************************************************************************
	REMOTING SCRIPTING: (sconesa)										 *
		La clase Principal es RemoteScripting, de ahí llama a métodos y  *
	Propiedades que cargan funciones remotas (en RemoteScripting.asp).	 *
**************************************************************************/ 

function RemoteScripting(){
	// Eliminar GetDescripcionDB y GetValorDB.
	this.GetDescripcionDB = new Function("sSQL", "return ServerRequest(sSQL, 'Descripcion')");
	this.GetValorDB = ServerRequest;
	
	this.EjecutarSQL = ExecSQL;
	this.GetListadoDB = RequestListadoDB;
	this.GetElementoDB = RequestElementoDB;
}


//Métodos:

function ServerRequest(sSQL, sCampoDB){
	var sSal="", iErrCode, i, bHasNodes;
	if(IsExplorer()){
		var oDOM = new ActiveXObject("Microsoft.XMLDOM");
		var oXML = new ActiveXObject("Microsoft.XMLHTTP");
		}
	else {
		var oDOMparser = new DOMParser(); 
		var oDOM;
		var oXML = new XMLHttpRequest();
	}
	var sParam = sSQL + "||" + sCampoDB;
	var sURL = "Includes/RemoteScripting.asp?Funcion=ObtenerValorDB" + "&Param=" + encodeURIComponent(sParam);
	oXML.open("GET", sURL, false);
	
	try {oXML.send(null)}
	catch(e){alert("Error en el envio de datos al server.");return};
	
	//alert(oXML.responseText) //Con fines de debug
	
	//++++++ Parseador DOM +++++++//
	if(IsExplorer()){
		oDOM.loadXML(oXML.responseText);
		if(oDOM.parseError.errorCode!=0){alert("Error DOM: " + oDOM.parseError.reason);return}
		}
	else{
		oDOM = oDOMparser.parseFromString(oXML.responseText,"text/xml");
		iErrCode = 0;
	}
	
	var oRoot = oDOM.documentElement;
	var oNodos = oRoot.childNodes;
	
	for(i=0;i<oNodos.length;i++){
		bHasNodes = oNodos.item(i).hasChildNodes()
		if(oNodos.item(i).tagName=="Value" && bHasNodes) sSal = oNodos.item(i).childNodes.item(0).nodeValue;
		if(oNodos.item(i).tagName=="Error" && bHasNodes) 
			if(oNodos.item(i).childNodes.item(0).hasChildNodes()){
				sSal="";
				alert("Error "+oNodos.item(i).childNodes.item(0).childNodes.item(0).nodeValue+"\n"+oNodos.item(i).childNodes.item(1).childNodes.item(0).nodeValue);
			}
	}
	
	return(sSal);
}

function RequestListadoDB(sSQL){
	var aListado = new Array();
	var iErrCode, i, j, bHasNodes;
	var sCampo, oRegistro;
	
	if(IsExplorer()){
		var oDOM = new ActiveXObject("Microsoft.XMLDOM");
		var oXML = new ActiveXObject("Microsoft.XMLHTTP");
		}
	else {
		var oDOMparser = new DOMParser(); 
		var oDOM;
		var oXML = new XMLHttpRequest();
	}
	
	var sURL = "Includes/RemoteScripting.asp?Funcion=ObtenerListadoDB" + "&Param=" + encodeURIComponent(sSQL);
	oXML.open("GET", sURL, false);
	
	try {oXML.send(null)}
	catch(e){alert("Error en el envio de datos al server.");return};
	
	//alert(oXML.responseText) //Con fines de debug
	
	//++++++ Parseador DOM +++++++//
	if(IsExplorer()){
		oDOM.loadXML(oXML.responseText);
		if(oDOM.parseError.errorCode!=0){alert("Error DOM: " + oDOM.parseError.reason);return}
		}
	else{
		oDOM = oDOMparser.parseFromString(oXML.responseText,"text/xml");
		iErrCode = 0;
	}
	
	var oRoot = oDOM.documentElement;
	var oNodos = oRoot.childNodes;
	var oListado;
	
	for(i=0;i<oNodos.length;i++){
		bHasNodes = oNodos.item(i).hasChildNodes()
		if(oNodos.item(i).tagName=="Value" && bHasNodes) oListado=oNodos.item(i).childNodes; //sSal = oNodos.item(i).childNodes.item(0).nodeValue;
		if(oNodos.item(i).tagName=="Error" && bHasNodes) 
			if(oNodos.item(i).childNodes.item(0).hasChildNodes()){
				alert("Error "+oNodos.item(i).childNodes.item(0).childNodes.item(0).nodeValue+"\n"+oNodos.item(i).childNodes.item(1).childNodes.item(0).nodeValue);
			}
	}
	
	if(oListado!=null){
	for(i=0;i<oListado.length;i++){
		if(oListado.item(i).hasChildNodes()){
			oRegistro = oListado.item(i).childNodes;
			sObjConst="";
			aListado[i] = new Function('this')
			for(j=0;j<oRegistro.length;j++){
				sCampo = oRegistro.item(j).tagName;
				sValue = oRegistro.item(j).childNodes.item(0).nodeValue;
				aListado[i][sCampo]=sValue;
			}
		}
	}
	}
	
	if(aListado.length==null) aListado.length=0;
	
	return(aListado);
}

function RequestElementoDB(sSQL){
	var oElemento;
	var iErrCode, i, bHasNodes;
	var sCampo, oRegistro;
	
	if(IsExplorer()){
		var oDOM = new ActiveXObject("Microsoft.XMLDOM");
		var oXML = new ActiveXObject("Microsoft.XMLHTTP");
		}
	else {
		var oDOMparser = new DOMParser(); 
		var oDOM;
		var oXML = new XMLHttpRequest();
	}
	
	var sURL = "Includes/RemoteScripting.asp?Funcion=ObtenerElementoDB" + "&Param=" + encodeURIComponent(sSQL);
	oXML.open("GET", sURL, false);
	
	try {oXML.send(null)}
	catch(e){alert("Error en el envio de datos al server.");return};
	
	//alert(oXML.responseText) //Con fines de debug
	
	//++++++ Parseador DOM +++++++//
	if(IsExplorer()){
		oDOM.loadXML(oXML.responseText);
		if(oDOM.parseError.errorCode!=0){alert("Error DOM: " + oDOM.parseError.reason);return}
		}
	else{
		oDOM = oDOMparser.parseFromString(oXML.responseText,"text/xml");
		iErrCode = 0;
	}
	
	var oRoot = oDOM.documentElement;
	var oNodos = oRoot.childNodes;
	var oListado;
	
	for(i=0;i<oNodos.length;i++){
		bHasNodes = oNodos.item(i).hasChildNodes()
		if(oNodos.item(i).tagName=="Value" && bHasNodes) oListado=oNodos.item(i).childNodes; //sSal = oNodos.item(i).childNodes.item(0).nodeValue;
		if(oNodos.item(i).tagName=="Error" && bHasNodes) 
			if(oNodos.item(i).childNodes.item(0).hasChildNodes()){
				alert("Error "+oNodos.item(i).childNodes.item(0).childNodes.item(0).nodeValue+"\n"+oNodos.item(i).childNodes.item(1).childNodes.item(0).nodeValue);
			}
	}
	
	if(oListado!=null && oListado.length>=1 && oListado.item(0).hasChildNodes()){
		oRegistro = oListado.item(0).childNodes;
		sObjConst="";
		oElemento = new Function('this')
		
		for(i=0;i<oRegistro.length;i++){
			sCampo = oRegistro.item(i).tagName;
			if(oRegistro.item(i).childNodes.item(0)!=null)
				sValue = oRegistro.item(i).childNodes.item(0).nodeValue;
			else
				sValue="";
			oElemento[sCampo]=sValue;
		}
	}
	
	return(oElemento);
}


function ExecSQL(sSQL){
	var bSal=false, iErrCode, i, bHasNodes;
	if(IsExplorer()){
		var oDOM = new ActiveXObject("Microsoft.XMLDOM");
		var oXML = new ActiveXObject("Microsoft.XMLHTTP");
		}
	else {
		var oDOMparser = new DOMParser(); 
		var oDOM;
		var oXML = new XMLHttpRequest();
	}
	
	var sURL = "Includes/RemoteScripting.asp?Funcion=EjecutarSQL" + "&Param=" + encodeURIComponent(sSQL);
	oXML.open("GET", sURL, false);
	
	try {oXML.send(null)}
	catch(e){alert("Error en el envio de datos al server.");return};
	
	//alert(oXML.responseText) //Con fines de debug
	
	//++++++ Parseador DOM +++++++//
	if(IsExplorer()){
		oDOM.loadXML(oXML.responseText);
		if(oDOM.parseError.errorCode!=0){alert("Error DOM: " + oDOM.parseError.reason);return}
		}
	else{
		oDOM = oDOMparser.parseFromString(oXML.responseText,"text/xml");
		iErrCode = 0;
	}
	
	var oRoot = oDOM.documentElement;
	var oNodos = oRoot.childNodes;
	
	for(i=0;i<oNodos.length;i++){
		bHasNodes = oNodos.item(i).hasChildNodes()
		if(oNodos.item(i).tagName=="Value" && bHasNodes) bSal = (oNodos.item(i).childNodes.item(0).nodeValue == "1");
		if(oNodos.item(i).tagName=="Error" && bHasNodes) 
			if(oNodos.item(i).childNodes.item(0).hasChildNodes()){
				bSal=false;
				alert("Error "+oNodos.item(i).childNodes.item(0).childNodes.item(0).nodeValue+"\n"+oNodos.item(i).childNodes.item(1).childNodes.item(0).nodeValue);
			}
	}
	
	return(bSal);
}
