var BACKUP=new Array();


function esisteBackup(nome){
  var c=false;
  for(var i in BACKUP){
		if(i==nome){
  		c=true;
  	}
  }
  return c;
}


function stampaBackup(){
  var c=false;
  var ris="";
	for(var i in BACKUP){
		ris+=i+"-->"+BACKUP[i]+"\n";
  }
  alert(ris);
  return c;
}



function execBackup(param){
	if(param!=""){
  	insBackup('form1','');
	}
}


function paramBackup(){
  creaBackup("form1","");
  var ris="";
  for(var i in BACKUP){
  	ris+=i+"SEP_ID";
  	if(BACKUP[i]!=""){
  		ris+=BACKUP[i]+"SEP_CAMPO";
  	}else{
  		ris+="CAMPO_VUOTO"+"SEP_CAMPO";
  	}
  }
  //alert(ris);
	return ris;
}






function creaBackup(id_form,filtro){
	BACKUP=new Array();
	var obj=document.getElementById(id_form);
	if(obj){
   	var campi=document.getElementsByTagName('input');
   	var textarea=document.getElementsByTagName('textarea');
   	var select=document.getElementsByTagName('select');
   	//alert('numel'+campi.length);
	for(var i=0;i<campi.length;i++){
		  			//alert(campi[i].id);
		switch(campi[i].type){
			case "text":
				if(campi[i].id){
   					BACKUP[campi[i].id]=document.getElementById(campi[i].id).value;
				}
   			break;
   			case "hidden":
				if(campi[i].id){
   					BACKUP[campi[i].id]=document.getElementById(campi[i].id).value;
				}
   			break;
   			case "file":
				if(campi[i].id){
   					BACKUP[campi[i].id]=document.getElementById(campi[i].id).value;
				}
   			break;
   			case "radio":
				if(campi[i].id){
					if(document.getElementById(campi[i].id).checked){
						BACKUP[campi[i].id]=document.getElementById(campi[i].id).value;
						//alert(campi[i].id+"  "+document.getElementById(campi[i].id).value);
					}
				}
  			break;
  			case "checkbox":
				if(campi[i].id){
					if(document.getElementById(campi[i].id).checked){
						BACKUP[campi[i].id]=document.getElementById(campi[i].id).value;
					}
				}
  			break;
  		}
  	}
  	for(var j=0;j<textarea.length;j++){
  		BACKUP[textarea[j].id]=document.getElementById(textarea[j].id).value;
  	}
  	for(var j=0;j<select.length;j++){
  		BACKUP[select[j].id]=document.getElementById(select[j].id).value;
  		//alert(select(j).value+' '+BACKUP[select(j).id]);
  	}
  }
  var obj=document.getElementById("campi_filtri");
  if(obj){
  	var campi=obj.getElementsByTagName('input');
    for(var i=0;i<campi.length;i++){
   		if(campi[i].type=="text"){
    		BACKUP["filtri@"+campi[i].id]=document.getElementById(campi[i].id).value;
    	}
   	}
  }
  creaBackupCat();
  //alert('backup effettuato');
}	




function creaBackup2(id_form,filtro){
	BACKUP=new Array();
	var obj=document.getElementById(id_form);
	if(obj){
   	var campi=obj.getElementsByTagName('input');
   	var textarea=obj.getElementsByTagName('textarea');
   	var select=obj.getElementsByTagName('select');
   	for(var i=0;i<campi.length;i++){
  		switch(campi[i].type){
  			case "text":
   				BACKUP[campi[i].id]=campi[i].value;
   			break;
   			case "hidden":
   				BACKUP[campi[i].id]=campi[i].value;
   			break;
   			case "file":
   				BACKUP[campi[i].id]=campi[i].value;
   			break;
   			case "radio":
   				if(campi[i].checked){
   					BACKUP[campi[i].id]=campi[i].value;
   				}
  			break;
  			case "checkbox":
   				if(campi[i].checked){
   					BACKUP[campi[i].id]=campi[i].value;
   				}	
  			break;
  		}
  	}
  	for(var j=0;j<textarea.length;j++){
  		BACKUP[textarea[j].id]=textarea[j].value;
  	}
  	for(var j=0;j<select.length;j++){
  		BACKUP[select[j].id]=select[j].value;
  		//alert(select(j).value+' '+BACKUP[select(j).id]);
  	}
  }
  var obj=document.getElementById("campi_filtri");
  if(obj){
  	var campi=obj.getElementsByTagName('input');
    for(var i=0;i<campi.length;i++){
   		if(campi[i].type=="text"){
    		BACKUP["filtri@"+campi[i].id]=campi[i].value;
    	}
   	}
  }
  creaBackupCat();
}	







function creaBackupCat(){
	var tabella=document.getElementById("elenco_categorie");
	if(tabella){
		for(var i=0;i<tabella.rows.length;i++){
  		if(tabella.rows[i].cells[0].innerHTML!="&nbsp;"){
  			BACKUP[tabella.rows[i].getAttribute("id")]=tabella.rows[i].style.display;
  		}
   	}
   	var app=getOpCat();  	
    BACKUP["opcat"]=app[0];
    BACKUP["opgrp"]=app[1];
    BACKUP["currcat"]=getCurrCat();
    BACKUP["currgrp"]=getCurrGrp();
  }
}


function insBackupCat(){
	var tabella=document.getElementById("elenco_categorie");
	if(tabella){
		riprFiglio(BACKUP["currcat"],BACKUP["currcat"]);
  	for(var i=0;i<tabella.rows.length;i++){
			if(tabella.rows[i].cells[0].innerHTML!="&nbsp;" && tabella.rows[i].style.display=='none'){
				tabella.rows[i].style.display=BACKUP[tabella.rows[i].getAttribute("id")];
			}
   	}
   	//riprFiglio(BACKUP["currcat"],BACKUP["currcat"]);
   	if(document.getElementById(BACKUP["currgrp"]+"@g")){
		$("#"+BACKUP["currgrp"]+"@g").trigger("click");
   		//document.getElementById(BACKUP["currgrp"]+"@g").click();
   	}
 	}
}




function insBackup(id_form,filtro){

var obj=document.getElementById(id_form);
 	var campi=document.getElementsByTagName('input');
 	var textarea=document.getElementsByTagName('textarea');
 	var select=document.getElementsByTagName('select');
 	for(var i=0;i<campi.length;i++){
		switch(campi[i].type){
 			case "text":
			if(campi[i].id){
 				document.getElementById(campi[i].id).value=BACKUP[campi[i].id];
			}
 			break;
 			case "hidden":
				if(campi[i].id){
 					document.getElementById(campi[i].id).value=BACKUP[campi[i].id];
				}
 			break;
 			case "file":
				if(campi[i].id){
 					document.getElementById(campi[i].id).value=BACKUP[campi[i].id];
				}
 			break;
 			case "radio":
				if(campi[i].id){
					if(document.getElementById(campi[i].id).value==BACKUP[campi[i].id]){
						 document.getElementById(campi[i].id).checked=true;
						if(campi[i].id=="radio_entita"){
							cambia_cfpi(document.getElementById("dati_generali"),document.getElementById(campi[i].id).value);
							 
						}
					}
				}
			break;
			case "checkbox":
				if(campi[i].id){
					if(document.getElementById(campi[i].id).value==BACKUP[campi[i].id]){
						document.getElementById(campi[i].id).checked=true;
					}	
				}
			break;
		}
	}
	for(var j=0;j<textarea.length;j++){
		document.getElementById(textarea[j].id).value=BACKUP[textarea[j].id];
	}
	for(var j=0;j<select.length;j++){
		if(select[j].id!=filtro){
			document.getElementById(select[j].id).value=BACKUP[select[j].id];
		}
	}


var obj=document.getElementById("campi_filtri");
  if(obj){
  	var campi=obj.getElementsByTagName('input');
	for(var i=0;i<campi.length;i++){
		if(campi[i].type=="text"){
    		campi[i].value=BACKUP["filtri@"+campi[i].id];
    		if(campi[i].value!=''){
				if(document.getElementById(campi[i].id)){
				document.getElementById(campi[i].id).onkeyup();
					}else{

				}
				//document.getElementById(campi[i].id).onblur();
    		}
    	}
   	}
  }
  insBackupCat();
}	






function insBackup2(id_form,filtro){
	var obj=document.getElementById(id_form);
 	var campi=obj.getElementsByTagName('input');
 	var textarea=obj.getElementsByTagName('textarea');
 	var select=obj.getElementsByTagName('select');
 	for(var i=0;i<campi.length;i++){
 		switch(campi[i].type){
 			case "text":
 				campi[i].value=BACKUP[campi[i].id];
 			break;
 			case "hidden":
 				campi[i].value=BACKUP[campi[i].id];
 			break;
 			case "file":
 				campi[i].value=BACKUP[campi[i].id];
 			break;
 			case "radio":
				if(campi[i].value==BACKUP[campi[i].id]){
					 campi[i].checked=true;
 					if(campi[i].id=="radio_entita"){
 						cambia_cfpi(document.getElementById("dati_generali"),campi[i].value);
						 
					}
 				}
			break;
			case "checkbox":
 				if(campi[i].value==BACKUP[campi[i].id]){
 					campi[i].checked=true;
 				}	
			break;
		}
	}
	for(var j=0;j<textarea.length;j++){
		textarea[j].value=BACKUP[textarea[j].id];
	}
	for(var j=0;j<select.length;j++){
		if(select[j].id!=filtro){
			select[j].value=BACKUP[select[j].id];
			/*alert('valore= '+select(j).value+' backup='+BACKUP[select(j).id]);
			select(j).onchange();*/
		}
	}
  var obj=document.getElementById("campi_filtri");
  if(obj){
  	var campi=obj.getElementsByTagName('input');
    for(var i=0;i<campi.length;i++){
   		if(campi[i].type=="text"){
    		campi[i].value=BACKUP["filtri@"+campi[i].id];
    		if(campi[i].value){
    			document.getElementById(campi[i].id+'_b').click();
    		}
    	}
   	}
  }
  insBackupCat();
}	







function sleep(n)
{
    var now = new Date();
    var exitTime = now.getTime() + (n*1000);
    while (true) {
        now = new Date();
            if (now.getTime() > exitTime) return;
    }
}


function setEsegui(form,dest,mod,param_dest,backup,ripr){
	
	if(dest!="torna"){
		naviga(form,dest,mod,param_dest,backup,ripr);
	}else{
		if(ripr){
			document.getElementById('ripristino').value=ripr;
		}
		torna(form,backup);
	}
	document.getElementById('div_esegui').onclick="";
	document.getElementById('div_esegui').click();
}


function execSubmit(param){
		
	if(param){
		var app=new Array("page","mod","origine","mod_origine","param_origine","backup","ripristino","flag_ripr","codCat","codGrp");
		for(var i=0;i<app.length;i++){
			document.getElementById(app[i]).id=app[i]+'_canc';
			switch(app[i]){
			case "mod":
				if(document.getElementById("mod_canc").value=="ins" && document.getElementById("page_canc").value=="gestore_Categoria"){
					document.getElementById(param).innerHTML+='<input type="hidden" name="'+app[i]+'" id="'+app[i]+'" value="ins_g"/>';
				}else{
					document.getElementById(param).innerHTML+='<input type="hidden" name="'+app[i]+'" id="'+app[i]+'" value="'+document.getElementById(app[i]+'_canc').value+'"/>';
				}									
			break;
			case "origine":
				document.getElementById(param).innerHTML+='<input type="hidden" name="'+app[i]+'" id="'+app[i]+'" value="'+"page="+document.getElementById('origine_canc').value+"&mod="+document.getElementById('mod_origine').value+document.getElementById('param_origine').value+'"/>';
			break;
			case "mod_origine":
				document.getElementById(param).innerHTML+='<input type="hidden" name="'+app[i]+'" id="'+app[i]+'" value="submit"/>';
			break;
			case "param_origine":
				document.getElementById(param).innerHTML+='<input type="hidden" name="'+app[i]+'" id="'+app[i]+'" value="submit"/>';
			break;
			default:
				document.getElementById(param).innerHTML+='<input type="hidden" name="'+app[i]+'" id="'+app[i]+'" value="'+document.getElementById(app[i]+'_canc').value+'"/>';
			break;
			}
		}
	}else{
  	document.getElementById('origine').value="page="+document.getElementById('origine').value+"&mod="+document.getElementById('mod_origine').value+document.getElementById('param_origine').value;
  	document.getElementById('mod_origine').value="submit";
  	document.getElementById('param_origine').value="submit";
	}
	return true;
}

function setOrigine(pagina,mod,param){
	document.getElementById("origine").value=pagina;
	document.getElementById("mod_origine").value=mod;
	document.getElementById("param_origine").value=param;
}

function setRipristino(pagina){
	document.getElementById("ripristino").value=pagina;
}


function naviga(id_form,dest,mod_dest,param_dest,backup,ripristino){
	var opt="page="+dest;
	if(mod_dest){
		opt+="&mod="+mod_dest;
	}
	if(param_dest){
		opt+="&"+param_dest;
	}
	document.getElementById(id_form).action="index.php?"+opt;
	if(backup){
//		alert("effettuare backup");
		document.getElementById("backup").value=paramBackup();
//		alert('BACKUP= '+document.getElementById("backup").value);
  }else{
  	document.getElementById("backup").value="";
	}
	document.getElementById("mod").value="";
	document.getElementById("page").value=dest;
	if(ripristino){
		document.getElementById("flag_ripr").value=ripristino;
	}
//	alert(document.getElementById("div_esegui").innerHTML);
//	alert(document.getElementById(id_form).action);
	return true;
}

function torna(id_form,flag_b){
	document.getElementById(id_form).action="index.php?"+document.getElementById('ripristino').value;
	document.getElementById("flag_ripr").value="torna";
	document.getElementById("mod").value="";
	document.getElementById("page").value="";
	if(flag_b){
		document.getElementById("backup").value="torna";
	}
//	alert(document.getElementById("div_esegui").innerHTML);
//	alert(document.getElementById(id_form).action);
	return true;
}


function valida_new(nomeForm,param){
/*	document.getElementById('origine').value="page="+document.getElementById('origine').value+"&mod="+document.getElementById('mod_origine').value+document.getElementById('param_origine').value;
	document.getElementById('mod_origine').value="submit";
	document.getElementById('param_origine').value="submit";*/
	var err=new Array(),errvalida="";
	var res=true;
	var form=document.getElementById(nomeForm);
	var campi=document.getElementsByTagName('input');
	var textarea=document.getElementsByTagName('textarea');
	var tagselect=document.getElementsByTagName('select');
	var k=0; 	
	var app;
	for(var i=0;i<campi.length;i++){
		if(campi[i].type=="text"){
			app=document.getElementById(campi[i].id);
			app.style.border="1px solid green";
			if(campi[i].getAttribute("obbligatorio")=="si" && campi[i].value==""){
				err[k]=new Array();
				err[k]["nome"]=campi[i].id;
				err[k]["errore"]="campo obbligatorio";
				app.style.border="1px solid red";
				k++;
			}else{
				if(campi[i].getAttribute("valida")!=undefined){
  				errvalida=validaCampo(campi[i].getAttribute("valida"),campi[i].id);
					 if(errvalida!=""){
  	 				err[k]=new Array();
  					err[k]["nome"]=campi[i].id;
  					err[k]["errore"]=errvalida;
  					app.style.border="1px solid red";
  				 	k++;
  				}
  			}
	 		}
		}
		
	}
	for(var i=0;i<textarea.length;i++){
		app2=document.getElementById(textarea[i].id);
		app2.style.border="1px solid green";
		if(textarea[i].getAttribute("obbligatorio")=="si" && textarea[i].value==""){
			err[k]=new Array();
			err[k]["nome"]=textarea[i].id;
			err[k]["errore"]="campo obbligatorio";
			app2.style.border="1px solid red";
			k++;
		}
	}
	
	for(var i=0;i<tagselect.length;i++){
		app3=document.getElementById(tagselect[i].id);
		app3.style.border="1px solid green";
		if(tagselect[i].getAttribute("obbligatorio")=="si" && tagselect[i].value=='-1'){
			err[k]=new Array();
			err[k]["nome"]=tagselect[i].id;
			err[k]["errore"]="campo obbligatorio";
			app3.style.border="1px solid red";
			k++;
		}
	}
	if(!k){
		/*document.getElementById('origine').value="page="+document.getElementById('origine').value+"&mod="+document.getElementById('mod_origine').value+document.getElementById('param_origine').value;
		document.getElementById('mod_origine').value="submit";
		document.getElementById('param_origine').value="submit";*/
		document.getElementById("backup").value=paramBackup();
		execSubmit(param);
		return true;
	}else{
		stampaErrori(err);
		return false;
	}
}




function isInt(x) { 
	var y=parseInt(x); 
	if (isNaN(y)){
		return false;
	}
	return x==y && x.toString()==y.toString(); 
}



function validaCampo(tipo,id){
	
	var value=document.getElementById(id).value;
	switch(tipo){
	//-------------------------------TESTO--------------------------------	
		case 'stdTxt':
			if(value==""){return "";}
			var y=parseInt(value); 
    	if(!isNaN(y)){
    		return "il campo non può contenere numeri\n";
    	}
    	return "";
		break;
	//-------------------------------NUMERO INTERO--------------------------------	
		case 'intNum':
			if(value==""){return "";}
			if(!isInt(value)){
				return "il campo "+id+" deve essere un numero intero";
			}
			return "";
		break;
	//-------------------------------NUMERO--------------------------------	
		case 'Num':
			if(value==""){return "";}
			if(isNaN(value)){
				return "il campo "+id+" deve essere numerico";
			}
			return "";
		break;
	//-------------------------------PARTITA IVA---------------------------
		case 'pi':
		if(value==""){return "";}
		if( value.length != 11 )
        return "il campo Partita I.V.A. deve essere composto da 11 cifre\n";
    validi = "0123456789";
    for( i = 0; i < 11; i++ ){
        if( validi.indexOf( value.charAt(i) ) == -1 )
            return "il campo Partita I.V.A. deve contenere solo numeri";
    }
    s = 0;
    for( i = 0; i <= 9; i += 2 )
        s += value.charCodeAt(i) - '0'.charCodeAt(0);
    for( i = 1; i <= 9; i += 2 ){
        c = 2*( value.charCodeAt(i) - '0'.charCodeAt(0) );
        if( c > 9 )  c = c - 9;
        s += c;
    }
    if( ( 10 - s%10 )%10 != value.charCodeAt(10) - '0'.charCodeAt(0) )
        return "il campo Partita I.V.A. non è valido\n";
    return '';
		break;
	//-------------------------------CODICE FISCALE------------------------
		case 'cf':
			var validi, i, s, set1, set2, setpari, setdisp;
			if(value==""){return "";}
      cf = value.toUpperCase();
      if( value.length != 16 )
          return "il campo Codice Fiscale deve essere composto da 16 caratteri\n";
      validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
      for( i = 0; i < 16; i++ ){
          if( validi.indexOf( cf.charAt(i) ) == -1 )
              return "il campo Partita I.V.A. deve contenere solo lettere e numeri\n";
      }
      set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
      set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
      setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
      setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
      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 "il campo Codice Fiscale non è valido\n";
      return "";
		break;
	//-------------------------------TELEFONO------------------------------
		case 'tel':
			if(value==""){return "";}
			if(!value.match(/^\+?\d[0-9 .]{7,12}\d$/)){
				return "il campo numero di telefono non è valido\n";
			}
			return "";
		break;
	//-------------------------------MAIL----------------------------------
		case 'mail':
			if(value==""){return "";}
			if(!value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/)){
				return "il campo E-mail non è valido\n";
			}
			return "";
		break;
	//-------------------------------TEXTAREA------------------------------
		case 'textArea':
			return "";
		break;
	//-------------------------------INDIRIZZO-----------------------------
		case 'ind':
			return "";
		break;
	//-------------------------------PROVINCIA-----------------------------
		case 'prov':
			if(value==""){return "";}
			if(value.length!=2){return "il campo provincia deve essere composto da due lettere";}
			if(!isNaN(parseInt(value))){return "il campo provincia non può contenere numeri\n";}
			return "";    	
		break;
	//-------------------------------CAP-----------------------------------
		case 'cap':
			if(value==""){return "";}
			if(value.length!=5){return "il campo C.A.P. deve essere composto da cinque cifre";}
			if(isNaN(value)){return "il campo C.A.P. deve essere composto solo da cifre\n";}
			return "";    	
		break;
	//-------------------------------CODICE--------------------------------
		case 'CODICE':
		return "";
		break;
	//-------------------------------NOME----------------------------------
		case 'NOME':
		return "";
		break;

	}
}
			
function stampaErrori(err){
  var stampa="",app;
  for(var i=0;i<err.length;i++){
  	stampa+=err[i]["nome"]+" --> "+err[i]["errore"]+"\n";
  }
  app=document.getElementById(err[0]["nome"]);
  app.focus();
  alert(stampa);
}


