/************  FUNCIONES GENERALES EN JAVASCRIPT !!!! ***********/

var chrcategoria = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz áéíóúÁÉÍÓÚ/";
var chralfabeto = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz áéíóúÁÉÍÓÚ.";
var chrnumeros = "0123456789";
var chrtelefono = "0123456789- ";
var chremail = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz@.-_0123456789";
var chrdireccion = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz áéíóúÁÉÍÓÚ0123456789.";
var chralfanumericos = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz0123456789";
var chrreales = "0123456789.";
var chrunidad = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz.";
var chrnplaca = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz0123456789-";
var chrbusqueda = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz áéíóúÁÉÍÓÚ0123456789.'&";


//Función que dada una cadena como parámetro, la devuelve sin espacios en blanco al inicio ni al final.
function trim(s) {
  while (s.length>0 && (s[0]==' '||s[0]=='\n'||s[0]=='\t')){
  	s=s.substring(1, s.length);
  }
  while (s.length>0 && (s[s.length-1]==' '||s[s.length-1]=='\n'||s[s.length-1]=='\t')){
  	s=s.substring(0, s.length-1);
  }
  return s;
}

//Función que devuelve true si la cadena dada como parámetro es null o una cadena vacía.
function cadena_vacia(cadena) {
  if (cadena == null || cadena == "") return true;
  else return false;
}

//Función que compara cada caracter de su segundo parámetro con todos los del primer parámetro,
//si todos los caracteres de la segunda están en la primera entonces la función devuelve true.
function valida_campo(chrAceptables, cadena_a_evaluar) {
  var i,j;
  var valido=true;
  var encontrado;
	
    for (i=0;i < cadena_a_evaluar.length;i++) {
      encontrado=false;
      for (j=0;j < chrAceptables.length;j++) {
         if (cadena_a_evaluar.substring(i,i+1) == chrAceptables.substring(j,j+1)) {
           encontrado = true;
           break;
         }
      }
      if (!encontrado) {
        valido=false;
        break;
      }

    }
  return valido;
}

//Función que valida un número, devolviendo true si el número dado como parámetro se encuentra en el rango de valores
//dados como parámetros segundo y tercero.
function numero_rango(num, min) {
  if (num>min) return true;
  else return false;
}

//Función que compara 2 cadenas devolviendo true si es correcto.
function cadena_compara(cadena1, cadena2) {
  if (cadena1==cadena2) return true;
  else return false;
}

//Función que valida un número, devolviendo true si el número dado como parámetro se encuentra en el rango de valores
//dados como parámetros segundo y tercero.
function numero_rango_min_max(num, minimo, maximo) {
  if (num>=minimo) return true;  else return false;
  if (num<=maximo) return true;  else return false;
}

//Función que valida un número, es decir devuelve true si el número es de n cifras dadas como segundo parametro.
function valida_long(cadena, longitud) {
  if (cadena.length==longitud) return true;
  else return false;
}

//Función que valida si la cadena tiene un cierto número de caracteres, es decir si tiene como mínimo el numero
//dado por el segundo parámetro y como máximo el número dado por el tercer parámetro.
function cadena_rango(cadena, minimo, maximo) {
  if ((cadena.length>=minimo) && (cadena.length<=maximo)) return true;
  else false;
}

//Función que valida un email dado como cadena:
//debe tener una @
//debe tener un punto al menos
//entre la arroba y el punto debe haber siquiera un caracter
//el punto no debe ser el ultimo caracter
function valida_email(email) {
  var posArroba=email.indexOf("@");
  var lastPunto=email.lastIndexOf(".");
  var firstPunto=email.indexOf(".");
  var lon=email.length-1;

  if ((posArroba>0) && (lastPunto-posArroba>1) && (lastPunto>=0)
       &&  !(lastPunto==lon) && !(email[posArroba+1]=='.'))
      return true;
  else return false;
}

function limpiarCampos(campos){
	for(ind=0; ind<campos.length; ind++){
		control = document.getElementById(campos[ind]);		
		if(control.type == "select-one"){
			setValorCombo(control.id, "null");
		}
		else{
			control.value = "";
		}
	}
}

function desactivarCampos(campos){
	for(ind=0; ind<campos.length; ind++){
		control = document.getElementById(campos[ind]);		
		if(control.type == "select-one"){
			control.disabled = true;
		}
		else{
			control.readOnly = true;
		}
	}
}

function activarCampos(campos){
	for(ind=0; ind<campos.length; ind++){
		control = document.getElementById(campos[ind]);		
		if(control.type == "select-one"){
			control.disabled = false;
		}
		else{
			control.readOnly = false;
		}
	}
}

function desactivarBotones(botones){
	for(ind=0; ind<botones.length; ind++){
		document.getElementById(botones[ind]).disabled = true;
	}
}

function activarBotones(botones){
	for(ind=0; ind<botones.length; ind++){
		document.getElementById(botones[ind]).disabled = false;
	}
}

function setValorCombo(controlNombre, valor){
	obj = document.getElementById(controlNombre);
	for (var opcombo=0;opcombo < obj.length;opcombo++){
    	if(obj[opcombo].value.toLowerCase() == valor.toLowerCase()){
    		obj.selectedIndex = opcombo;
    		break;
    	}
	}
}

function getCData(nodo){
	if(navigator.userAgent.match("MSIE")){
		text = nodo.firstChild.nodeValue; 	//ie
	}
	else{
		text = nodo.childNodes[1].nodeValue;	//ff	
	}	
	return text;
}


function setOpcionesSelect(objeto,innerHTML){
    objeto.innerHTML = ""
    var selTemp = document.createElement("micoxselect")
    var opt;
    selTemp.id="micoxselect1"
    document.body.appendChild(selTemp)
    selTemp = document.getElementById("micoxselect1")
    selTemp.style.display="none"
    if(innerHTML.toLowerCase().indexOf("<option")<0){
        innerHTML = "<option>" + innerHTML + "</option>"
    }
    innerHTML = innerHTML.replace(/<option/g,"<span").replace(/<\/option/g,"</span")
    selTemp.innerHTML = innerHTML
    for(var i=0;i<selTemp.childNodes.length;i++){
        if(selTemp.childNodes[i].tagName){
            opt = document.createElement("OPTION")
            for(var j=0;j<selTemp.childNodes[i].attributes.length;j++){
                opt.setAttributeNode(selTemp.childNodes[i].attributes[j].cloneNode(true))
            }
            opt.value = selTemp.childNodes[i].getAttribute("value")
            opt.text = selTemp.childNodes[i].innerHTML
            if(document.all){ //IEca
                objeto.add(opt)
            }else{
                objeto.appendChild(opt)
            }                    
        }    
    }
    document.body.removeChild(selTemp)
    selTemp = null
}
