function trim(objet)
{
	objet.value=Trim(objet.value);
}
function LTrim(s){
	var i=0;
	var j=0;
	for(i=0; i<=s.length; i++)
	{
		if(s.substring(i,i+1) != ' '){
			j=i;
			break;
		}
	}
	return s.substring(j, s.length);
}
function RTrim(s){
	var j=0;
	for(var i=s.length-1; i>-1; i--)
	{
		if(s.substring(i,i+1) != ' '){
			j=i;
			break;
		}
	}
	return s.substring(0, j+1);
}
function Trim(s){
	return LTrim(RTrim(s));
}
function vString(nombre,sValor,iLongitud,bObligatorio)
{
	var sError = "";
	if (!checkRequired(bObligatorio,sValor))
	{
		sError+="\tCampo requerido\n";
	}
	if (!checkLength(iLongitud,sValor))
	{
		sError+="\tError longitud\n";
	}
	if (sError !="") sError = nombre + "\n" + sError;
	return sError;
}
function vNumber(nombre,sValor,iLongitud,bObligatorio)
{
	var sError = "";
	if (!checkRequired(bObligatorio,sValor))
	{
		sError+="\tCampo requerido\n";
	}
	if (!checkChars(sValor))
	{
		sError+="\tError caracteres\n";
	}
	if (!checkLength(iLongitud,sValor))
	{
		sError+="\tError longitud\n";
	}
	if (sError !="") sError = nombre + "\n" + sError;
	return sError;
}
function vEmail(nombre,sValor,iLongitud,bObligatorio)
{
	var sError = "";
	if (!checkRequired(bObligatorio,sValor))
	{
		sError+="\tCampo requerido\n";
	}
	if (!checkEmail(sValor,bObligatorio))
	{
		sError+="\tEmail incorrecto\n";
	}
	if (!checkLength(iLongitud,sValor))
	{
		sError+="\tError longitud\n";
	}
	if (sError !="") sError = nombre + "\n" + sError;
	return sError;
}
function vDate(nombre,sValor,iLongitud,bObligatorio)
{
	var sError = "";
	var bOk= true;
	if (!checkRequired(bObligatorio,sValor))
	{
		sError+="\tCampo requerido\n";
		bOk = false;
	}
	if (!checkChars(sValor))
	{
		sError+="\tError caracteres\n";
		bOk = false;
	}
	if (!checkLength(iLongitud,sValor))
	{
		sError+="\tError longitud\n";
		bOk = false;
	}
	if (bOk)
	{
		if (!checkFormat(sValor))	{
			sError+="\tFormato erroneo\n";
		}
	}
	if (sError !="") sError = nombre + "\n" + sError;
	return sError;
}
function checkRequired(bObligatorio,sValor)
{
	if (!bObligatorio)
		return true;
	else
	{
		if (sValor == null)
			return false;
		else
		{
			if (Trim(sValor) == "")
				return false;
			else return true;	
		}
	}
} // fin de checRequired
	
function checkLength(iLongitud,sValor)
{
	if (sValor.length <= iLongitud)	return true;
	else	return false;
} // fin de checkLength

function checkChars(sValor)
{
	var sVal = "1234567890/-:,.";
	if (sValor != null){
		for (var i = 0; i < sValor.length; i++)
		{
			if (sVal.indexOf(sValor.charAt(i)) == -1)
				return false;
		}
		return true;
	}else return false;
} // fin de checkChars

function checkEmail(sValor,bObligatorio)
{
	var iPos;	//posicion de la arroba
	var iPosi;	//posicion del punto
	if (sValor == null || sValor.length == 0)
	{
		return checkRequired(bObligatorio,sValor);
	}
	//miramos q haya arroba
	if ((iPos = sValor.indexOf("@")) == -1)
		return false;
	else
	{
		// si la arroba esta al final
		if (iPos >= sValor.length)
			return false;
	}
	if ((iPosi = sValor.indexOf(".")) == -1)
		return false;
	else
	{
		// si el punto esta al final
		if (iPosi >= sValor.length)
			return false;
	}
	//Nuevos correos lo permiten
	/* si la arroba esta despues del punto
	if (iPos > iPosi)
		return false;
	else
		return true;
	*/
	return true;
} // fin de checkEmail

function checkFormat(sValor)
{
	if (sValor == null)
		return true;
	if (Trim(sValor) == "")
		return true;
	if (sValor.length < 10)
		return false;
	if (!ValidaFecha(sValor,"dd/mm/yyyy"))
	{
		return ValidaFecha(sValor,"yyyy/mm/dd");
	} 
	return true;
}
//Variables globales
var sDd;
var sMes;
var sYyyy;
function ValidaFecha(sFecha, sFormatoFecha)
{
  var i=0;
  var dia=0;
  var mes=0;
  var anyo=0;
  
  var tamanio = (sFormatoFecha.length-1)+1;
  while (i< tamanio)
  {
    if (sFormatoFecha.substring(i,i+2) == "dd")
    {
   	    dia= parseInt(sFecha.substring(i,i+2),10);
		sDd = dia;
		i=i+2;	

		if (i!=tamanio)
		{
			if (!((sFormatoFecha.substring(i,i+1) == "m")||(sFormatoFecha.substring(i,i+1) == "y")))
				i=i+1;
		}
   }
   else
   
   	if (sFormatoFecha.substring(i,i+2) == "mm")
   	{
   	
   		mes= parseInt(sFecha.substring(i,i+2),10);
		sMes=mes;
		i=i+2 ; 
		if (i!=tamanio)
		{
			if (!((sFormatoFecha.substring(i,i+1) == "d")||(sFormatoFecha.substring(i,i+1) == "y")))
				i=i+1;
		}	
     }
   
   else
      
   	if (sFormatoFecha.substring(i,i+4) == "yyyy")
	{
		anyo= parseInt(sFecha.substring(i,i+4),10);
		sYyyy=anyo;
    	i=i+4;
		if (i!=tamanio)
		{
			if (!((sFormatoFecha.substring(i,i+1) == "m")||(sFormatoFecha.substring(i,i+1) == "d")))
				i=i+1;	
		}
	
   	}
   else
  		if (sFormatoFecha.substring(i,i+2) == "yy") 
   		{
   			anyo= parseInt(sFecha.substring(i,i+2),10);
			sYyyy=anyo;
			i=i+2;
			if (anyo >=25)
			{
				anyo = 1900+anyo;
			}
			if (anyo < 25)
			{
				anyo = 2000+anyo;
			}

			if (i!=tamanio)	
			{	
				if (!((sFormatoFecha.substring(i,i+1) == "m")||(sFormatoFecha.substring(i,i+1) == "d")))
					i=i+1;
			}	
	   	}
  }
  return ValidarFecha(dia,mes,anyo);
 }
 
function ValidarFecha (dia,mes,ano)
{
	if ((ano < 1900) | (ano > 99999))
		return false;
			
	if ((mes < 1) | (mes > 12))
		return false;
		
	if ((mes == 4) | (mes == 6) | (mes == 9) | (mes == 11))	
	{
		if ((dia < 1) | (dia > 30))
			return false;
	}
	else
	{
		if (mes == 2)
		{
			if ((EsBisiesto(ano) == true) & ((dia > 29) | (dia < 1)))
				return false;
			if ((EsBisiesto(ano) == false) & ((dia > 28) | (dia < 1)))	
				return false;
		}
		else
		{
			if ((dia < 1) | (dia > 31))
				return false;
		}
	}
	return true;
}
function cFechaFormat(sFec)
{
	var sFecha = "";
	if (sFec != "")
	{
		if (sFec != "" && !ValidaFecha(sFec,"dd/mm/yyyy"))
		{
			if (!ValidaFecha(sFec,"yyyy/mm/dd"))	return sFecha;
			else	sFecha = sFec.replace('/','-');
		}else
		{
			sFecha = getFormatDate(sFec.replace('-','/'));
		}
	}
	return sFecha;
}
function getFormatDate(sFecha)
{
	sFec="";
	sFec+=sFecha.substring(sFecha.lastIndexOf("/")+1,sFecha.lastIndexOf("/")+5);//AŅO
	sFec+="-";
	sFec+=sFecha.substring(sFecha.indexOf("/")+1,sFecha.lastIndexOf("/"));//MES
	sFec+="-";
	sFec+=sFecha.substring(0,sFecha.indexOf("/"));//DIA
	return sFec;
}
function formatThisDate(sFecha,character)
{
	sFec="";
	if (character==null || character == "")
	{ character="/";}
	if (sFecha != "" && sFecha != "0000-00-00")
	{
		sFec+=sFecha.substring(sFecha.lastIndexOf("-")+1,sFecha.lastIndexOf("-")+3);//DIA		
		sFec+=character;
		sFec+=sFecha.substring(sFecha.indexOf("-")+1,sFecha.lastIndexOf("-"));//MES
		sFec+=character;
		sFec+=sFecha.substring(0,sFecha.indexOf("-"));//AŅO
	}
	return sFec;
}
function EsBisiesto(ano){
 	
 	if ((ano % 4) == 0){return true;}
 	else 
 		if (((ano % 100) == 0) && ((ano % 400) == 0)) {return true;}
      	else { return false;}	
}
function toJSDate(fecha,sFormatoFecha)
{
	ValidaFecha(fecha,sFormatoFecha);
	dia=sDd;//DIA
	mes=sMes;//MES
	anio=sYyyy;//AŅO
	return new Date(anio,mes-1,dia);
}
function redondeo(num, decimales) {
    var resul;
    if (navigator.appName == "Microsoft Internet Explorer")
    {
        var numObj = new Number(num);
        resul = numObj.toFixed(decimales);
    }
    else // if (navigator.appName == "Netscape")
    {
        var casi = 1 + (0.5 / (Math.pow(10,  decimales)));
        var str = ((num - 1) + casi) + "";
        resul = str.substring(0, str.indexOf('.') + decimales + 1);
    }
    return resul;
}

function vNif(nombre,sValor,iLongitud,bObligatorio)
{
	var sError = "";
	if (!checkRequired(bObligatorio,sValor))
	{
		sError+="\tCampo requerido\n";
	}
	if (!validarNIF(sValor,bObligatorio))
	{
		sError+="\tNif incorrecto\n";
	}
	if (!checkLength(iLongitud,sValor))
	{
		sError+="\tError longitud\n";
	}
	if (sError !="") sError = nombre + "\n" + sError;
	return sError;
}
function vCif(nombre,sValor,iLongitud,bObligatorio)
{
	var sError = "";
	if (!checkRequired(bObligatorio,sValor))
	{
		sError+="\tCampo requerido\n";
	}
	if (!validarCIF(sValor,bObligatorio))
	{
		sError+="\tCif incorrecto\n";
	}
	if (!checkLength(iLongitud,sValor))
	{
		sError+="\tError longitud\n";
	}
	if (sError !="") sError = nombre + "\n" + sError;
	return sError;
}

function validarNIF(NIF,bObligatorio)
{
	if (NIF == null || NIF.length == 0)
	{
		return checkRequired(bObligatorio,NIF);
	}
   	var cadena ="TRWAGMYFPDXBNJZSQVHLCKE";
	NIF=NIF.toUpperCase();
	var longitud=NIF.length;
	if (longitud > 9)
		return false;
	longitud=longitud-1;
	var a="";
	a=cadena.substring(NIF.substring(0,NIF.length - 1) %  23,NIF.substring(0,NIF.length - 1) % 23+1);
	var dni="";
	dni=NIF.substring(0,longitud);
	if (!(esDigito(NIF.charAt(longitud)))&&(NIF.charAt(longitud-1)!=" ")&&(NIF.charAt(0)!=" ")){
		if (NIF.charAt(longitud)==a){
			return true;
		}else{
			return false;
		}
	}else{
		return false;
	}
}
function esDigito(c)
{
   return ((c >= "0") && (c <= "9"))
}

function validarCIF(CIF,bObligatorio)
{
	if (CIF == null || CIF.length == 0)
	{
		return checkRequired(bObligatorio,CIF);
	}
	var retorno=true;
	var ultimaL;
	ultimaL=CIF.substring(CIF.length - 1,CIF.length);

	var arrayCif = new Array();
		arrayCif[0] = "J"; arrayCif[1] = "A"; arrayCif[2] = "B"; arrayCif[3] = "C"; arrayCif[4] = "D";
		arrayCif[5] = "E"; arrayCif[6] = "F"; arrayCif[7] = "G"; arrayCif[8] = "H"; arrayCif[9] = "I";

		var cadenaCIF= new String(CIF);
		var primera=CIF.charAt(0);
		var ultima;
		if(!esDigito(primera)){
			if (cadenaCIF.length < 8){
				return false;
			}
			primera=primera.toUpperCase();
			var subcadenaCIF=new String();
			subcadenaCIF=cadenaCIF.substring(1,8);
			for (i = 0; i < subcadenaCIF.length; i++){
        		var c = subcadenaCIF.charAt(i);
        		if (!esDigito(c)){
					return false;
        		}	
    		}
			var j=0;
			var i;
			var digito, division, modulo, suma=0;
			for(i=1;i<8;i++){
				digito=subcadenaCIF.substring(j,i);
				digito = parseInt(digito,10);
				if((i+1)%2==0){ //es par
					digito=digito*2;
					while(digito>=10){
						division=parseInt(digito/10,10);
						modulo=digito%10;
						digito=division+modulo;
					}
				 	suma=suma+digito;
				}else{ //es impar
					suma=suma+digito;
				}
				j++;
			}
			digito=suma;
			suma=parseFloat(suma/10);
			digito=(((Math.ceil(suma)) * 10) - digito);
			if(primera==("P") || primera==("Q") || primera==("S")){
				ultima=arrayCif[digito];
				if (ultimaL==ultima){
					retorno=true
				}else{
					retorno=false;
				}
			}else{
			if (ultimaL==digito){
					retorno=true
				}else{
					retorno=false;
				}
			}
		}else{
			retorno=false;
		}
	return retorno;
}
