
/*
 * Event handlers
 */

// ognuno dei gestori degli eventi onchange legati alla data
// e` in grado di determinare i nomi degli altri campi di
// input basandosi sulla convenzione dateName{.giorno,.mese,.anno}
h_art.onChangeGiorno = function(self) {
    if (self.value.length == 1) self.value = '0' + self.value;

    var dateName = self.name.substring(0, self.name.lastIndexOf('.'));
    var meseName = dateName+'.mese';
    var annoName = dateName+'.anno';
    var date = self.value + '/' + self.form[meseName].value + '/' + self.form[annoName].value;
    self.form[dateName].value = date;
};

h_art.onChangeMese = function(self) {
    var dateName = self.name.substring(0, self.name.lastIndexOf('.'));
    var giornoName = dateName+'.giorno';
    var annoName = dateName+'.anno';
    var date = self.form[giornoName].value + '/' + self.value + '/' + self.form[annoName].value;
    self.form[dateName].value = date;
};

h_art.onChangeAnno = function(self) {
    var dateName = self.name.substring(0, self.name.lastIndexOf('.'));
    var giornoName = dateName+'.giorno';
    var meseName = dateName+'.mese';
    var date = self.form[giornoName].value + '/' + self.form[meseName].value + '/' + self.value;
    self.form[dateName].value = date;
}

h_art.onClickIndietro = function(formName, formType, stepId) {
    /** H-ART **/ //formAction="PoorWebApp";
    /** H-ART **/ //document.forms[formName].action = formAction;
    document.forms[formName].formType.value = formType;
    h_art.onClickStepTab(formName, formType, stepId);
};

h_art.onClickContinua = function(self, formType, stepId, showLoader) {
    if (this.validate.now(self.form)) {
        showLoader && this.calcLoader.show();

        /** DEBUG **
        var msg = "";
        var elems = self.form.elements;
        for (var i = 0; i < elems.length; ++i) {
            msg += elems[i].name + ': {\n'
                   + '\ttype: ' + elems[i].type + '\n';
            msg += '}\n';
        }
        alert(msg);
        **/

        /** H-ART **/ //self.form.action="PoorWebApp";
        self.form.formType.value = formType;
        self.form.submit();
    }
};

/**
 * classe h_art.CalcLoader
 * gestisce il loader prima del calcolo premio.
 */
h_art.CalcLoader = function(loaderId, stepContainerId) {
    this.loaderId = loaderId;
    this.stepContainerId = stepContainerId;
};

h_art.CalcLoader.onLoad = function() {
    //alert("iframe loaded");
};

h_art.CalcLoader.prototype = {
    show: function() {
        /*
        var loader = h_art.byId(this.loaderId);
        var height = h_art.byId(this.stepContainerId).offsetHeight;
        var top = h_art.byId(this.stepContainerId).offsetTop;
        loader.style.height = height+'px';
        loader.style.top = top+'px';
        //loader.style.display = "block";
        loader.style.visibility = "visible";
        */
        var loader = h_art.byId(this.loaderId);
        var container = h_art.byId(this.stepContainerId);
        loader.style.height = container.offsetHeight+'px';
        loader.style.top = container.offsetTop+'px';
        loader.style.visibility = "visible";
        container.style.visibility = "hidden";
        scrollTo(0, 0);
    }
};


/*
 * Validation system
 */

/* example rules
h_art.rules = {
    'dataNascita': [
        {
            fieldType: "data",
            type: "from",
            repr: "01/01/1910",
            msg: "Attenzione! La data deve essere compresa tra il 01/01/1910 e il 10/10/1982"
        },
        {
            fieldType: "data",
            type: "to",
            repr: "10/10/1982",
            msg: "Attenzione! La data deve essere compresa tra il 01/01/1910 e il 10/10/1982"
        }
    ],
    "capresidenza": [
        {
            fieldType: "text",
            type: "pattern",
            repr: "[0-9][0-9][0-9][0-9][0-9]",
            msg: "Attenzione! Il cap composto da un numero di 5 cifre"
        }
    ]
};
*/

h_art.validate = {
    defaultOnSuccess: function(name, form) {
        var errorBox = h_art.byId(name+'.error');
        var errorMsg = h_art.byId(name+'.errorMsg');
        errorBox.className = 'hiddenRow';
        errorMsg.innerHTML = '';
    },

    defaultOnFailure: function(name, form, msg) {
        var errorBox = h_art.byId(name+'.error');
        var errorMsg = h_art.byId(name+'.errorMsg');
        errorBox.className = 'visibleRow';
        errorMsg.innerHTML = msg || "Il dato inserito non è corretto";
    },

    data: {

        dayFormat: function(value) {
            var parts = value.split('/');
            if (parts.length < 1) return false;
            return 0 < parts[0] && parts[0] <= 31;
        },

        monthFormat: function(value) {
            var parts = value.split('/');
            if (parts.length < 2) return false;
            return 0 < parts[1] && parts[1] <= 12;
        },

        yearFormat: function(value) {
            var parts = value.split('/');
            if (parts.length < 3) return false;
            return 1000 <= parts[2] && parts[0] < 3000;
        },

        format: function(value) {
            return this.dayFormat(value) && this.monthFormat(value) && this.yearFormat(value);
        },

        from: function(op1, op2) {
            if (!this.format(op2)) {
                alert("Unexpected validation error: invalid lower-bound date format: " + op2);
            }

            if (!this.format(op1)) {
                return false;
            }

            var v = op1.split('/');
            var f = op2.split('/');
            var n = v.length;
            var result = true;
            if (n == 3) {
                do {
                    --n;
                    if (v[n] < f[n]) {
                        result = false;
                        break;
                    }
                    if (v[n] > f[n]) break;
                } while (n);
            } else return false;

            return result;
        },

        to: function(op1, op2) {
            if (!this.format(op2)) {
                alert("Unexpected validation error: invalid upper-bound date format: " + op2);
            }

            if (!this.format(op1)) {
                return false;
            }

            var v = op1.split('/');
            var t = op2.split('/');
            var n = v.length;
            var result = true;
            if (n == 3) {
                do {
                    --n;
                    if (v[n] > t[n]) {
                        result = false;
                        break;
                    }
                    if (v[n] < t[n]) break;
                } while (n);
            } else return false;

            return result;
        },

        range: function(value, from, to) {
            return this.from(value, from) && this.to(value, to);
        },

        required: function(value) {
            return value ? true : false;
        },

        /**
         * controllo extra che viene sempre effettuato indipendentemente dal
         * contenuto della struttura dati h_art.rules. Consente di definire un
         * messaggio di errore specifico per il tipo di domanda.
         */
        extra: function(value) {
            var retval = {
                success: this.format(value),
                msg: "Attenzione! Il formato della data non è corretto"
            };
            return retval;
        },

        onSuccess: function(n, f) {h_art.validate.defaultOnSuccess(n, f);},

        onFailure: function(n, f, m) {h_art.validate.defaultOnFailure(n, f, m);}
    },

    text: {
        pattern: function(value, str) {
            var re = new RegExp(str);
            return re.test(value);
        },

        min: function(value, bound) {
            var v = h_art.getNumericValue(value);
            if (isNaN(v)) /*alert("h_art.validate.text.min(): invalid parameter [value: " + value + "]")*/;
            var b = h_art.getNumericValue(bound);
            if (isNaN(b)) /*alert("h_art.validate.text.min(): invalid parameter [bound: " + bound + "]") */;
            return v >= b;
            /*return true;*/
        },

        max: function(value, bound) {
            var v = h_art.getNumericValue(value);
            if (isNaN(v)) /*alert("h_art.validate.text.max(): invalid parameter [value: " + value + "]")*/;
            var b = h_art.getNumericValue(bound);
            if (isNaN(b)) /*alert("h_art.validate.text.max(): invalid parameter [bound: " + bound + "]")*/;
            return v <= b;
            /*return true;*/
        },

        required: function(value) {
            return value ? true : false;
        },

        onSuccess: function(name, form) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'hiddenRow';
            errorMsg.innerHTML = '';
        },

        onFailure: function(name, form, msg) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'visibleRow';
            errorMsg.innerHTML = msg;
        }
    },

    radio: {
        required: function(value) {
            return value ? true : false;
        },

        onSuccess: function(name, form) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'hiddenRow';
            errorMsg.innerHTML = '';
        },

        onFailure: function(name, form, msg) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'visibleRow';
            errorMsg.innerHTML = msg;
        }
    },

    checkbox: {
        required: function(value) {
            return value ? true : false;
        },

        onSuccess: function(name, form) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'hiddenRow';
            errorMsg.innerHTML = '';
        },

        onFailure: function(name, form, msg) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'visibleRow';
            errorMsg.innerHTML = msg;
        }
    },

    select: {
        required: function(value) {
            return value ? true : false;
        },

        onSuccess: function(name, form) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'hiddenRow';
            errorMsg.innerHTML = '';
        },

        onFailure: function(name, form, msg) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'visibleRow';
            errorMsg.innerHTML = msg;
        }
    },

    combo: {
        required: function(value) {
            return value ? true : false;
        },

        onSuccess: function(name, form) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'hiddenRow';
            errorMsg.innerHTML = '';
        },

        onFailure: function(name, form, msg) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'visibleRow';
            errorMsg.innerHTML = msg;
        }
    },

    attestati: {
        attestati: function(value, repr) {
			if (!repr)
				return true;
			var active = {};
			var rows = h_art.byTagName(repr.tbl(), "tr");
			for (var i = 0; i < rows.length; ++i) {
				var selects = h_art.byTagName(rows[i], 'select');
				for (var j = 0; j < selects.length; ++j) {
					var key = j.toString();
					if (!(active[key]))
						active[key] = {n: 0, na: 0, nd: 0};
						 
					var select = selects[j];				
					if (select.disabled)
						continue;
					
					active[key].n += 1;
					if (select.value == 'NA')
						active[key].na += 1;
					if (select.value == 'ND')
						active[key].nd += 1;
				}
			}
			for (var k in active) {
				var o = active[k];
				if (o.na > 0 && o.na < o.n)
					return false;
				if (o.nd > 0 && o.nd < o.n)
					return false;
			}
	        return true;
        },

        onSuccess: function(name, form) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'hiddenRow';
            errorMsg.innerHTML = '';
        },

        onFailure: function(name, form, msg) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'visibleRow';
            errorMsg.innerHTML = msg;
        }
    },

    dettaglio_attestati: {
        dettaglio: function(value, repr) {
			var rows = repr.getRows();
			for (var i = 0; i < rows.length; ++i) {
				var inputs = h_art.byTagName(rows[i], "input");
				for (var j = 0; j < inputs.length; ++j) {
					var input = inputs[j];
					if (input.disabled || input.type == 'hidden')
						continue;
					var value = parseInt(input.value);
					if (isNaN(value) || value < repr.pctMin || value > repr.pctMax)
						return false;
				}
			}
            return true;
        },

        onSuccess: function(name, form) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'hiddenRow';
            errorMsg.innerHTML = '';
        },

        onFailure: function(name, form, msg) {
            var errorBox = h_art.byId(name+'.error');
            var errorMsg = h_art.byId(name+'.errorMsg');
            errorBox.className = 'visibleRow';
            errorMsg.innerHTML = msg;
        }
    },

    /**
     * vecchia funzione per la validazione senza la gestione delle regole "extra".
     * puo essere tranquillamente rimossa.
     */
    _now: function(form) {
        var result = true;
        for (var i in h_art.rules) {
            var _rules = h_art.rules[i];
            var value = h_art.getValue(form[i]);
            for (var k = 0; k < _rules.length; ++k) {
                var rule = _rules[k];
                if (!this[rule.fieldType][rule.type](value, rule.repr)) {
                    this[rule.fieldType].onFailure(i, form, rule.msg);
                    result = false;
                    break;
                } else {
                    this[rule.fieldType].onSuccess(i, form);
                }
            }
        }
        return result;
    },

    /**
     * funzione invocata al submit della form per effettuare la validazione.
     */
    now: function(form) {
        var result = true;
        for (var i in h_art.rules) {
            var _rules = h_art.rules[i];
            if (_rules.length) {
                var field = form[i];
                if (field.disabled) continue;
                var value = h_art.getValue(field);
                var k = 0;
                var extra = {success: true, msg: ""};
                var fieldType = _rules[k].fieldType;
                //if ('extra' in this[fieldType]) { // Non funziona in IE4
                if (fieldType != 'table' && this[fieldType].extra) {
                    extra = this[fieldType].extra(value);
                    //alert(extra.toSource());
                    if (!extra.success) {
                        this[fieldType].onFailure(i, form, extra.msg);
                        result = false;
                    } else {
                        this[fieldType].onSuccess(i, form);
                    }
                }
                if (extra.success) do {
                    var rule = _rules[k];
                    // le regole vengono disabilitate dalla h_art.Domanda.prototype.disableCheck
                    if (rule.disabled) continue;
                    if (fieldType != 'table' &&  !this[rule.fieldType][rule.type](value, rule.repr)) {
                        this[rule.fieldType].onFailure(i, form, rule.msg);
                        result = false;
                        break;
                    } else {
                        if(fieldType != 'table')
                        {
                            this[rule.fieldType].onSuccess(i, form);
                        }
                    }
                } while (++k < _rules.length);
            }
        }
        return result;
    }

};

/**
 * classe h_art.Domanda
 * questa classe è definita (con la stessa interfaccia) anche nella rich. serve
 * per poter manipolare i nodi del DOM corrispondenti alle domande. il fatto che
 * sia definita anche nella rich consente di utilizzarla all'interno dei tag
 * <javascript> presenti nell'XML.
 */
h_art.Domanda = function(id) {
    this.id = id;
};

h_art.Domanda.prototype = {
    getValue: function() {
        return h_art.getValueById(this.id);
    },

    setValue: function(value) {
        switch (this.getType()) {
            case "select-one":
                var select = h_art.byId(this.id);
                for (var i = 0; i < select.options.length; ++i) {
                    if (select.options[i].value == value) {
                        select.selectedIndex = i;
                        break;
                    }
                }
                h_art.onChangeSelectShortLabel(select);
                break;
            case "select-multiple":
                this.reset();
                var select = h_art.byId(this.id);
                select.options[0].selected = false;
                switch (typeof(value)) {
                    case "string":
                        for (var i = 0; i < select.options.length; ++i)
                            if (select.options[i].value == value) select.selectedIndex = i;
                           break;
                    case "object":
                           for (var j = 0; j < value.length; ++j) {
                            for (var i = 0; i < select.length; ++i) {
                                if (select.options[i].value == value[j]) select.options[i].selected = true;
                            }
                        }
                        break;
                    }
                h_art.onChangeSelectShortLabel(select);
                break;
            case "text":
            case "hidden":
                h_art.byId(this.id).value = value;
                break;
            case "radio":
                var elem = h_art.byId(this.id);
                var elems = elem.form[elem.name];
                for (var i = 0; i < elems.length; ++i) {
                    if (elems[i].value == value)
                        elems[i].checked = true;
                }
                break;
            case "checkbox":
                this.reset();
                var elem = h_art.byId(this.id);
                var elems = elem.form[elem.name];
                switch (typeof(value)) {
                    case "string":
                        for (var i = 0; i < elems.length; ++i)
                            if (elems[i].value == value) elems[i].checked = true;
                           break;
                    case "object":
                           for (var j = 0; j < value.length; ++j) {
                            for (var i = 0; i < elems.length; ++i) {
                                if (elems[i].value == value[j]) elems[i].checked = true;
                            }
                        }
                        break;
                    }
                break;
        }
    },

    getName: function() {
        return h_art.byId(this.id).name;
    },

    getType: function() {
        return h_art.byId(this.id).type;
    },

    callOnChange: function() {
        var e = h_art.byId(this.id);
        if (typeof e.onchange == "function") e.onchange();
    },

    disableCheck: function() {
        var name = this.getName();
        var rules = h_art.rules[name];
        for (var i = 0; i < rules.length; ++i) {
            if (rules[i].type != 'required')
                rules[i].disabled = true;
        }
    },

    reset: function() {
        switch (this.getType()) {
            case "select-one":
            case "select-multiple":
                var select = h_art.byId(this.id);
                select.selectedIndex = 0;
                h_art.onChangeSelectShortLabel(select);
                break;
            case "text":
            case "hidden":
                h_art.byId(this.id).value = "";
                break;
            case "radio":
                /*
                 * Funziona in quanto l'XSLT assegna l'id della domanda al
                 * primo radio-button del gruppo
                 */
                h_art.byId(this.id).checked = true;
                break;
            case "checkbox":
                var elem = h_art.byId(this.id);
                var elems = elem.form[elem.name];
                for (var i = 0; i < elems.length; ++i) {
                    elem = elems[i];
                    elem.checked = false;
                }
                break;
        }
    },

    disable: function() {
        switch (this.getType()) {
            case "select-one":
            case "select-multiple":
            case "text":
            case "hidden":
                h_art.byId(this.id).disabled = true;
                break;
            case "radio":
            case "checkbox":
                var elem = h_art.byId(this.id);
                var elems = elem.form[elem.name];
                for (var i = 0; i < elems.length; ++i) {
                    elem = elems[i];
                    elem.disabled = true;
                }
                break;
        }
    },

    enable: function() {
        switch (this.getType()) {
            case "select-one":
            case "select-multiple":
            case "text":
            case "hidden":
                h_art.byId(this.id).disabled = false;
                break;
            case "radio":
            case "checkbox":
                var elem = h_art.byId(this.id);
                var elems = elem.form[elem.name];
                for (var i = 0; i < elems.length; ++i) {
                    elem = elems[i];
                    elem.disabled = false;
                }
                break;
        }
    },

    hide: function() {
        if (document.all && document.all.tags)
        {
            var table = document.all['step_container'];
            var tbody = table.all.tags('TBODY')[0];
            var row = tbody.all[this.id+'.tr'];
            var cells = row.all.tags('td');
            for(var i=0; i<cells.length; i++)
            {
                cells[i].className = "hiddenCell";
            }
        }

        h_art.byId(this.id+'.tr').className = "hiddenRow";

        this.disable();
    },

    show: function() {
        if (document.all && document.all.tags)
        {
            var table = document.all['step_container'];
            var tbody = table.all.tags('TBODY')[0];
            var row = tbody.all[this.id+'.tr'];
            var cells = row.all.tags('td');
            cells[0].className = 'leftContainerColumnCell';
            cells[1].className = 'basicRowText';
            cells[2].className = 'basicRowText';
            cells[3].className = 'infoCell';
            cells[4].className = 'rightContainerColumnCell';
        }

        h_art.byId(this.id+'.tr').className = "visibleRow";
        this.enable();

    }
};


/**
 * Tabella attestati
 */

h_art.Attestati = function(id) {
	this.id = id;
	this._tbl = null;
};

h_art.Attestati.prototype = {
	tbl: function() {
		if (this._tbl == null)
			this._tbl = h_art.byId(this.id);
		return this._tbl;
	},
	
	getSelectParitarie: function() {
		var selects = h_art.byTagName(this.tbl(), "select");
		var paritarie = [];
		var maxValue = 0;
		for (var i = 0; i < selects.length; ++i) {
			var select = selects[i];
			//if (select.className != "paritaria")
			if (select.disabled || select.className != "paritaria")
				continue;
			var sinistri = parseInt(select.value);
			if (isNaN(sinistri))
				sinistri = 0;
			if (sinistri > maxValue)
				maxValue = sinistri;
			paritarie.push(select);
		}
		paritarie.maxValue = maxValue;
		return paritarie;
	}
};

/**
 * Tabella dettaglio attestati
 */
h_art.DettaglioAttestati = function(id, pctMin, pctMax) {
	this.id = id;
	this._tbl = null;
	this._body = null;
	this.pctMin = pctMin;
	this.pctMax = pctMax;
};

h_art.DettaglioAttestati.prototype = {
	tbl: function() {
		if (this._tbl == null) {
			this._tbl = h_art.byId(this.id);
		}
		return this._tbl;
	},
	
	body: function() {
		if (this._body == null) {
			this._body = h_art.byTagName(this.tbl(), "tbody")[0];
		}
		return this._body;
	},
	
	domanda: function() {
		return this.tbl().parentNode.parentNode;
	},
	
	show: function() {
		this.domanda().style.display = "";
	},
	
	hide: function() {
		this.domanda().style.display = "none";
	},
	
	getRows: function() {
		var trs = h_art.byTagName(this.body(), "tr");
		
		var rows = [];
		for (var i = 0; i < trs.length; ++i) {
			var tr = trs[i];
			if (tr.className == 'tableHeader1DettaglioAttestati' || tr.className == 'tableHeader2DettaglioAttestati')
				continue;
			rows.push(tr);
		}
		
		return rows;
	},
	
	getNumRows: function() {
		return this.getRows().length;
	},
	
	getRow: function(pos) {
		return this.getRows()[pos];
	},
	
	appendRow: function() {
		var rows = this.getRows();
		var newPos = rows.length;
		var newRow = rows[0].cloneNode(true);
		var inputs = h_art.byTagName(newRow, "input");
		var selects = h_art.byTagName(newRow, "select");
		var span = h_art.byTagName(newRow, "span")[0];
		span.innerHTML = "" + (newPos+1);
		for (var i = 0; i < inputs.length; ++i) {
			var input = inputs[i];
			var parts = input.name.split("_");
			// PCT_F_DETTAGLIO_1_2004
			if (parts.length < 3)
				alert("Il nome della cella dettaglio non corrisponde alle specifiche.")
			parts[parts.length - 2] = "" + (newPos+1);
			input.name = parts.join("_");
			input.id = input.name;
			input.value = "";
			input.className = "";
			var select = selects[i];
			parts = select.name.split("_");
			parts[parts.length - 2] = "" + (newPos+1);
			select.name = parts.join("_");
			select.id = select.name;
			select.selectedIndex = select.length - 1;
			select.className = "";
		}
		this.body().appendChild(newRow);
	},
	
	appendRows: function(n) {
		for (var i = 0; i < n; ++i) {
			this.appendRow();
		}
	},
	
	deleteRows: function(n) {
		var rows = this.getRows();
		if (n == rows.length) {
			n -= 1;
			//this.disableFirstRow();
		}
		for (var i = rows.length - n; i < rows.length; ++i) {
			this.body().removeChild(rows[i]);
		}
	},
	
	setEnabled: function(attestati) {
		var rows = this.getRows();
		var paritarie = attestati.getSelectParitarie();
		for (var i = 0; i < rows.length; ++i) {
			var row = rows[i];
			var inputs = h_art.byTagName(row, "input");
			var selects = h_art.byTagName(row, "select");
			for (var j = 0; j < inputs.length; ++j) {
				var sinistri = parseInt(paritarie[j].value);
				if (isNaN(sinistri))
					sinistri = 0;
				var input = inputs[j];
				var select = selects[j];
				if (i >= sinistri) {
					input.disabled = true;
					select.disabled = true;
				} else {
					input.disabled = false;
					select.disabled = false;
				}
			}
		}
	},
	
	paritariaChanged: function(attestati) {
	//alert("paritariaChanged");
		var rows = this.getRows();
		//alert("paritariaChanged1");
		var paritarie = attestati.getSelectParitarie();
		//alert("paritariaChanged2");
		paritarie.maxValue > 0 ? this.show() : this.hide();
		//alert("paritariaChanged3");
		if (paritarie.maxValue > rows.length) {
			this.appendRows(paritarie.maxValue - rows.length);
		} else
		if (paritarie.maxValue < rows.length) {
			this.deleteRows(rows.length - paritarie.maxValue);
		}
		this.setEnabled(attestati);
	}
};

function checkTableRadio(inRadioValue, fieldRadio)
{
    var radioValue = inRadioValue;
    if(radioValue != null)
    {
        if(radioValue != "")
        {
            for(var i = 0; i < fieldRadio.length; i++)
            {
                if(fieldRadio[i].value == radioValue)
                {
                    fieldRadio[i].checked=true;
                }
            }
        }
    }
}