/*-------------- Funcions generiques de validació ------------------------------------------------------------

CalculaNIF(opcionError) -> valida el format d'un nif
ValidaNIF(opcionError) -> valida el format d'un nif
validaDecimal(opcionError) -> valida un número decimal
validaNumero(opcionError) -> valida un número enter
validaLetras(opcionError) -> confirma que un texte estigui composat exclusivament per lletres
validaCaracters(opcionError) -> confirma que un texte estigui composat exclusivament per lletres, números, '@' i '.'
validaTelf(opcionError) -> valida el format de un número de telefon
validaCP(opcionError) -> valida el format de un Codi Postal
validaCorreu(opcionError) -> valida el format d'una adreça de correu
ValidarData(opcionError) -> donada una data en format dd/mm/aaaa, indica si es vàlida
TransformarData(opcionError) -> donada una data, la converteix en format dd/mm/aaaa
ValidarObligatori(opcionError) -> indica si un parametre es obligatori
ValidaMes(opcionError) --> Valida que un mes estigui entre 01 i 12

Opciones de salida de error
----------------------------
opcionError='rojo' 'Texto en rojo
opcionError='mensaje' 'mensaje de error
--------------------------------------------------------------------------------------------------------------*/


/*-------------- Funcions d'exemple ------------------------------------------------------------
recalcularCampos()->Mostra com interactuar amb els camps del formulari
textoEvento()->Mostra com interactuar amb els events
mostrarPopupTextoClick()->Mostra un exemple de funció associada a un tipus de control i a un tipus d'event
mostrarPopupTexto()->Mostra un exemple de funció associada a un tipus de control
CalculaImportNet() -> A partir d'un import i dos percentatges (Iva y descompte) calcula el import net
ValidaPercentatge(opcionError) --> Valida que un string sigui un percentatge (numeric + que estigui entre 0 i 100)



--------------------------------------------------------------------------------------------------------------*/
function enviarFormulario()
{
	document.formAdjuntar.submit();
}

function vaciarElemento(oElement)
{
	if (oElement.value == "...")
	{
		oElement.value = "";
	}
}

function reloadSession()
{
	var sURL, sParams, sTimeOut;
	
	sParams = "";
	sURL    = "../Externos/session.asp";
	sTimeOut = makePOST(sURL, sParams); 
	
	sTimeOut = (sTimeOut - 2)* 1000 * 60
	//Ejecutamos la funcion cada sTimeOut - 2 minutos, por defecto 18 minutos (20 minutos de session.timeout por defecto 
	setTimeout("reloadSession()",sTimeOut);
}

function makePOST(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      //http_request.onreadystatechange = function(){if ( http_request.readyState == 4 ) {alert(http_request.responseText);return http_request.responseText;}};
      http_request.open('POST', url, false);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);	 
	  return http_request.responseText;	  
		
   }

function concatenarCampos(sCodenti, sIdioma, sCdente, sCtotal)
{
	var sTotal;
	
	if (document.getElementById('INF_' + sCdente).value != '')
	{
	 sTotal = document.getElementById('FIL_' + sIdioma).value + document.getElementById('FIL_' + sCodenti).value + document.getElementById('INF_' + sCdente).value
	 document.getElementById('INF_' + sCtotal).value = sTotal;
  }
  else
  {
    setTimeout("concatenarCampos('" + sCodenti + "','" + sIdioma + "','" +  sCdente  + "','" +  sCtotal + "')",1000);
  }

}

function concatenarCamposFIL(sCodenti, sIdioma, sCdente, sCtotal)
{
	var sTotal;
	
	sTotal = document.getElementById('FIL_' + sIdioma).value + document.getElementById('FIL_' + sCodenti).value + document.getElementById('FIL_' + sCdente).value
	document.getElementById('INF_' + sCtotal).value = sTotal;
}

function deshabilitarCampos(sfechaPub, sfechaLim, scheck)
{

	ofechaPub = document.getElementById('FIL_' + sfechaPub);
	ofechaLim = document.getElementById('FIL_' + sfechaLim);
	ocheck = document.getElementById('FIL_' + scheck);

	if ((ofechaPub != null) && (ofechaLim != null) && (ocheck.checked == true))
	{	
		ofechaPub.disabled=true;
		ofechaLim.disabled=true;
		ofechaLim.value = "";
		ofechaPub.value = "";
	}
	if ((ofechaPub != null) && (ofechaLim != null) && (ocheck.checked == false))
	{
		ofechaPub.disabled=false;
		ofechaLim.disabled=false;
	}
}


// -------------------- CalculaNIF -------------------------------------
//
// Parametre: nif
// Retorna: 
//			false = format incorrecte
//			true = format correcte
//			DNI = Si la lletra es incorrecta es retorna el codi de DNI amb la lletra corregida.
//			DNI = Si el nif no té lletra de control es retorna el DNI amb la lletra afegida.
//		
function CalculaNIF(opcionError, oEvent) {
	var dni;
	var lletra;
	var lletra_correcta;
	var bOk;

	var ocampo;
	
  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

	if (ocampo)
	{	
	    nif=ocampo.value;
    	nif=nif.toUpperCase( );
      bOk=true;
    	if (nif!='')
    	{
      	if (isNaN(nif)) //Conté lletra
      	{
      		if ((nif.length>2)&&(nif.length<10)) 
      		{	
      			dni=nif.substring(0,nif.length-1); 
				if (!isNumber(dni))
						{
							bOk=false;
						}	
				
      			lletra=nif.substring(nif.length-1,nif.length);
      			if (isNaN(dni)) 
      			{
      				ocampo.style.color='Red'; //Si hi ha un caracter en alguna posició que no es la ultima
      			} 
      			else 
      			{	
      				lletra_correcta=quina_lletra(dni); //Es consulta la lletra correcta del DNI
      				if (lletra!=lletra_correcta) 
      				{
      					dni.concat(lletra_correcta);
      					ocampo.value=dni;
      				}    				
      			}
      		}
      		else // Menys de 2 caracters o mes de 10
      		{
      			bOk=false
      		}
      	} 
      	else  //No conté la lletra
      	{
      		if ((nif.length>2)&&(nif.length<10)) 
      		{            	 
              	//SMP 14/04/2008 INI
				 //ocampo.value=nif.concat(quina_lletra(nif));
				 if(nif.length<9) ocampo.value=nif.concat(quina_lletra(nif));
			   else  bOk=false;
			   
			   
			    //SMP 14/04/2008 FIN
              
              }
          
          else 	
           {
            bOk=false;
          }
        }
       }
       devuelveResultado(ocampo,bOk,opcionError);
      }
      
}

// -------------------- validaNIF -------------------------------------
// Comprova que la lletra, en cas de ser editada, es correcta.
//
// Parametre: tipues error
// Retorna: 
//			false = No es correcte.
//			true = Es correcte.
//			

function ValidaNIF(opcionError, oEvent) {
	var dni;
	var lletra;
	var lletra_correcta;
	var bOk;

	var ocampo;

  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

	if ((ocampo.name=='WTGNUMDOC') || (ocampo.name=='WTXIPSTDO'))
	{
		ocampoTipo=document.getElementById('WTXIPSTDO');
		ocampo=document.getElementById('WTGNUMDOC');
	}
	else 
	{
		ocampoTipo=document.getElementById('WTXIPRTDO');	
		ocampo=document.getElementById('WTXIPRDNI');
	}
	
	if (ocampoTipo.value=='6-NIF')
	{
		if (ocampo)
		{	
		   nif=ocampo.value;
	    	nif=nif.toUpperCase( );
	      bOk=true;
	    	if (nif!='')
	    	{
	      	if (isNaN(nif)) //Conté lletra
	      	{
	      		if ((nif.length>2)&&(nif.length<10)) 
	      		{	
	      			dni=nif.substring(0,nif.length-1); 
	      			lletra=nif.substring(nif.length-1,nif.length);
	      			if (isNaN(dni)) 
	      			{
	      				bOk=false;
	      			} 
	      			else 
	      			{	
	      				lletra_correcta=quina_lletra(dni); //Es consulta la lletra correcta del DNI
	      				if (lletra!=lletra_correcta) 
	      				{
	      					bOk=false;
	      				}    				
	      			}
	      		}
	      		else // Menys de 2 caracters o mes de 10
	      		{
	      			bOk=false;
	      		}
	      	} 
	      	else  //No conté la lletra
	      	{
	      		bOk=false;
	        	}
	       }
	      }			
	}
else //No han triat NIF
	{
		bOk=true;
	}
	devuelveResultado(ocampo,bOk,opcionError);
   
}

// -------------------- validaDecimal -------------------------------------
// Comprova que el format d'un decimal sigui correcte. El separador ha de ser '.'
//
// Parametre: decimal
// Retorna: 
//			false = No es correcte.
//			decimal = decimal correcte.
//			
function validaDecimal(opcionError, oEvent)
{	
  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

  bOk=true;
  if (ocampo)
  {
  	decimal=ocampo.value;
  	if(decimal.indexOf(',')>=0) bOk=false;
  	if (bOk)
  	{
    	separador=decimal.indexOf('.');
    	if (separador==-1)
    	{   		
    	  if (!(validaNumeroInterno(decimal))) bOk=false;
    	  else	ocampo.value=decimal + ".0";
    		
    	}
      else
      {
        if (separador==0)
      	{
      		partEntera="0"; partDecimal=decimal.substring(separador+1);;
      	}
      	else
      	{
      		if (separador==decimal.length-1)
      		{
      			partEntera=decimal.substring(0,separador); partDecimal="0";			
      		}
      		else
      		{
      			partEntera=decimal.substring(0,separador);
      			partDecimal=decimal.substring(separador+1);
      		}
      	}
      	if (!(validaNumeroInterno(partDecimal))) bOk=false;
      	if (!(validaNumeroInterno(partEntera))) bOk=false;
      	if (bOk)ocampo.value=partEntera + "." + partDecimal;
      }
    }
    devuelveResultado(ocampo,bOk,opcionError);
}
}

// -------------------- validaDecimal2 y campo obligatorio ---------------------
// Comprova que el format d'un decimal sigui correcte. El separador ha de ser ','
// y se aceptan separadores de miles. A parte se comprueba que este campo este rellenado.
//
// Parametre: decimal
// Retorna: 
//			false = No es correcte.
//			decimal = decimal correcte.
//			
function validaDecimal_Miles(opcionError, oEvent)
{
  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

  bOk=true;
  if (ocampo)
  {
  	decimal=ocampo.value;
  	//if(decimal.indexOf('.')>=0) bOk=false;
  	if (bOk)
  	{
    	separador=decimal.indexOf(',');
    	separador2= decimal.indexOf('.');
    	if ((separador==-1 && separador2 == -1)) //No tiene nada ni ',' ni '.' 
    	{   		
    	 //if (separador==-1){
    	     if (!(validaNumeroInterno(decimal))) bOk=false;
    	     else	ocampo.value=decimal + ",0";
    		//}
    	}
    	if (separador==-1 && separador2 != -1) //Tiene '.'
        {
           if (!(validaNumeroInterno_Miles(decimal))) bOk=false;
    	     else	ocampo.value=decimal + ",0";
        }
      if (separador!=-1)  //Tiene ',' i puede tener o no '.'
      {
          if (separador==0)
        	{
        		partEntera="0"; partDecimal=decimal.substring(separador+1);;
        	}
        	else
        	{
        		if (separador==decimal.length-1)
        		{
        			partEntera=decimal.substring(0,separador); partDecimal="0";			
        		}
        		else
        		{
        			partEntera=decimal.substring(0,separador);
        			partDecimal=decimal.substring(separador+1);
        		}
        	}
        	//if (!(validaNumeroInterno(partDecimal))) bOk=false;
          if(separador2!=-1)
          {     
                if (!(validaNumeroInterno_Miles(partEntera))) {bOk=false;}
                
          }
        	else if (!(validaNumeroInterno(partEntera))) {bOk=false;}
        	
        	if (bOk)ocampo.value=partEntera + "," + partDecimal;
      }
    }
    devuelveResultado(ocampo,bOk,opcionError);
}
}

// -------------------- validaNumero -------------------------------------
//
// Parametre: cadena
// Retorna: 
//			false = No es numero
//			true = Es un numero
//			

function validaNumero(opcionError, oEvent)
{

  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

  bOk=true;
  if (ocampo)
  {
    num=ocampo.value;
    bOk=validaNumeroInterno(num);
	  
	  devuelveResultado(ocampo,bOk,opcionError);
	}
	
}




// -------------------- validaLetras -------------------------------------
// Comprova que cadena estigui composat per lletres exclusivament.

function validaLetras(opcionError, oEvent)
{
  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

  bOk=true;
  if (ocampo)
  {
    cadena=ocampo.value;  
    
  	for(i=0;i<cadena.length;i++){
  		if (((cadena.charAt(i)<'a') || (cadena.charAt(i)>'z')) && 
  			((cadena.charAt(i)<'A') || (cadena.charAt(i)>'Z')) ) bOk=false;
  	}
	devuelveResultado(ocampo,bOk,opcionError);
	}
}

// -------------------- validaCaracters -------------------------------------
// Comprova que cadena estigui composat per lletres o numeros. Permet '.' i '@' per adreces de correu.
function validaCaracters(opcionError, oEvent)
{
  ocampo=(NavegadorIE())?oEvent.srcElement:ocampo=oEvent.target;

  bOk=true;
  if (ocampo)
  {
    cadena=ocampo.value;
	validaCaractersIntern(cadena);
    devuelveResultado(ocampo,bOk,opcionError);
  }
}

// -------------------- validaTelf -------------------------------------
// Valida un número de telefon
function validaTelf(opcionError, oEvent){

   if (NavegadorIE()) ocampo=oEvent.srcElement;
   else ocampo=oEvent.target;

  bOk=true;
  if (ocampo)
  {
    num=ocampo.value;  
    if(num!='')
    {
    	if (num.length!=9)
    	{
    		if ((num.charAt(0)!='0') || (num.charAt(1)!='0'))
    		{
    			bOk=false;
    		}
    		else
    		{
    			bOk=validaNumeroInterno(num);
    		}
    	}
    	else
    	{
    		bOk=validaNumeroInterno(num);
    	}
    	devuelveResultado(ocampo,bOk,opcionError);
    }
  }
}

// -------------------- validaCP -------------------------------------
// Valida un codi postal

function validaCP(opcionError, oEvent)
{
   if (NavegadorIE()) ocampo=oEvent.srcElement;
   else ocampo=oEvent.target;
  
  bOk=true;
  
  if (ocampo)
  {
    num=ocampo.value; 
    if (num!='')
    {
    	if (num.length==5)
    	{
    		bOk=validaNumeroInterno(num);
    	}
    	else
    	{
    		bOk=false;
    	}
      devuelveResultado(ocampo,bOk,opcionError);
  	}
  }
}

// -------------------- validaCorreu -------------------------------------
// Valida una adreça de correu electronic
// Parametre: adreça
// Retorna:
//			false: el format es incorrecte
//			true: format correcte

function validaCorreu(opcionError, oEvent)
{
   if (NavegadorIE()) ocampo=oEvent.srcElement;
   else ocampo=oEvent.target;

  bOk=true;
  
  if (ocampo)
  {
    adr=ocampo.value; 
    if (adr!='')
    {
    // Mirem que tingui una unica arroba i un punt, que estiguin en aquest ordre, 
    // que no començi per @ i que hi hagi caracters despres del punt
    	if ((adr.indexOf('@')>0) && (adr.indexOf('@')<adr.lastIndexOf('.')) && (adr.indexOf('.')!=adr.length-1) && (adr.indexOf('@')==adr.lastIndexOf('@')) && validaCaractersIntern(adr))
    	{
    		bOk=true;
    
    	}else
    	{
    		bOk=false;
    	}
    	devuelveResultado(ocampo,bOk,opcionError);
    }
   }
}






// -------------------- ValidarData -------------------------------------
//
// Parametre: data en format dd/mm/aaaa
// Retorna: 
//			false = format incorrecte o data inexistent
//			true = Data correcta
//			
function ValidarData(opcionError, oEvent){
  var bTraspas;

   if (NavegadorIE()) ocampo=oEvent.srcElement;
   else ocampo=oEvent.target;
  
  bOk=true;
  
  if (ocampo)
  {
      sData=ocampo.value;   

    	sData = sData.split("/"); //0:Dia  1:Mes  2:Any
    	if(sData.length!=3) 	  //Comprovació del nombre de camps
    	{		bOk=false;	}
    	else
    	{ 
    		if((sData[0].length!=2)||(sData[1].length!=2)||(sData[2].length!=4)) 	//Comprovació de la longitud dels camps
    		{	bOk=false;;
    		}
    		else
    		{
    			if((sData[2]<1900)||(sData[2]>2100)) 		//Tractament d'any
    			{ bOk=false; }
    			else
    			{ 
    				if((sData[1]==1)||(sData[1]==3)||(sData[1]==5)||(sData[1]==7)||(sData[1]==8)||(sData[1]==10)||(sData[1]==12))		//Tractament de mes(amb 31 dies)
    				{
    					if((sData[0]<1)||(sData[0]> 31)) 
    					{ bOk=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)) bOk=false;
    					}
    					else //Tractament de Febrer (28 o 29 dies)
    					{
    						if(sData[1]==2)
    						{
    							bTraspas=Traspas(sData[2]);
    							if((bTraspas)&&((sData[0]<1)||(sData[0]>29))) 
    								bOk=false;
    							else if((!bTraspas)&&((sData[0]<1)||(sData[0]>28))) 
    								bOk=false;
    						}
    						else bOk=false; //mes incorrecte
    					}
    				}
    			}
    		}
    	}
    	devuelveResultado(ocampo,bOk,opcionError);
  }
  
}

// -------------------- TransformarData -------------------------------------
//
// Parametre: data
// Retorna: 
//			false = format incorrecte o data inexistent
//			Data = Data en format dd/mm/aaaa
//			
function TransformarData(opcionError, oEvent){
  var iDia;
  var iMes;
  var iAny;

  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

  bOk=true;
  
  if (ocampo)
  {
      sData=ocampo.value;   
    	sData = sData.split("/"); //0:Dia  1:Mes  2:Any
    	//Comprovació del nombre de camps
    	if(sData.length!=3) bOk=false;
    	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];
    	}
    	if (!ValidarDataInterno(iDia + "/" + iMes + "/" + iAny))  bOk=false;
    	else
    	{
    		ocampo.value=(iDia + "/" + iMes + "/" + iAny);
    	}
      devuelveResultado(ocampo,bOk,opcionError); 
   }
}


// -------------------- ValidarObligatori -------------------------------------
// Retorna false si el parametre no te contingut

function ValidarObligatori(opcionError, oEvent)
{ 
  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

  bOk=true;
  
  if (ocampo)
  {
      s=ocampo.value;   
	    bOk=!((s == null) || (s.lenght == 0 )||s=='')  
	    devuelveResultado(ocampo,bOk,opcionError); 
	 }
}

// -------------------- ValidaMes -------------------------------------
// Retorna false si el parametre (pasat a enter) no esta entre 1 i 12

function ValidaMes(opcionError, oEvent)
{ 
  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

  bOk=false;
 
  if (ocampo)
  {
  	  if (validaNumeroInterno(ocampo.value))
  	  {
	      s=parseInt(ocampo.value, 10);
	      if (!isNaN(s))
		    bOk=((s > 0) && (s < 13))
	  }
	  devuelveResultado(ocampo,bOk,opcionError); 
  }
}

// -------------------- ValidarDocVisat -------------------------------------
// Valida el numero de documento utilizando una llamada externa

function ValidarDocVisat(oEvent)
{
	var bOk,oCampoDoc,aCampos,sURL,sIdCol,sAssumeix;

	bOk=true;
	if (NavegadorIE()) oCampoDoc=oEvent.srcElement;
	else oCampoDoc=oEvent.target;
	//Solo validamos si han informado el numero de documento
	if (oCampoDoc.value.length>0)
	{
		//Obtenemos el id del colegio
		aCampos=document.getElementsByName('WTXCAMPRO');
		sIdCol=aCampos.item(0).value;

		//Obtenemos el valor del parametro assumeix
		if (oCampoDoc.name=='WTXREFASS') sAssumeix='S';
		else sAssumeix='N';

		//Realizamos una llamada para validar el documento
		sURL='/ABSIS/eAD/MTM/Acciones/SrvAcciones.asmx/ValidarDocVisat?idCol=' + sIdCol + '&idDoc=' + oCampoDoc.value + '&assumeix=' + sAssumeix;
	  if (NavegadorIE()) xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP");
		else xmlHttpReq = new XMLHttpRequest();
	  xmlHttpReq.open("GET", sURL, false);
	  xmlHttpReq.send("");
		if (xmlHttpReq.responseXML!=null)
		{
			if (NavegadorIE()) bOk=(xmlHttpReq.responseXML.documentElement.nodeTypedValue=='S');
			else bOk=(xmlHttpReq.responseXML.documentElement.textContent=='S');
		}
		else bOk=false;
	}

	formateaCampoResult(oCampoDoc,bOk);
	if (!bOk) 
	{
		alert(strRefDocIncorrecta);
		oCampoDoc.focus();
	}
}

////////////////////////////////////////
////EJEMPLOS
/////////////////////////////////////////

//Esta función es un ejemplo de suma de los campos WTXNUMER1 y WTXNUMER2 del formulario.
//El campo WTXRESULT almacena el resultado de dicha suma. Esta función se ha asociado al
//evento que captura el cambio de los campos WTXNUMER1 y WTXNUMER2.
function recalcularCampos()
{
  var result=0;
  var num1=0;
  var num2=0;
  
  if (document.getElementById('WTXNUMER1').value)
  {
    num1=parseInt(document.getElementById('WTXNUMER1').value);
  }
   if (document.getElementById('WTXNUMER2').value)
  {
    num2=parseInt(document.getElementById('WTXNUMER2').value);
  }
  
  result= num1 + num2;
  document.getElementById('WTXRESULT').value=result;
}

//Aquesta funció es un exemple de calcul d'un camp a partir del valor d'altres.
//El camp WTXIMPNET emmagatzema el resultat d'aplicar un percentatge de Iva (WTXPORIVA)
//i un percentatge de descompte (WTXPORDTO) sobre un import brut (WTXIMPBRU).
//Aquesta funció s'ha associat a l'event onfocusout dels camps WTXIMPBRU,WTXPORIVA i WTXPORDTO.
function CalculaImportNet()
{
  var importeBrut=0;
  var percIva=0;
  var percDte=0;
  var importNet=0;
  var result=0;   

  if (document.getElementById('WTXIMPBRU').value)
  {
    if (ValidaDecimalIntern(document.getElementById('WTXIMPBRU').value))
      importeBrut=parseFloat(document.getElementById('WTXIMPBRU').value);
  }
  if (document.getElementById('WTXPORDTO').value)
  {
    if (ValidaPercentatgeIntern(document.getElementById('WTXPORDTO').value))
      percDte=parseInt(document.getElementById('WTXPORDTO').value);
  }
  if (document.getElementById('WTXPORIVA').value)
  {
    if (ValidaPercentatgeIntern(document.getElementById('WTXPORIVA').value))
      percIva=parseInt(document.getElementById('WTXPORIVA').value);
  }

  result = importeBrut - (importeBrut * percDte / 100);
  document.getElementById('WTXIMPNET').value = roundNumber(result + (result*percIva/100), 2);

}

//Aquesta funció es un exemple de validació. En aquest cas, valida que un string sigui un percentatge
//(numeric + que estigui entre 0 i 100)
function ValidaPercentatge(opcionError, oEvent)
{
  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

  var bOk=true;
  var num;

  if (ocampo)
  {
    num=ocampo.value;
    bOk=ValidaPercentatgeIntern(num); 
    devuelveResultado(ocampo,bOk,opcionError);
  }
}

//Retorna true si el string pasat es un percentatge (número sense decimals entre 0 i 100)
function ValidaPercentatgeIntern(num)
{
  if (validaNumeroInterno(num))
  {
	return ((num>=0) && (num<=100));
  }
  else return false;
}

// Comprova que el format d'un decimal sigui correcte. El separador ha de ser '.'
function ValidaDecimalIntern(decimal){	
  var bOk=true;
  var separador;
  var partEntera;
  var partDecimal;

  if(decimal.indexOf(',')>=0) bOk=false;
  if (bOk)
  {
    separador=decimal.indexOf('.');
    if (separador==-1)
    {   		
      if (!(validaNumeroInterno(decimal))) bOk=false;   		
    }
    else
    {

      if (separador==0)
      {
       partEntera="0"; 
       partDecimal=decimal.substring(separador+1);
      }
      else
      {
        if (separador==decimal.length-1)
      	{
      	  partEntera=decimal.substring(0,separador);
	  partDecimal="0";
      	}
      	else
      	{
      	  partEntera=decimal.substring(0,separador);
	  partDecimal=decimal.substring(separador+1);
      	}
      }

      if (!(validaNumeroInterno(partDecimal))) bOk=false;
      if (!(validaNumeroInterno(partEntera))) bOk=false;
    }
  }
  return bOk;
}


//Esta función muestra un mensaje que contiene información sobre evento provocado. 
//Se puede asociar a cualquier evento de cualquier campo del formulario.
function textoEvento(oEvent)
{
  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

  var sTexto;
  sTexto='Se ha provocado el evento ' + oEvent.type + ' sobre el campo ' + ocampo.name
  alert(sTexto); 
}

function mostrarPopupTextoClick()
{
  alert('Se ha provocado un click sobre un campo de texto'); 
}
function mostrarPopupTexto()
{
  alert('Se ha provocado un evento sobre un evento texto'); 
}


//FUNCIONS PRIVADES
//--------------------------------------------------
//	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);
}
// -------------------- quina_lletra -------------------------------------
//
// Parametre: Dni sense lletra
// Retorna: 
//			false = format incorrecte
//			caracter = lletra corresponent al Dni.
//			
function quina_lletra (Dni){
	var lletra=new Array("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E");
	if (isNaN(Dni)) return false;
  else  return (lletra[Dni%23]); 
}


// -------------------- validaCaractersIntern -------------------------------------
// Comprova que cadena estigui composat per lletres o numeros. Permet '.','@','_' i '-' per adreces de correu.
function validaCaractersIntern(cadena)
{
	var bOk=true;
	var otros='.@ÇçÑñ_-';
	var c;
	for(i=0;i<cadena.length && bOk;i++){
		c=cadena.charAt(i)
		bOk=(entre(c,'a','z') || entre(c,'A','Z') || entre(c,'0','9') || (otros.lastIndexOf(c)>-1));
	}
	return bOk;
}

function entre(caracter,car1,car2)
{
 if ((caracter<car1)||(caracter>car2)) { return false; } else {return true;}
}

function roundNumber(number, decimals) {
	return Math.round(number*Math.pow(10,decimals))/Math.pow(10,decimals);
}

function validaNumeroInterno(num)
{
	for(i=0;i<num.length;i++){
		if (num.charAt(i)<'0' || num.charAt(i)>'9')return false;
	}
	return true;
}

function validaNumeroInterno_Miles(num)
{
 var partes = new Array();

	partes = num.split('.');
	for (i=0;i<=partes.length-1; i++){
	   if(i==0)  //Si se trata d ela primer parte ejemplo: 12.000 -->12 
     {
      if (partes[i].length==0 || partes[i].length>3){ return false; } //Podrá tener 3número
     }
     else
      {
        if(partes[i].length != 3){ return false;}
      }
      
	     for(j=0;j<partes[i].length;j++)  //Por cada caracter que existe en cada parte...
       {
		        if ((partes[i].charAt(j)<'0' || num.charAt(j)>'9'))
            {return false;
	          } 
        }
    }

	return true;
}
// -------------------- ValidarDataInterno -------------------------------------
//
// Parametre: data en format dd/mm/aaaa
// Retorna: 
//			false = format incorrecte o data inexistent
//			true = Data correcta
//			
function ValidarDataInterno(sData){
var bTraspas;

	sData = sData.split("/"); //0:Dia  1:Mes  2:Any
	if(sData.length!=3) 	  //Comprovació del nombre de camps
	{		return(false);	}
	else
	{ 
		if((sData[0].length!=2)||(sData[1].length!=2)||(sData[2].length!=4)) 	//Comprovació de la longitud dels camps
		{	return(false);
		}
		else
		{
			if((sData[2]<1900)||(sData[2]>2100)) 		//Tractament d'any
			{ return(false); }
			else
			{ 
				if((sData[1]==1)||(sData[1]==3)||(sData[1]==5)||(sData[1]==7)||(sData[1]==8)||(sData[1]==10)||(sData[1]==12))		//Tractament de mes(amb 31 dies)
				{
					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);
					}
					else //Tractament de Febrer (28 o 29 dies)
					{
						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);
						}
						else return false; //mes incorrecte
					}
				}
			}
		}
	}
	return(true);
}

function devuelveResultado(ocampo,resultado,opcionError,sMensaje)
{

    if (opcionError=='rojo')
    {
        formateaCampoResult(ocampo,resultado);
    }
    else if (opcionError=='mensaje' && !resultado)
    {
        if (!sMensaje) sMensaje="Campo no válido";
        alert(sMensaje);
    }

}


function formateaCampoResult(ocampo,resultado)
{
  if (resultado)
  {
      ocampo.style.color='Black';
      if (ocampo.style.backgroundColor=='Red' || ocampo.style.backgroundColor=='red')
      {
          ocampo.style.backgroundColor="";
      }  
  }
  else
   {
      if(ocampo.value.length==0)
      {
        ocampo.style.color='White';  
        ocampo.style.backgroundColor='Red';  
      }
      else
      {
        ocampo.style.color='Red';  
        ocampo.style.backgroundColor="";  
      }
   }
}

function CopiarEmail(opcionError, oEvent)
{
  if (NavegadorIE()) ocampo=oEvent.srcElement;
  else ocampo=oEvent.target;

  document.getElementById('WTGMAINOT').value=ocampo.value;
}

// -------------------- Cerrar ventana -------------------------------------
/* 	Utilizado para insertar un enlace de cierre en un popup */
function CerrarVentana(){
	window.close();
}

// -------------------- AjaxAutoCompleter -------------------------------------
/* 	DESTINATARIO -GESTION DE LLAMADAS-
	Muestra una lista de datos obtenidos a partir de una consulta realizada 
	cada vez que se escribe un caracter utilizandolos como filtro de la consulta
*/

    function insertAutoCompleteDestinatario(){
    	//Lo ideal seria poder pasar como parametro el nombre del campo 'WTXNOMDES'
    	if (document.getElementById("WTXNOMDES")){
    	  var sNomCampo='WTXNOMDES';
    	}else{
    	  var sNomCampo='FIL_WUSNOMBRE';
      }
      //alert(sNomCampo);
    	var urlASP='../../forms_base/lstusu.asp'
    	var idtargetDIV='targetLst_' + sNomCampo;
    	var htmltargetDiv='<div id="'+idtargetDIV+'" class="auto_complete" ></div>';
    	
    	//método utilizado al seleccionar un item de la lista de resultados de la consulta
	    var getItemUpdate= function(resp){
	    		//Cargamos los datos del item seleccionado
	    		var oNode=document.getElementById(resp.id);
	    		var sNombre=oNode.getAttribute("WUSNOMBRE");
	    		var sApell1=oNode.getAttribute("WUSAPELL1");
	    		var sApell2=oNode.getAttribute("WUSAPELL2");
	    		if(oNode.getAttribute("WUSDIRMAI")){
	    			var sDirmail=oNode.getAttribute("WUSDIRMAI");
	        }
	    		//actualizamos los valores del formulario
	    		var oNombre, oApell1, oApell2, oDirmail;
	    		if (document.getElementById("WTXNOMDES")){
	    		  oNombre=document.getElementById("WTXNOMDES");
	    		  oNombre.value=sNombre;
	    		
	    		  oApell1=document.getElementById("WTXAP1DES");
	    		  oApell1.value=sApell1;
	    		
	    		  oApell2=document.getElementById("WTXAP2DES");
	    		  oApell2.value=sApell2;
	    		
	    		  if(document.getElementById("WTGMAINOT")){
	    		    oDirmail=document.getElementById("WTGMAINOT");
	    		    oDirmail.value=sDirmail;
	    		  }
	    		 }else{
	    		  oNombre=document.getElementById("FIL_WUSNOMBRE");
	    		  oNombre.value=sNombre;
	    		
	    		  oApell1=document.getElementById("FIL_WUSAPELL1");
	    		  oApell1.value=sApell1;
	    		
	    		  oApell2=document.getElementById("FIL_WUSAPELL2");
	    		  oApell2.value=sApell2;	    		  
	    		 }
	     }    	
    	
    	new Insertion.After(sNomCampo, htmltargetDiv);
    	new Ajax.Autocompleter( sNomCampo, 
    							idtargetDIV, 
    							urlASP, 
    							{updateElement: getItemUpdate});
    }



/////////////////////////////////////////////
//   OMC 13/03/2008
/////////////////////////////////////////////
/* 
PARA FORMULARIOS CON CAMPOS OBLIGATORIOS:
Al validar formulario marca el campo de color al que la vairable se inicializa.
La variable 'colorAvisoCampoVacio' se define a petición del cliente inicializandola con el nombre
o código del color elegido por este.
Si se comenta la declaración el funcionamiento se anula, es decir no se marcará el campo de ningún color
seguirá quedando blanco.
Si se descomenta deberá asignarse a la variable el color a marcar en el campo.
*/
var colorAvisoCampoVacio = "red";
/////////////////////////////////////////////
//   OMC 13/03/2008 FIN.
////////////////////////////////////////////



// Borra todos los campos no ocutos de un formulario y que no estan en modo solo lectura
function BorrarCampos(oInput){
	var oForm = document.getElementById(oInput.form.id);
	var aTipos = new Array ("input","textarea","select");
	var intALength = aTipos.length;
	if(confirm(strBorrarCampos)){
		for(var x=0;x<intALength;x++){
			var cItems = oForm.getElementsByTagName(aTipos[x]);
			var intCItemsLength = cItems.length;			
			for(var i=0;i<intCItemsLength;i++){
				if(!cItems.item(i).id == "" && cItems.item(i).type != "hidden" && !cItems.item(i).readOnly && cItems.item(i).type != "submit"){
					EstablecerValorCampo(window.document,cItems.item(i).id,'','=');		
					if(document.getElementById(cItems.item(i).id).selectedIndex)
						document.getElementById(cItems.item(i).id).selectedIndex= "-1";
					if(document.getElementById(cItems.item(i).id + "_parent"))
						tinyMCE.activeEditor.setContent("");
				}
			}
		}
	}	
}

//OMC 08/05/2008
function isNumber(s) // Para determinar que una string SOLAMENTE contiene numeros. Si es así retornará TRUE, en caso contrario retornará FALSE.
{
   var i;
    var dotAppeared;
    dotAppeared = false;
    if (isEmpty(s)) 
       if (isNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isNumber.arguments[1] == true);
    
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if( i != 0 ) {
            if ( c == "." ) {
                if( !dotAppeared )
                    dotAppeared = true;
                else
                    return false;
            } else     
                if (!isDigit(c)) return false;
        } else { 
            if ( c == "." ) {
                if( !dotAppeared )
                    dotAppeared = true;
                else
                    return false;
            } else     
                if (!isDigit(c) && (c != "-") || (c == "+")) return false;
        }
    }
    return true;
}

function isEmpty(s) //Comprueba que sea una cadena la cual no esté vacía.
{
   return ((s == null) || (s.length == 0))
}

function isDigit (c) // Comprueba que sea un numero del 0-9 si es así lo retorna a modo de char.
{
   return ((c >= "0") && (c <= "9"))
}
//OMC FIN  08/05/2008

//ECA >> 13/02/2009 Borra todos los campos no ocutos de un formulario y que no estan en modo solo lectura
function BorrarCamposTramiteAdministracion(oForm)
{

	var aTipos = new Array ("input","textarea","select");
	var intALength = aTipos.length;
	
		for(var x=0;x<intALength;x++)
		{
			var cItems = oForm.getElementsByTagName(aTipos[x]);
			var intCItemsLength = cItems.length;			
			for(var i=0;i<intCItemsLength;i++)
			{
				if(!cItems.item(i).id == "" && cItems.item(i).type != "hidden" && !cItems.item(i).readOnly && cItems.item(i).type != "submit")
				{
					EstablecerValorCampo(window.document,cItems.item(i).id,'','=');		
					if(document.getElementById(cItems.item(i).id).selectedIndex)
						document.getElementById(cItems.item(i).id).selectedIndex= "-1";
					if(document.getElementById(cItems.item(i).id + "_parent"))
						tinyMCE.activeEditor.setContent("");
				}
			}
		}	
}

function mostrarEnlaceRetorno()
{

  var aInfo, aApps, oCategoria;
  
  aInfo = document.getElementsByClassName('boton lineaConc');
  aApps = document.getElementsByClassName('boton lineaDocs');
  oCategoria = document.getElementById('WTXSECCIO')
  
  if (aInfo.length > 0 && aApps.length > 0 && oCategoria)
  {
    if (oCategoria.value == 'CONC')
    {
      aInfo[0].style.display = '';
      aApps[0].style.display = 'none';
    }
    else
    {
      aInfo[0].style.display = 'none';
      aApps[0].style.display = '';
    }
  } 
}

function copiarValorCampo(sIdOrig, sIdDest)
{
  var oCampoOrig, oCampoDest;
  
  oCampoOrig = document.getElementById(sIdOrig);
  oCampoDest = document.getElementById(sIdDest);
  
  if (oCampoOrig && oCampoDest)
    oCampoDest.value = oCampoOrig.value
}



function ponerFechaActual(idCampo)
{
	var oCampoDest, dFechaActual;
	
	oCampoDest = document.getElementById(idCampo);

	if(oCampoDest){
    dFechaActual = new Date();
    oCampoDest.value = dFechaActual.getDate() + "/" + (dFechaActual.getMonth() +1) + "/" + dFechaActual.getFullYear();
  }
}

function actualizarEdicionCampos()
{
  var sFecPub, sFecLim, aFecPub, aFecLim, dFecPub, dFecLim;
  
  sFecPub = document.getElementById('WTXFECPUB').value;
  
  if (sFecPub)
  {
    aFecPub = sFecPub.split("/");
    dFecPub = new Date();
    dFecPub.setFullYear(aFecPub[2], aFecPub[1]-1, aFecPub[0]);
    dFecLim = new Date();

    if (dFecLim.getTime()>=dFecPub.getTime())
    {
      document.getElementById('WTXFECPUB').readOnly = true;
      document.getElementById('btn_WTXFECPUB').disabled = true;
 	if (document.getElementById('WTXFECLIM').value != '')
	{
	      document.getElementById('WTXFECLIM').readOnly = true; 
	      document.getElementById('btn_WTXFECLIM').disabled = true; 
	}
      
      document.getElementById('WTXORDENA').disabled = true;
      document.getElementById('WTXPROCED').disabled = true;
    }
    else
    {
    
    }
  }
}


function ActualizaBeforeShowError(sForm)
{
  if (sForm.indexOf('FDATOSCMP')>=0)
  {
    document.getElementById('WTXORDENA').disabled = false;
    document.getElementById('WTXPROCED').disabled = false;
  }
}

function ActualizaAfterShowError(sForm, bErrors)
{
  actualizarEdicionCampos();
}