

// función GENÉRICA para cualquier formulario
//------------------------------------------------------------------------------------------------
function chekea(cual) {
	var i, tipo, valor;
	if (cual.elements) {
		for (i=0; i<cual.elements.length; i++) {
			if (cual.elements[i].name != null && cual.elements[i].name.substr(0,4) == "chk|" && cual.elements[i].disabled == false) {
				tipo = cual.elements[i].name.split("|");
				valor = cual.elements[i].value;
				switch (tipo[2]) {
					case "str":	// alfanumérico
						// Primero veo si es obligatorio RELLENARLO
						if ((valor.length == 0) && tipo[5] == "true") {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(2));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después veo si es menor que el mínimo
						if (tipo[5] == "true" && valor.length < parseInt(tipo[3],10)) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(3)+" "+tipo[3]+" "+mIdiJS(4));				
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Y por último si es mayor que el máximo
						if (valor.length > parseInt(tipo[4],10)) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(5)+" "+tipo[4]+" "+mIdiJS(4));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						break;
					case "int":	// numerico
						// Primero veo si es obligatorio RELLENARLO
						if ((valor.length == 0) && tipo[5] == "true") {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(2));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después compruebo que sea NUMÉRICO
						if (!(esNumerico(valor))) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(6));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
								cual.elements[i].select();
							}
							return false;
						}
						// Después veo si es menor que el mínimo
						if (parseInt(valor,10) < parseInt(tipo[3],10)) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(3)+" "+tipo[3]);
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Y por último si es mayor que el máximo
						if (parseInt(valor,10) > parseInt(tipo[4],10)) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(5)+" "+tipo[4]);
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
								cual.elements[i].select();
							}
							return false;
						}
						break;
                                        case "dbl":	// numerico
                                                // Primero veo si es obligatorio RELLENARLO
                                                if ((valor.length == 0) && tipo[5] == "true") {
                                                        alert("O campo \""+tipo[6]+"\" é OBRIGATORIO");
                                                        if (cual.elements[i].type!="hidden"){
                                                                cual.elements[i].focus();
                                                        }
                                                        return false;
                                                }
                                                // Después compruebo que sea NUMÉRICO
                                                if (!(esNumerico(valor))) {
                                                        alert("O campo \""+tipo[6]+"\" debe ser un NÚMERO");
                                                        if (cual.elements[i].type!="hidden"){
                                                                cual.elements[i].focus();
                                                                cual.elements[i].select();
                                                        }
                                                        return false;
                                                }
                                                // Después veo si es menor que el mínimo
                                                if (parseFloat(valor,10) < parseFloat(tipo[3],10)) {
                                                        alert("O campo \""+tipo[6]+"\" NON pode ser menor de "+tipo[3]);
                                                        if (cual.elements[i].type!="hidden"){
                                                                cual.elements[i].focus();
                                                        }
                                                        return false;
                                                }
                                                // Y por último si es mayor que el máximo
                                                if (parseFloat(valor,10) > parseFloat(tipo[4],10)) {
                                                        alert("O campo \""+tipo[6]+"\" NON pode ser meirande de "+tipo[4]);
                                                        if (cual.elements[i].type!="hidden"){
                                                                cual.elements[i].focus();
                                                                cual.elements[i].select();
                                                        }
                                                        return false;
                                                }
                                                break;
					case "date":	// fecha
						// Primero veo si es obligatorio RELLENARLO
						if ((valor.length == 0) && tipo[5] == "true") {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(2));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después compruebo que sea FECHA
						if (validaFecha(valor) != "ok" && valor != "") {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(7)+"\n"+validaFecha(valor));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después veo si es menor que el mínimo
						if (convierteFecha(valor) < convierteFecha(tipo[3])) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(3)+" "+tipo[3]);
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después veo si es mayor que el máximo
						if (convierteFecha(valor) > convierteFecha(tipo[4])) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(5)+" "+tipo[4]);
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						break;
					case "eml":	//E-mail
						// Primero veo si es obligatorio RELLENARLO
						if ((tipo[5] == "true") && (valor.length == 0)) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(2));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después compruebo que sea EMAIL válido
						if ((esMail(valor)!=true) && (valor!="")){
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(9));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						break;
					case "file":	// archivo
						// Primero veo si es obligatorio RELLENARLO

						if ((valor == "") && tipo[5] == "true") {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(2));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						break;
					case "combo": // Combo
							// comprobamos si es obligatorio RELLENARLO
							if (tipo[5] == "true") {
								// Después comprobamos que sea válido (distinto de -1)
								if (valor == "-1"){
									alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(2));
									if (cual.elements[i].type!="hidden"){
										cual.elements[i].focus();
									}
									return false;								
								}
							}
							break;
					case "fileArchivo": // archivo, para limitar las extensiones
							// Primero veo si es obligatorio RELLENARLO
	
							if ((valor == "") && tipo[5] == "true") {
								alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(2));
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
								}
								return false;
							}
							// Compruebo que el formato de imagen se una de los admitidos
							if ( (valor != "") && (!(validaArchivo(valor))) ) {
								alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(10));
								if (cual.elements[i].type!="hidden"){
									cual.elements[i].focus();
									cual.elements[i].select();
								}
								return false;
							}
							break;
					case "chkb"://checkbox
						if (tipo[5] == "true" && cual.elements[i].checked == false){
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(2));
							cual.elements[i].focus();
							return false;
						}
						break;
                                        case "stock":	// stock
						// Primero veo si es obligatorio RELLENARLO
						if ((valor.length == 0) && tipo[5] == "true") {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(2));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Después compruebo que sea NUMÉRICO
						if (!(esNumerico(valor))) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(6));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
								cual.elements[i].select();
							}
							return false;
						}
						// Después veo si es menor que el mínimo
						if (parseInt(valor,10) < parseInt(tipo[3],10)) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(3)+" "+tipo[3]);
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
							}
							return false;
						}
						// Y por último si es mayor que el máximo
						if (parseInt(valor,10) > parseInt(tipo[4],10)) {
							alert(mIdiJS(1)+" \""+tipo[6]+"\" "+mIdiJS(5)+" "+tipo[4]+" "+mIdiJS(20));
							if (cual.elements[i].type!="hidden"){
								cual.elements[i].focus();
								cual.elements[i].select();
							}
							return false;
						}
						break;
					default:
						alert(mIdiJS(11)+" \""+tipo[2]+"\"");
						return false;
						break;
				}
			}
		}
	}
	return true;
}

// VALIDA 2 campos de claves, para ver que son iguales.
// -----------------------------------------------------------------------------------------------
function chekeaClaves(clave1, clave2) {
	var valor1,valor2; 
	valor1 = clave1.value; 
	valor2 = clave2.value;
	if (valor1 != valor2){
		alert(mIdiJS(17));
		return(false);
	}
	return (true);
}

// VALIDAMOS que el formato de archivo sea uno de los adecuados
// -----------------------------------------------------------------------------------------------
function validaArchivo(archivo){
	// Recogemos la extensiones permitidas en un array
	extensiones_permitidas = new Array(".jpg",".jpeg");
	// Recogemos la extensión del archivo
	extension = (archivo.substring(archivo.lastIndexOf("."))).toLowerCase();
	permitida = false;
	// Recorremos todas las extensiones admitidas y miramos si alguna coincide
	for (var i = 0; i < extensiones_permitidas.length; i++) {
		if (extensiones_permitidas[i] == extension) {
			permitida = true;
			break;
		}
	} 
	if (permitida) {
		return true;
	}else{
		return false;
	}
}


// COMPRUEBA el formato de los campos fecha en buscadores
// -----------------------------------------------------------------------------------------------
function chekeaBuscador(cual) {
	if (cual.elements){
		var i, valor;
		for (i=0; i<cual.elements.length; i++) {
			if (cual.elements[i].name != null) {
				// Comprobamos que no sea un campo oculto
				if (cual.elements[i].type != "hidden"){
				// Comprobamos el formato si es de tipo FECHA
					if (cual.elements[i].name.substr(0, 8) == "bsqFecha" || cual.elements[i].name == "bsqFechaInicio" || cual.elements[i].name == "bsqFechaFin") {
						valor = cual.elements[i].value;
						if (validaFecha(valor) != "ok" && valor != "") {
							alert(mIdiJS(13));
							cual.elements[i].focus();
							return false;
						}
					}
				}
			}
		}
	}
	return true;
}

// COMPRUEBA que una fecha sea correcta
//------------------------------------------------------------------------------------------------
function validaFecha(dato){
	var fecha, dia, mes, ano, aux, formato;

	dia 	= dato.substr(0, 2);
	mes 	= dato.substr(3, 2);
	ano 	= dato.substr(6, 4);

	aux		= "DD"+dato.substr(2, 1)+"MM"+dato.substr(5, 1)+"AAAA";
	formato	= "DD"+ sepFecha +"MM"+ sepFecha +"AAAA";	// formato de fecha y hora
	
//	comprobamos si el formato recibido es el correcto
	if(isNaN(dia+mes+ano)==false && aux==formato && dato.length==formato.length){
		fecha=new Date(ano, mes-1, dia);
		
		if(fecha.getDate() != dia){
			aux=mIdiJS(14);
		}else if(fecha.getMonth() != (mes-1)){
			 aux=mIdiJS(15);
		}else if(fecha.getFullYear() != ano){
			aux=mIdiJS(16);
		}else{
			aux="ok"; // la fecha es correcta
		}
	}else{
		aux="'"+dato+"'";
	}
	return aux;
}

// CONVIERTE una FECHA
// -----------------------------------------------------------------------------------------------
function convierteFecha(quien) {
	var fecha_split;	
	var tdia, tmes, tano;
	fecha_split = quien.split(sepFecha);
	tdia = parseInt(fecha_split[0],10);
	tmes = parseInt(fecha_split[1],10);
	tano = parseInt(fecha_split[2],10);
	return date = new Date(tano,tmes-1,tdia);
}

// VALIDA un email
// -----------------------------------------------------------------------------------------------
function esMail(texto){
    var valido = true;             
    var cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890@._-";
    var arroba = texto.indexOf("@", 0);
    if ((texto.lastIndexOf("@")) != arroba) arroba = -1;
    var punto = texto.lastIndexOf(".");
	var i;
    for (i=0 ;i<texto.length;i++){
		if (cadena.indexOf(texto.substr(i, 1),0) == -1){
			valido = false;
			break;
    	}
    }
	if ((arroba > 1) && (arroba + 1 < punto) && (punto + 1 < (texto.length)) && (valido == true) && (texto.indexOf("..",0) == -1)){
    	valido = true;
	}else{
		valido = false;
	}
    return valido;
}

// VALIDA un texto de tipo alfanumerico
// -----------------------------------------------------------------------------------------------

function esNumerico(texto){
    var valido 	= true; 
	var decimal	= false;
    var cadena = "1234567890";
	var i;
    for (i=0;i<texto.length;i++){

		caracter=texto.substr(i, 1);

		if(caracter==","){		// la "," es el símbolo decimal
			if(decimal==false){
				decimal=true;
			}else{
				valido=false;	// se encontro mas de una coma
				break;
			}
		}else{
			if (cadena.indexOf(caracter, 0) == -1){
				valido=false;
				break;
			}
		}
    }
    return valido;
}

// INICIA el editor de textos para textareas
// -----------------------------------------------------------------------------------------------
var txtModificado=false;	// indica si el texto del tiny editor se ha modificado
function iniciaEditor(btnMostrar, cssMostrar, hojaCss, direccionTxt){
	txtModificado = false;
	tinyMCE.init({
	mode : "textareas",		//dónde actuará
	editor_selector : "mceEditor",	//class="mceEditor" convierte un textarea en editor
	entity_encoding : "raw", //para que no sustituya tildes por &...
	theme : "plexus", 		//tipo
	language : "es",		//idioma
	docs_language : "es",	//idioma de la ayuda
	convert_newlines_to_brs : false,
	force_br_newlines : false,
	force_p_newlines : true,
//	popups_css : hojaCss,						//hoja de estilos que cogerán las pop-ups
	popups_css : "admin.js",
	//auto_resize : true,						//el editor se redimensiona para ocupar todo el espacio del q dispone (quita el scroll)
	theme_plexus_layout_manager: "SimpleLayout",//para redimensionar
	theme_plexus_statusbar_location :"bottom",	//para redimensionar
	theme_plexus_resizing : true,				//para redimensionar
	theme_plexus_resize_horizontal : false,		//para no redimensionar horizontalmente
	theme_plexus_path : false,					//no queremos path
	relative_urls : false,
	content_css : hojaCss,
	onchange_callback: "tinyOnChange",
	
	directionality: direccionTxt, // Dirección del texto, depende del idioma
	
	theme_plexus_styles : cssMostrar,	// estilos para el combo
	theme_plexus_buttons1 : btnMostrar, //botones activos
	
	//etiquetas válidas e inválidas
	valid_elements : "+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/b[class|style],-em/i[class|style],-strike[class|style],-u[class|style],+p[style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,-sub[style|class],-sup[style|class],-blockquote[dir|style],+table[summary|class|cellspacing|cellpadding],-table[border=0|width|height|align|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],-td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[style|dir|class|align],-h2[style|dir|class|align],-h3[style|dir|class|align],-h4[style|dir|class|align],-h5[style|dir|class|align],-h6[style|dir|class|align],hr[class|style],img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|alt|title|hspace|vspace|width|height|align]",
	//invalid_elements como referencia porque el script funciona con las que que son válidas
	invalid_elements : "-div[id|dir|class|align|style]"

	,relative_urls: false,
	remove_script_host : true

	
	});
}

// MODIFICA una variable global que nos indica si el texto del tiny editor ha sido modificado
// -----------------------------------------------------------------------------------------------
function tinyOnChange(inst){
	txtModificado = true;
}

