// JavaScript Document
function ir(pPagina)
{
	document.location = pPagina;
}

function borrarListBox(lista)
{
	for (i = lista.options.length;i > 0;i--)
		 lista.options[0] = null;
}

function anadirOpt(lista, nombre, valor, estado)
{
	var optionName = new Option(nombre,valor,estado,estado)
  var length = lista.options.length;
  lista.options[length] = optionName;
}

function quitarOpt(lista, id)
{
	lista.options[id] = null;
}

var MINCAR = 4;
var CODNOT_MAXCAR = 8;
var textoInicioFrase = 'Se han detectado los siguientes errores:\n\n';
var textoFinalFrase = '\nPor favor, corrija los errores indicados para continuar.'
var textoCampo = '- El campo "';
var textoObligatorio = '- El campo "#nombre#" es obligatorio.\n';
var textoIncorrecto = '- El campo "#nombre#" es incorrecto.\n';
var txtCampoValor = '- Debe seleccionar un valor en el campo "#nombre#".\n';
var txtCampoValorNuevo = '- Debe indicar el nuevo valor para el campo "#nombre#".\n';
var txtCampoValorNuevoKO = '- El nuevo código indicado para el campo "#nombre#" ya existe.\n';
var txtIdioma = "- Como mínimo debe indicar la descripción en #idioma#.\n";
var txtCheck = "- Debe indicar almenos un elemento a borrar.\n";
var txtCheckCanvi = "- Debe seleccionar los elementos a los que quieres canviar el estado.\n";
var txtCheckExp = "- Debe seleccionar los elementos a exportar.\n";
var txtCheckVal = "- Debe seleccionar almenos un valor para el campo #nombre#.\n";
var txtPasswordMin = "- El password debe tener como mínimo #NUMCAR# caracteres.\n";
var txtPasswordIgual = "- El password y su confirmación deben coincidir.\n";
var txtFecha = "- El formato de la fecha es incorrecto.\n";
var txtNotaObligatoria = "- Debe complimentar correctamente la información de la nota.\n"
var txtCodNotIncorrecta = "- El código de nota indicado no es correcto.\n"
var txtCodNotMAXLEN = "- El código de nota indicado es demasiado largo (longitud máxima: #MAXCAR# caracteres).\n"
var txtContexto = "- El campo contexto debe contener dos \"*\" marcando la posición del neologismo.\n"; 
var txtFichero = "El fichero debe tener extensión .jpg o .jpeg\n";
//nombreForm: nom del formulari
//nombreCampo: nom del camp
//txtCampo: text del camp (el text que es mostra en cas d'error)
//tipo: E:Email, S:Select, T:text, P:password, N:numero, CK: checkboxs; D: Fecha; 
//CKV: checkboxs valor; CN: nota; CO: Contexto; ST:Select+texto
//opciones: R:Obligatori
//return: true:form ok; false: form ko
function validarForm() 
{ 
	var resultat;
	var args = validarForm.arguments;
	var obligatori=false
	if (((args.length-1) % 4)!=0) resultat = false;
	else
	{
		var i=1;
		var error = "";
		var val;
		var obj = "";
		while(i<args.length)
		{
			var obligatori = (args[i+3].indexOf('R')!=-1);			

			if ((args[i+2] != "CN")&&(args[i+2] != "S")&&(args[i+2] != "ST")&&(args[i+2] != "STC")&&(args[i+2] != "STC2")&&(args[i+2] != "D")&&(args[i+2] != "CK")&&(args[i+2] != "CKV")&&(args[i+2] != "CKC")&&(args[i+2] != "CKE")&&(args[i+2] != "P"))
				val = eval('document.' + args[0] + '.' + args[i] + '.value');
			res = 0;
			if ((args[i+2] == "T") && obligatori) error += comprovarText(val,args[i+1]);
			if (args[i+2] == "I") error += comprovarIdioma(val,args[i+1]);
			if (args[i+2] == "P") error += comprovarPassword(args[0],args[i],args[i+1]);
			if (args[i+2] == "N") error += comprovarNumero(val,args[i+1],obligatori);
			if (args[i+2] == "E") error += comprovarEmail(val,args[i+1],obligatori);
			if (args[i+2] == "S") error += comprovarSelect(args[0],args[i],args[i+1],args[i+3]);
			if (args[i+2] == "ST") error += comprovarSelectText(args[0],args[i],args[i+1],args[i+3]);
			if (args[i+2] == "STC") error += comprovarSelectTextCod(args[0],args[i],args[i+1],args[i+3]);
			if (args[i+2] == "STC2") error += comprovarSelectTextCod2(args[0],args[i],args[i+1],args[i+3]);
			if (args[i+2] == "CK") error += comprovarCheck(args[0],args[i], txtCheck);
			if (args[i+2] == "CKC") error += comprovarCheck(args[0],args[i], txtCheckCanvi);
			if (args[i+2] == "CKE") error += comprovarCheck(args[0],args[i], txtCheckExp);
			if (args[i+2] == "CKV") error += comprovarValCheck(args[0],args[i],args[i+1]);
			if (args[i+2] == "D") error += comprovarFecha(args[0],args[i],args[i+1],args[i+3]);
			if (args[i+2] == "CN") error += comprovarNota(args[0],args[i],args[i+3]);
			if ((args[i+2] == "CO") && obligatori) error += comprovarContexto(val,args[i+1]);
			if (args[i+2] == "F") error += comprovarExtension(val,args[i],args[i+1],obligatori);
			
			i=i+4;
		}
		if(error!="")
		{
		 alert(textoInicioFrase
			+ error
			+ textoFinalFrase);
		}
		resultat = (error=="");
	}
	return resultat;
}

function comprovarEmail(pEmail, ptextoCampo, pObligatori)
{
	var error = "";
	if ((pEmail =="") && (pObligatori))
		return(textoObligatorio.replace("#nombre#", ptextoCampo));
	if (pEmail !="")
	{ 
  var arroba = pEmail.indexOf('@');
  var punt = pEmail.indexOf('.',arroba);
  if ((arroba<1) || (punt<1) || (arroba==(pEmail.length-1)) || (punt==(pEmail.length-1)) || (punt<arroba))
		return(textoIncorrecto.replace("#nombre#", ptextoCampo));	
	}	
	return error;
}

function comprovarNumero(pNumero,ptextoCampo, pObligatori)
{
	var error="";
	if ((pNumero == "") && pObligatori) return(textoObligatorio.replace("#nombre#", ptextoCampo));
	if (pNumero != "")
	{
		if (isNaN(pNumero)) return(textoIncorrecto.replace("#nombre#", ptextoCampo));	
	}
	return error;
}

function comprovarText(pText, ptextoCampo)
{
	if (pText == "")  return(textoObligatorio.replace("#nombre#", ptextoCampo));
	else	return "";
}

function comprovarContexto(pText, ptextoCampo)
{
	if (pText == "")  return(textoObligatorio.replace("#nombre#", ptextoCampo));
	else
	{
		var posIni = pText.indexOf("*");
		if(posIni==-1) return (txtContexto);
		var posFin = pText.indexOf("*", posIni+1);
		if(posFin==-1) return (txtContexto);
		if(posIni==posFin-1) return (txtContexto);
	}
	return "";
}

function comprovarIdioma(pText, ptextoCampo)
{
	if (pText == "")  return (txtIdioma.replace("#idioma#", ptextoCampo));
	else	return "";
}

function comprovarPassword(pNomForm, pCampos, ptextoCampo)
{
	var arrayCampos = pCampos.split("¦");
	var campo1 =  eval('document.' + pNomForm + '.' + arrayCampos[0] + ".value");
	var campo2 =  eval('document.' + pNomForm + '.' + arrayCampos[1] + ".value");
	
	if(campo1 != campo2)
		return txtPasswordIgual;

	if (campo1 == "")  return(textoObligatorio.replace("#nombre#", ptextoCampo));
	else 
	{
		if (campo1.length<MINCAR) return(txtPasswordMin.replace("#NUMCAR#", MINCAR));
		else return "";
	}
}

function comprovarNota(pNomForm, pCampos, pValores)
{
	var arrayCampos = pCampos.split(",");
	var codNota =  eval('document.' + pNomForm + '.' + arrayCampos[0] + ".value");
	var nota =  eval('document.' + pNomForm + '.' + arrayCampos[1] + ".value");
	
	if (((nota!="")&&(codNota=="")) ||((nota=="")&&(codNota!="")))
		return(txtNotaObligatoria);

	if(codNota!="")
	{
		if(codNota.length>CODNOT_MAXCAR)
			return txtCodNotMAXLEN.replace("#MAXCAR#", CODNOT_MAXCAR);
		var arrayValores = pValores.split("/");
		var arrayCodigos = codNota.split("/");
		var i,j;
		var encontrado;
		for(i=0;i<arrayCodigos.length;i++)
		{
			encontrado = false;
			for(j=0;(!encontrado) && (j<arrayValores.length);j++)
				encontrado = (arrayValores[j]==arrayCodigos[i]);
			if(!encontrado) return txtCodNotIncorrecta;
		}
		
	
	}
	return "";
}

function comprovarSelect(pNomForm,pNomCamp,ptextoCampo,pValorDef)
{
 	var campo = eval('document.' + pNomForm + '.' + pNomCamp);
 	var pos = campo.selectedIndex;
 	if(pos<0) 
 		return (txtCampoValor.replace("#nombre#", ptextoCampo));
 	if(campo.options[pos].value==pValorDef)
 		return (txtCampoValor.replace("#nombre#", ptextoCampo));
	else
	 return "";
}

function comprovarSelectText(pNomForm,pNomCamp,ptextoCampo,pValorDef)
{
 	var campo = eval('document.' + pNomForm + '.' + pNomCamp + 'id');
 	var pos = campo.selectedIndex;
 	var valoresDef = pValorDef.split(",");
 	if(pos<0) 
 		return (txtCampoValor.replace("#nombre#", ptextoCampo));
 	if ((valoresDef[0]=="R") && (campo.options[pos].value==valoresDef[1]))
 		return (txtCampoValor.replace("#nombre#", ptextoCampo));
 	var i;
 	var encontrado = false;
 	for(i=2;(!encontrado) &&(i<valoresDef.length);i++)
 		encontrado = (campo.options[pos].value==valoresDef[i]);

	if (encontrado)
	{
		campo = eval('document.' + pNomForm + '.' + pNomCamp + 'texto');
		if(campo.value=="")
			return (txtCampoValorNuevo.replace("#nombre#", ptextoCampo));
	} 
 return "";
}

function comprovarSelectTextCod(pNomForm,pNomCamp,ptextoCampo,pValorDef)
{
 	var campo = eval('document.' + pNomForm + '.' + pNomCamp + 'id');
 	var pos = campo.selectedIndex;
 	var valoresDef = pValorDef.split(",");
 	if(pos<0) 
 		return (txtCampoValor.replace("#nombre#", ptextoCampo));
 	if ((valoresDef[0]=="R") && (campo.options[pos].value==valoresDef[1]))
 		return (txtCampoValor.replace("#nombre#", ptextoCampo));
 	var i;
 	var encontrado = false;
 	for(i=2;(!encontrado) &&(i<valoresDef.length);i++)
 		encontrado = (campo.options[pos].value==valoresDef[i]);

	if (encontrado)
	{
		campo = eval('document.' + pNomForm + '.' + pNomCamp + 'idObNeo');
		if(campo.value=="")
			return (txtCampoValorNuevo.replace("#nombre#", ptextoCampo));
		campo = eval('document.' + pNomForm + '.' + pNomCamp + 'texto');
		if(campo.value=="")
			return (txtCampoValorNuevo.replace("#nombre#", ptextoCampo));
	} 
 return "";
}

function comprovarSelectTextCod2(pNomForm,pNomCamp,ptextoCampo,pValorDef)
{
 	var campo = eval('document.' + pNomForm + '.' + pNomCamp + 'id');
 	var pos = campo.selectedIndex;
 	var valoresDef = pValorDef.split(",");
 	if(pos<0) 
 		return (txtCampoValor.replace("#nombre#", ptextoCampo));
 	if ((valoresDef[0]=="R") && (campo.options[pos].value==valoresDef[1]))
 		return (txtCampoValor.replace("#nombre#", ptextoCampo));
 	var i;
 	var encontrado = false;
 	for(i=2;(!encontrado) &&(i<valoresDef.length);i++)
 		encontrado = (campo.options[pos].value==valoresDef[i]);

	if (encontrado)
	{
		campoIdObNeo = eval('document.' + pNomForm + '.' + pNomCamp + 'idObNeo');
		if(campoIdObNeo.value=="")
			return (txtCampoValorNuevo.replace("#nombre#", ptextoCampo));
		//buscamos si el código ya existe
		encontrado=false;
	 	for(i=2;(!encontrado) &&(i<campo.options.length);i++)
	 		encontrado = (campo.options[i].text.indexOf(campoIdObNeo.value + " - ")==0);
		if(encontrado)			
			return (txtCampoValorNuevoKO.replace("#nombre#", ptextoCampo));

		campo = eval('document.' + pNomForm + '.' + pNomCamp + 'texto');
		if(campo.value=="")
			return (txtCampoValorNuevo.replace("#nombre#", ptextoCampo));
		
	} 
 return "";
}


function comprovarCheck(pNomForm, pNomCamp, pMensaje)
{
	var i;
	var estado = false;
	var formulario = eval("document." + pNomForm);
	for(i=0; (!estado) && (i<formulario.elements.length);i++)
	{
	 if(formulario.elements[i].name==pNomCamp)
	 {
	 	estado = formulario.elements[i].checked;
	 }
	}
		
	if(!estado)
		return pMensaje;
	else
		return "";
}

function comprovarValCheck(pNomForm, pNomCamp, pTextoCampo)
{
	var i;
	var estado = false;
	var formulario = eval("document." + pNomForm);
	for(i=0; (!estado) && (i<formulario.elements.length);i++)
	{
	 if(formulario.elements[i].name==pNomCamp)
	 {
	 	estado = formulario.elements[i].checked;
	 }
	}
	if(!estado)
		return txtCheckVal.replace("#nombre#", pTextoCampo);
	else
		return "";
}

function comprovarExtension(pFichero, pCampoFichero, ptextoCampo, pObligatori)
{
	var error="";
	if ((pFichero == "") && pObligatori) 
		return(textoObligatorio.replace("#nombre#",ptextoCampo));

	if (pFichero != "")
	{
		var fAux = pFichero.toLowerCase();
		var pos= fAux.lastIndexOf (".jpg");
		if(pos!=fAux.length-4)
		{
			var pos= fAux.lastIndexOf (".jpeg");
			if(pos!=fAux.length-5)
				return(txtFichero);	
		}
	}
	return error;
}

function comprovarFecha(pNomForm, pCampo, ptextoCampo, pObligatorio)
{
	var campo = eval('document.' + pNomForm + '.' + pCampo);

	if((pObligatorio.indexOf('R')!=-1)&& (campo.value==""))
		return (textoObligatorio.replace("#nombre#", ptextoCampo));

	if(campo.value!="")
	{
		var arrayFecha = campo.value.split("/");
		var textocampos = ptextoCampo;
	
		if(((pObligatorio.indexOf('R')!=-1)&&arrayFecha.length!=3))
			return (textoIncorrecto.replace("#nombre#", ptextoCampo));
		var campoDia = arrayFecha[0];
		var campoMes = arrayFecha[1];
		var campoAnyo = arrayFecha[2];

		if(campoDia.length!=2) return (textoIncorrecto.replace("#nombre#", ptextoCampo));
		if(campoMes.length!=2) return (textoIncorrecto.replace("#nombre#", ptextoCampo));
		if(campoAnyo.length!=4) return (textoIncorrecto.replace("#nombre#", ptextoCampo));
		var dia = -1;
		if(isNaN(campoDia)) return (textoIncorrecto.replace("#nombre#", ptextoCampo));
		else dia = parseInt(campoDia);
		if(isNaN(campoMes)) return (textoIncorrecto.replace("#nombre#", ptextoCampo));
		else mes = parseInt(campoMes)-1;
		if(isNaN(campoAnyo)) return (textoIncorrecto.replace("#nombre#", ptextoCampo));
		else anyo = parseInt(campoAnyo);
		
		var numDias = diasMes(mes, anyo)
		if(dia>numDias)
		 return (textoIncorrecto.replace("#nombre#", ptextoCampo));
	}
	return "";
}

function esBisiesto(pAnyo) { 
return (((pAnyo % 4 == 0) && (pAnyo % 100 != 0)) || (pAnyo % 400 == 0)) ? 1 : 0;
}

function diasMes(pMes, pAnyo)
{
	if (pMes==1)
	{
	 if (!esBisiesto(pAnyo)) return 28;
	 else return 29;
	}
	else
	{
		if ((pMes==0) || (pMes==2) || (pMes==4) || (pMes==6) || (pMes==7) || (pMes==9) || (pMes==11)) return 31
		else return 30;
	}
}
