////////////////////////////////////////////////////////////////////////////////

//   T R I M ///////////////////////////////////////////////////////////////////
// Borra los espacios en blanco que se encuentren al principio y al final de una
// cadena
function trim(cadena) {
   nCadena = rightTrim(cadena);
   nCadena = leftTrim(nCadena)
   return nCadena;
}

//   R I G H T  T R I M ////////////////////////////////////////////////////////
// Borra los espacios en blanco que se encuentren al principio de una cadena
function rightTrim(cadena) {
   while( (''+cadena.charAt(cadena.length-1)==' ') 
         || (''+cadena.charAt(cadena.length-1)=="\n"))
      cadena=cadena.substring(0,cadena.length-1);
   return cadena;
}

//   L E F T  T R I M //////////////////////////////////////////////////////////
// Borra los espacios en blanco que se encuentren al final de una cadena
function leftTrim(cadena) {
   while( (''+cadena.charAt(0)==' ')
         || (''+cadena.charAt(cadena.length-1)=="\n"))
      cadena=cadena.substring(1,cadena.length);
   return cadena;
}


////////////////////////////////////////////////////////////////////////////////

//   G E T  I N P  T E X T /////////////////////////////////////////////////////
// Recupera el value de un objeto input text.                                     
function getInpText(caja) {
   return caja.value;
}

//   G E T  L O N G  I N P  T E X T ////////////////////////////////////////////
// Recupera la longitud de la cadena de un value de un objeto input text.
function getLongInpText(caja) {
   nCadena = trim(caja.value);
   return nCadena.length;
}
//   S E T  I N P  T E X T /////////////////////////////////////////////////////
// Incializa el value de un objeto input text.
function setInpText(caja,cadena) {
   caja.value = cadena;
}

////////////////////////////////////////////////////////////////////////////////

//   G E T  H I D D E N ////////////////////////////////////////////////////////
// Recupera el value de un objeto input hidden.                                     
function getHidden(ocul) {
   return ocul.value;
}

//   G E T  L O N G  H I D D E N ///////////////////////////////////////////////
// Recupera la longitud de la cadena de un value de un objeto input hidden.
function getLongHidden(ocul) {
   nCadena = trim(ocul.value);
   return nCadena.length;
}

//   S E T  H I D D E N ////////////////////////////////////////////////////////
// Incializa el value de un objeto input hidden.
function setHidden(ocul,cadena) {
   ocul.value = cadena;
}

////////////////////////////////////////////////////////////////////////////////

//   G E T  P A S S W O R D ////////////////////////////////////////////////////
// Recupera el value de un objeto input password.                                     
function getPassword(contra) {
   return contra.value;
}

//   G E T  L O N G  P A S S W O R D ///////////////////////////////////////////
// Recupera la longitud de la cadena de un value de un objeto input password.
function getLongPassword(contra) {
   nCadena = trim(contra.value);
   return nCadena.length;
}
//   S E T  P A S S W O R D ////////////////////////////////////////////////////
// Incializa el value de un objeto input password.
function setPassword(contra,cadena) {
   contra.value = cadena;
}

////////////////////////////////////////////////////////////////////////////////

//   G E T  T E X T A R E A ////////////////////////////////////////////////////
// Recupera el value de un objeto textarea.                                     
function getTextarea(txt) {
   return Textarea.value;
}

//   G E T  L O N G  T E X T A R E A ///////////////////////////////////////////
// Recupera la longitud de la cadena de un value de un objeto textarea.
function getLongTextarea(txt) {
   nCadena = trim(txt.value);
   return nCadena.length;
}
//   S E T  T E X T A R E A ////////////////////////////////////////////////////
// Incializa el value de un objeto textarea.
function setTextarea(txt,cadena) {
   txt.value = cadena;
}

////////////////////////////////////////////////////////////////////////////////

//   G E T  R A D I O //////////////////////////////////////////////////////////
// Recupera el value de un objeto input radio.                                     
function getRadio(rad) {
  return rad.value;
}
function getRadio(rad,num) {
  return rad[num].value;
}
//   G E T  S I G N  R A D I O /////////////////////////////////////////////////
// marca o desmarca un objeto input radio.
function getSignRadio(rad) {
   return rad.checked;
}
function getSignRadio(rad,num) {
   return rad[num].checked;
}
//   S E T  S I G N  R A D I O /////////////////////////////////////////////////
// marca o desmarca un objeto input radio.
function setSignRadio(rad,chcked) {
   rad.checked = chcked;
}
function setSignRadio(rad,chcked,nun) {
   rad[num].checked = chcked;
}
//   S E T  R A D I O //////////////////////////////////////////////////////////
// Incializa el value de un objeto input radio.
function setRadio(rad,cadena) {
   rad.value = cadena;
}
function setRadio(rad,cadena,num) {
   rad.value = cadena;
}
//   G E T  V A L U E  R A D I O S /////////////////////////////////////////////
// Recupera el value de unos objetos input radio con el mismo nombre.                                     
function getValueRadios(rad) {
   var valor;
   for (var i = 0; rad.length-1 >= i; i++){
   alert(i)
      if (rad[i].checked == true)
         valor = rad[i].value;
   }
   return valor;
}
//   G E T  C H E C K E D  R A D I O S /////////////////////////////////////////
// Recupera el número del checked de un objeto input radio con el mismo nombre.                                     
function getCheckedRadios(rad) {
    var valor;
   for (var i = 0; rad.length-1 >= i; i++){
      if (rad[i].checked == true)
         valor = i;
   }
   return valor;
}

////////////////////////////////////////////////////////////////////////////////

//   G E T  C H E C K B O X ////////////////////////////////////////////////////
// Recupera el value de un objeto input radio.                                     
function getCheckbox(chck) {
  return chck.value;
}
function getCheckbox(chck,num) {
  return chck[num].value;
}
//   G E T  S I G N  C H E C K B O X ///////////////////////////////////////////
// marca o desmarca un objeto input radio.
function getSignCheckbox(chck) {
   return chck.checked;
}
function getSignCheckbox(chck,num) {
   return chck[num].checked;
}
//   S E T  S I G N  C H E C K B O X ///////////////////////////////////////////
// marca o desmarca un objeto input radio.
function setSignCheckbox(chck,chcked) {
   chck.checked = chcked;
}
function setSignCheckbox(chck,chcked,nun) {
   chck[num].checked = chcked;
}
//   S E T  C H E C K B O X ////////////////////////////////////////////////////
// Incializa el value de un objeto input radio.
function setCheckbox(chck,cadena) {
   rad.value = cadena;
}
function setCheckbox(chck,cadena,num) {
   rad.value = cadena;
}
//   G E T  V A L U E  C H E C K B O X E S//////////////////////////////////////
// Recupera el value de unos objetos input radio con el mismo nombre.                                     
function getValueCheckboxes(chck) {
   var valor = '';
   for (var i = 0; chck.length-1 >= i; i++){
      if (chck[i].checked == true) {
         valor += chck[i].value + '#'
      } else{
         valor += '*#'
      }
   }
   
   return valor.substring(0,valor.length-1);
}
//   G E T  C H E C K E D  C H E C K B O X E S /////////////////////////////////
// Recupera el número del checked de un objeto input radio con el mismo nombre.                                     
function getCheckedCheckboxes(chck) {
   var valor = '';
   for (var i = 0; chck.length-1 >= i; i++){
     if (chck[i].checked == true) {
         valor += '' + i + '#'
      } else{
         valor += '*#'
      }
   }
   return valor.substring(0,valor.length-1);
}

////////////////////////////////////////////////////////////////////////////////

//   G E T  V A L U E  S E L E C T /////////////////////////////////////////////
// Recupera el value del option seleccionado de un objeto select.
function getValueSelect(slct) {
   return slct.options[slct.selectedIndex].value;
}
//   G E T  V A L U E  S E L E C T  M U L T I P L E ////////////////////////////
// Recupera el value del option seleccionado de un objeto select.
function getValueSelectMultiple(slct) {
   var valor = ''; 
   for (var i = 0; slct.options.length-1 >= i; i++){
     if (slct.options[i].selected == true) {
         valor += '' + slct.options[i].value + '#'
      } else{
         valor += '*#'
      }
   }
   return valor.substring(0,valor.length-1);
}

//   G E T  S E L E C T E D  S E L E C T ///////////////////////////////////////
// Recupera el value del option seleccionado de un objeto select.
function getSelectedSelect(slct) {
   return slct.selectedIndex;
}
//   G E T  S E L E C T E D  S E L E C T  M U L T I P L E //////////////////////
// Recupera el value del option seleccionado de un objeto select.
function getSelectedSelectMultiple(slct) {
   var valor = ''; 
   for (var i = 0; slct.options.length-1 >= i; i++){
     if (slct.options[i].selected == true) {
         valor += '' + i + '#'
      } else{
         valor += '*#'
      }
   }
   return valor.substring(0,valor.length-1);
}

//   S E T  S E L E C T ////////////////////////////////////////////////////////
// Inicializa un objeto option a un objeto select.
function setSelect(slct,descrip,cod) {
   var lon = slct.options.length;
   if (lon == 0) {lon = 1;}
   slct.options[lon-1].value = cod;
   slct.options[lon-1].text = descrip;
}


///////////////////////////////////////////////////////////////////////////////////

//   G E T  N U M  A R  C H E C K  B O X E S ///////////////////////////////////
// Recupera el número de checkbox en el array
function getNumArCheckboxes(formu,nombre) {
   var chck = eval(formu +'.'+ nombre +'1');
   var num = 0;
	while (chck!=null) {
		num++;
		chck = eval(formu +'.'+ nombre +num);
	}
   return num-1;
}

//   G E T  N U M  S E L E C T E D  A R  C H E C K  B O X E S //////////////////
// Recupera el número de checkbox señalados en el array
function getNumSelectedArCheckboxes(formu,nombre) {
   var numCheck = 0;
   var count = getNumArCheckboxes(formu,nombre);
	for (var i=1 ; i<=count; i++) {
      chck = eval(formu +'.'+ nombre + i);
      if (chck.checked == true) {
         numCheck++;
      }
	}
	return numCheck;
}

//   S E T  A R  C H E C K  B O X E S //////////////////////////////////////////
// Recupera el número de checkbox señalados en el array
function setArCheckboxes(formu,nombre,num,chcked) {
   chck = eval(formu +'.'+ nombre + num);
   chck.checked = chcked;
}

//   G E T  N U M  S E L E C T E D  A R  C H E C K  B O X E S //////////////////
// Recupera el value del array del checkbox
function getValueArCheckboxes(formu,nombre) {
	count = getNumArCheckboxes(formu,nombre);
	valor = ''; 
	for (var i=1 ; i<=count; i++) {
	   chck = eval(formu +'.'+ nombre + i);
      if (chck.checked == true) {
        valor += '' + chck.value + '#';
      } else {
         valor += '*#';
      }
	}
	return valor.substring(0,valor.length-1);
}

function esNulo(obj){
    nul = true 
      if (obj.type == 'text') 
         if (trim(obj.value) == '')
            nul = false;
      if (obj.type == 'hidden') 
         if (trim(obj.value) == '')
            nul = false;      
      if (obj.type == 'password') 
         if (trim(obj.value) == '')
            nul = false;     
      if (obj.type == 'radio') 
         if (!obj.checked)
            nul = false;          
      if (obj.type == 'checkbox') 
         if (!obj.checked)
            nul = false;    
      if (obj.type == 'file') 
         if (trim(obj.value) == '')
            nul = false;    
      if (obj.type == 'select-one') 
         if (obj.options[obj.selectedIndex].value == '#COMBO_VACIO#')
            nul = false;
      if (obj.type == 'select-multiple') 
         if (obj.selectedIndex == -1)
            nul = false;
      if (obj.type == 'textarea') 
         if (trim(obj.value) == '')
            nul = false;   
            
     return nul;
}


////////////////////////////////////////////////////////////////////////////////

//   G E T  R E L L E N A D O //////////////////////////////////////////////////
// Recupera false si algún objeto de los argumentos es nulo o vacio. Primer argumento
// es el formulario y los restantes son los objetos del formulario.
function getRellenado(){
   
   formu = eval(arguments[0]);
   siAlert = arguments[1];
   siNulo = false;
   
   for (var i = 0; formu.elements.length > i ;i++) {

      siObjeto = false;
         
      if(formu.elements[i].type == 'hidden') {
         for (var j = 2; arguments.length > j ;j++) {
            if(formu.elements[i].name == arguments[j]) {
               siObjeto = true;
            }
         }
      } else {
         siObjeto = true;
      }
         
      if (siObjeto == true && formu.elements[i].name != 'jspListadoOrdenacion' 
            && formu.elements[i].name != 'jspSentido' 
            && formu.elements[i].type != 'button'
            && formu.elements[i].type != 'reset'
            && formu.elements[i].type != 'submit') {
            
         if(esNulo(formu.elements[i])) {
            siNulo= true;
         }
      
      }
   
   }
   
   if (siAlert == true && siNulo == false)
      alert('Se requiere al menos un campo.');
   
   return siNulo;
 
}

////////////////////////////////////////////////////////////////////////////////

//   G E T  R E C O M E N D E D  F O R M ///////////////////////////////////////
// Recupera false si algún objeto de los argumentos es nulo o vacio. Primer argumento
// es el formulario y los restantes son los objetos del formulario.
function getRecomendedForm(){
   var nulo = true;
   for (var i = 1; arguments.length > i ;i++) {
      var obj = eval(arguments[0]+'.'+arguments[i]);
      if (obj.type == 'text') 
         if (trim(obj.value) == '')
            nulo = false;
      if (obj.type == 'hidden') 
         if (trim(obj.value) == '')
            nulo = false;      
      if (obj.type == 'password') 
         if (trim(obj.value) == '')
            nulo = false;     
      if (obj.type == 'radio') 
         if (!obj.checked)
            nulo = false;          
      if (obj.type == 'checkbox') 
         if (!obj.checked)
            nulo = false;    
      if (obj.type == 'file') 
         if (trim(obj.value) == '')
            nulo = false;    
      if (obj.type == 'select-one') 
         if (obj.options[obj.selectedIndex].value == '')
            nulo = false;
      if (obj.type == 'select-multiple') 
         if (obj.selectedIndex == -1)
            nulo = false;
      if (obj.type == 'textarea') 
         if (trim(obj.value) == '')
            nulo = false;     
   }
   return nulo;
}





////////////////////////////////////////////////////////////////////////////////////
//                                                                                //
//   ///////////////////////////////////////////                                  //
//   ///// V A L I D A _ T O D O S _ C A D /////                                  //
//   ///////////////////////////////////////////                                  //
//                                                                                //
//   Definición:                                                                  //
//       Comprueba los campos tipo TEXT y TEXTAREA de un formulario si contiene   //
//       algún carácter usado por el formato CGI.                                 //
//   Entra:                                                                       //
//       formu: Formulario a comprobar si algún campo de tipo TEXT o TEXTAREA     //
//              contiene algún carácter utilizado por el formato CGI.             //
//   Retorna:                                                                     //
//       - Da un alert con la cadena que tiene un carácter usado por el CGI.      //
//       false: Si la cadena contiene algún carácter usado por el formato CGI.    //
//       true: Si la cadena no contiene algún carácter usado por el formato CGI.  //
//                                                                                //
////////////////////////////////////////////////////////////////////////////////////

function Valida_Todos_Cad(formula) {
    for (i = 0 ; i < formula.length ; i++) {
        tempobj = formula.elements[i];
        if (tempobj.type == "text") {
            if (ValidaCad(tempobj.value) == false) {
                alert("La cadena de caractéres " + tempobj.value + " contiene caractéres no válidos.");
                return false;
            }
        }
    }                       
    return true;
}










////////////////////////////////////////////////////////////////////////////////////
//                                                                                //
//   /////////////////////////////////////////                                    //
//   ///// V A L I D A C A D N U M E R O /////                                    //
//   /////////////////////////////////////////                                    //
//                                                                                //
//   Definición:                                                                  //
//        Comprueba una cadena si tiene algún carácter diferente a un numero      //
//   Entra:                                                                       //
//        cadena: Cadena a comprobar si tiene algún carácter diferente a un       //
//                número.                                                         //
//   Retorna:                                                                     //
//        false: Si la cadena contiene algún carácter diferente a un número.      //
//        true: Si la cadena no contiene algún carácter diferente a un número.    //
//                                                                                //
////////////////////////////////////////////////////////////////////////////////////

function ValidaCadNumero (cadena){
    if (cadena != "") {
        i = 0;
        e = 0;
        while (i < cadena.length) {
            ncadena = cadena.substring(i,i+1);      	
            if ((ncadena != "0") && (ncadena != "1") && (ncadena != "2") && (ncadena != "3") && (ncadena != "4") && (ncadena != "5") && (ncadena != "6") && (ncadena != "7") && (ncadena != "8") && (ncadena !="9")) { 
                e = 1;
            } 
      	    i = i + 1;
        }
        if (e == 1) {
            return false;
        }else{
            return true;
        }
    } else {
        return true;
    }
}

////////////////////////////////////////////////////////////////////////////////////
//                                                                                //
//   ///////////////////////////////////                                          //
//   ///// S U S T I T U Y E C A D /////                                          //
//   ///////////////////////////////////                                          //
//                                                                                //
//   Definición:                                                                  //
//        Sustituye en una cadena los espacios en blanco en %27                   //
//   Entra:                                                                       //
//        cadena: La cadena a sustituir los espacios en blanco                    //
//    Retorna:                                                                    //
//        ncadena: La cadena sustituida los espacios en %27                       //
//                                                                                //
////////////////////////////////////////////////////////////////////////////////////

function SustituyeCad(cadena) {
	
    if (cadena.length == 0){
        return (cadena);
    }
    ncadena = cadena.replace(cadena, "%27");
    return (ncadena);                          
}

////////////////////////////////////////////////////////////////////////////////////
//                                                                                //
//   /////////////////////////////////////////////////                            //
//   ///// S U S T I T U Y E _ T O D O S _ C A D /////                            //
//   /////////////////////////////////////////////////                            //
//                                                                                //
//   Definición:                                                                  //
//       Sustituye en los campos tipo TEXT y TEXTAREA de un formulario los        //
//       espacios en blanco por %27.                                              //
//   Entra:                                                                       //
//       formu: Formulario a sustituir los espacios en blanco en los campos TEXT  //
//              y TEXTAREA por %27.                                               //
//   Retorna:                                                                     //
//                                                                                //
////////////////////////////////////////////////////////////////////////////////////

function Sustituye_Todos_Cad(formu) {
    for (i = 0 ; i < formu.length ; i++) {
        tempobj = formu.elements[i];
        if (tempobj.type == "text") {
            tempobj.value = SustituyeCad(tempobj.value)
        }
    }                       
}

////////////////////////////////////////////////////////////////////////////////////
//                                                                                //
//   /////////////////////////////////////////////////////                        //
//   ///// C O M P R O B A R F O R M A T O E M A I L /////                        //
//   /////////////////////////////////////////////////////                        //
//                                                                                //
//   Definición:                                                                  //
//       Comprueba que el formato de la direccion de correo electronico           //
//       introducida es correcto                                                  //
//   Entra:                                                                       //
//       email: cadena con la direccion de correo introducida                     //
//   Retorna:                                                                     //
//       false: Si la cadena no tiene un formato correcto                         //
//       true: Si la cadena tiene un formato correcto                             //
////////////////////////////////////////////////////////////////////////////////////

function comprobarFormatoEmail(email){
	//En caso que no sea obligatorio rellenarlo
	if (email==""){
		return true;
	//Comprobamos que hay @
	} else{
		if (email.indexOf('@')==-1 ){
			return false; 
		}
		else {
			//Comprobamos que hay un punto despues de la @
			str = email;
			posicionArroba = str.indexOf('.');
			cadenaPosteriorArroba = str.substr(posicionArroba,str.length);
			if (cadenaPosteriorArroba.indexOf('.')==-1 ){
				return false;
			}
			else{
				//Comprobamos que existe una cadena despues del punto
				posicionP = cadenaPosteriorArroba.indexOf('.');
				cadenaPosteriorPunto = cadenaPosteriorArroba.substr(posicionP,cadenaPosteriorArroba.length);
				if (cadenaPosteriorPunto.length==1 ){
					return false;
				}
				else{
					return true;
				}
			}
		}
	}
}


////////////////////////////////////////////////////////////////////////////
//                                     											  //
//   ///////////////////////////////   											  //
//   ///// V A L I D A A N H O /////   											  //
//   ///////////////////////////////   											  //
//                                     											  //
//   Definición:                       											  //
//		  Valida una cadena numerica como un año									  //	
//   Entra:																					  //	
//      anho: año que se quiere verificar                                 //
//      limiteInferior: limite inferior del intervalo de años             //
//      					 en los que queremos que se encuentre anho           //
//      limiteSuperior: limite superior del intervalo de años             //
//      					 en los que queremos que se encuentre anho           //
//   Retorna:																			     //	
//      true: si anho se encuentra entre limiteInferior y limiteSuperior  //
//      false: caso contrario a true												  //	
////////////////////////////////////////////////////////////////////////////

function ValidaAnho(anho, limiteInferior, limiteSuperior)  {
   if (anho < limiteInferior || anho > limiteSuperior)
      return false;
   else return true;
}

////////////////////////////////////////////////////////////////////////////
//                                     											  //
//   /////////////////////////////////////////////////////////////        //
//   ///// T R A T A R C A D E N A S A L M O H A D I L L A S /////   	  //
//   /////////////////////////////////////////////////////////////        //
//                                     											  //
//   Definición:                       											  //
//		  Reemplaza el caracter # por %23									  		  //	
//   Entra:																					  //	
//      valor: cadena que se quiere reemplazar con caracteres #           //
//                																		  //
//   Retorna:																			     //	
//      cadena reeplazada con los caracteres %23  								  //
//																								  //	
////////////////////////////////////////////////////////////////////////////
function tratarCadenasAlmohadillas(valor){
   while (valor.length > 0){
         if (valor.indexOf('#')!=-1 ){
            valor = valor.replace('#','%23');
         }
         else break;
   }
   return valor;
}
