
h_art.showHideError = function(rowId,displayID,status,errMessage) {
    var theRow = h_art.byId(rowId);
    var theDisplay = h_art.byId(displayID);

    switch(status){
        case 'on':
            theRow.className = 'visibleRow';
            theDisplay.innerHTML = errMessage;
        break;
        case 'off':
            theRow.className = 'hiddenRow';
            theDisplay.innerHTML = '';
        break;
    }
}

h_art.setCurrentCursor = function(self) {
    for (var i = 0; i < self.form[self.name].length; ++i) {
        var radio = self.form[self.name][i];
        var imgId = radio.id + '.punta';
        var img = h_art.byId(imgId);
        if (radio.checked) {
            img.style.visibility = 'visible';
            var hidden = this.byId(self.name+'.hidden');
            hidden.value = radio.value;
        } else {
            img.style.visibility = 'hidden';
        }
    }
}

h_art.showHideListaAgenzie = function(inputObj) {
    var listaAgenzie = h_art.byId('listaAgenzieRow');;

    if(inputObj.checked){
        listaAgenzie.className = 'visibleRow';
    }else{
        listaAgenzie.className = 'hiddenRow';
    }
}

/**
 * implementa il controllo "almeno-una-tra" che prevede di definire
 * un insieme di garanzie tra le quali l'utente e` obbligato a scieglierne
 * almeno una. questo controllo si aggiunge a quelli implementati nel file
 * garanzie.js (non di competenza di h-art).
 */
h_art.checkGaranzie = function(btn, listaGaranzie) {
    var totGaranzie = listaGaranzie.length;
    var currGar;
    var totCurrGar;
    var currElement;
    var almenoUna = false;

	if(listaGaranzie[0].length == 0) {
		//non c'è nessuna garanzia da verificare
		return true;
	}

    for (var i=0; i<totGaranzie; i++) {
        almenoUna = false;
        currGar = listaGaranzie[i];
        totCurrGar = currGar.length;
        for (var j=0; j<totCurrGar; j++) {
            if (btn.form[currGar[j]]) {
                currElement = btn.form[currGar[j]];
                if (currElement.type == 'checkbox') {
                    if (currElement.checked){
                        almenoUna = true;
                        break;
                    }
                } else {
                    alert('errore:\nl\'elemento "'+currGar[j]+'" è presente nel form "'+btn.form.name+'" ma è di tipo "'+currElement.type+'"' );
                }
            } else {
                alert('errore:\nl\'elemento "'+currGar[j]+'" non è presente nel form "'+btn.form.name+'"' );
            }
        }

        if (almenoUna) {
            h_art.showHideError('errTopPage','errDisplayTop','off');
            h_art.bgCheckManager(currGar,'off');
        } else {
            var errRep = 'Almeno una tra le garanzie evidenziate deve essere selezionata.';
            h_art.showHideError('errTopPage','errDisplayTop','on',errRep);
            h_art.bgCheckManager(currGar,'on');
            break;
        }
    }

    return almenoUna;
}

h_art.bgCheckManager = function(listaCheckBox,stato){
    var layerClass;
    if (stato == 'on') {
        layerClass = 'requiredCheckContainer';
    } else {
        layerClass = 'checkImgTabella';
    }

    var totCheckBox = listaCheckBox.length;

    var currentCheckID;

    for (var i=0; i<totCheckBox;i++) {
        currentCheckID = listaCheckBox[i]+'.cnt';

        h_art.byId(currentCheckID).className = layerClass;
    }
}


h_art.displayDatiUtente = function() {
    var reporterDatiUtente = '';
    for(var rr in document.datiUtente){
        reporterDatiUtente += 'indice: ' + rr;
        reporterDatiUtente += '\n\tname: ' + document.datiUtente[rr].name;
        reporterDatiUtente += '\n\tid: ' + document.datiUtente[rr].id;
        reporterDatiUtente += '\n\trequired: ' + document.datiUtente[rr].required;
        reporterDatiUtente += '\n\tmsg: ' + document.datiUtente[rr].msg;
        reporterDatiUtente += '\n\n';
    }
    alert(reporterDatiUtente);
}


h_art.setRequired = function(fieldID, callerObj) {
    for (var i=0; i<document.datiUtente.length; i++) {
        if (document.datiUtente[i].id == fieldID) {
            document.datiUtente[i].required = callerObj.checked;
            //displayDatiUtente();
            return;
        }
    }
}

h_art.salvaPreventivo = function(callerObj) {
//alert('calcoloPoor.js - h_art.salvaPreventivo');
    var campi = new Array();
    //check required
    for (var i = 0; i < document.datiUtente.length; i++) {
        if (document.datiUtente[i].required == true) {
            var field = callerObj.form[document.datiUtente[i].name];
            var value = h_art.getValue(field);
//alert("field.id="+field.id+" - field.name="+field.name+" - value="+value);
            if (value) {
                if((i == 0)||(i == 1))
                {
                    //check format name and surname (only characters)
                    //var filter = /^[a-zA-Z ]+$/;
                    var filter = /^[^0-9_\-.\(\)\[\]{}\\\/+*@\^?&%$<>"!|'`~=,;:#]+$/;
                    var checkmail = filter.test(value);
                    if(!checkmail)
                    {
                        campi[campi.length] = document.datiUtente[i].msg;
                    }
                }
                else if (i == 2) {
                    //check formato mail
                    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                    var checkMail;
                    checkMail = filter.test(value);
                    if (!checkMail) {
                        campi[campi.length] = document.datiUtente[i].msg;
                    }
                }
                else if(i == 3)
                {
                    //check format telf (only numbers . -
                    var filter = /^[0-9_\.\- ]+$/;
                    var checkmail = filter.test(value);
                    if(!checkmail)
                    {
                        campi[campi.length] = document.datiUtente[i].msg;
                    }
                }
            } else {
                campi[campi.length] = document.datiUtente[i].msg;
            }
        }
        else if(i == 3){
            //check format telf (only numbers . -
            var field = callerObj.form[document.datiUtente[i].name];
            var value = h_art.getValue(field);
            if(value!=''){
                var filter = /^[0-9_\.\- ]+$/;
                var checkmail = filter.test(value);
                if(!checkmail)
                {
                    campi[campi.length] = document.datiUtente[i].msg;
                }
            }
        }
    }
    
    
    if (campi.length > 0 || document.formSalva.privacy2.checked) {
        var errRep = 'Attenzione, non sono stati compilati correttamente i seguenti campi:<br/>'+campi.join(', ');
        var field = callerObj.form[document.datiUtente[document.datiUtente.length-1].name];
        var value = h_art.getValue(field);
        
        if(document.formSalva.privacy2.checked)
	    {
	    	//alert('in');
		    errRep="Attenzione: devi acconsentire al trattamento dei dati personali";
	    }
        /*if(document.datiUtente[3].required==true && value=="false")
            errRep+="<br/><br/>Per richiedere un contatto devi acconsentire al trattamento dei dati personali";*/
        h_art.showHideError('errBotPage','errDisplayBot','on',errRep);
        return false;
    }
    /*else if(document.datiUtente[3].required==true && value=="false")
    {
        var errRep="Per richiedere un contatto devi acconsentire al trattamento dei dati personali";
        h_art.showHideError('errBotPage','errDisplayBot','on',errRep);
        return false;
    }*/

    h_art.showHideError('errBotPage','errDisplayBot','off');
    return true;
}


/*
 * Event handlers
 */

h_art.switchToSol = function(form, action) {
    form.formType.value = action;
    form.submit();
}

h_art.onClickRicalcola = function(self, action) {
    if (h_art.checkGaranzie(self, almenoUnoTra)) {
        self.form.formType.value = action;
        self.form.submit();
    }
}

h_art.onClickSalva = function(self, action) {
    if (h_art.salvaPreventivo(self)) {
        self.form.formType.value = action;
        self.form.submit();
    }
}

h_art.onClickNuovo = function(formName, formType, stepId) {
    document.forms[formName].formType.value = formType;
    this.onClickStepTab(formName, formType, stepId);
}

h_art.onClickModifica = function(formName, formType, stepId) {
    document.forms[formName].formType.value = formType;
    this.onClickStepTab(formName, formType, stepId);
}

h_art.onClickMassimali = function(formName, formType, stepId) {
    document.forms[formName].formType.value = formType;
    this.onClickStepTab(formName, formType, stepId);
}
