
// --- COMPROBAR CAMPOS VACIOS II (VARIABLE) -----------------------------------------
// MODIFICADA !!!!
// Se le pasan argumentos variables, los que sean.
// El primero es el nombre del formulario
// Los demás son los nombres de los campos del formulario que no deben ser vacios
// Simplemente pasamos el nombre, aquí se crea la cadena document.frm....
// Si todos son distintos de vacio devuelve 1
// Si alguno esta vacio devuelve 0
	var cadenaCampos;
	function comprobarCamposII() {
		var ncampos;
		var i;
		var correcto=1;
		var miForm;
		cadenaCampos="";
		miForm=comprobarCamposII.arguments[0];
		ncampos=comprobarCamposII.arguments.length;
		for (i=1;i<ncampos;i++) {
			if (eval('document.' + miForm + '.' + comprobarCamposII.arguments[i] + '.value==\'\'')) {
				cadenaCampos=cadenaCampos + '\n\t[' + eval('document.' + miForm + '.' + comprobarCamposII.arguments[i] + '.title') + ']';
				correcto=0;
			}
		}
		return correcto;
	}
// --- COMPROBAR CAMPOS VACIOS III(VARIABLE) -----------------------------------------
// MODIFICADA 2 !!!!
// Se le pasa el nombre del formulario
// Mira los campos que tienen ID y esos son los que comprueba que no esten vacios
// Si todos son distintos de vacio devuelve 1
// Si alguno esta vacio devuelve 0
	var cadenaCampos;
	function comprobarCamposIII() {
		var ncampos;
		var i;
		var correcto=1;
		var miForm;
		cadenaCampos="";
		miForm=comprobarCamposIII.arguments[0];
		ncampos=eval('document.' + miForm + '.elements.length');
		for (i=0;i<ncampos;i++) {
			miCadena=eval('document.' + miForm + '.elements[' + i + '].id');
			if (miCadena.indexOf('ob_')!=-1) {
				if (eval('document.' + miForm + '.elements[' + i + '].value==\'\'')) {
					cadenaCampos=cadenaCampos + '\n\t[' + eval('document.' + miForm + '.elements[' + i + '].title') + ']';
					correcto=0;
				}
			}
		}
		return correcto;
	}
// --- FUNCION SELECCIONA CHECKS  -------------------------------------------------
// Se le pasa el nombre de un formulario y un valor (true o false)
// Selecciona o deselecciona todos los ckecks del formulario
	function seleccionarTodos(miFormulario,valor) {
		var total,i;
		total=eval('document.' + miFormulario + '.elements.length');
		for (i=0;i<total;i++) {
			if (eval('document.' + miFormulario + '.elements[' + i + '].type=="checkbox"')) {
				if (!eval('document.' + miFormulario + '.elements[' + i + '].disabled')) {
					eval('document.' + miFormulario + '.elements[' + i + '].checked=' + valor);
				}
			}
		}
	}
// --- OBTIENE CADENA DE BORRADO A PARTIR DE LOS CHECKBOX --------------------------------
// Se le pasa el nombre de un formulario.
// Devuelve una cadena del tipo: "idUsuario=2 OR idUsuario=3 OR idUsuario=5"
// para concatenarla más tarde con DELETE FROM table WHERE $cadenaBorrar
	function cadenaBorrado(miFormulario,miCampo,misComillas) {
		var total,i;
		var cadena="";
		total=eval('document.' + miFormulario + '.elements.length');
		for (i=0;i<total;i++) {
			if (eval('document.' + miFormulario + '.elements[' + i + '].type=="checkbox"') && eval('document.' + miFormulario + '.elements[' + i + '].value!="on"') ) {
				if (eval('document.' + miFormulario + '.elements[' + i + '].checked==true')) cadena+=' OR ' + miCampo + '=' + misComillas + eval('document.' + miFormulario + '.elements[' + i + '].value') + misComillas;
			}
		}
		cadena=cadena.substr(3,cadena.length-3);
		return cadena;
	}

// --- OBTIENE CADENA DE BORRADO A PARTIR DE LOS CHECKBOX --------------------------------
// Se le pasa el nombre de un formulario.
// Devuelve una cadena del tipo: "2|3"
// para concatenarla más tarde con DELETE FROM table WHERE $cadenaBorrar
	function cadenaBorradoEmpieza(miFormulario, miCampo, misComillas, miCadenaInicial) {
		var total,i;
		var cadena="";
		total=eval('document.' + miFormulario + '.elements.length');
		for (i=0;i<total;i++) {
      auxNombre=eval('document.' + miFormulario + '.elements[' + i + '].name');
      if (auxNombre.indexOf(miCadenaInicial)!=-1) {
        if (eval('document.' + miFormulario + '.elements[' + i + '].type=="checkbox"') && eval('document.' + miFormulario + '.elements[' + i + '].value!="on"') ) {
  				if (eval('document.' + miFormulario + '.elements[' + i + '].checked==true')) cadena+='|' + misComillas + eval('document.' + miFormulario + '.elements[' + i + '].value') + misComillas;
  			}
      }
		}
		cadena=cadena.substr(1,cadena.length);
		return cadena;
	}

// --- OBTIENE LOS CHECKBOS NO MARCADOS --------------------------------
// Se le pasa el nombre de un formulario.
// Devuelve una cadena del tipo: "2|3"
// para concatenarla más tarde con DELETE FROM table WHERE $cadenaBorrar
	function cadenaBorradoEmpiezaNo(miFormulario, miCampo, misComillas, miCadenaInicial) {
		var total,i;
		var cadena="";
		total=eval('document.' + miFormulario + '.elements.length');
    for (i=0;i<total;i++) {
      auxNombre=eval('document.' + miFormulario + '.elements[' + i + '].name');
      if (auxNombre.indexOf(miCadenaInicial)!=-1) {
        if (eval('document.' + miFormulario + '.elements[' + i + '].type=="checkbox"') && eval('document.' + miFormulario + '.elements[' + i + '].value!="on"') ) {
          if (eval('document.' + miFormulario + '.elements[' + i + '].checked==false')) cadena+='|' + misComillas + eval('document.' + miFormulario + '.elements[' + i + '].value') + misComillas;
  			}
      }
		}
    cadena=cadena.substr(1,cadena.length);
    return cadena;
	}

// --- FUNCION CONTAR CHECKBOX MARCADOS ------------------------------------------------
// Se le pasa el nombre de un formulario.
// Devuelve el número de checkbox seleccionados de un formulario
	function numeroSel(miFormulario) {
		var total,i,marcados=0;
		total=eval('document.' + miFormulario + '.elements.length');
		for (i=0;i<total;i++) {
			if (eval('document.' + miFormulario + '.elements[' + i + '].type=="checkbox"')) {
				if (eval('document.' + miFormulario + '.elements[' + i + '].checked==true'))
					marcados++;
				}
		}
		return marcados;
	}
// --- FUNCION DEVUELVE EL VALOR DEL RADIO MARCADO -------------------------------------------
// Se le pasa el nombre de un formulario y un valor que si es 1 desmarca todos los radios y si es 0 no.
// Devuelve el valor del radio marcado o -1 si no hay radio.
// Desmarca los checks si t=1
	function valorRadio(miFormulario, t) {
		var total,i,valor=-1;
		total=eval('document.' + miFormulario + '.elements.length');
		for (i=0;i<total;i++) {
			if (eval('document.' + miFormulario + '.elements[' + i + '].type=="radio"')) {
				if (eval('document.' + miFormulario + '.elements[' + i + '].checked==true')) {
					valor=eval('document.' + miFormulario + '.elements[' + i + '].value');
					if (t) eval('document.' + miFormulario + '.elements[' + i + '].checked=false');
				}
			}
		}
		return valor;
	}


// --- FUNCION QUE DEVUELVE UNA CADENA DE VALORES DE CHECKBOX ------------------------------------------------
// Se le pasa el nombre de un formulario, el separador por el que quieres separar el campo y valor del campo que quieras obtener (por defecto value).
// Devuelve la cadena de valores de los checkbox seleccionados de un formulario, separados por el valor pasado
	function cadenaChecksTag(idFormulario,separador,tag){
		if (typeof(tag)=="undefined") tag='value';
		var total,i,marcados='';
		total=eval('document.getElementById("' + idFormulario + '").elements.length');
		for (i=0;i<total;i++) {
			if (eval('document.getElementById("' + idFormulario + '").elements[' + i + '].type=="checkbox"')) {
				if (eval('document.getElementById("' + idFormulario + '").elements[' + i + '].checked==true')){
					if(marcados.length==0){
		  			  	marcados=eval('document.getElementById("' + idFormulario + '").elements[' + i + '].' + tag);
	  				}else{
						marcados=marcados + separador + eval('document.getElementById("' + idFormulario + '").elements[' + i + '].' + tag);
					}
				}
			}
		}
		return marcados;
	}


// --- MODIFICACION DE FORMULARIOS
// --- En la pagina donde este el formulario tiene que haber una capa y un campo de texto oculto
// --------------------------------------------------------------------------------
// --- VARIABLES
var formularioModificado=0; // Variable global que nos dice si se ha modificado
var formularioCambios="\n\n"; // Variable global que almacena en que campos se han hecho cambios

// --- FUNCION frm_Modificar ------------------------------------------------------
// Cambia el estado del formulario segun el valor que le pasemos
// Pasamos:
//		estado (0=no modificado|1=modificado)
//		escribe (0=no, 1=si  Escribe en una capa)
//		capa (nombre de la capa donde se mostrara el texto)
//		capa (nombre del campo en el que se ha hecho el cambio)
	function frm_ModificarEstado(estado, escribe, capa, texto, campo) {
		formularioModificado=estado;
		formularioCambios+='[' + campo + ']' + '\n';		
		if (estado==1 && escribe==1) frm_MuestraEstado(capa, texto);
	}
// --- FUNCION frm_Estado ---------------------------------------------------------
// Devuelve el estado del formulario
// Devuelve: estado (0=no modificado|1=modificado)
	function frm_Estado(estado) {
		return(formularioModificado);
	}
// --- FUNCION frm_MuestraEstado ---------------------------------------------------------
// Muestra el estado del formulario en un <div>
	function frm_MuestraEstado(capa, texto) {
		if (formularioModificado) miInnerHTML(capa, texto);
		else miInnerHTML(capa, '');				
	}		
// --- FUNCION frm_Enlace ---------------------------------------------------------
// Realiza el enlace a una pagina comprobando si se ha modificado o no
	function frm_Enlace(enlace, pregunta, formulario, voy) {
		if (formularioModificado==0) {
			self.location.href=enlace;
		}
		else {
			if (confirm(pregunta + formularioCambios)){
				eval('document.' + formulario + '.' + voy + '.value=\'' + enlace + '\'');
				eval('document.' + formulario + '.submit()');
			}
			else self.location.href=enlace;
		}
	}
// --- FUNCION frm_Borra ---------------------------------------------------------
// Elimina los datos de un input text
	function frm_Borra(frm, obj, valor) {
		eval('document.' + frm + '.' + obj + '.value=\'' + valor + '\'');
	}
// FUNCION: readonly o no readonly en un input
// PARAMETROS: obj, un input; estado: 0 o 1; fondo: color de fondo
function habilitoEscritura(obj, estado, fondo) {
  if (estado==1) {
    obj.readOnly=false;
    obj.focus();
    obj.select();
    obj.style.backgroundColor=fondo;
  }
  else {
    obj.readOnly=true;
    obj.style.backgroundColor=fondo;
  }
}
// --- FUNCIONES SELECCIONAR UN SELECT  ---------------------------------------------------------
	var arrOldValues;

	function SelectAllList(CONTROL){
		for(var i = 0;i < CONTROL.length;i++){
			CONTROL.options[i].selected = true;
		}
	}

	function DeselectAllList(CONTROL){
		for(var i = 0;i < CONTROL.length;i++){
			CONTROL.options[i].selected = false;
		}
	}

	function FillListValues(CONTROL){
		var arrNewValues;
		var intNewPos;
		var strTemp = GetSelectValues(CONTROL);
		arrNewValues = strTemp.split(",");
		for(var i=0;i<arrNewValues.length-1;i++){
			if(arrNewValues[i]==1){
				intNewPos = i;
			}
		}
		for(var i=0;i<arrOldValues.length-1;i++){
			if(arrOldValues[i]==1 && i != intNewPos){
				CONTROL.options[i].selected= true;
			}
			else if(arrOldValues[i]==0 && i != intNewPos){
				CONTROL.options[i].selected= false;
			}
			if(arrOldValues[intNewPos]== 1){
				CONTROL.options[intNewPos].selected = false;
			}
			else{
				CONTROL.options[intNewPos].selected = true;
			}
		}
	}

	function GetSelectValues(CONTROL){
		var strTemp = "";
		for(var i = 0;i < CONTROL.length;i++){
			if(CONTROL.options[i].selected == true){
				strTemp += "1,";
			}
			else{
				strTemp += "0,";
			}
		}
		return strTemp;
	}

	function GetCurrentListValues(CONTROL){
		var strValues = "";
		strValues = GetSelectValues(CONTROL);
		arrOldValues = strValues.split(",")
	}

	/**************************************************************
	Máscara de entrada.
	Si quieres usar este script en tu sitio eres libre de hacerlo con la condición de que permanezcan intactas estas líneas, osea, los créditos.
	No autorizo a distribuír el código en sitios de script sin previa autorización
	Si quieres distribuírlo, por favor, contacta conmigo.
	Ver condiciones de uso en http://javascript.tunait.com/
	tunait@yahoo.com
	****************************************************************/
	var patron224 = new Array(2,2,4);
	var patron2 = new Array(1,3,3,3,3);
	var patron22 = new Array(2,2);
	function mascara(d,sep,pat,nums,tipo){
		if(d.valant != d.value){
			val = d.value
			largo = val.length
			val = val.split(sep)
			val2 = ''
			for(r=0;r<val.length;r++){
				val2 += val[r]
			}
			if(nums){
				for(z=0;z<val2.length;z++){
					if(isNaN(val2.charAt(z))){
						letra = new RegExp(val2.charAt(z),"g")
						val2 = val2.replace(letra,"")
					}
				}
			}
			val = ''
			val3 = new Array()
			for(s=0; s<pat.length; s++){
				val3[s] = val2.substring(0,pat[s])
				val2 = val2.substr(pat[s])
			}
			for(q=0;q<val3.length; q++){
				if(q ==0){
					val = val3[q]
				}
				else{
					if(val3[q] != ""){
						val += sep + val3[q]
						}
				}
			}
			d.value = val
			d.valant = val
		}
	}

