//AKKAlireria.js

var Keys = unescape(location.search.substr(1)).split("&");
for (var _Id in Keys)
	Keys[_Id]=Keys[_Id].split("=");
location.Key = Keys;
function QueryString(_key)
	{
	var _QSvalue;
	for (var _Id in location.Key)
		if (location.Key[_Id][0]==_key)
			return location.Key[_Id][1];
	}
location.QS=QueryString;

function Layer(layerName,flag){
 var tmp;
 (flag) ? tmp="visible" : tmp="hidden";
 document.getElementById(layerName).style.visibility = tmp;
}

function LayerWrite(_layer, _testo){
 if (document.layers)
  with (document.layers[_layer].document) { open(); write(_testo); close(); }
 else if (document.getElementById)
  document.getElementById(_layer).innerHTML=_testo;
 else _layer.innerHTML=_testo
}

function Randomize(){
 _RandCicli=100+parseInt(10000*Math.random());
 var _RandArrlen=this.length;
 while (_RandCicli-- > 0)
  this.Swap(0,parseInt(_RandArrlen*Math.random()));
 return this;
}

Array.prototype.Randomize=Randomize;

function Swap(_sca,_scb){
 _temp=this[_swa];
 this[_swa]=this[_swb];
 this[_swb]=_temp;
 return this;
}

Array.prototype.Swap=Swap;

function Stringa(_num,_strinput){
 var _stringa="";
 var _str=this.length?this.toString():_strinput?_strinput.toString():" ";
 var _num=parseInt(_num);
 while (_num-->0)
  _stringa+=_str;
 return _stringa;
}

String.prototype.Stringa=Stringa;

function Trim(){ return this.replace(/\s+$|^\s+/g,""); }
function LTrim(){ return this.replace(/^\s+/,""); }
function RTrim(){ return this.replace(/\s+$/,""); }
	
String.prototype.Trim=Trim;	
String.prototype.RTrim=RTrim;	
String.prototype.LTrim=LTrim;	

function creaAttributo(element, attribute, value) {
 var elem;
 var attr;
 elem = document.getElementById(element);
 if(elem != null){
  attr = document.createAttribute(attribute);
  attr.value = value;
  elem.setAttributeNode(attr);
 }
}

function objForm(a){
 var obj_H=this;
// proprietà
 this.name=a;
 this.classe="req";
 this.classeErrore="req2";
 this.classeFocus="req3";
 this.classeBott="bott";
 this.classeBottFocus="bott_focus";
 this.classeBottOver="bott_over";
 this.campo;
 this.conferma=0;
 this.val_OK=true;
 this.flag=0;
// metodi gestione proprietà
 this.setClasse=function(a){ this.classe=a; };
 this.getClasse=function(){ return this.classe; };
 this.setClasseErrore=function(a){ this.classeErrore=a; };
 this.getClasseErrore=function(){ return this.classeErrore; };
 this.setClasseFocus=function(a){ this.classeFocus=a; };
 this.getClasseFocus=function(){ return this.classeFocus; };
 this.setClasseBott=function(a){ this.classeBott=a; };
 this.getClasseBott=function(){ return this.classeBott; };
 this.setClasseBottFocus=function(a){ this.classeBottFocus=a; };
 this.getClasseBottFocus=function(){ return this.classeBottFocus; };
 this.setClasseBottOver=function(a){ this.classeBottOver=a; };
 this.getClasseBottOver=function(){ return this.classeBottOver; };
 
 this.setFlagForm=function(a){ this.flag=a; };
 this.getFlagForm=function(){ return this.flag; };
 this.creaClasse=function(obj,cls){
   				  var str;
 				  var clsTmp=obj.className;
				 // alert(clsTmp)
				  if((clsTmp=="")||(clsTmp==null)){
				   return cls;
				  }
				  if(clsTmp.Trim().indexOf(" ")>0){
				   clsTmp=clsTmp.split(" ");
				   clsTmp[0]=cls;
				   str=clsTmp.join(" ");
				  }else{
				   str=cls;				  
				  } 
				  //alert(str);
				  return str;
 				 }
// metodi
 this.toForm=function(a,b){ var d = eval('document.'+a+'.'+b); d.focus(); };
 this.Focus=function(){
 			 //var inp=document.getElementsByTagName("input");
			 var inp=document[this.name].getElementsByTagName("input");
 			 for(var i=0;i<inp.length;i++){
			  if((inp[i].attributes["type"] == null) || ((inp[i].attributes["type"].value.toLowerCase()!="submit") && (inp[i].attributes["type"].value.toLowerCase()!="button") && (inp[i].attributes["type"].value.toLowerCase()!="reset"))){
			   inp[i].onfocus=function(){ this.className=obj_H.creaClasse(this,obj_H.getClasseFocus()); }
			   inp[i].onblur=function(){ this.className=obj_H.creaClasse(this,obj_H.getClasse()); }
			  }else{
			   //inp[i].onfocus=function(){ this.className=obj_H.getClasseBottFocus(); };
			   //inp[i].onblur=function(){ this.className=obj_H.getClasseBott(); };
			   //inp[i].onmouseover=function(){ this.className=obj_H.getClasseBottOver(); };
			   //inp[i].onmouseout=function(){ this.className=obj_H.getClasseBott(); };
			   inp[i].onfocus=function(){ this.className=obj_H.creaClasse(this,obj_H.getClasseBottFocus()); }
			   inp[i].onblur=function(){ this.className=obj_H.creaClasse(this,obj_H.getClasseBott()); }
			   inp[i].onmouseover=function(){ this.className=obj_H.creaClasse(this,obj_H.getClasseBottOver()); }
			   inp[i].onmouseout=function(){ this.className=obj_H.creaClasse(this,obj_H.getClasseBott()); }
			  }
			 }
 			 //inp=document.getElementsByTagName("select");
			 inp=document[this.name].getElementsByTagName("select");
 			 for(var i=0;i<inp.length;i++){
			  //inp[i].onfocus=function(){ this.className=obj_H.getClasseFocus(); }
			  //inp[i].onblur=function(){ this.className=obj_H.getClasse(); }
			  inp[i].onfocus=function(){ this.className=obj_H.creaClasse(this,obj_H.getClasseFocus()); }
			  inp[i].onblur=function(){ this.className=obj_H.creaClasse(this,obj_H.getClasse()); }
			 }
 			 //inp=document.getElementsByTagName("textarea");
			 inp=document[this.name].getElementsByTagName("textarea");
 			 for(var i=0;i<inp.length;i++){
			 // inp[i].onfocus=function(){ this.className=obj_H.getClasseFocus(); }
			 // inp[i].onblur=function(){ this.className=obj_H.getClasse(); }
			  inp[i].onfocus=function(){ this.className=obj_H.creaClasse(this,obj_H.getClasseFocus()); }
			  inp[i].onblur=function(){ this.className=obj_H.creaClasse(this,obj_H.getClasse()); }
			 }
 			};
  this.start=function(){
   			 if(this.campo!=null) this.toForm(this.name,this.campo);
  			 if(document.getElementsByTagName) this.Focus();
  			 if(!document.getElementById || !document.createElement) return;
			 document[this.name].onsubmit=function(){
  			 if(obj_H.validateForm()){
			 // document[this.name].submit();
			   return true;
			 }else{ 
    		   alert("ATTENZIONE: non tutti i campi sono stati compilati correttamente.");
    		   return false;
 			 }
 			}
 		   };
 this.validateField=function(field, func){
  					 if((field.attributes["type"] != null) && ((field.attributes["type"].value.toLowerCase()=="submit") || (field.attributes["type"].value.toLowerCase()=="button") || (field.attributes["type"].value.toLowerCase()=="reset"))) return true;
 					 var formato,n,label;
					 n=-1;
					 if(!this.flag){
 					  label=field.parentNode;
					  n=label.innerHTML.indexOf("*");				 
					 }else{
					  label=field;
					  if((field.attributes["AKKA-required"] != null) && (field.attributes["AKKA-required"].value))  n=1;
					 }
					 this.creaClasse(label,this.classeErrore)
					 label.className=this.creaClasse(label,this.classe);	
 					 if (field.attributes["AKKA-maxlength"] != null){
					  if (field.value.length > field.attributes["AKKA-maxlength"].value){
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					 }
					 if (field.attributes["AKKA-minlength"] != null) {
					  if ((field.value.length < field.attributes["AKKA-minlength"].value) && (field.value.length != 0)) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					 }
					 if (field.attributes["AKKA-regexp"] != null) {
					  var re = new RegExp("^" + field.attributes["AKKA-regexp"].value + "$")
					  if (field.value.match(re) == null) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					 }
					 if (field.attributes["AKKA-type"] != null) {
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "numeric") && isNaN(field.value) && (field.value.Trim()!="")) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "email") && !this.isEmail(field.value) && (field.value.Trim()!="")) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "cap") && !this.isCap(field.value) && (field.value.Trim()!="")){
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "piva") && !this.isPiva(field.value) && (field.value.Trim()!="")) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "codicefiscale") && !this.isCodiceFiscale(field.value) && (field.value.Trim()!="")) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "telefono") && !this.isTel(field.value) && (field.value.Trim()!="")) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "file") && !this.isFile(field.value) && (field.value.Trim()!="")) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					  if(field.attributes["AKKA-type"].value.toLowerCase() == "password") this.conferma=field.value.Trim();
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "password") && !this.isPassword(field.value)) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "user") && !this.isUser(field.value)) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "textarea")) {
					   if(field.value.Trim()=="")  field.value="-";
					  }
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "conferma_password") && (!this.isPassword(field.value.Trim()) || (field.value.Trim()!=this.conferma) )) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   alert("ATTENZIONE! Non hai digitato correttamente la password.");
					   this.conferma=0;
					   return false;
					  }
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "675")) {
					   if(!field.checked){
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					    alert("ATTENZIONE! Non hai dato il consenso al trattamento dei tuoi dati personali.");
						return false;
					   }
					  }
					  (field.attributes["AKKA-dateformat"] !=null ) ? formato=field.attributes["AKKA-dateformat"].value.toLowerCase() : formato=null;
					  if((field.attributes["AKKA-type"].value.toLowerCase() == "data") && !this.isDate(field.value,formato) && (field.value.Trim()!="")) {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   return false;
					  }
					 }
					 if(n!=-1){
					  if(field.value.Trim()=="") {
					   //label.className=this.classeErrore;
					   label.className=this.creaClasse(label,this.classeErrore);	
					   //alert(field.name+" n:"+n);
					   return false;
					  }
					 }
					 if(func!=null){ return eval(func); }else{ return true; }
 			   		};
 this.validateForm=function(func){
 					var arr=new Array("input","select","textarea");
					this.val_OK=true;
 					for(var j=0;j<arr.length;j++){
					 var fields = document[this.name].getElementsByTagName(arr[j]);
					 var l = fields.length;
					 var valid = false;
					 for(var i=0;i<l;i++){
					  valid = this.validateField(fields[i]);
					  if(!valid) this.val_OK=false;
					 }
					 if((func!=null)&&(!eval(func))) this.val_OK=false;				 
					}
					return this.val_OK;
 			       };
 this.isEmail=function(emailStr){
 			   var nMaxCaratteriEstensione=6;
 			   var emailPat=/^(.+)@(.+)$/
 			   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
 			   var validChars="\[^\\s" + specialChars + "\]"
 			   var quotedUser="(\"[^\"]*\")";
 			   var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
 			   var atom=validChars + '+';
			   var word="(" + atom + "|" + quotedUser + ")";
			   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
			   var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
			   var matchArray=emailStr.match(emailPat);
			   if(matchArray==null){ return false; }
			   var user=matchArray[1];
			   var domain=matchArray[2];
			   if(user.match(userPat)==null){ return false; }
			   var IPArray=domain.match(ipDomainPat);
			   if(IPArray!=null){
  				for(var i=1;i<=4;i++){
  				 if(IPArray[i]>255){ return false; }
  				}
  				return true;
			   }
			   var domainArray=domain.match(domainPat);
			   if(domainArray==null){ return false; }
			   var atomPat=new RegExp(atom,"g");
			   var domArr=domain.match(atomPat);
			   var len=domArr.length;
			   if(domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>nMaxCaratteriEstensione){ return false; }
			   if(len<2){ var errStr="This address is missing a hostname!"; return false; }
			   return true;
			  }
 this.isFile=function(a){
 			  var tmp=a.split("\\");
 			  var n=tmp[tmp.length-1].split(".");
			  if (n.length!=2) return false
			  else return true
 			 }
 this.isPassword=function(a){
 				  var re = /^[^ '"%#]{5,15}$/;
				  return re.test(a);
 				 }
 this.isUser=function(a){
 				  var re = /^[^ '"%#]{5,25}$/;
				  return re.test(a);
 				 }
 this.isCap=function(a){
 			 var r1=new RegExp(/^[0-9]{5}$/);
 			 return r1.test(a);
			};
 this.isPiva=function(a){
 			 var r1=new RegExp(/^[0-9]{11}$/);
 			 return r1.test(a);
			};
 this.isTel=function(a){
 			 var r1=new RegExp(/^\+?\d[0-9 .]{7,12}\d$/);
 			 return r1.test(a);
			};
 this.isDate=function(DateString, DateFormat) {
  						var match, tmpDate; var gg='',mm='',aa=''; var RE = new Array();
  						RE['it'] = /^([0-3]\d)[\/\.]([01]\d)[\/\.](\d{4})$/g
  						RE['en'] = /^([01]\d)[\/\.]([0-3]\d)[\/\.](\d{4})$/g
  						RE['gen'] = /^(\d{4})[\/\.]([01]\d)[\/\.]([0-3]\d)$/g
						if(DateFormat==null){ alert("ATTENZIONE! Manca il formato che specifica la data."); return false; } 
  						if(!(match=DateString.match(RE[DateFormat]))) return false;
						match = DateString.split(/[\/\.]/); 
  						switch(DateFormat) {
    					 case "it": gg = match[0]; mm = parseInt(match[1])-1; aa = match[2]; break;
    					 case "en": mm = parseInt(match[0])-1; gg = match[1]; aa = match[2]; break;
    					 case "gen": aa = match[0]; mm = parseInt(match[1])-1; gg = match[2]; break;
  						}
  						tmpDate = new Date(aa, mm, gg);
						return (tmpDate.getMonth()==mm) && (tmpDate.getDate()==gg) && tmpDate.getFullYear()==aa; 
					   };
 this.isCodiceFiscale=function(cfins){
  					   var cf = cfins.toUpperCase();
					   var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
   					   if (!cfReg.test(cf)) return false;
   					   var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
					   var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
					   var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
					   var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
					   var s = 0;
					   for( i = 1; i <= 13; i += 2 )
      					s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
   					   for( i = 0; i <= 14; i += 2 )
     					s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
   					   if ( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
     					return false;
   					   return true;
					  }
}

function ctrlElimina(indirizzo){
 var a= confirm("Attenzione! Se siete sicuri di voler eliminare questi dati premete OK o ANNULLA se non siete sicuri.")
 if(a) location.href=indirizzo;
}

function ctrlElinimaReturn(){
 var tmp;
 var a= confirm("Attenzione! Se siete sicuri di voler eliminare questi dati premete OK o ANNULLA se non siete sicuri.")
 if(a) tmp= true;
 else tmp= false;
 return tmp;
}

function ctrlModifica(mod){
 var a= confirm("Attenzione! Se siete sicuri di voler modificare questi dati premete OK o ANNULLA se non siete sicuri.")
 if(a) mod.submit();
}

//----- shiftHighlight(keyCode,targ) -----------------------------------------------------------
var timerid     = null;
var matchString = "";
var mseconds    = 2000;
var target;
var w3c_H=(document.getElementById)? true: false;
var ie5_H=(w3c_H && document.all)? true : false;
var ns6_H=(w3c_H && (navigator.appName=="Netscape"))? true: false;

function shiftHighlight(keyCode,targ){
 if (!ie5_H){
  if(keyCode!=9){ 
   clearTimeout(timerid);
   target=targ
   keyVal = String.fromCharCode(keyCode);
   matchString = matchString + keyVal;
   timerid=setTimeout("posiziona()",1800)
  }else{
   target.blur();
  }
 }
}

function posiziona(){
 var id;
 elementCnt  = target.length - 1;
 for (i = elementCnt; i > 0; i--){
  selectText = target.options[i].text.toLowerCase();
  if (selectText.substr(0,matchString.length) == matchString.toLowerCase()){
   target.options[i].selected = true;
   //break;
  }
 }

 clearTimeout(timerid);
 timerid=null;
 matchString="";
}


function visErr(a){
 switch(a){
  case 0: alert("ERRORE! Collegamento ad URL inesistente. Contattare l'amministratore di sistema.");
  		  break;
  case 1: alert("ATTENZIONE! Non hai compilato tutti i campi obbligatori.");
  		  break;
  case 2: alert("ATTENZIONE! Mail non valida.");
  		  break;
  case 3: alert("ATTENZIONE! C.A.P. non valido.");
  		  break;
  case 4: alert("ATTENZIONE! N° di P.IVA non valido.");
  		  break;
  case 5: alert("ATTENZIONE! Link errato. Contattare l'amministratore di sistema e segnalare l'errore.");
  		  break;
  case 6: alert("E' necessario autorizzare il trattamento dei dati personali.");
  		  break;
  case 7: alert("ATTENZIONE! Password digitata non correttamente o più corta di 8 caratteri.");
  		  break;
  case 8: alert("ATTENZIONE! Lo USER da te scelto è già usato per un altro soggetto.");
  		  break;
  case 9: alert("ATTENZIONE! La Partita IVA non è corretta.");
  		  break;
  case 10: alert("ATTENZIONE! Nella data bisogna inserire almeno il MESE e L'ANNO.");
  		  break;
  case 11: alert("ATTENZIONE! Non puoi inserire un testo più lungo di 255 caratteri.");
  		  break;
  case 12: alert("ATTENZIONE! Esiste già un file con quel nome.");
  		   break;
  case 13: alert("ATTENZIONE! Numero di telefono non valido.\nE' possibile inserire solo numeri separati da \".\" ed usare il simbolo \"+\"");
  		  break;
  case 14: alert("ATTENZIONE! Per un corretto salvataggio dei file non usare spazi ed utilizzare solo caratteri numerici (0-9), caratteri alfanumerici (a-z) maiuscoli e minuscoli ed i simboli \".\" e \"_\" e \"-\".");
  		  break;
  case 15: alert("ATTENZIONE! Per finire la registrazione bisogna accettare i termini di contratto.");
  		  break;
  case 16: alert("ATTENZIONE! Per finire la registrazione bisogna acconsentire alla privacy.");
  		  break;
  case 17: alert("ERRORE! Il numero dei dati è diverso dal numero di campi.");
  		   break;  
  case 18: alert("ATTENZIONE! Il separatore di stringa ed il carattere sostituito alla virgola sono uguali.\nSi possono verificare errori.");
  		   break;    
  case 19: alert("ATTENZIONE! Non hai inserito tutti i dati per il LOGIN.");
  		   break;  
  case 20: alert("ATTENZIONE! Non hai selezionato la marca del ricambio oppure non hai ancora confermato l'inserimento della marca.");
  		   break;  
  case 21: alert("ATTENZIONE! Se vuoi inserire un nuovo ordine premi prima nuovo.");
  		   break;  
  case 22: alert("ATTENZIONE! Seleziona prima l'ordine.");
  		   break;  
  case 23: alert("ATTENZIONE! Formato prezzo non valido. Inserire prezzo nella forma \" XX,XX \".");
  		   break; 
  case 24: alert("ATTENZIONE! Errore nella trasmissione dati al DB. Provare a eseguire nuovamente l'operazione e, nel caso l'errore persista, contattare l'amministratore di sistema.");
  		   break;  
  case 25: alert("Operazione eseguita con successo.");
  		   break;  
  case 26: alert("ATTENZIONE! Non hai selezionato l\'oggetto da eliminare.");
  		   break;  
  case 27: alert("ATTENZIONE! Dato non valido.");
  		   break;  
  case 28: alert("ATTENZIONE! Selezionare almeno una tipologia di società.");
  		   break;  
  default: alert("Errore nella gestione errori! Contattare l'amministratore di sistema.");
  		   break;
 }
}