// JavaScript Document
var Form = new Object();

Form.responseCallBack = function(owner){
	if(Ajax.CheckReadyState(owner.request)){
		var response = Form.parseResponse(owner.request.responseText);
		document.getElementById(response["action"]+"msgOK").style["display"] = "none";
		document.getElementById(response["action"]+"msgERR").style["display"] = "none";
		if(response["err"]== "OK"){
			var objForm = document.getElementById(response["action"]+"Form");
			
			if(response["action2"]!= undefined){
				var objDiv = document.getElementById(response["action"]);
				objDiv.style['display']="none";
			}
						
			with(document) {
				for (i=0; i<objForm.elements.length; i++ ) {
					 if(objForm.elements[i].disabled==false && objForm.elements[i].type!='hidden'){
					 	objForm.elements[i].value="";
					 }
				}
			}
			
			document.getElementById(response["action"]+"msgOK").style["display"] = "block";
			
			if(response["action"]=="InfoRequest"){
				document.getElementById("InfoRequestgoogle").src='/google_request.php';
			}		
			if(response["action"]=="RegisterSimple" || response["action"]=="RegisterComplete"){
				document.getElementById("Registergoogle").src='/google_request_register.php';
			}
			
		}else if(response["err"]== "KO"){
			document.getElementById(response["action"]+"msgERR").style["display"] = "block";

			if(response["errStr"]=="666"){
				document.getElementById(response["action"]+"msgERR").innerHTML="Questa e-mail si trova gia' nel nostro database, utilizza un altro indirizzo e-mail";
			}else if(response["errStr"]=="777"){
				document.getElementById(response["action"]+"msgERR").innerHTML="Errore nei dati";
			}else if(response["errStr"]=="888"){
				document.getElementById(response["action"]+"msgERR").innerHTML="L'e-mail inserita non corrisponde a nessun utente registrato.";
			}else if(response["errStr"]=="999"){
				document.getElementById(response["action"]+"msgERR").innerHTML="Compilare i campi obbligatori e verificare i dati inseriti";			
			}else{
				document.getElementById(response["action"]+"msgERR").innerHTML=response["errStr"];
			}
		}
	}
}

Form.parseResponse = function(text){
	var arr = text.split("&");
	var result = new Array();
	for(var i=0; i<arr.length;i++){
		arr[i]=arr[i].split("=");
		result[arr[i][0]] = arr[i][1];
	}
	return result;
}

Form.checkDate= function (y,m,d) {
 
	var myDayStr = d;
	var myMonthStr = m-1;
	var myYearStr = y;
	var myMonth = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	var myDateStr = myDayStr + ' ' + myMonth[myMonthStr] + ' ' + myYearStr;

	
	/* Using form values, create a new date object
	using the setFullYear function */
	var myDate = new Date();
	myDate.setFullYear( myYearStr, myMonthStr, myDayStr );
	
	if ( myDate.getMonth() != myMonthStr ) {
	  return false;
	} 
	return true;
 
}

Form.checkFieldLen = function(value,minlen,maxlen)
{
	var isOK = true;
	
	isOK = (value != "");
	if(isOK)
	{
		value = value.replace(new RegExp('\\s','gi'),'').toString();
		isOK = (value != "");
		if(isOK)	isOK = (value.length >= minlen);
		if(isOK)	isOK = (value.length <= maxlen);
	}
	
	return isOK;
}

Form.checkFieldNumeric = function(value,minlen,maxlen)
{
	var isOK = Form.checkFieldLen(value,minlen,maxlen);
	
	if(isOK)
	{
		value = value.replace(new RegExp('[0-9]*','gi'),'').toString();
		isOK = (value == "");
	}
	
	return isOK;
}

Form.checkForm = function(form,type){	
	
	var objForm = document.getElementById(form);
	with(document) {
	  for (i=0; i<objForm.elements.length; i++ ) { 
	   //objForm.elements[i].style['background-color']='#ABADB3';
	   if( objForm.elements[i].type!="checkbox" && objForm.elements[i].type!="radio"){
	   	objForm.elements[i].style['border']='1px solid #ABADB3';
	   }
	 if(objForm.elements[i].required==undefined){
		if(objForm.elements[i].name=="RFCcf"){
			
			var checkcf=Form.controlla_codice(objForm.RFCcf.value,objForm.RFCd.value,objForm.RFCm.value,objForm.RFCy.value,objForm.RFCsexvalue.value, objForm.RFCname.value, objForm.RFCsurname.value);	
			if(!checkcf){
				objForm.RFCcf.style['border']='1px solid #990000';
				objForm.RFCcf.focus();
				return false;
			}
		}
		if(objForm.elements[i].name=="RFSpwd" && !(Form.checkFieldLen(objForm.elements[i].value,6,255))){
			objForm.RFSpwd.style['border']='1px solid #990000';
			objForm.RFSpwd.focus();
			return false;
		}
		
		if(objForm.elements[i].name=="RFSname" && !(Form.checkFieldLen(objForm.elements[i].value,1,255))){
			objForm.RFSname.style['border']='1px solid #990000';
			objForm.RFSname.focus();
			return false;
		}
		
		if(objForm.elements[i].name=="RFSsurname" && !(Form.checkFieldLen(objForm.elements[i].value,1,255))){
			objForm.RFSsurname.style['border']='1px solid #990000';
			objForm.RFSsurname.focus();
			return false;
		}
		
		/*
		if(objForm.elements[i].name=="RFSpwd" && (objForm.elements[i].value=="" || objForm.elements[i].value.length < 6 )){
			objForm.RFSpwd.style['border']='1px solid #990000';
			objForm.RFSpwd.focus();
			return false;
		}
		*/
		if(objForm.elements[i].name=="RFCpwd" && !(Form.checkFieldLen(objForm.elements[i].value,6,255))){
			objForm.RFCpwd.style['border']='1px solid #990000';
			objForm.RFCpwd.focus();
			return false;
		}
		/*
		if(objForm.elements[i].name=="RFCpwd" && (objForm.elements[i].value=="" || objForm.elements[i].value.length < 6 )){
			objForm.RFCpwd.style['border']='1px solid #990000';
			objForm.RFCpwd.focus();
			return false;
		}
		*/
		if(objForm.elements[i].name=="RFSpwd" && (Form.checkFieldLen(objForm.elements[i].value,6,255))){
			if(objForm.RFSpwd.value!=objForm.RFSpwd2.value){
				objForm.RFSpwd.style['border']='1px solid #990000';
				objForm.RFSpwd2.style['border']='1px solid #990000';
				objForm.RFSpwd.focus();
				return false;
			}
		}
		/*
		if(objForm.elements[i].name=="RFSpwd" && objForm.elements[i].value!="" ){
			
			if(objForm.RFSpwd.value!=objForm.RFSpwd2.value){
				objForm.RFSpwd.style['border']='1px solid #990000';
				objForm.RFSpwd2.style['border']='1px solid #990000';
				objForm.RFSpwd.focus();
				return false;
			}
		}
		*/
		if(objForm.elements[i].name=="RFCpwd" && (Form.checkFieldLen(objForm.elements[i].value,6,255))){
			if(objForm.RFCpwd.value!=objForm.RFCpwd2.value){
				objForm.RFCpwd.style['border']='1px solid #990000';
				objForm.RFCpwd2.style['border']='1px solid #990000';
				objForm.RFCpwd.focus();
				return false;
			}
		}
		/*
		if(objForm.elements[i].name=="RFCpwd" && objForm.elements[i].value!=""){
			if(objForm.RFCpwd.value!=objForm.RFCpwd2.value){
				objForm.RFCpwd.style['border']='1px solid #990000';
				objForm.RFCpwd2.style['border']='1px solid #990000';
				objForm.RFCpwd.focus();
				return false;
			}
		}
		*/
		if (objForm.elements[i].type=="text" ) 
		{ 
			if(objForm.elements[i].name=="RFCtel" || objForm.elements[i].name=="RFCcel")
			{
				if(objForm.RFCtel.value == '' && objForm.RFCcel.value == '')
				{
					objForm.RFCtel.style['border']='1px solid #990000';
					objForm.elements[i].focus();
					
					objForm.RFCcel.style['border']='1px solid #990000';
					objForm.elements[i].focus();
					
					return false;
				}
				else if (objForm.RFCtel.value != '' && objForm.RFCcel.value == '' && !(Form.checkFieldNumeric(objForm.RFCtel.value,1,100)) )
				{
					objForm.RFCtel.style['border']='1px solid #990000';
					objForm.elements[i].focus();
					return false;
				}
				else if (objForm.RFCtel.value == '' && objForm.RFCcel.value != '' && !(Form.checkFieldNumeric(objForm.RFCcel.value,1,100)))
				{
					objForm.RFCcel.style['border']='1px solid #990000';
					objForm.elements[i].focus();
					return false;
				}
				else if (objForm.RFCtel.value != '' && objForm.RFCcel.value != '')
				{
					if(!(Form.checkFieldNumeric(objForm.RFCtel.value,1,100)) && !(Form.checkFieldNumeric(objForm.RFCcel.value,1,100)))
					{
						objForm.RFCtel.style['border']='1px solid #990000';
						objForm.elements[i].focus();
						
						objForm.RFCcel.style['border']='1px solid #990000';
						objForm.elements[i].focus();
						return false;
					}
					else if(!(Form.checkFieldNumeric(objForm.RFCcel.value,1,100)))
					{
						objForm.RFCtel.style['border']='1px solid #ABADB3';
						objForm.RFCcel.style['border']='1px solid #990000';
						objForm.elements[i].focus();
						return false;
					}
					else if(!(Form.checkFieldNumeric(objForm.RFCtel.value,1,100)))
					{
						objForm.RFCcel.style['border']='1px solid #ABADB3';
						objForm.RFCtel.style['border']='1px solid #990000';
						objForm.elements[i].focus();
						return false;
					}
				}
			}
			else if(objForm.elements[i].name=="RFCcap" && !(Form.checkFieldNumeric(objForm.elements[i].value,1,10)))
			{
				objForm.elements[i].style['border']='1px solid #990000';
				objForm.elements[i].focus();
				return false;
			}
			else if(!(Form.checkFieldLen(objForm.elements[i].value,1,255)))
			{
				objForm.elements[i].style['border']='1px solid #990000';
				objForm.elements[i].focus();
				return false;
			}
			
		
		} else if ((objForm.elements[i].type=="textarea" || objForm.elements[i].type=="radio") && objForm.elements[i].value == "") { 
			objForm.elements[i].style['border']='1px solid #990000';
		    objForm.elements[i].focus();
			return false;
		} else  if (objForm.elements[i].type=="select-one"){		
			if(objForm.elements[i].name=="RFCy"){
				
		 		if(!Form.checkDate(objForm.RFCy.value,objForm.RFCm.value,objForm.RFCd.value)){
					objForm.RFCm.style['border']='1px solid #990000';
					objForm.RFCd.style['border']='1px solid #990000';
					objForm.RFCy.style['border']='1px solid #990000';
					objForm.elements[i].focus();
					return false;
				}
			
		 	}
			if(objForm.elements[i].name=="RFSy"){
				
		 		if(!Form.checkDate(objForm.RFSy.value,objForm.RFSm.value,objForm.RFSd.value)){
					objForm.RFSm.style['border']='1px solid #990000';
					objForm.RFSd.style['border']='1px solid #990000';
					objForm.RFSy.style['border']='1px solid #990000';
					objForm.elements[i].focus();
					return false;
				}
			
		 	}
			if(objForm.elements[i].selectedIndex==0){
				
				
				objForm.elements[i].style['border']='1px solid #990000';
				objForm.elements[i].focus();
				//alert("Error: required field not filled up");
				return false;
			}
		}else if(objForm.elements[i].type=="checkbox"){
			 
			if(objForm.elements[i].checked==0){
				alert("E' necessario accettare l'informativa sulla privacy e le Condizioni generali di fornitura del servizio");
				objForm.elements[i].focus();
				return false;
			}
		}
		var echeck = this.secondCheck(objForm.elements[i])
		if(!echeck){
			objForm.elements[i].focus();
			objForm.elements[i].style['border']='1px solid #990000';
			//alert("Error: email not valid");
			return false;
		}
		}else{
			
			if(objForm.elements[i].name=="RFCpiva"){
				field_arr=new Array();
				field_arr=['RFCpiva','RFCcaddress','RFCcompany','RFCccityname','RFCccap','RFCcregion','RFCccity'];
				var notfilled=false;
				
				for (j=0; j<field_arr.length; j++ ) { 
					var field=field_arr[j];
					
					if(objForm[field].value!="" && objForm[field].value!=0){
						notfilled=true;
					}
				}
				if(notfilled==true){
					if(objForm.RFCpiva.value!=""){
						var checkpiva=Form.ControllaPIVA(objForm.RFCpiva.value);	
						if(!checkpiva){
							objForm.RFCpiva.style['border']='1px solid #990000';
							objForm.RFCpiva.focus();
							return false;
						}	
					}
					if(objForm.RFCcaddress.value=="")
					{
						objForm.RFCcaddress.style['border']='1px solid #990000';
					 	objForm.RFCcaddress.focus();
					 	return false;
					}
					if(objForm.RFCcompany.value=="")
					{
						objForm.RFCcompany.style['border']='1px solid #990000';
					 	objForm.RFCcompany.focus();
					 	return false;
					}
					if(objForm.RFCpiva.value=="")
					{
						objForm.RFCpiva.style['border']='1px solid #990000';
					 	objForm.RFCpiva.focus();
					 	return false;
					}
					if(objForm.RFCccityname.value=="")
					{
						objForm.RFCccityname.style['border']='1px solid #990000';
					 	objForm.RFCccityname.focus();
					 	return false;
					}
					if(objForm.RFCccap.value=="")
					{
						objForm.RFCccap.style['border']='1px solid #990000';
					 	objForm.RFCccap.focus();
					 	return false;
					}
					if(objForm.RFCcregion.value=="")
					{
						objForm.RFCcregion.style['border']='1px solid #990000';
					 	objForm.RFCcregion.focus();
					 	return false;
					}
					if(objForm.RFCccity.value=="")
					{
						objForm.RFCccity.style['border']='1px solid #990000';
					 	objForm.RFCccity.focus();
					 	return false;
					}
					
					if((objForm.RFCpiva.value!="" && objForm.RFCcompany.value=="") || (objForm.RFCpiva.value=="" && objForm.RFCcompany.value=="") || (objForm.RFCpiva.value=="" && objForm.RFCcompany.value!="")){
					 objForm.RFCcompany.style['border']='1px solid #990000';
					 objForm.RFCpiva.style['border']='1px solid #990000';
					 objForm.RFCcompany.focus();
					 return false;
					}
				}
			}
		}
		
		
	  }
	}
	this.send(form,type);
}
Form.secondCheck = function(e){
	if(e.name == "email_des" || e.name == "to_email_des" || e.name == "RFCmail" || e.name == "RFSmail"){
	
		var espressione = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		//var espressione = /^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/;
		
		if (!espressione.test(e.value)){			
			return false;				
		}
	}
	
	return true;
}
Form.send = function(form,type){
	var objForm = document.getElementById(form);
	
	if(type!=undefined){
		var url = "/index.php?p=FormSend"+type;
	}else{
		var url = "/index.php?p=FormSend";
	}
	var param = "";
	with(document) {
	  for (i=0; i<objForm.elements.length; i++ ) {
		  if(objForm.elements[i].type=="checkbox" || objForm.elements[i].type=="radio"){
				if(objForm.elements[i].checked){
				if(i!=0){
			 		param += "&";
				}
				  param += objForm.elements[i].name+"="+encodeURIComponent(objForm.elements[i].value);
		 		 }
		  }else{
		  if(i!=0){
			  param += "&";
		  }
		  param += objForm.elements[i].name+"="+encodeURIComponent(objForm.elements[i].value);
		  }
	  }
	}
	var owner = new Object();
	Ajax.RequestPost(url, this.responseCallBack,param,owner,form+"loading");
}

/* validazione codice fiscale INIZIO */
Form.controlla_codice = function(campo,giorno,mese,anno,sesso,nome,cognome)
{
	var isOK = this.formalValidateCF(campo,giorno,mese,anno,sesso,nome,cognome);
	if(isOK)
	{
		var CF 		= campo;
		var subCF 	= this.getCFCode(campo,giorno,mese,anno,sesso,nome,cognome);
		var rootCF	= CF.substr(0,subCF.length);
		rootCF 		= rootCF.toUpperCase();
		
		isOK = (rootCF == subCF);
	}
	return isOK;
}
Form.getCFCode = function(campo,giorno,mese,anno,sesso,nome,cognome)
{
	var dd 		= giorno;
	var mm 		= mese;
	var yy 		= anno;
	var gender 	= sesso;
	var name 	= nome;
	var surname = cognome;
	var code	= '';
	
	code		= this.getSurnameCode(surname) + this.getNameCode(name) + this.getDateCode(dd,mm,yy,gender);
	return code;
}
Form.getConsonants = function(str) {  return str.replace(/[^BCDFGHJKLMNPQRSTVWXYZ]/gi,'')}
Form.getVowels 	= function(str)	{  return str.replace(/[^AEIOU]/gi,'') }
Form.getSurnameCode = function(surname)
{
	var surname_code 	= this.getConsonants(surname);
	surname_code		+=this.getVowels(surname)+'XXX';
	surname_code		= surname_code.substr(0,3);
	return surname_code.toUpperCase();
}
Form.getNameCode = function(name)
{
	var name_code = this.getConsonants(name);
	if(name_code.length>=4)
		name_code = name_code.charAt(0) + name_code.charAt(2) + name_code.charAt(3);
	else
	{
		name_code += this.getVowels(name);
		name_code += 'XXX';
		name_code = name_code.substr(0,3);
	}
	return name_code.toUpperCase();
}
Form.getDateCode = function(gg,mm,aa,gender) {
	var month_table = ['A','B','C','D','E','H','L','M','P','R','S','T'];
	var d 			= new Date();
	d.setYear(aa);
	d.setMonth(mm-1);
	d.setDate(gg);
	var year 	= '0'+d.getFullYear();
	year 		= year.substr(year.length-2,2);
	var month	= month_table[d.getMonth()];
	var day		= d.getDate();
	if(gender.toUpperCase()=='F') day+=40;
	day			= '0'+day;
	day			= day.substr(day.length-2,2);
	
	return '' + year + month + day;
}
Form.formalValidateCF=function (campo,giorno,mese,anno,sesso,nome,cognome){
	
   var caratteri= new Array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
   var pari= new Array (0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25);
   var dispari=new Array (1,0,5,7,9,13,15,17,19,21,1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23);
   var cod=campo.toLowerCase();
   var check=true;
   var i=0;
   if (cod.length!=16){
      check=false
      }
     else
      {
      lettere=cod.substr(0,6)+cod.substr(8,1)+cod.substr(11,1)+cod.substr(15);
      numeri=cod.substr(6,2)+cod.substr(9,2)+cod.substr(12,3);
      for (i=0;i<10;i++){
         if (lettere.charCodeAt(i)<97 || lettere.charCodeAt(i)>122){
            check=false;
		}
      }
      for (i=0;i<8;i++){
         if (numeri.charCodeAt(i)<48 || numeri.charCodeAt(i)>57){
            check=false;
         }
      }   
     }
   //checksum del codice fiscale
   test=cod.substr(15,1);
   var somma=0
   for (i=0;i<16;i=i+2){ //dispari
       carattere=cod.substr(i,1);
       for (k=0;k<36;k++){
          if (carattere==caratteri[k]){
             somma=somma+dispari[k];
             break;
          }
       }
    }
    for (i=1;i<15;i=i+2){ //pari
       carattere=cod.substr(i,1);
       for (k=0;k<36;k++){
          if (carattere==caratteri[k]){
             somma=somma+pari[k];
             break;
          }
       }
    }
   resto=somma % 26;
   var lettera=String.fromCharCode(97+resto);            
   if (test != lettera){
      check=false;
      }   
   if (check==false){
     
	  return false;
   }
   else
   {
	//alert("codice fiscale corretto!!")
	lettermese= new Array("a","b","c","d","e","h","l","m","p","r","s","t");
	  
	codice=cod.substr(6,5);//alert(codice);
	var code = "";
	code += anno.substring(2, 4) + lettermese[mese-1];
	if (sesso == "M")
	code += giorno;
	else
	code += parseInt(40, 10) + parseInt(giorno, 10);
	if(code!=codice){
		return false;
	}
    }
   return true;
}
/* validazione codice fiscale FINE */

Form.ControllaPIVA=function (pi)
{
	var i=0;
	
	if( pi.length != 11 )
		return false;
	validi = "0123456789";
	for( i = 0; i < 11; i++ ){
		if( validi.indexOf( pi.charAt(i) ) == -1 )
			return false;
	}
	s = 0;
	for( i = 0; i <= 9; i += 2 )
		s += pi.charCodeAt(i) - '0'.charCodeAt(0);
	for( i = 1; i <= 9; i += 2 ){
		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
		if( c > 9 )  c = c - 9;
		s += c;
	}
	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) ){
		
		return false;
	}
	return true;
}

