//Include amb funcions per la validació de dades entrades al formulari.
//Variable global necessaria!

var paso='';


function DataAntiga(yr, mo, dy, hora, minuts)
{
  var d, r, t1, t2, t3;
  var MinMilli = 1000 * 60;
  var HrMilli = MinMilli * 60;
  var DyMilli = HrMilli * 24;
  
	

  //t1 = new Date(yr, mo, dy, hora, minuts);
  t1 = new Date(yr, mo, dy);
  
  var tmp=new Date();
  t2 = new Date(tmp.getFullYear(),tmp.getMonth(),tmp.getDate());
  
  return (t1<t2); 
}


function teststr(cadena)     
{
 var i=0;
 var j=0;
 var forbiddenchars = '';
 for (i=0 ; i < cadena.length ; i ++ )
  for (j=0; j < forbiddenchars.length; j++)
   if (cadena.charAt(i) == forbiddenchars.charAt(j))
    {
			paso=forbiddenchars.charAt(j);
			return false;
    }
 return true;
}

function isnumber(cadena)     
{
 var i=0;
 var j=0;
 var digits = ' 1234567890';
 for (i=0; i < cadena.length ; i ++ ) {
  is_digit=0;
  for (j=0; j < digits.length; j++) 
   if (cadena.charAt(i) == digits.charAt(j))
    is_digit=1;     
  if (!is_digit)
   return false;
 }
 return true;
}

function isnumber_o_coma(cadena)     
{
 var i=0;
 var j=0;
 var digits = ' 1234567890.';

 i=cadena.indexOf('.');
 if (i > 0)
 {
	j =cadena.indexOf('.',i+1);
	if (j>0)
		return false;
 }
if (i==0) return false;

 for (i=0; i < cadena.length ; i ++ ) {
  is_digit=0;
  for (j=0; j < digits.length; j++)
   if (cadena.charAt(i) == digits.charAt(j))
    is_digit=1;     
    if (!is_digit)
     return false;
    }

 return true;
}


function valida_email(email) 
{ 
   	var error = false; 
// Longitud de email correcta 
        if (email.length < 7) 
                error = true; 
        
// Comprobacion de los caracteres 

        var lletra = ''; 
        var arrobas = 0; 
        var punto = email.indexOf('@'); 
        var puntos = 0; 
        
        for (var index=0; index<email.length; index++) 
        { 
                lletra = email.charAt(index); 
                if (lletra == '@') arrobas = arrobas +1; 
                if (lletra >= 32 && lletra <= 44) error = true; 
                if (lletra == 47 || lletra == 96 || lletra >= 123) error = true; 
                if (lletra >= 58 && lletra <= 63) error = true; 
                if (lletra >= 91 && lletra <= 93) error = true; 
                if (index > punto && lletra=='.') puntos = puntos +1; 
        } 
        if (arrobas != 1) 
                error = true; 

// Separacion del usuario y el dominio 
        var usuario = email.substr(1,punto); 

// Existe un usuario 
        if(usuario.length < 1) 
                error = true; 

// Comprobacion de las extensiones del dominio 
        if (puntos >5 || puntos<1) 
                error = true; 

// Control de errores 
        if (error) 
        { 
                return(false); 
        } 
        else 
                return (true); 
} 


function is_date(fecha)
{		
 paso='';
 var validchar='1234567890'
 var aux='';
 var dia='';
 var mes='';
 var any='';
 if(fecha.length==0)
  return true;
  if(fecha.length<5)
   {return(false);}
   for(nHowMany=0,i=0; i < fecha.length;i++) {
    for(found=0,j=0;j < validchar.length;j++)
     if(fecha.charAt(i)==validchar.charAt(j))
      {found=1; break;}
      if(found==0)
       nHowMany=nHowMany+1;}
   if(nHowMany==2)
    for(i=0,camp=0;i < fecha.length;i++) {
     for(found=0,j=0;j< validchar.length;j++)
      if(fecha.charAt(i)==validchar.charAt(j))
       {found=1; break;}
      if(found==0) {
       aux=aux+'-';
       camp=camp+1;}
      else {
       aux=aux+fecha.charAt(i);
       if(camp==0) dia=dia+fecha.charAt(i); 
       if(camp==1) mes=mes+fecha.charAt(i);
       if(camp==2) any=any+fecha.charAt(i);}}
   if((nHowMany==1)&&(fecha.length<7))
    {return(false);}
    if((nHowMany==1)&&(fecha.length>=7)&&(fecha.length<=9)){
     for(i=0;i < fecha.length;i++) {
      for(found=0,j=0;j< validchar.length;j++)
       if(fecha.charAt(i)==validchar.charAt(j))
        {found=1; break;}
       if(found==0)
        ara=i;}
      if(ara!=4) return(false);
      dia=fecha.charAt(0)+fecha.charAt(1);
      mes=fecha.charAt(2)+fecha.charAt(3);
      for(any='',i=5;i< fecha.length;i++)
       any=any+fecha.charAt(i);}
    if((nHowMany==0)&&((fecha.length==6)||(fecha.length==8))) {
     if(fecha.length==6) {
      dia=fecha.charAt(0)+fecha.charAt(1);
      mes=fecha.charAt(2)+fecha.charAt(3);
      any=fecha.charAt(4)+fecha.charAt(5);}
     if(fecha.length==8) {
      dia=fecha.charAt(0)+fecha.charAt(1);
      mes=fecha.charAt(2)+fecha.charAt(3);
      any=fecha.charAt(4)+fecha.charAt(5)+fecha.charAt(6)+fecha.charAt(7);}}
      if((dia=='')||(mes=='')||(any=='')) {return(false);}
      if(dia.length==1) dia='0'+dia;
      if(mes.length==1) mes='0'+mes;
      if(any.length==1) any='199'+any;
      if((any.length==2)&&(any>'70')) any='19'+any;
      if((any.length==2)&&(any<='70')) any='20'+any;
      if((any.length==3)&&(any<'970')) any='2'+any;
      if((any.length==3)&&(any>='970')) any='1'+any;
      if((dia=='00')||(mes=='00')) {return(false);}
      if(mes>'12') {return(false);}
      if((mes=='01')&&(dia>'31')) return(false);
      if (LeapYear(any)) {
		if((mes=='02')&&(dia>'29')) return("no");
	  }
	  else {
		if((mes=='02')&&(dia>'28')) return("no");
	  }
      if((mes=='03')&&(dia>'31')) return(false);
      if((mes=='04')&&(dia>'30')) return(false);
      if((mes=='05')&&(dia>'31')) return(false);
      if((mes=='06')&&(dia>'30')) return(false);
      if((mes=='07')&&(dia>'31')) return(false);
      if((mes=='08')&&(dia>'31')) return(false);
      if((mes=='09')&&(dia>'30')) return(false);
      if((mes=='10')&&(dia>'31')) return(false);
      if((mes=='11')&&(dia>'30')) return(false);
      if((mes=='12')&&(dia>'31')) return(false);
      paso=dia+'/'+mes+'/'+any;
      return(true);
}

function ishour(fecha)
{
 paso='';
 var validchar='1234567890'
 var aux='';
 var hora='';
 var min='';
 if(fecha.length==0)
  return true;
 if(fecha.length<3)
  {return(false);}
 for(nHowMany=0,i=0; i < fecha.length;i++) {
  for(found=0,j=0;j < validchar.length;j++)
   if(fecha.charAt(i)==validchar.charAt(j))
    {found=1; break;}
   if(found==0)
    nHowMany=nHowMany+1;}
  if(nHowMany==1)
   for(i=0,camp=0;i < fecha.length;i++) {
    for(found=0,j=0;j< validchar.length;j++)
     if(fecha.charAt(i)==validchar.charAt(j))
      {found=1; break;}
     if(found==0) {
      aux=aux+'-';
      camp=camp+1;}
     else {
      aux=aux+fecha.charAt(i);
      if(camp==0) hora=hora+fecha.charAt(i); 
      if(camp==1) min=min+fecha.charAt(i);}}
   if (nHowMany!=1)
    {return(false);}
   if (hora.length==1)
    {hora= '0' + hora;}
   if (min.length==1)
    {min= '0' + min;}
   if (hora>23)
    {return(false);}
   if (min>59)
    {return(false);}
   paso=hora + ':' + min;
   return(true);
}


function Valida()
{

 var i;
 var validacio=true;
 var camps = new Camps();
 for (i=1; i <= camps.size; i++) {
  result=true;
  //alert(camps[i].name+"="+camps[i].value);
  
  // xfg 22/02/02: Si no és un camp obligatori i està buit no cal verificar
  if(camps[i].options!='required' && (camps[i].value=='' || camps[i].value=='NULL')) {	
     continue;
  }
<!-- Text a modificar -->
  if(camps[i].options=='required' && (camps[i].value=='' || camps[i].value=='NULL')) {
   result = false;
   alert('Please fill in '+camps[i].name+' as it is required');
   validacio=false;
   break;
   }
  if (result==true){
   if(camps[i].type=='text') 
   {
    result = teststr(camps[i].value); 
    if (!result) 
    {
<!-- Text a modificar -->
		alert(camps[i].name+'\n incorrect character in string:'+paso);
		validacio=false;
	    break;

    }
   }
   else { 
    if(camps[i].type=='number') {
     result = isnumber(camps[i].value); 
     if (!result) 
	{
<!-- Text a modificar -->
		alert(camps[i].name+'\n incorrect number');
		validacio=false;
	    break;
	}
     }
    if(camps[i].type=='number_o_coma'){
      result = isnumber_o_coma(camps[i].value); 
      if (!result) 
		{
<!-- Text a modificar -->
		alert(camps[i].name+'\n incorrect value. Must be a real number. Use a dot to indicate decimals');
		validacio=false;
	    break;
		}
      }
	
    if (camps[i].type=='EMail')
    {
	result=valida_email(camps[i].value);
	if (!result)
	{
<!-- Text a modificar -->
		alert(camps[i].name+'\n incorrect mail address');
		validacio=false;
		break;
	}			
    }
	if (camps[i].type=='hour')
    {
	result=ishour(camps[i].value);
	if (!result)
	{
<!-- Text a modificar -->
		alert(camps[i].name+'\n l\'incorrect time');
		validacio=false;
		break;
	}			
    }
	if (camps[i].type=='combo') {
    	// xfg 22/02/02: el valor 0 del combo pot ser un valor de la BDs, millor -1
	if (camps[i].options=='required' && (camps[i].value=='-1' || camps[i].value=='NULL')) { 
<!-- Text a modificar -->
		alert('Please mark check box '+camps[i].name);
		validacio=false;
		break;
	}			
    }
    else {
      if(camps[i].type=='date') {
       result = is_date(camps[i].value);
       var fecha=new Date(paso.slice(6,10),paso.slice(3,5)-1,paso.slice(0,2));

       var fechaLimite=new Date();
       var y=fechaLimite.getYear();
       var m=fechaLimite.getMonth();
       var d=fechaLimite.getDate();
       fechaLimite=new Date(y,m,d);
       /*
       if (fecha<fechaLimite) 
		{
			alert(camps[i].name+'\n la data ha de ser superior o igual a la actual');
			validacio=false;
		    break;
		}
		*/
       if (!result) 
		{
<!-- Text a modificar -->
			alert(camps[i].name+'\n day in is not a valid date');
			validacio=false;
		    break;
		}
       }
   }
  }
}
  if (result==false)
   validacio=false;}
  return validacio

}

 



function Camp(nom, valor, tipus, options)
{
 this.size = 4;
 this.name = new String(nom);
 this.value = new String(valor);
 this.type = new String(tipus);
 this.options = new String(options);
 return this;
}


function RetallaTextArea(camp, max) {
 //longitud_maxima = 255
 if (eval(camp).value.length > max) {
<!-- Text a modificar -->
  alert("This field admits only the following number of characters: " + max);
  eval(camp).value = eval(camp+".value.substring(0,"+max+")");
 } 
}

function replaceChars(value, out, add){
var strOut;
var strAdd;
var strResult;
var pos;


    strOut = out;
    strAdd = add;
    strResult = '' + value;
	
    while(strResult.indexOf(out)>-1){
       pos=strResult.indexOf(out);
       strResult=''+(strResult.substring(0, pos)+add+ strResult.substring((pos + out.length), strResult.length));
	}

    return strResult;
}  
  
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}

function checkDescripcion(nomForm, campradio, campvalue, campdesc){
	var i
	var trobat
	var descriure
	var retornar
	i=0
	trobat = false
	descriure = false
	retornar = true
	while ((i<eval("document." + nomForm + "." + campradio + ".length")) && (trobat==false)){
		if (eval("document." + nomForm + "." + campradio + "[" + i + "].checked")) {
			if (eval("document." + nomForm + "." + campradio + "[" + i + "].value")==campvalue){
				descriure = true;
			}
			trobat = true;
		}
		i++;
	}
	if (descriure==true) {
		if (eval("document." + nomForm + "." + campdesc + ".value")=="") {
			retornar = false;
		}
	}
	return retornar;
}

function checkISO(){
	var prv_qc_sn
	var prv_qc_iso_sn
	var prv_qc_altres_sn
	var trobat
	var retornar
	retornar=true;

	//miramos los radios de control de calidad
	prv_qc_sn = getValueCheck("registro", "tprv_qc_sn");
	
	//Buscamos ISO o otros
	prv_qc_altres_sn = getValueCheck("registro", "tprv_qc_altres_sn");
	
	//Buscamos ISO Si, No, En trámite
	prv_qc_iso_sn = getValueCheck("registro", "tprv_qc_iso_sn");
	
	//Caso que hayan dicho que sí que tienen un control de calidad, miramos si han marcado
	//ISO, otros, o si no han marcado nada.
	if (prv_qc_sn=="S"){
		//Si no han marcado nada, error!!!
		if (prv_qc_altres_sn==""){
			alert("Haura de marcar si el control de qualitat és ISO o es un altre.");
			retornar = false;	
		}
		else {
			if (prv_qc_altres_sn=="N") {
				//Ha marcado ISO
				//Controlamos los radiobuttons de ISO
				//Caso que no haya nada o hayan marcado "N"
				if ((prv_qc_iso_sn=="") || (prv_qc_iso_sn=="N")){
					alert("En cas de marcar el seu control de qualitat com a ISO haurà d'estar marcat com a 'Si' o com a 'En tràmit'");
					retornar = false;
				}
			}
			if (prv_qc_altres_sn=="S") {
				//Ha marcado OTROS
				//Controlamos que indique cual és en la casilla de descripcion
				if (document.registro.tprv_qc_desc.value=="") {
					//Si no pone nada
					alert("En cas d'escollir 'Altres' haurà de especificar el control de qualitat.");
					retornar = false;	
				}
				if ((prv_qc_iso_sn=="S") || (prv_qc_iso_sn=="T")){
					alert("En cas de marcar el seu control de qualitat com a Altres el tipus ISO haurà d'estar marcat com a 'No'");
					retornar = false;
				}
			}
		}
	}
	return retornar;
}

function getValueCheck(nomForm, nomCheck){
	var i
	var trobat
	var valueFound
	
	i=0;
	trobat = false;
	valueFound = "";
	while ((i<eval("document." + nomForm + "." + nomCheck + ".length")) && (trobat==false)){
		if (eval("document." + nomForm + "." + nomCheck + "[" + i + "].checked")) {
			valueFound=eval("document." + nomForm + "." + nomCheck + "[" + i + "].value");
			trobat = true;
		}
		i++;
	}
	return valueFound;

}
