<!--
//Función que comprueba si una cadena está vacía
function stringEmpty(texto)
{
  var valida=false;

    for (pos=0; pos<texto.length; pos++)
	{
		if(texto.charAt(pos)!=' ')
		{
			valida =true;
			break;
		}
	}
   //Forma sencilla de hacerlo, pero que solo comprueba el primer caraVaciocter
  //if (texto!="" || texto.charAt(0)!=" ") valida=true;
 
 //Retorno true si el correcta y false si no es correcta
 return valida;
}

//Función que comprueba si una cadena tiene una longitud mínima
function stringDownLong(texto,longMin)
{
  var valida=false;
  //Sino se le pasa una longitud minima, es porque es 1
  if(longMin==null) longMin=0;

  if (texto.length<longMin) valida=true;

 //Retorno true si el correcta y false si no es correcta
 return valida;
}

//Función que comprueba si una cadena supera una longitud Máxima
function stringUpLong(texto,longMax)
{
  var valida=false;

  if (texto.length>longMax) valida=true;

 //Retorno true si el correcta y false si no es correcta
 return valida;
}

function numberIsMin(texto,numMin)
{
  var valida=false;
  
  if(numMin == null)  numMin = 0;

  if (texto>=numMin) valida=true;

 //Retorno true si el correcta y false si no es correcta
 return valida;
}

function numberIsMax(texto,numMax)
{
  var valida=false;
  
  if(numMax!=null)
  {
  	if (texto<=numMax) valida=true;
  }

 //Retorno true si el correcta y false si no es correcta
 return valida;
}

//Función que comprueba si hay caracteres válidos en una cadena
//por defecto comprueba los caracteres que no puede tener un email
function noValidCharSet(texto,posIni,arrChar,addChar)
{
	var bolValida = true
	var noValidos =" /\&:,;'%#$()=¡¿?!|{}[]^<>+*´`";
	
	//Sino se le pasa una posición inicial, es porque es 0
  	if(posIni==null) posIni=0;

	//Sino se dice lo contrario la cadena que contiene caracteres
	//no validos pasada como paremetrose se añade a la existente
  	if(addChar==null) addChar=true;
	
	if(arrChar!=null){
		if(addChar) noValidos = noValidos + arrChar;
		else noValidos = arrChar;
	}
	
	for (pos =posIni; pos<noValidos.length; pos++){
		carmal = noValidos.charAt(pos);

		if (texto.indexOf(carmal)!=-1){
			bolValida = false;
			break;
		}
	}
	
	return bolValida;
}

function inValidCharSet(str,charset)
{
	var result = true;
	
	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++){
		if (charset.indexOf(str.substr(i,1))<0){
			result = false;
			break;
		}
	}
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,'-0123456789');
}

function allDigitss(str,sepReal)
{
	return inValidCharSet(str,'-0123456789'+sepReal);
}

//Funcion que comprueba que palabras que no se pueden meter
function noValidWordSet(texto,sepWord,arrChar,addChar)
{
	var bolValida = true
	var noValidos ="select update delete create where from";
	
	//Sino se indica el separador de palabras, por defecto se toma el espacio
  	if(sepWord==null) sepWord=' ';
	
	//Sino se dice lo contrario la cadena que contiene caracteres
	//no validos pasada como paremetrose se añade a la existente
  	if(addChar==null) addChar=true;
	
	if(arrChar!=null){
		if(addChar) noValidos = noValidos + ' ' + arrChar;
		else noValidos = arrChar;
	}
	
	var noWord = noValidos.split(' ');
		
	for (var i=0;i<noWord.length;i++){
		if (texto.indexOf(noWord[i])>=0){
			bolValida = false;
			break;
		}
	}
	return bolValida;
}

//Función que comprueba que dos cadenas son iguales
function isDateSpain(date)
{
	var Valido=true;

	if ((date[0] < 1)||(date[0] > 31)) Valido=false;
		else if ((date[1] < 1)||(date[1] > 12)) Valido=false;
			else if ((date[2] < 1900)||(date[2] > 3000)) Valido=false;

	return Valido;
}

function isDateMysql(date)
{
	var Valido=true;
	
	if ((date[2] < 1)||(date[2] > 31)) Valido=false;
		else if ((date[1] < 01)||(date[1] > 12)) Valido=false;
			else if ((date[0] < 1900)||(date[0] > 3000)) Valido=false;

	return Valido;
}

function isDate(texto,sepDate,format)
{
	var Valido=true;
	
	if(sepDate==null) sepDate = '-';
	//if(format==null) format="dd"+sepDate+"mm"+sepDate+"aaaa";
	if(format==null) format="dd-mm-aaaa";
	
	
	var date = texto.split(sepDate);
	
	if(date.length!=3) Valido = false;
	else
	{
		switch (format)
		{
			//case "dd"+sepDate+"mm"+sepDate+"aaaa":
			case "dd-mm-aaaa":
				Valido = isDateSpain(date);
				break;
			//case "aaaa"+sepDate+"mm"+sepDate+"dd":
			case "aaaa-mm-dd":
				Valido = isDateMysql(date);
				break;
			default:
				Valido = false;
		}
	}
	return Valido;
}

function compareDate(fecha1,fecha2,operador)
{
	var Valido=false;
		
	switch (operador)
	{
		case ">":
			if (auxfec1>auxfec2) Valido = true;
			break;
		case "<":
			if (auxfec1<auxfec2) Valido = true;
			break;
		case ">=":
			if (auxfec1>=auxfec2) Valido = true;
			break;
		case "<=":
			if (auxfec1<=auxfec2) Valido = true;
			break;
		case "!=":
			if (auxfec1!=auxfec2) Valido = true;
			break;
		default:
			if (auxfec1==auxfec2) Valido = true;
			break;
	}
	return Valido;
}

function isTime(texto,sepTime)
{
	var Valido=true; 
	
	if(sepTime==null) sepTime = ':';
	
	var time = texto.split(sepTime);
	
	if ((time[0] < 0)||(time[0] > 23)) Valido=false;
		else if ((time[1] < 0)||(time[1] > 59)) Valido=false;
			else if ((time[2] < 0)||(time[2] > 59)) Valido=false;
			
	return Valido;
}

/****************************************************************************************************
**************************Funciones que llaman a los campos del formulario***************************
*****************************************************************************************************/
//Compruebo q una cadena es valida
function stringValid(field,name,longMin,longMax,isCharValid,arrChar,addChar)
{
	var valida=true;
	var texto=field.value;

	//Sino se indica el número minimo de caracteres, por defecto se considera 1
	if(longMin==null) longMin=0;
	
	//Sino se dice lo contrario la cadena que contiene caracteres
	//no validos pasada como paremetrose se añade a la existente
	if(addChar==null) addChar=true;
	
	//Sino se indica no se comprobara que el campo tenga caracteres no validos
	if(isCharValid==null) isCharValid=false;
	
	//Sino se dice lo contrario la cadena que contiene caracteres
	//no validos pasada como paremetrose se añade a la existente
	if(addChar===null) addChar=true;
  
	if (!stringEmpty(texto)) 
	{
		MsjError("Vacio",field,name);
		valida = false;
	}
	else if (stringDownLong(texto,longMin))
	{
		MsjError("DownLong",field,name,longMin);
		valida = false;
	}
	else if (longMax!=null)
	{
		if (stringUpLong(texto,longMax)) 
		{	
			MsjError("UpLong",field,name,longMax);
			valida = false;
		}
	}

	//Miramos si tenemos que comprobar que la cadena tiene caracteres validos
	if ((isCharValid) && (valida))
	{
		if (!noValidCharSet(texto,0,arrChar,addChar))
		{
			MsjError("NoValidChar",field,name);
			field.value='';
			valida = false;
		}
	}
	
	//Retorno true si el correcta y false si no es correcta
	return valida;
}

//Función que comprueba que dos cadenas son iguales
function isEqual(field1,field2,name1,name2)
{
  var valida=false;
  var texto1= new String(field1.value);
  var texto2=new String(field2.value);
  if (texto1.valueOf()!=texto2.valueOf())
  {
  	field1.value="";
	field2.value="";
	if (name2==null) name2=field2.name;
	MsjError("NoIgual",field1,name1,name2);
  }else valida=true;
 //Retorno true si el correcta y false si no es correcta
 return valida;
}

//Función que comprueba si el campo introducido es un numero entero
function isInteger(field,name,numMin,numMax)
{
	var Valido=true;
	var passedVal=field.value;
	
	//ponemos false porque es un numero entero y no un real
	
	if(!allDigits(passedVal))
	{
		MsjError("NoEntero",field,name);
		Valido=false; 				
	}
	else if(!numberIsMin(passedVal,numMin,false))
	{
		MsjError("NoNumMin",field,name,numMin);
		Valido=false; 
	}
	else if(!numberIsMax(passedVal,numMax))
	{
		MsjError("NoNumMax",field,name,numMax);
		Valido=false; 
	}
	
  	return Valido;
}

//Función que comprueba si el campo introducido es un numero real
function isReal(field,name,sepReal,numMin,numMax)
{
	var Valido=true;
	var passedVal=field.value;

	if(sepReal==null) sepReal=".";
	if(numMin==null) numMin=0;
	
	pospunto=passedVal.indexOf(sepReal)

	if((!allDigitss(passedVal,sepReal)) || (pospunto==0) || (pospunto==passedVal.length-1) ||
		(passedVal.indexOf(sepReal,pospunto+1)!=-1))
	{
		MsjError("NoReal",field,name,sepReal);
		Valido = false; 
	}
	else if(!numberIsMin(passedVal,numMin))
	{
		MsjError("NoNumMin",field,name,numMin);
		Valido=false; 
	}
	else if(!numberIsMax(passedVal,numMax))
	{
		MsjError("NoNumMax",field,name,numMax);
		Valido=false; 
	}
	
  	return Valido;
}

//El parametro format puede tomar los valores case "aaaa-mm-dd" y "dd-mm-aaaa"
function fieldDate(field,name,sepDate,format)
{
	var Valido=true;
	
	if (!isDate(field.value,sepDate,format))
	{
		MsjError("NoFecha",field,name,format);
		Valido=false;
	}

	return Valido;
}
/*
function compareFieldDate(field1,field2,name1,name2,operador)
{
	var Valido=true;
	
	auxfec1=Date.parse(field1.value);
	auxfec2=Date.parse(field2.value);
	
	alert(auxfec1);
	alert(auxfec2);
	
	if(operador==null) operador = '==';
	
	if (!compareDate(auxfec1,auxfec2,operador))
	{
		MsjError("FechaMenorque",field2,name1,name2);
		Valido=false;
	}
	return Valido;

}
*/
function compareFieldDate(field1,field2,name1,name2,operador,sepDate,format)
{
	var Valido=true;
	
	if(operador==null) operador = '==';
	if(sepDate==null) sepDate = '-';
	if(format==null) format="dd-mm-aaaa";
	//if(format==null) format="dd"+sepDate+"mm"+sepDate+"aaaa";
	
	var separador = "/";

	var date1 = field1.value.split(sepDate);
	var date2 = field2.value.split(sepDate);
	
	switch (format)
	{
		//case "dd"+sepDate+"mm"+sepDate+"aaaa":
		case "dd-mm-aaaa":
			auxfec1=Date.parse(date1[2]+separador+date1[1]+separador+date1[0]);
			auxfec2=Date.parse(date2[2]+separador+date2[1]+separador+date2[0]);
			break;
		//case "aaaa"+sepDate+"mm"+sepDate+"dd":
		case "aaaa-mm-dd":
			auxfec1=Date.parse(date1[0]+separador+date1[1]+separador+date1[2]);
			auxfec2=Date.parse(date2[0]+separador+date2[1]+separador+date2[2]);
			break;
		default:
			Valido = false;
	}
	
	if (!compareDate(auxfec1,auxfec2,operador))
	{
		MsjError("FechaMenorque",field2,name1,name2);
		Valido=false;
	}
	return Valido;

}

function fieldTime(field,name,sepTime)
{
	var Valido=true;
	
	if (!isTime(field.value,sepTime))
	{
		MsjError("NoTime",field,name);
		Valido=false;
	}
	return Valido;
}

function isDateTime(field,name,sepDate,formatDate,sepTime,sepDateTime)
{
	var Valido=true;

	if(sepDateTime==null) sepDateTime = ' ';
	
    var elemen = field.value.split(sepDateTime);
	
	if ((!isDateSpain(elemen[0],sepDate,formatDate)) || (!isTime(elemen[1],sepTime))) 
	{
			MsjError("NoFechaTime",field,name,formatDate +" hh:mm:ss");
			Valido=false;
	}
	return Valido;
}

//Funcion que comprueba q una cadena es valida
function isEmail(field,name)
{
  var email=field.value;
  var valido = true;
  
  if (!noValidCharSet(email))
  {
  	MsjError("NoValidChar",field,name);
	valido = false;
  }
  
  posarroba = email.indexOf("@")
  longfin=email.length-email.indexOf(".")
  if ((email.indexOf("@",posarroba+1)!=-1)|| (posarroba =0)||(email.indexOf(".",posarroba+1)==-1)||
  		(email.indexOf("@",1)==-1)||(posarroba>email.indexOf("."))||(longfin<3))
  {
  	 	MsjError("NoEmail",field,name);
 	 	valido = false;
  }
  return valido;
}
//-->
