<!--
//--------------------------------------------------------------------------------
//Funcions "Mascara" per a entrar dades en format de
//data i hora, i funcions per a validar aquestes dades.
//També una funció per entrar números.
// (Autor: Carlos Martínez Feliu).
//--------------------------------------------------------------------------------

//--------------------------------------------------
//	Mascara per escriure dates
//	Només permet dígits i '/'.
//  Invocar desde 'onKeyPress'.
//--------------------------------------------------
function Mascara_Data(oText){
var iNumero;
var sData = oText.value.split("/"); //0:Dia  1:Mes  2:Any					

  //Tractament de la longitud
  if(oText.value.length>=10) window.event.keyCode=0;
  else{
	//Caràcters no permesos
	if((window.event.keyCode<47)||(window.event.keyCode>57))
		window.event.keyCode=0;
	else{
		//Barra
		if(window.event.keyCode==47){
			if((oText.value.length!=1)&&(oText.value.length!=2)&&
			   (oText.value.length!=4)&&(oText.value.length!=5))
					window.event.keyCode=0;
			else{
				//Tractament d'un sol dígit.  Ex.: '3/' -> '03/'
				if(oText.value.length==1) 
					if(sData[0]==0) window.event.keyCode=0;
					else oText.value="0"+oText.value;
				else if(oText.value.length==4)
					if(sData[1]==0) window.event.keyCode=0;
					else oText.value=sData[0]+"/0"+sData[1];
			}
		}
		//Número
		else{ 
			//Barra automàtica
			if((oText.value.length==2)||(oText.value.length==5))
					oText.value=oText.value + "/";
			//Tractament de números
			iNumero=window.event.keyCode-48;
			switch (oText.value.length){
				case 0:  //Posició: 0 (Primer dígit de dia)
					if(iNumero>3) oText.value="0"+oText.value;		  //Ex.: '5' -> '05'
					break;
				case 1:  //Posició: 1 (Segon dígit de dia)
					if((sData[0]==0)&&(iNumero==0)) 
						window.event.keyCode=0;
					else if((sData[0]==3)&&(iNumero>1))
						oText.value="0"+sData[0]+"/0";    //Ex.: '35'->'03/05'
					break;
				case 3:  //Posició: 3 (Primer dígit de mes)
					if(iNumero>1){ 
						//Restricció mesos per nº de dies (*)
						if((sData[0]==31)&&((iNumero==2)||(iNumero==4)||
						   (iNumero==6)||(iNumero==9)))
								window.event.keyCode=0; 
						//Restricció mesos per nº de dies (*) 
						else if((sData[0]==30)&&(iNumero==2))
								window.event.keyCode=0;
						else oText.value=sData[0]+"/0";   //Ex.:'14/5'->'14/05'
					}
					break;
				case 4:  //Posició: 4 (Segon dígit de mes)
					if((sData[1]==0)&&(iNumero==0)) 
						window.event.keyCode=0;
					else if((sData[1]==1)&&(iNumero>2))
						window.event.keyCode=0; 
					//Restricció mesos per nº de dies (*)
					else{
						if((sData[0]==31)&&(sData[1]==0)&&((iNumero==2)||
						   (iNumero==4)||(iNumero==6)||(iNumero==9)))
								window.event.keyCode=0;
						else if((sData[0]==31)&&(sData[1]==1)&&(iNumero==1))
								window.event.keyCode=0;
						else if((sData[0]==30)&&(sData[1]==0)&&(iNumero==2))
								window.event.keyCode=0;
					}
					break;
				case 6:  //Posició:6 (Primer dígit d'any)
					if((iNumero==0)||((iNumero>2)&&(iNumero<6)))  //20**
						oText.value=sData[0]+"/"+sData[1]+"/20";
					else if(iNumero>=6)						      //19**
						oText.value=sData[0]+"/"+sData[1]+"/19";
					break;
				case 7:  //Posició: 7 (Segon dígit d'any)
					if((sData[2]==1)&&(iNumero<9)) window.event.keyCode=0;
					break;
				//Restricció d'anys de traspàs (*)
				case 9:  //Posició: 9 (Quart dígit d'any)
					if((sData[0]==29)&&(sData[1]==2)&&
				       (!Traspas(sData[2]+iNumero))) window.event.keyCode=0;
					break;
				default:
			}
		}
		
	}
  }
}


//--------------------------------------------------
//	Funció que canvia el color del texte depenent
//	de si té o no un format de data correcte.
//  Invocar desde 'onBlur'.
//--------------------------------------------------
function Sortir_Data(oText,ColorCorrecte,ColorErroni){

	if(Validar_Data(oText.value)){ oText.style.color=ColorCorrecte; return(true); }
	else{ oText.style.color=ColorErroni; return(false); }
}


//--------------------------------------------------
//	Mascara per comprovar que una data és correcte.
//	Només permet dígits i '/'.
//--------------------------------------------------
function Validar_Data(sData){
var bTraspas;

	sData = sData.split("/"); //0:Dia  1:Mes  2:Any
	//Comprovació del nombre de camps
	if(sData.length!=3) return(false); 
	else{ 
		//Comprovació de la longitud dels camps
		if((sData[0].length!=2)||(sData[1].length!=2)||(sData[2].length!=4)) 
						return(false);
		//Tractament d'any
		if((sData[2]<1900)||(sData[2]>2100)) return(false); 
		else{ 
			//Tractament de mes(amb 31 dies)
			if((sData[1]==1)||(sData[1]==3)||(sData[1]==5)||(sData[1]==7)||
			   (sData[1]==8)||(sData[1]==10)||(sData[1]==12)){
					if((sData[0]<1)||(sData[0]> 31)) return(false);
			} 
			//Tractament de mes (amb 30	dies) 
			else if((sData[1]==4)||(sData[1]==6)||(sData[1]==9)||(sData[1]==11)){
					if((sData[0]<1)||(sData[0]>30)) return(false);
			}
			//Tractament de Febrer (28 o 29 dies)
			else if(sData[1]==2){
					bTraspas=Traspas(sData[2]);
					if((bTraspas)&&((sData[0]<1)||(sData[0]>29))) 
							return(false);
					else if((!bTraspas)&&((sData[0]<1)||(sData[0]>28))) 
							return(false);
			}
		}
	}
	return(true);
}

//--------------------------------------------------
//	Funció que donada una data en format incorrecte
//	la transforma correctament.
//--------------------------------------------------
function Transformar_Data(sData){
var iDia;
var iMes;
var iAny;
	
	sData = sData.split("/"); //0:Dia  1:Mes  2:Any
	//Comprovació del nombre de camps
	if(sData.length!=3) return "";
	else{ 
		//Tractament de dia
		if(sData[0].length==1) iDia="0" + sData[0];
		else iDia=sData[0];
		
		//Tractament de mes
		if(sData[1].length==1) iMes="0" + sData[1];
		else iMes=sData[1];
		
		//Tractament d'any
		if(sData[2].length==2){
			if(sData[2][0]>=6) iAny="19" + sData[2];
			else iAny="20" + sData[2];
		}
		else iAny=sData[2];
	}
	return(iDia + "/" + iMes + "/" + iAny);
}

//--------------------------------------------------
//	Mascara per saber si un any és de traspàs.
//	Només permet un enter de fins a 4 dígits.
//--------------------------------------------------
function Traspas(iAny){
	if((iAny % 4)==0){
			if((iAny % 100)==0){
					if((iAny % 400)==0) return(true);
					else return(false);
			}
			else return(true);
    }
	else return(false);
}


//--------------------------------------------------
//	Mascara per escriure hores
//	Només permet dígits i ':'.
//  Invocar desde 'onKeyPress'.
//--------------------------------------------------
function Mascara_Hora(oText){
var iNumero;
var sHora = oText.value.split(":"); //0:Hora  1:Minut

  //Tractament de la longitud
  if(oText.value.length>=5) window.event.keyCode=0;
  else{
	//Caràcters no permesos
	if((window.event.keyCode<48)||(window.event.keyCode>58))
		window.event.keyCode=0;
	else{
		//Punts
		if(window.event.keyCode==58){
			if(oText.value.length==0) 
					oText.value="00"+oText.value;     //Ex.: ':' -> '00:'
			else if(oText.value.length==1) 
					oText.value="0"+oText.value;      //Ex.: '3:' -> '03:'
			else if(oText.value.length>2) window.event.keyCode=0;
		}
		//Número
		else{
			//Punts automàtics
			if(oText.value.length==2) oText.value=oText.value + ":";
			//Tractament de números
			iNumero=window.event.keyCode-48;
			switch(oText.value.length){
				case 0:  //Posició: 0 (Primer dígit d'hora)
					if(iNumero>2) oText.value="0";		  //Ex.: '5' -> '05'
					break;
				case 1:  //Posició: 1 (Segon dígit d'hora)
					if((sHora[0]==2)&&(iNumero>3)&&(iNumero<=5))
						oText.value="0"+sHora[0]+":";    //Ex.: '35'->'03:5'
					else if((sHora[0]==2)&&(iNumero>5))
						oText.value="0"+sHora[0]+":0";   //Ex.: '37'->'03:07'
					break;
				case 3:  //Posició: 3 (Primer dígit de minut)
					if(iNumero>5) 
						oText.value=sHora[0]+":0";       //Ex.:'14:5'->'14:05'
					break;
				default:
			}
		}
		
	}
  }
}

//--------------------------------------------------
//	Funció que canvia el color del texte si
//	no té un format d'hora correcte.
//  Invocar desde 'onBlur'.
//--------------------------------------------------
function Sortir_Hora(oText,ColorCorrecte,ColorErroni){

	if(Validar_Hora(oText.value)){ oText.style.color=ColorCorrecte; return(true); }
	else{ oText.style.color=ColorErroni; return(false); }
}

//--------------------------------------------------
//	Mascara per comprovar que una hora és correcte.
//	Només permet dígits i ':' .
//--------------------------------------------------
function Validar_Hora(sHora){

	sHora = sHora.split(":"); //0:Hora  1:Minut
	//Comprovació del nombre de camps
	if(sHora.length!= 2) return(false);
	else{ 
		//Comprovació de la longitud dels camps
		if((sHora[0].length!=2)||(sHora[1].length!=2)) return(false);
		//Tractament d'hora
		if((sHora[0]<0)||(sHora[0]>23)) return(false);
		else{
			//Tractament de minut
			if((sHora[1]<0)||(sHora[1]>59)) return(false);
		}
	}
	return(true);
}

//--------------------------------------------------
//	Funció que donada una hora en format incorrecte
//	la transforma correctament.
//--------------------------------------------------
function Transformar_Hora(sHora){
var iHora;
var iMinuts;
	
	sHora = sHora.split(":"); //0:Hora 1:Minuts
	//Comprovació del nombre de camps
	if(sHora.length!=2) return "";
	else{ 
		//Tractament de hora
		if(sHora[0].length==1) iHora="0" + sHora[0];
		else iHora=sHora[0];
		
		//Tractament de minuts
		if(sHora[1].length==1) iMinuts="0" + sHora[1];
		else iMinuts=sHora[1];
	}
	return(iHora + ":" + iMinuts);
}

//--------------------------------------------------
//	Mascara per escriure dígits.
//  Invocar desde 'onKeyPress'.
//--------------------------------------------------
function Mascara_Digits(oText){
var intNumero = window.event.keyCode;
var strNumero = oText.value;
var intPosicioDecimal;

	//Caràcters no permesos
	if((intNumero<48)||(intNumero>57)) window.event.returnValue=0;
}


//--------------------------------------------------
//	Mascara per escriure LLETRES.
//  Invocar desde 'onKeyPress'.
//--------------------------------------------------
function Mascara_Lletres(oText){
var intNumero = window.event.keyCode;

	//alert(intNumero);
	//Caràcters no permesos
	if(((intNumero<65)||(intNumero>90)) && ((intNumero<97)||(intNumero>122))) window.event.returnValue=0;
}


//--------------------------------------------------
//	Mascara per escriure LLETRES o Digits.
//  Invocar desde 'onKeyPress'.
//--------------------------------------------------
function Mascara_Lletres_Digits(oText){
var intNumero = window.event.keyCode;

	//Caràcters no permesos
	if (((intNumero<65)||(intNumero>90)) && ((intNumero<97)||(intNumero>122)) && ((intNumero<48)||(intNumero>57))) window.event.returnValue=0;
}

//--------------------------------------------------
//	Mascara per escriure números [decimals] [negatius].
//	Només permet dígits, -..
//  Invocar desde 'onKeyPress'.
//--------------------------------------------------
function Mascara_Numero(oText,intMaxDecimals,blnNegatiu){
var intNumero = window.event.keyCode;
var strNumero = oText.value;
var intPosicioDecimal;

	//Caràcters no permesos
	if((intNumero<44)||(intNumero>57)) window.event.returnValue=0;
	else{
		//Comprovem on està el separador decimal
		intPosicioDecimal=strNumero.search(/[,]|[.]/);		
		//Signe menys (-)
		if(intNumero==45){ 
				if((!(blnNegatiu))||(strNumero.search(/-/)>=0))
						window.event.returnValue=0;
		} 
		//Separador decimal (,.) 
		else if((intNumero==44)||(intNumero==46)){ 
				if(intMaxDecimals>0){
					if(intPosicioDecimal>=0) window.event.returnValue=0;
				}
				else window.event.returnValue=0;
		}
		//Número
		else{ 
				if((intPosicioDecimal>=0)&&(intMaxDecimals>0)){
						//Màxim número de decimals cobert
						if(strNumero.length-intPosicioDecimal-1-intMaxDecimals>=0)	
							window.event.returnValue=0;
				}
		}
	}
}

//+----------------------------------------------------------------------------
//
//  Function:       UnMaskMoney
//
//  Description:    Takes the innerText or value of the tag (depending on the
//                  type of tag), and removes currency format.
//
//  Arguments:      sValue - innerText or value of the tag
//
//  Returns:        "" (empty string) if sValue is an empty string
//                  Currency value with out format      
//
//-----------------------------------------------------------------------------
function UnMaskMoney(sValue){
var sCur;
var i;
	if (sValue=='') return "";

    sValue=sValue.replace(".",'');
    sCur=sValue.split(".");

    if (sCur.length>0) {
		sValue="";
		for (i=0;i<sCur.length;i++){
			sValue=sValue + sCur[i];
		}
	}

    return sValue.split(' ')[0];
}

//+----------------------------------------------------------------------------
//
//  Function:       MaskMoney
//
//  Description:    Takes the innerText or value of the tag (depending on the
//                  type of tag), and formats it as given currency.
//
//  Arguments:      sValue - innerText or value of the tag
//					iDecimals - Decimals of given currency
//					sSymbol - Symbol of given currency
//
//  Returns:        "" (empty string) if sValue is an empty string
//					0 + sSymbol if sValue is NaN 
//                  sValue - parsed and formatted currency + sSymbol      
//
//-----------------------------------------------------------------------------
function MaskMoney(sValue,iDecimals,sSymbol){
var sZeros;
var sCurrency;
var bIsNegative=false;
var i;
	//	No value
    if ((sValue.length == 0) || (sValue=="")) return "";

	//	Takes "," like decimal separator.
	//	Replaces "," by "." to parse Float 
    sValue=sValue.replace(",",'.');
    var iValue=parseFloat(sValue);
    if (isNaN(iValue))	{
		iValue=0;
    }
    //	Redondea el numero a las cifras decimales indicadas por iDecimals
	iValue = (Math.round(iValue * Math.pow(10,iDecimals)) / Math.pow(10,iDecimals));
    
    //	Toma "," como separador decimal
    sValue=iValue.toString();
    sValue=sValue.replace(".",',');
    
    //
    //  Fill in zeros (if necessary) to show iDecimals digits to the right 
    //  of the decimal
    //
    if (sValue.indexOf(",") == -1) {
		sZeros=',';
		for (i=0;i<iDecimals;i++) {sZeros=sZeros + '0';}
        sValue = sValue + sZeros;
    }
    else {
		sCurrency=sValue.split(',');

		if (sCurrency[1].length<iDecimals) {
			sZeros='';
			for (i=sCurrency[1].length;i<iDecimals;i++) {sZeros=sZeros + '0';}
			sCurrency[1] = sCurrency[1] + sZeros;
			
			sValue=sCurrency[0] + ',' + sCurrency[1]
		}    
    }

    if (sValue.charAt(0)=='-') {
		sValue=sValue.slice(1,sValue.length);
		bIsNegative=true;
	}
    
	sCurrency=sValue.split(',');
	
	var lng=sCurrency[0].length;
	var IntPart=Math.floor(lng/3);
	var DecPart=lng%3;
	var newstr='';
	
	//	Inserta separador de miles si es necesario
	for (i=IntPart-1; i>=0; i--){
		newstr=sCurrency[0].slice((i*3)+DecPart,((i+1)*3)+DecPart)+ '.' + newstr;
	}
	
	newstr=((DecPart>0) ? sCurrency[0].slice(0,DecPart)+ '.' + newstr: newstr);
	newstr=newstr.slice(0,newstr.length-1);
	
	//	Añade el simbolo de la moneda al final
	if (iDecimals==0) {
		sValue=newstr + ' ' + sSymbol
	}
	else{
		sValue=newstr + ',' + sCurrency[1] + ' ' + sSymbol
	}
	return (bIsNegative ? '-' + sValue: sValue);
}

//-------------------------------------------
// Carácteres permitidos para el Teléfono/Fax 
// digitos codigo ascii rango 48..57		   
// ( 40, ) 41, + 43, . 46					   
// Espacio 32								   
//-------------------------------------------
function MaskTelephone() {
	if (!(((window.event.keyCode>47) && (window.event.keyCode<58)) ||
			(window.event.keyCode==32) ||
			(window.event.keyCode==40) ||
			(window.event.keyCode==41) ||
			(window.event.keyCode==43) ||
			(window.event.keyCode==46))) {window.event.returnValue=0;}
}
//-------------------------------------------
// Gestion de perfiles							   
//-------------------------------------------

//-->  	