//////ALERTA////
function alerta(text,tipus)
{
	var args;
	var retValue;

	
	args="dialogHeight: 150px; dialogWidth: 300px; edge: raised; center: yes; help: no; resizable: no; status: no; scroll: no";
	retValue=window.showModalDialog("alerta.aspx?text="+text+"&tipus="+tipus,"", args)

	return retValue;
}

function alerta2(text,tipus,alcada,amplada)
{
	var args;
	var retValue;

	
	args="dialogHeight: "+ alcada +"px; dialogWidth: "+ amplada +"px; edge: raised; center: yes; help: no; resizable: no; status: no; scroll: no";
	retValue=window.showModalDialog("alerta.aspx?text="+text+"&tipus="+tipus,"", args)

	return retValue;
}

////// Validació de dates correctes //////
function chkdate(objName)
{
   //var strDatestyle = "US"; //United States date style
   var strDatestyle="EU";  //European date style
   var strDate;
   var strDateArray;
   var strDay;
   var strMonth;
   var strYear;
   var intday;
   var intMonth;
   var intYear;
   var booFound=false;
   var datefield=objName;
   var strSeparatorArray=new Array("-","/");
   var intElementNr;
   var err=0;
   var strMonthArray=new Array(12);
   strMonthArray[0]="Jan";
   strMonthArray[1]="Feb";
   strMonthArray[2]="Mar";
   strMonthArray[3]="Apr";
   strMonthArray[4]="May";
   strMonthArray[5]="Jun";
   strMonthArray[6]="Jul";
   strMonthArray[7]="Aug";
   strMonthArray[8]="Sep";
   strMonthArray[9]="Oct";
   strMonthArray[10]="Nov";
   strMonthArray[11]="Dec";
   strDate=datefield.value;
   if (strDate.length < 1)
   {
      return true;
   }

   for (intElementNr=0;intElementNr<strSeparatorArray.length;intElementNr++)
   {
      if (strDate.indexOf(strSeparatorArray[intElementNr])!=-1)
      {
         strDateArray=strDate.split(strSeparatorArray[intElementNr]);
         if (strDateArray.length!=3)
         {
            err=1;
            return false;
         }
         else
         {
            strDay = strDateArray[0];
            strMonth = strDateArray[1];
            strYear = strDateArray[2];
         }
         booFound = true;
      }
   }

   if (booFound == false)
   {
      return false;
   }
   if (strYear.length == 2)
   {
      strYear = '20' + strYear;
   }

   // US style
   if (strDatestyle == "US")
   {
      strTemp = strDay;
      strDay = strMonth;
      strMonth = strTemp;
   }
   intday = parseInt(strDay, 10);
   if (isNaN(intday))
   {
      err = 2;
      return false;
   }
   intMonth = parseInt(strMonth, 10);
   if (isNaN(intMonth))
   {
      for (i = 0;i<12;i++)
      {
         if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase())
         {
            intMonth = i+1;
            strMonth = strMonthArray[i];
            i = 12;
         }
      }
      if (isNaN(intMonth))
      {
         err = 3;
         return false;
      }
   }
   intYear = parseInt(strYear, 10);
   if (isNaN(intYear))
   {
      err = 4;
      return false;
   }
   if (intMonth>12 || intMonth<1)
   {
      err = 5;
      return false;
   }
   if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1))
   {
      err = 6;
      return false;
   }
   if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1))
   {
      err = 7;
      return false;
   }
   if (intMonth == 2)
   {
      if (intday < 1)
      {
         err = 8;
         return false;
      }
      if (LeapYear(intYear) == true)
      {
         if (intday > 29)
         {
            err = 9;
            return false;
         }
      }
      else
      {
         if (intday > 28)
         {
            err = 10;
            return false;
         }
      }
   }
   return true;
}

function LeapYear(intYear)
{
   if (intYear % 100 == 0)
   {
      if (intYear % 400 == 0)
      {
      	 return true;
      }
   }
   else
   {
      if ((intYear % 4) == 0)
      {
      	 return true;
      }
   }
   return false;
}

////// Validació d'hores correctes //////
function validarHora(strHora)
{
   var numSeparadors;
   var hores,minuts;
   var j;
   var hora;

   hora=strHora.value;

   if (hora=="" || hora==null)
      return true;

   numSeparadors=0;
   hores="";
   minuts="";

   // Obtinc hores i minuts, tenint en compte el separador.
   for(j=0;j<hora.length;j++)
   {
      if(hora.charAt(j)==":" || hora.charAt(j)==".")
         numSeparadors++;
      else
      {
         if(numSeparadors==0)
            hores=hores + hora.charAt(j);
         if(numSeparadors==1)
            minuts=minuts + hora.charAt(j);
      }
   }

   if(numSeparadors!=1 || hores=="" || minuts=="")
   {
      return false;
   }
   else
   {
      if (parseInt(hores,10)>=0 && parseInt(hores,10)<24 && parseInt(minuts,10)>=0 && parseInt(minuts,10)<60)
         return true;
      return false;
   }
}

////// Validació de númerics correctes //////
function validarNumero(strNumero)
{
   var numero;
   var numeroFinal,numAccess;
   var k;

   numero=strNumero.value;

   // Permeto posar com a separador de decimal "," o "'" o "." pero ho traspaso a format JavaScript numèric "."
   numeroFinal="";
   for(k=0;k<numero.length;k++)
   {
      if(numero.charAt(k)=="," || numero.charAt(k)=="'")
         numeroFinal=numeroFinal+".";
      else
         numeroFinal=numeroFinal+numero.charAt(k);
   }

   if(isNaN(numeroFinal))
      return false;
   else
   {
      numAccess="";
      // Substitueixo el "." per "," en cas de decimals, ja que l'Access ho gurda en format "XX,XX"
      for(k=0;k<numeroFinal.length;k++)
      {
         if (numeroFinal.charAt(k)==".")
            numAccess=numAccess+",";
         else
            numAccess=numAccess+numeroFinal.charAt(k);
      }

      strNumero.value=numAccess;
      return true;
   }
}

////// Validació de NIF correcte //////
function ltrim(cadena)
{
   var i=0;
   while (cadena.charAt(i) == ' ')
   {
      i++;
   }
   return cadena.substring(i);
}

function rtrim(cadena)
{
   var i;
   i=cadena.length-1;
   while (cadena.charAt(i) == ' ')
   {
      i--;
   }
   return cadena.substring(0,i+1);
}

function trim(cadena)
{
   return rtrim(ltrim(cadena));
}


function validarLetras(cadena)
{
   var caracter;
   var caracteresValidos="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

   cadena=ltrim(cadena);
   cadena=rtrim(cadena);

   for(var i=0;i<cadena.length;i++)
   {
      caracter=cadena.charAt(i);
      if(caracteresValidos.indexOf(caracter)<0)
         return false;
   }
   return true;
}

function validarNumeros(cadena)
{
   var caracter;
   var caracteresValidos="0123456789";

   cadena=ltrim(cadena);
   cadena=rtrim(cadena);

   for(var i=0;i<cadena.length;i++)
   {
      caracter=cadena.charAt(i);
      if(caracteresValidos.indexOf(caracter)<0)
         return false;
   }
   return true;
}


function comprobarNif(cadena)
{
   var numero;
   var letra;
   var estrang;
   var letrasNif="TRWAGMYFPDXBNJZSQVHLCKE";

   cadena=ltrim(cadena);
   cadena=rtrim(cadena);

   numero=cadena.substr(0,8);
   letra=cadena.substr(8,1);
   estrang=cadena.substr(0,1);
	
	switch (estrang.toUpperCase()) {
		case "X":
			numero=cadena.substr(1,7);
			break;
		case "Y":
			numero="1"+cadena.substr(1,7);
			break;
		case "Z":
			numero="2"+cadena.substr(1,7);
			break;
	}

   if (validarNumeros(numero)==false)
      return false;
   if (validarLetras(letra)==false)
      return false;

   if(cadena.length!=9)
      return false;

   var posicionLetra=numero%23;
   var letraCorrecta=letrasNif.charAt(posicionLetra);

   if(letraCorrecta!=letra.toUpperCase())
      return false;

   return true;
}

function validaCif(cif)
{
   var temp=cif.toUpperCase();
   var v1=new Array(0,2,4,6,8,1,3,5,7,9);
   var temp_aux=0;
   var digit_final;

   if (cif=="N0021600B") {
		return true;
   }

   // Son 9 dígits?
   if (!/^[A-Za-z0-9]{9}$/.test(temp)) {
      return false;
   }
   else
   {
      // Es una llestra de les admeses en un Cif ?
      if (!/^[ABCDEFGHJKLMNPQRSUVW]/.test(temp)) {
         return false;
      }
   }

   for(i=2;i<=6;i+=2)
   {
      temp_aux=temp_aux+v1[parseInt(cif.substr(i-1,1))];
      temp_aux=temp_aux+parseInt(cif.substr(i,1));
   }

   temp_aux=temp_aux+v1[parseInt(cif.substr(7,1))];
   temp_aux=(10-(temp_aux%10));

   digit_final=cif.substr(8,1);
   digit_final=digit_final.toUpperCase();

   if (temp_aux!=digit_final)
   {
      if (temp_aux==1 && digit_final=='A')
         return true;
      if (temp_aux==2 && digit_final=='B')
         return true;
      if (temp_aux==3 && digit_final=='C')
         return true;
      if (temp_aux==4 && digit_final=='D')
         return true;
      if (temp_aux==5 && digit_final=='E')
         return true;
      if (temp_aux==6 && digit_final=='F')
         return true;
      if (temp_aux==7 && digit_final=='G')
         return true;
      if (temp_aux==8 && digit_final=='H')
         return true;
      if (temp_aux==9 && digit_final=='I')
         return true;
      if (temp_aux==10 && digit_final=='J')
         return true;
      if (temp_aux==10 && parseInt(digit_final)==0)
         return true;

      return false;
   }
   else
   {
      return true;
   }
}

function comprobarCifONif(cadena){
	if(validaCif(cadena)||comprobarNif(cadena)){
		return true;
	}else{
		return false;
	}


}

// Validació nº Seguretat Social Persona Física
function validaNissPf(niss)
{
   var digits;
   var numNiss;

   if (niss.length!=12)
      return false;

   if (niss.charAt(2)=='0')
      numNiss=niss.substr(0,2)+niss.substr(3,7);
   else
      numNiss=niss.substr(0,10);

   digits=numNiss%97;
   digits=digits.toString();

   if (digits.length<2)
      digits='0'+digits;

   if (niss.substr(10,2)!=digits)
      return false;

   return true;
}

// Validació nº Seguretat Social Persona Jurídica (Empresa)
function validaNissPj(niss)
{
   var digits;
   var numNiss;

   if (niss.length!=11)
      return false;

   numNiss=niss.substr(0,9);

   digits=numNiss%97;
   digits=digits.toString();

   if (digits.length<2)
      digits='0'+digits;

   if (niss.substr(9,2)!=digits)
      return false;

   return true;
}

// Validació dels dígits de control d'un compte corrent
function validaCC(num)
{
   var part1,part2,res1,res2,i;
   var multiplicador;

   if (num.length!=20)
      return false;

   part1=num.substr(0,8);
   part2=num.substr(10,10);
   res1=0;
   res2=0;

   // 1er Dígit de Control
   for(i=1;i<=8;i++)
   {
      switch (i)
      {
         case 1:
            multiplicador=4;
            break;
         case 2:
            multiplicador=8;
            break;
         case 3:
            multiplicador=5;
            break;
         case 4:
            multiplicador=10;
            break;
         case 5:
            multiplicador=9;
            break;
         case 6:
            multiplicador=7;
            break;
         case 7:
            multiplicador=3;
            break;
         case 8:
            multiplicador=6;
            break;
      }
      res1+=parseInt(part1.substr(i-1,1),10)*multiplicador;
   }

   res1=11-(res1%11);
   if (res1==10)
   {
      res1=1;
   }
   else
   {
      if (res1==11)
         res1=0;
   }

   // 2on Dígit de Control
   for(i=1;i<=10;i++)
   {
      switch (i)
      {
         case 1:
            multiplicador=1;
            break;
         case 2:
            multiplicador=2;
            break;
         case 3:
            multiplicador=4;
            break;
         case 4:
            multiplicador=8;
            break;
         case 5:
            multiplicador=5;
            break;
         case 6:
            multiplicador=10;
            break;
         case 7:
            multiplicador=9;
            break;
         case 8:
            multiplicador=7;
            break;
         case 9:
            multiplicador=3;
            break;
         case 10:
            multiplicador=6;
            break;
      }
      res2+=parseInt(part2.substr(i-1,1),10)*multiplicador;
   }

   res2=11-(res2%11);
   if (res2==10)
   {
      res2=1;
   }
   else
   {
      if (res2==11)
         res2=0;
   }

   if (res1==parseInt(num.substr(8,1),10) && res2==parseInt(num.substr(9,1),10))
      return true;
   else
      return false;
}

// Neteja una cadena de caràcters extranys, deixant nomès lletres i números
function netejaCadena(txt)
{
   var i,strTxt,digit;

   strTxt="";
   for(i=0;i<txt.length;i++)
   {
      digit=txt.charAt(i);
      digit=digit.toUpperCase();
      digit=digit.charCodeAt(0);
      if ((digit>64 && digit<91) || (digit>47 && digit<58))
         strTxt=strTxt+txt.charAt(i).toUpperCase();
   }
   return strTxt;
}

// Sobre un camp de texte, elimina els digíts no númerics.
// Ús: <input name="telefon" type="text" onKeyUp="validaDigitNum(this);">
function validaDigitNum(obj)
{
   var flg=0;

   while (flg==0)
   {
      if (obj.value.length!=0)
      {
         if (isNaN(obj.value.charAt(obj.value.length-1)))
            obj.value=obj.value.substring(0,obj.value.length-1);
         else
            flg=1;
      }
      else
         flg=1;
   }
}

// Sobre un camp de texte, elimina els digíts no númerics però deixa la coma i el punt (imports)
// Ús: <input name="preu" type="text" onKeyUp="validaDigitImp(this);">
function validaDigitImp(obj)
{
   var flg=0;

   while (flg==0)
   {
      if (obj.value.length!=0)
      {
         if (isNaN(obj.value.charAt(obj.value.length-1)) && obj.value.charAt(obj.value.length-1)!="," && obj.value.charAt(obj.value.length-1)!=".")
            obj.value=obj.value.substring(0,obj.value.length-1);
         else
            flg=1;
      }
      else
         flg=1;
   }
}

//--- Converteix un decimal a Hexadecimal
function converteixAHexa(num)
{
    var hexadecimal=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
    var hexaDec=Math.floor(num/16);
    var hexaUni=num-(hexaDec*16);
    return hexadecimal[hexaDec]+hexadecimal[hexaUni];
}

//--- Arrodoneix un número amb decimals a 2 decimals
function arrodoneixA2(numero_decimal)
{
   numero_decimal=parseFloat(numero_decimal.toString().replace(/,/g,"."));
   return Math.round(numero_decimal*100)/100;
}

//--- Munta una data al revés perque pugui ser comparada amb una altre
//--- Entra: DD/MM/AAAA o DD-MM-AAAA
//--- Surt: AAAAMMDD
function normalitzaData(strData)
{
   var auxData;

   auxData=strData.split("/");
   if (auxData.length==1)
      auxData=strData.split("-");

   if (auxData[0].length==1)
      auxData[0]="0"+auxData[0];
   if (auxData[1].length==1)
      auxData[1]="0"+auxData[1];

   auxData=auxData[2]+auxData[1]+auxData[0];
   return auxData;
}

// Sobre un camp de texte, no deixa entrar caràcters que no siguin números
// Ús: <input name="telefon" type="text" onKeyPress="vNum();">
function vNum()
{
   if (event.keyCode<48 || event.keyCode>57)
      event.returnValue=false;
}

//Compatible amb Firefox
function vNumF(evento)
{
	if(evento.keyCode){
	 if (evento.keyCode<48 || evento.keyCode>57)evento.returnValue=false;
	}else{		 
	if (evento.which<48 || evento.which>57)evento.preventDefault();
	}
  
}

function inCamps(evento)
{
	if(window.event){
	 if (evento.keyCode==13 || evento.keyCode==37   /*(evento.keyCode>32 && evento.keyCode<39)|| (evento.keyCode>39 && evento.keyCode<45)*/ )evento.returnValue=false;
	}else{		 
	if (evento.which==13 || evento.which==37 /*(evento.which>32 && evento.which<39)|| (evento.which>39 && evento.which<45)*/  )evento.preventDefault();
	}
  
}

function vNumChar(evento)
{
	if(evento.keyCode){
	 if (evento.keyCode<48 || evento.keyCode>122)evento.returnValue=false;
	}else{		 
	if (evento.which<48 || evento.which>122)evento.preventDefault();
	}
  
}

// Sobre un camp de texte, no deixa entrar caràcters que no siguin números, la coma, el punt o el negatiu
// Ús: <input name="preu" type="text" onKeyPress="vImp();">
function vImp()
{
   if ((event.keyCode<48 || event.keyCode>57) && (event.keyCode<44 || event.keyCode>46))
      event.returnValue=false;
}
function validarEmail(cadena)
{

	if(cadena.length == 0)
	{
		return true;
	}
	else
	{
		//comprovem que hi hagi el @ i el punt redera de l'@ (i no seguits, amb un caràcter com a mínim entre ells)
		if((cadena.indexOf("@")<= 0) || (cadena.indexOf(".",cadena.indexOf("@")+2) == -1)) 
		{
			return false;
		}
		//comprovem que el punt no estigui al final
		else if((cadena.indexOf(".",cadena.indexOf("@"))) == (cadena.length)-1) 
		{
			return false;
		}
		//comprovem que @ no estigui al final
		else if((cadena.indexOf("@")) == (cadena.length)-1) 
		{
			return false;
		}
		return true;
	}
}
//--- Dins d'un HTML amaga el div "tot" i mostra el div "espera" posant-lo al centre de la pàgina
function mostraEspera()
{
	document.getElementById("tot").style.display="none";
	document.getElementById("espera").style.display="";
	document.getElementById("espera").style.top=(document.body.clientHeight/2) - (document.getElementById("espera").offsetHeight/2);
	document.getElementById("espera").style.left=(document.body.clientWidth/2) - (document.getElementById("tEspera").offsetWidth/2);
	return true;
}

function formatejaImport(valorImport){
	var importAux;
	
	importAux = "";
	
	if (valorImport != ""){
        importAux = FormatNumber(valorImport, 2, true, false, false);
        importAux = importAux;
        
        return importAux;
    }else{
		return "";
    }

}

function nomDelMes(numMes){

   var strMonthArray=new Array(13);
   
   
   strMonthArray[1]="Gener";
   strMonthArray[2]="Febrer";
   strMonthArray[3]="Marc";
   strMonthArray[4]="Abril";
   strMonthArray[5]="Maig";
   strMonthArray[6]="Juny";
   strMonthArray[7]="Juliol";
   strMonthArray[8]="Agost";
   strMonthArray[9]="Setembre";
   strMonthArray[10]="Octubre";
   strMonthArray[11]="Novembre";
   strMonthArray[12]="Desembre";
   
   return strMonthArray[numMes]
}

//--- Equivalent a la funció FormatNumber de .net
function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas){


/**********************************************************************
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
		bolParens - true / false - use parenthesis around negative numbers
		bolCommas - put commas as number separators.
 
	RETVAL:
		The formatted number!
 **********************************************************************/
      
      
        if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}

	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

	return tmpNumStr;		// Return our formatted string!
}

//Funció per moure elements d'una llista a una altra.
//accio=selected Mou l'opció seleccionada de l'origen cap al destí.
//accio=all Mou totes les opcions de l'origen al destí.

function moureLlista(origen, desti, accio){
				if (accio=="selected")
				{
					for (i=0;i<document.getElementById(origen).options.length;i++)
					{
						if (document.getElementById(origen).options[i].selected)
						{
						oOption=document.createElement("option");
						document.getElementById(desti).options.add(oOption);
						oOption.text=document.getElementById(origen).options[i].text;
						oOption.value=document.getElementById(origen).options[i].value;
						oOption.flgElim="N";
						document.getElementById(origen).options[i].flgElim="S";
						}
					}
				}
				
				if (accio=="all")
				{
					for (i=0;i<document.getElementById(origen).options.length;i++)
					{
						oOption=document.createElement("option");
						document.getElementById(desti).options.add(oOption);
						oOption.text=document.getElementById(origen).options[i].text;
						oOption.value=document.getElementById(origen).options[i].value;
						oOption.flgElim="N";
						document.getElementById(origen).options[i].flgElim="S";
					}
				}
			
				for(i=document.getElementById(origen).options.length;i>0;i--){
					if(document.getElementById(origen).options[i-1].flgElim=="S"){
						document.getElementById(origen).remove(i-1);
					}
				}
				
				
			}
