﻿// JScript File
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function ConvertDecToBin(pLngNumero){

	/*
	Descripcion     :	Convierte un numero decimal a su correspondiente binario
	Parametros      :	pLngNumero --> Numero a convertir	
	Pagina          :	javascript:LlenaTablaPropiedades()
	Activa          :	Button.onclick
	Regresa         :	True / False
	Comentarios     :
	*/

	var currnum = 128;
	
	try{
		if(pLngNumero >= currnum){
			num2 = "1";
			pLngNumero = pLngNumero - currnum;
			currnum = currnum / 2;
		}
		else{
			num2 = "0";
			currnum = currnum / 2;
		}
		for (p = 1; p <= 7; p++){
			if(pLngNumero >= currnum){
				num2 = num2 + "1";
				pLngNumero = pLngNumero - currnum;
				currnum = currnum / 2;
			}
			else{
				num2 = num2 + "0";
				currnum = currnum / 2;
			}
		}
		return num2;
	}
	catch(err){
		strErr = "Error al construir los datos .\n\n"
        strErr += "ConvertDecToBin() : " + err.description + "\n\n"
        strErr += "Click OK to continue.\n\n"
        alert(strErr)
	}
	
}


function InStr2(n, s1, s2){
	// Devuelve la posición de la primera ocurrencia de s2 en s1
	// Si se especifica n, se empezará a comprobar desde esa posición
	// Sino se especifica, los dos parámetros serán las cadenas
	
	var numargs=InStr2.arguments.length;
		
	if(numargs<3)
		return n.indexOf(s1)+1;
	else
		return s1.indexOf(s2, n)+1;
		
}




function sortSelect (select, compareFunction) {
	/*
Decripción:  Ordena de menor a mayor un listbox
Parametros:  select          --> Objeto que se va a ordenar
             compareFunction --> 
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Junio 2007
*/	
  if (!compareFunction)
      compareFunction = compareText;
	  
  var options = new Array (select.options.length);
  for (var i = 0; i < options.length; i++)
    options[i] = 
      new Option (
        select.options[i].text,
        select.options[i].value,
        select.options[i].defaultSelected,
        select.options[i].selected
      );
  options.sort(compareFunction);
  select.options.length = 0;
  for (var i = 0; i < options.length; i++)
    select.options[i] = options[i];
}

function compareText (option1, option2) {
/*
Decripción:  Compara datos y regresa dato menor 
Parametros:  option1 --> Valor uno para comparar
             option2 --> Valor dos para comparar
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Junio 2007
*/	

  return option1.text < option2.text ? -1 :
    option1.text > option2.text ? 1 : 0;
}

function MM_preloadImages() { //v3.0
/*
Decripción:  Carga las imagenes por defecto
Parametros:  
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Octubre 2005
*/
 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 swapimg(pidimg, pnimg){
/*
Decripción:  Cambia todas las imagenes
Parametros:  
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Octubre 2005
*/
	try{
		MM_swapImgRestore(pidimg,'',pnimg,1);
		MM_swapImage(pidimg,'',pnimg,1);	
	}
	catch(err){
		alert(err.description);
	}
	
   
}

function swapimgParent(pidimg, pnimg){
/*
Decripción:  Cambia todas las imagenes
Parametros:  
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Octubre 2005
*/
   MM_swapImgRestoreParent(pidimg,'',pnimg,1);
   MM_swapImageParent(pidimg,'',pnimg,1);
}

function swapimgdos(pidimg, pnimg){
/*
Decripción:  Cambia todas las imagenes
Parametros:  
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Octubre 2005
*/
// MM_swapImgRestore();
   MM_swapImage(pidimg,'',pnimg,1);
}

function MM_swapImageParent() { //v3.0
 /*
Decripción:  Cambia la imagen que se esta mostrando
Parametros:  
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Octubre 2005
*/
  var i,j=0,x,a=MM_swapImageParent.arguments; parent.parent.parent.document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){parent.parent.parent.document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_swapImgRestoreParent() { //v3.0
/*
Decripción:  Carga lasimagenes que estan por defecto
Parametros:  
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Octubre 2005
*/
  var i,x,a=parent.parent.document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
 /*
Decripción:  Cambia la imagen que se esta mostrando
Parametros:  
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Octubre 2005
*/
  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];}
}

function MM_swapImgRestore() { //v3.0
/*
Decripción:  Carga lasimagenes que estan por defecto
Parametros:  
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Octubre 2005
*/
  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_ValidaForma() { //v4.0
/*
Decripción:  Valida una Forma
Parametros:  
			** ARGUMENTOS **
			1.- n	--> Objeto a buscar
			2.- ''	--> 
			3.- (R = Requerido, NisEmail = Email, NisNum = Numero) 
Regresa:    True, False
Programo: 
Fecha: Mayo 2005
*/
  var i,p,q,nm,test,num,min,max,errors='',args=MM_ValidaForma.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' debe ser una direccion de e-mail\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' debe ser un Numero.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' debe ser un numero Entre '+min+' y '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' es un dato Requerido.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

function MM_showHideLayers() { //v6.0
/*
Decripción:  Muestra o esconde un Layer
Parametros:  Argumento1 --> Nombre del Layer
 			 Argumento2 --> Opción
Ejecuta:     Acción 
Programo: Eduardo Olvera
Fecha: Mayo 2005
*/
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function MM_findObj(n, d) { //v4.01
/*
Decripción:  busca un objeto dentro de la página
Parametros:  n --> Objeto a buscar
			 d --> Nombre de la página	
Regresa:     Asignación del objeto 
Programo: Eduardo Olvera
Fecha: febrero 2006
*/
  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);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_findObjt(n, d) { 
  //v4.0
  // $ en el objeto es de otro FRAME (parent.parent)
  // ? es de otra Ventana (parent)
  var p,i,x;  
  if(!d) 
     d=window.opener.document; 
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
     d=parent.frames[n.substring(p+1)].document; 
     n=n.substring(0,p);
  }
  if((p=n.indexOf("$"))>0) {
     d=parent.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);
  if(!x && document.getElementById) 
     x=document.getElementById(n); 
  return x;
}

function NewWindow(mypage,myname,w,h,scroll,pos){
   if(pos=="random"){LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
   if(pos=="center"){LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
   else if((pos!="center" && pos!="random") || pos==null){LeftPosition=0;TopPosition=20}
   settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no';
   //NOTA: parémetro my name no puede tener espacios, es solo el nombre de la ventana modal
   win=window.open(mypage,myname,settings);
   //win=window.open(mypage,myname);
}

function NewWindowResize(mypage,myname,w,h,scroll,pos){
   if(pos=="random"){LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
   if(pos=="center"){LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
   else if((pos!="center" && pos!="random") || pos==null){LeftPosition=0;TopPosition=20}
   settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes';
   win=window.open(mypage,myname,settings);
   //win=window.open(mypage,myname);
}


function ocultalayer(pobjlayer){
/*
Decripción:  oculta layers que vienen en el parametro pobjlayer
Parametros:  
Programo: Eduardo Olvera
Fecha: Mayo 2006
*/
  var separador = ',';
  var array_datos = pobjlayer.split(separador);
  var intcont;
  for(intcont=0;array_datos.length > intcont;intcont++){
     MM_showHideLayers(array_datos[intcont],'','hide');
  }
}

function muestralayer(pobjlayer){
/*
Decripción:  oculta layers que vienen en el parametro pobjlayer
Parametros:  
Programo: Eduardo Olvera
Fecha: Mayo 2006
*/
  var separador = ',';
  var array_datos = pobjlayer.split(separador);
  var intcont;
  for(intcont=0;array_datos.length > intcont;intcont++){
     MM_showHideLayers(array_datos[intcont],'','show'); 
  }
}

function keypressallonum(pobjtxt, pevent){
/*
Decripción:  permite la entrada a numeros flotantes
Parametros:  pobjtxt ---> objeto de texto que en el que se validan los datos
             pevent  ---> evento
Programo: Eduardo Olvera
Fecha: Mayo 2006
*/
   var objtxt = $(pobjtxt);
   var objtxtcambios = MM_findObj('txtcambios');
   var txtactual = objtxt.value;
   if(pevent<48 || pevent>57){
      if(pevent!=46){
        event.keyCode=0;
        return;
      }else{
       
      }
   }else{
      
   }
}
function keypressallonument(pobjtxt, pevent){
/*
Decripción:  permite la entrada a numeros enteros
Parametros:  pobjtxt ---> objeto de texto que en el que se validan los datos
             pevent  ---> evento
Programo: Eduardo Olvera
Fecha: Mayo 2006
*/
   var objtxt = $(pobjtxt);  
   var txtactual = objtxt.value;
   if(pevent<48 || pevent>57){
       event.keyCode=0;
        return;
   }
}    

function keypressalloabcd(pobjtxt, pevent){
/*
Decripción:  permite la entrada a a letras minusculas
Parametros:  pobjtxt ---> objeto de texto que en el que se validan los datos
             pevent  ---> evento
Programo: Eduardo Olvera
Fecha: Mayo 2006
*/
   var objtxt = MM_findObj(pobjtxt);
   var objtxtcambios = MM_findObj('txtcambios');
   var txtactual = objtxt.value;
   if(pevent<97 || pevent>122){
       event.keyCode=0;
        return;
   }
}    

function keypressevitatag(pobjtxt, pevent){
/*
Decripción:  evita meter mayor que y menor que
Parametros:  pobjtxt ---> objeto de texto que en el que se validan los datos
             pevent  ---> evento
Programo: Eduardo Olvera
Fecha: Mayo 2006
*/
   var objtxt = MM_findObj(pobjtxt);
   var objtxtcambios = MM_findObj('txtcambios');
   var txtactual = objtxt.value;
   if(pevent==60 || pevent==62){
       event.keyCode=0;
        return;
   }
}


function preparagrabar(pstrforma,pobjtxtgrabar,pstrseparador,pstrcauseval){
/*
Descripción:  Barre una forma para y genera una cadena para Grabar, Editar.
Parametros:   pstrforma      ----> nombre de la forma que debe barrer.
              pobjtxtgrabar  ----> nombre del objeto en el que va a poner la cadena para grabar
              pstrseparador  ----> caracter que se utilizará como separador en la cadena.
              pstrcauseval   ----> en balco para validar 
              
Otros:        objx   ----> objetos que se omiten
              obl    ----> campos obligatorios
              obx    ----> campos no obligatorios
Programó: Eduardo Olvera
Fecha:    23 noviembre de 2006                             
*/
   var objforma = MM_findObj(pstrforma);
   var objtxtgrabar = MM_findObj(pobjtxtgrabar);
   var objnombre ='';
   var intformelems = objforma.elements.length;
   var objtype = '';
   var strdatograbar='';
   var strdatograbtmp='';
   var strbuscabotones='';
   var strobligatorio='';
   var strcampo = '';
   for (i=0;i<intformelems;i++){//inicia for elementos
      objtype = objforma.elements[i].type;
      objnombre = objforma.elements[i].name;
      strbuscabotones = objnombre.indexOf('objx');//objeto a omitir
      strobligatorio = objnombre.indexOf('obl');//objeto obligatorio
      if(objtype=='checkbox'){
        if(objforma.elements[objnombre].checked){
           strdatograbtmp = '1';
        }else{
           strdatograbtmp = '0';
        }
      }else{
         strdatograbtmp = objforma.elements[objnombre].value.replace(/^\s*|\s*$/g,"");
      }
      if (objnombre != '__VIEWSTATE' && objnombre != 'txtpage' && strbuscabotones != 0 && objnombre != '__EVENTTARGET' && objnombre != '__EVENTARGUMENT'&& objnombre != '__EVENTVALIDATION' && objnombre != '__LASTFOCUS' && objnombre!= 'txtSegPermisosCatAsegBenef'){
         strcampo = objnombre.replace(/obl/,'');
         strcampo = strcampo.replace(/obx/,'');
         if(UCase(strcampo)=='PLAN'){
            strcampo = '[PLAN]';
         }
         switch(objtype){
            case 'text':
               if(strobligatorio==0){
                  if(strdatograbtmp==""){
                     if(pstrcauseval!='0'){
                        alert("Todos los campos son obligatorios");
                        return false;
                     }
                  }else{
                     strdatograbar += strdatograbtmp + pstrseparador + strcampo + pstrseparador;  
                     //alert(strdatograbar);
                  }   
               }else{
                    strdatograbar += strdatograbtmp + pstrseparador + strcampo + pstrseparador;  
                    //alert(strdatograbar);
               }
               break;
            case 'textarea':   
               if(strobligatorio==0){
                  if(strdatograbtmp==""){
                     if(pstrcauseval!='0'){
                        alert("Todos los campos son obligatorios");
                        return false;
                     }   
                  }else{
                     strdatograbar += strdatograbtmp + pstrseparador + strcampo + pstrseparador;  
                     //alert(strdatograbar);
                  }   
               }else{
                    strdatograbar += strdatograbtmp + pstrseparador + strcampo + pstrseparador;  
                    //alert(strdatograbar);
               }
               break;            
            case 'select-one':
               if(strobligatorio==0){
                  if(strdatograbtmp==""){
                     if(pstrcauseval!='0'){
                        alert("Todos los campos son obligatorios");
                        return false;
                     }   
                  }else{
                     strdatograbar += strdatograbtmp + pstrseparador + strcampo + pstrseparador;  
                     //alert(strdatograbar);
                  }   
               }else{
                    strdatograbar += strdatograbtmp + pstrseparador + strcampo + pstrseparador;  
                    //alert(strdatograbar);
               }
               break;
            case 'checkbox':
              if(strobligatorio==0){
                  if(strdatograbtmp==""){
                     if(pstrcauseval!='0'){
                        alert("Todos los campos son obligatorios");
                        return false;
                     }   
                  }else{
                     strdatograbar += strdatograbtmp + pstrseparador + strcampo + pstrseparador;  
                  }   
               }else{
                    strdatograbar += strdatograbtmp + pstrseparador + strcampo + pstrseparador;  
               }
               break;
            case 'radio':   
               break;
            default:
               alert(objtype + " Este objeto no esta definido verifique pues no se grabara");      
               alert(objnombre);
               break;
         }//termina switch
      }// termina if descarta elementos para almacenar
   }//termina for elementos
   if(strdatograbar.text != ""){
      objtxtgrabar.value = strdatograbar;
   }else{
      return false;
   }
}

/*function NewWindow(mypage,myname,w,h,scroll,pos){
   if(pos=="random"){LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
   if(pos=="center"){LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
   else if((pos!="center" && pos!="random") || pos==null){LeftPosition=0;TopPosition=20}
   settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no';
   win=window.open(mypage,myname,settings);
}*/

function ocultartabla(tabla, Var1) {
//tabla --> nombre tabla
// vari --> true muestra -- false oculta
  tabla = document.getElementById(tabla);
  //var img = document.getElementById("img_button");
  //alert(tabla);
  //if (tabla.style.display == "none") {
  if (Var1 == "False") {
   tabla.style.display = "block";
   //img.src = "dir/cerrar.gif";
  } else {
   tabla.style.display = "none";
   //img.src = "dir/abrir.gif";
  }
 }
 
function ocultarsubtablas(){
  var tablasubbene = document.getElementById('subbeneficios');
  var tablasubdirectorio =document.getElementById('subdirectorio');
  var tablasubmensaje =document.getElementById('submensaje');
  var tablasubcatalogos =document.getElementById('subcatalogos');
  var tablasubimgapiassa = document.getElementById('subimgapiassa');
  var tablasubcobranza = document.getElementById('subcobranza');
  var tablasubpersonales = document.getElementById('subliper');
  var tablasubdanios = document.getElementById('subdanios');
  var tablasubreporteria = document.getElementById('subreporteria');
  var tablasubreporteria = document.getElementById('subreporteria');
  var tablasubreNoti = document.getElementById('subNoticia');
    
  tablasubbene.style.display = "none";
  tablasubdirectorio.style.display = "none";
  tablasubmensaje.style.display = "none";
  tablasubcatalogos.style.display = "none";
  tablasubimgapiassa.style.display = "none";
  tablasubcobranza.style.display = "none";
  tablasubpersonales.style.display = "none";
  tablasubdanios.style.display = "none";
  tablasubreporteria.style.display = "none";
  tablasubreNoti.style.display = "none";
  
}
function ocultaadmin(){
   var tablasubbene = document.getElementById('Administracion');
   //var tablasubdirectorio =document.getElementById('subdirectorio');
   tablasubbene.style.display = "none";
   //tablasubdirectorio.style.display = "none";
}


//funciones left y rigth
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}
function LCase(s){
	// Devuelve la cadena convertida en minúsculas
	return s.toLowerCase();
}
function UCase(s){
   //Devuelve la cadena en minusculas
   return s.toUpperCase();
}
function TRim(s){
  //elimina espacios al principio y al final
  return s.replace(/^\s*|\s*$/g,'');
}

function replaceChars(entry,cmpactual,remplazapor) {
   out = cmpactual; // replace this
   add = remplazapor; // with this
   temp = "" + entry; // temporary holder
   while (temp.indexOf(out)>-1) {
      pos= temp.indexOf(out);
      temp = "" + (temp.substring(0, pos) + add + 
      temp.substring((pos + out.length), temp.length));
   }
   return temp;
}

function setfocus(pobjfield) {
//pobjfield   --> objeto endonde pone el foco
//Pone el foco en un objeto
        pobjfield.focus()
}

/*function InStr(n, s1, s2){
    // Devuelve la posición de la primera ocurrencia de s2 en s1
	// Si se especifica n, se empezará a comprobar desde esa posición
	// Sino se especifica, los dos parámetros serán las cadenas
	var numargs = InStr.arguments.length;
	if(numargs<3){
		return n.indexOf(s1)+1;
	}else{
		return s1.indexOf(s2, n)+1;
	}	
}*/
function InStr(STRING,SUBSTRING,COMPARE,START){
   if(START){
      STRING = STRING.substring(START,STRING.length);
   }
   if(CBool(COMPARE) || COMPARE ==undefined){
      STRING = STRING.toLowerCase();
      SUBSTRING = SUBSTRING.toLowerCase();
   }
   if(STRING.indexOf(SUBSTRING) > -1){
      return STRING.indexOf(SUBSTRING)
   }else{
      return 0;

   }
}

function CBool(VALUE){
VALUE = new String(VALUE);
VALUE = VALUE.toLowerCase();
if(VALUE== "1" || VALUE=="-1" || VALUE=="true" || VALUE == "yes"){
return true;
}
else{
return false;
}
}



function isFolder(sFolderPath) {
/*
   verifica si existe un directorio
*/
  var objFSO = new ActiveXObject("Scripting.FileSystemObject");
  return objFSO.FolderExists(sFolderPath);
}

function isFile(sFolderPath) {
/*
   verifica si existe un directorio
*/
  var objFSO = new ActiveXObject("Scripting.FileSystemObject");
  return objFSO.FileExists(sFolderPath);
}


function disable(s)
{
/***********************************
    Descripción: Desabilita todos los 
    controles pasados como un string separado 
    por comas
    Programó: Oswaldo Facio Rivas
    Fecha: 24-Jun-2008
***********************************/
   var sArr =  s.split(',');
   var o,i;
   for (i=0;i < sArr.length;i++) 
   {
    if(sArr[i]!="")    
    o = document.getElementById(sArr[i]);    
    o.disabled = true; 
   }
}

function iguales(s)
{
/***********************************
    Descripción: Valida que dos objetos tengan el mismo valor
    los dos elementos deben ir separados por comas
    Parametros: S -> string separado por comas del nombre de los objetos a validar
    Programó: Oswaldo Facio Rivas
    Fecha: 24-Jun-2008
***********************************/
   var sArr =  s.split(',');
   var o,i;   
   pass = document.getElementById(sArr[0]);
   pass2 = document.getElementById(sArr[1])
   //alert("Pass: ["+pass.value+"] Conf: ["+pass2.value+"]");   
   if (pass.value != pass2.value)  
   {
       alert('El campo de contraseña no coincide con el campo de confirmación.');
       document.getElementById(sArr[0]).focus();
       return false;
   } else
   {
    return true;
   }             
}

function mail(fld)
{
/***********************************
    Descripción: Valida que el campo mail sea valido
    Parametro: fld -> el "objeto" del campo a validar
    Programó: Oswaldo Facio Rivas
    Fecha: 30-Jun-2008
***********************************/
  //alert("Campo mail: ["+fld.value+"]");
  if(!fld.value.length||fld.disabled) return true; // Campos vacios o mail deshabilitados no son evaluados
  var phony= /@(\w+\.)*example\.(com|net|org)$/i;
  if(phony.test(fld.value))
  { alert('Por favor introduce el campo email'); fld.focus(); return false; }
  var emailfmt= /^\w+([.-]\w+)*@\w+([.-]\w+)*\.\w{2,8}$/;
  if(!emailfmt.test(fld.value))
  { alert('El campo email debe contener un mail valido.'); fld.focus(); return false; }
  return true;    
  //Si no funciona aquí hay una mas completa
  //^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

}

function obligatorio(fld,label)
{  
/***********************************
    Descripción: No permite campos vacios
    Parametro: fld -> el "objeto" del campo a validar
               label -> la etiqueta string que sale en el alert
    Programó: Oswaldo Facio Rivas
    Fecha: 30-Jun-2008
***********************************/
  if(fld.disabled) return true; 
  if(!fld.value.length)
  { alert('El campo '+label+' no puede estar vacío.'); fld.focus(); return false; }
  return true;
}

function clearform(f)
{
/***********************************
    Descripción: Limpia todos los objetos de la forma
    Parametro: f -> Forma a limpiar
    Programó: Oswaldo Facio Rivas
    Fecha: 08-Julio-2008
***********************************/
    f.reset();
}

function showhide2(sobj)
{  
/***********************************
    Descripción: Muestra y oculta uno o varios objetos utilizando la funcion "she"    
    Parametro: obj -> el objeto a ocultar debe ser string de uno o varios elementos
                    separados por comas    
    Programó: Oswaldo Facio Rivas
    Fecha: 08-Julio-2008
***********************************/
  var stringArr = sobj.split(',');
  var i;
  for(i=0;stringArr.length > i;i++){
     she(stringArr[i]);
  }
}

function she(obj)
{
/***********************************
    Descripción: "Show Hide Engine" Muestra y oculta uno o 
                    varios objetos separados por comas
    Parametro: sobj -> el objeto a ocultar debe ser string
    Programó: Oswaldo Facio Rivas
    Fecha: 08-Julio-2008    
***********************************/

    var o = document.getElementById(obj);
        
    if (o.style.display == "none")
    {
        o.style.display = ''; //lo muestra
    } else
    {
        o.style.display = 'none'; //lo oculta        
    }    
}

function show2(sobj)
{  
/***********************************
    Descripción: Muestra, hace visible el objeto, utiliza la funcion "se"   
    Parametro: obj -> el objeto a mostrar debe ser string de uno o varios elementos
                    separados por comas    
    Programó: Oswaldo Facio Rivas
    Fecha: 08-Julio-2008
***********************************/
  var stringArr = sobj.split(',');
  var i;
  for(i=0;stringArr.length > i;i++)
  {
     se(stringArr[i]);
  }
}

function se(obj)
{
/***********************************
    Descripción: "Show Engine" Muestra, o hace visible uno o 
                    varios objetos separados por comas
    Parametro: sobj -> el objeto a ocultar debe ser string
    Programó: Oswaldo Facio Rivas
    Fecha: 08-Julio-2008    
***********************************/
    var o = document.getElementById(obj);
        
    if (o.style.display == "none")
    {
        o.style.display = ''; //lo muestra
    }
}

function hide2(sobj)
{  
/***********************************
    Descripción: Oculta, hace invisible el objeto, utiliza la funcion "he"   
    Parametro: obj -> el objeto a ocultar debe ser string de uno o varios elementos
                    separados por comas    
    Programó: Oswaldo Facio Rivas
    Fecha: 08-Julio-2008
***********************************/
  var stringArr = sobj.split(',');
  var i;
  for(i=0;stringArr.length > i;i++)
  {
     he(stringArr[i]);
  }
}

function he(obj)
{
/***********************************
    Descripción: "Show Engine" Muestra, o hace visible uno o 
                    varios objetos separados por comas
    Parametro: sobj -> el objeto a ocultar debe ser string
    Programó: Oswaldo Facio Rivas
    Fecha: 08-Julio-2008    
***********************************/
    var o = document.getElementById(obj);
        
    if (o.style.display == '')
    {
        o.style.display = 'none'; //lo muestra
    }
}

function myvalue(obj)
{
/***********************************
    Descripción: Cambia el value del boton para las formas entre los valores
                "Nuevo" y "Cancelar"
    Parametro:  obj -> string del objeto a cambiar               
    Programó: Oswaldo Facio Rivas
    Fecha: 08-Julio-2008    
***********************************/    
    
    var o = document.getElementById(obj);
    if(o.value == "Nuevo")
    {
        o.value = "Cancelar";
    } else
    {
        o.value = "Nuevo";
    }    
}

function myvalueis(obj,s)
{
/***********************************
    Descripción: Cambia el value del boton por el string enviado               
    Parametro:  obj -> string del objeto a cambiar              
                s   -> lable nuevo 
    Programó: Oswaldo Facio Rivas
    Fecha: 08-Julio-2008    
***********************************/    
    
    var o = document.getElementById(obj);
    
    o.value = s;
        
}
function isvisible(obj)
{
    /***********************************
    Descripción: Devuelve verdadero o falso si el elemento es visible               
    Parametro:  obj -> string del objeto a evaluar                
    Programó: Oswaldo Facio Rivas
    Fecha: 11-Julio-2008    
    ***********************************/    
    
    var o = document.getElementById(obj);  
    return (o.style.display == 'none')? false:true;
}

function validacombo(obj,label)
{
    /***********************************
    Descripción: Valida que no este seleccionado el elemento por defecto de un select
    Parametro: fld -> el "objeto" del campo a validar
               label -> la etiqueta string que sale en el alert              
    Programó: Oswaldo Facio Rivas
    Fecha: 11-Julio-2008    
    ***********************************/
    var o = obj;  
    if(o.options[0].selected == true)
    { alert('Debe seleccionar un valor para '+label+'.'); o.focus(); return false; }
    return true;       
}

function validaradio(fld,label)
{
    /***********************************
    Descripción: Valida que el usuario seleccione una opcion de los radio buttons
    Parametro: fld -> el "Objeto" del campo a validar
               label -> la etiqueta string que sale en el alert              
    Programó: Oswaldo Facio Rivas
    Fecha: 05-Agosto-2008    
    ***********************************/
    //var o = document.getElementById(obj);  
    var selected = 0;
    for (var i = 0; i < fld.length; i++)
    {
      if (fld[i].checked)
      {
        selected++;
      }
    }
    if (selected == 0)
    { alert('Debe seleccionar un valor para '+label+'.'); if(fld[0].focus) fld[0].focus(); return false; }
    return true;
}

function llenaCombo(objStr,valores,selected)
{
	//alert('Function llenaCombo initialized.');
 	/***********************************
    Descripción: LLena un select a partir de un string separado por comas,de la forma:
					id1|valor1,id2|valor2
    Parametro: objStr -> el "Objeto" del campo a llenar
               valores -> string para llenar el combo
			   selected -> el id del valor (id) del campo a dejar seleccionado
    Programó: Oswaldo Facio Rivas
    Fecha: 05-Noviembre-2008    
    ***********************************/
	var obj = $(objStr);
	//buscar la coma
	obj.length = 0;
	var opcion;
	obj.options[0] = new Option("Selecciona una opción","0");
	if(valores.indexOf(',')>0) //si hay mas de un elemento
	{	
		var valoresArr = valores.split(",");
		var valuesArr = new Array();
		var textsArr = new Array();
		var indiv = new Array();
		for(i=0; i<valoresArr.length; i++) {
			indiv = valoresArr[i].split("|");
			valuesArr[i] = indiv[0];
			textsArr[i] = indiv[1];		
		}
		
		for (i=0;i<valoresArr.length;i++) 
		{	
		  ItemValor = valuesArr[i]; 
		  ItemTexto = textsArr[i];    
		  //alert(ItemValor+" "+ItemTexto);
		  var ItemElegido = (selected == ItemValor) ? true:false;                               
		  opcion =  new Option(ItemTexto,ItemValor,ItemElegido,(ItemElegido?"selected":""));          
		  obj.options[obj.options.length]=opcion;  
		}	
	} else //si solo es un elemento 
	{
		indiv = valores.split("|");
		ItemValor = indiv[0]; 
		ItemTexto = indiv[1];  
		//alert(selected +"=="+ ItemValor);
		var ItemElegido = (selected == ItemValor) ? true:false;                               
		opcion =  new Option(ItemTexto,ItemValor,ItemElegido,(ItemElegido?"selected":""));    		
		obj.options[obj.options.length]=opcion;
	}
}

function numeros(e) {
	var key;
	if(window.event) { // IE
		key = e.keyCode;
	} else if(e.which) { // Netscape/Firefox/Opera
		key = e.which;
	}
	if(key <= 13) {
		return true;
	} else if (key < 48 || key > 57) {
		return false;
	} 
	return true;
}

function limpiar(obj) {
	//*------------------------------------*
	//Programó: Oswaldo Facio Rivas
	//Fecha: Martes 21-10-2008
	//Parámetros: str -> el estring a limpiar
	//Descripción: Convierte una cadena de caracteres especiales a su correspondiente normal.
	//*------------------------------------*
	var o = document.getElementById(obj);
	str = o.value;
	
	especial = new Array('á','é','í','ó','ú','ñ',' ','Ž',':',',',';','.','ì','ï','@','\'',
						 '"','\\','/','*','ä','à','ë','è','ï','ì','ö','ò','ü','ù','~','|');
	normales = new Array('a','e','i','o','u','n','_','_','_','_','_','_','i','i','at','',
						 '','','','x','a','a','e','e','i','i','o','o','u','u','','');
	 
	str = str.toLowerCase();
	 
	i=0;
	while (i<especial.length) {
	 //str = str.replace(especiales[i], normales[i]);
	 str = str.split(especial[i]).join(normales[i]);
	 i++
	}	
	return str;
}

function repeticionMasDe(str,nRep,label) {	
	//------------------------------------
	//Programó: Oswaldo Facio Rivas
	//Fecha: Martes 21 Octubre 2008
	//Parámetros: str -> String a evaluar
	//				nRep -> máximo de veces que puede repetir
	//Descripción: Busca si algún caracter aparece mas de n veces en un string, si ese es el caso, 
	//envía un mensaje de error.
	//------------------------------------

 	var obj = str;	
	if (obj.value == "") return true; //no manejamos campos vacios
	var origString = obj.value;	
	var tempChar = new Array ();
	var result = "";
	var k = 0;

	var myArray = origString.toLowerCase().split('');

	//Obtener los diferentes caracteres
	for (i=0;i<myArray.length;i++)
	{
		if (i == 0)
		{
			tempChar[k] = myArray[i]; //el primer caracter entra al arreglo
			k = 1;
		} else
		{
			//revisar si esta ya en la cadena temporal
			var yaesta = false;
			for(j=0;j<tempChar.length;j++)
			{
				//alert("Evaluando: temporal->" + tempChar[j]+" caracter nuevo->"+myArray[i]);	
				if (tempChar[j]==myArray[i])
				{
					yaesta = true;
				} 				
			} 
			//si no lo encontró se lo agregamos
			if (yaesta == false) 
			{
				//alert("se agrega: a la posición "+(tempChar.length+1)+" el valor: "+myArray[i])
				tempChar[k] = myArray[i];
				k++;
			}
		}	
		
	}

	for (i=0;i<tempChar.length;i++)
	{		
		counter = 0
		for (j=0;j<myArray.length;j++)
		{
			if (myArray[j] == tempChar[i])
			{
				counter++;
			}				
		}
		if (counter>nRep) 
		{ 
			//alert("En la palabra " + str + " se repite mas de " + nRep + " veces el caracter: " + tempChar[i]);
			//alert("El teléfono no es válido.");
			//obj.focus();						
			//return false;
			alert('El campo '+label+' tiene muchos números repetidos.'); str.focus(); return false;
		}
	}
	return true;
}

function menosDe(obj,nMin,label)
{
	//------------------------------------
	//Programó: Oswaldo Facio Rivas
	//Fecha: Martes 06 Noviembre 2008
	//Parámetros: 	obj -> el objeto a buscar
	//				nRep -> minimo de caracteres permitidos
	//Descripción: Cuenta cuantos carcteres tiene un string si tiene menos 
	//envía un mensaje de error.
	//------------------------------------
	if (obj.value == "") return true; //no manejamos campos vacios
	if (obj.value.length < nMin)
	{
		alert('El campo '+label+' no puede tener menos de ' + nMin + '.'); obj.focus(); return false;	
	} 
	return true;
}

function telefono(obj,label)
{
	/*------------------------------------
	-Programó: Oswaldo Facio Rivas
	-Fecha: Martes 30 Diciembre 2008
	-Parámetros: 	obj -> el objeto a buscar
					label -> label del objeto a desplegar en el alert
	------------------------------------*/
	if (obj.value == "") return true; //no manejamos campos vacios
	
	if (obj.value.length < 10)
	{
		alert('El campo '+label+' no puede tener menos de 10 numeros, debe incluir la clave lada.');
		obj.focus(); 
		return false;	
	} 
	if (obj.value.length > 10)
	{
		alert('El campo '+label+' no puede tener mas de 10 numeros.');
		obj.focus(); 
		return false;	
	} 

	return true;
}

function vaciaCombo(objStr,mensaje)
{
	//alert('Function vaciaCombo initialized.');
 	/***********************************
    Descripción: vacia un combo por completo y le pone el valor del mensaje como primer artículo
					id1|valor1,id2|valor2
    Parametro: objStr -> el "Objeto" del campo a llenar
               mensaje -> leyenda a ponerle al combo			  
    Programó: Oswaldo Facio Rivas
    Fecha: 20-Noviembre-2008    
    ***********************************/
	var obj = $(objStr);
	//buscar la coma
	obj.length = 0;
	var opcion;
	obj.options[0] = new Option(((mensaje!="")?mensaje:""),"0");	

}
function implode(glue,pieces) {
	/***********************************
    Descripción: pega un arreglo para formar una cadena con los separadores "glue"
    Parametro: objStr -> el "Objeto" del campo a llenar
               mensaje -> leyenda a ponerle al combo			  
    Programó: Oswaldo Facio Rivas
    Fecha: 21-Noviembre-2008    
    ***********************************/   
 
    return ( ( pieces instanceof Array ) ? pieces.join ( glue ) : pieces );
}

function selectOption(obj,value)
{
	var i = 0;
	for (i=0;i<obj.options.length; i++)
	{		
		//alert(obj.options[i].value + "==" + value);
		
		if (obj.options[i].value == value)
		{
			obj.options[i].selected = true;
			break;
		}		
	}
}

function isrfc(obj) {
	/*----------------------------------
    Descripción: Valida si el campo introducido es un rfc válido, los últimos 3 caracteres son opcionales
    Parametro: obj -> el "Objeto" del campo a validar
    Programó: Oswaldo Facio Rivas
    Fecha: 18-Diciembre-2008    
    ----------------------------------*/	
	if (obj.value == "") return true; //no manejamos campos vacios
	if (!obj.value.match(/^[a-zA-Z]{3,4}(\d{6})((\D|\d){3})?$/))
	{
		alert('El campo de RFC debe ser un rfc válido.');
		obj.focus();
		return false;
	} else
	{
		return true;
	};
}
/*
Para validar URLs:
http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
Para validar cadenas sin caracteres especiales:
^[a-zA-Z0-9ñÑáéíóúÁÉÍÓÚ]+$
*/

