﻿//------------------------------------------------------------------------------------------
// pseudo costanti
var VALID_NAME	= /\w{2,}/;
var VALID_EMAIL	= /[\w\-\.]+@[a-zA-Z0-9][a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,}[a-zA-Z]*/;
var VALID_PHONE	= /\+?\d{6,}/;

// variabili globali
var MAXPAGE = 5;
var currWizPage = 0;
var wizValidators;
var enable_validation = true;

// richiesta server
var request_id = 0;

// sono offline o online?
var offline = 0;

// speciale appoggio per sexy combo
var scProduttore = null, scModello = null;

// dizionario globale risorse multilingua
var res, labels, toolptips, lang_id = 'it';

// aggiunge il metodo 'Alberto Pastore Strip' apStrip alla classe String
String.prototype.apStrip = function() { return (m = this.match(/\s*(.+\w)\s*/)) ? m[1] : this; }


// sistema subito la questione del metodo Array.indexOf
// che su quel cesso di Internet Explorer non c'è
if (!Array.prototype.indexOf) {
	Array.prototype.indexOf = function(elt)
	{
		var len = this.length >>> 0;
		var from = Number(arguments[1]) || 0;
		from = (from < 0) ? Math.ceil(from) : Math.floor(from);
		if (from < 0) from += len;
		for (; from < len; from++) {
			if (from in this && this[from] === elt) return from;
		}
		return -1;
	};
}


//------------------------------------------------------------------------------------------
// micro-funzione per convertire stringhe in interi
function safeInt(v, defvalue) { var r = parseInt(v); return isNaN(r) ? (defvalue ? defvalue : 0) : r; }

//------------------------------------------------------------------------------------------
// micro-funzione per convertire stringhe in float
function safeFloat(v, defvalue) { var r = parseFloat(v.toString().replace(',', '.')); return isNaN(r) ? (defvalue ? defvalue : 0) : r; }


//------------------------------------------------------------------------------------------
// micro-funzione per togliere/aggiungere il suffisso _disa alle immagini dei pulsanti-immagine
function imageButtonDisable(button, disa) {
	
	var pezzi = button.src.split('.');
	var fname = pezzi[pezzi.length - 2];
	var pos = fname.indexOf("_disa");
	if (pos >= 0) fname = fname.substr(0, pos);
	pezzi[pezzi.length - 2] = fname + (disa ? "_disa" : "");
	button.src = pezzi.join('.');
	button.disabled = disa;
	
}


//------------------------------------------------------------------------------------------
// carica la lingua dal server
function loadLanguage(lang)
{
	// imposta l'indicazione di lingua globale
	lang_id = lang;
	
	// esegue la richiesta al server per sapere se sono offline o online
	eval('offline = ' + $.ajax({async: false, url: 'sunline.asp?cmd=offline'}).responseText);
	if (offline) $("#btnPDF").hide();
	else $("#btnPDF").show();
	
	// esegue la richiesta al server per il dizionario
	eval('res = ' + $.ajax({async: false, url: 'sunline.asp?cmd=dictionary&lang=' + lang}).responseText);
	
	// esegue la richiesta al server per le etichette
	eval('labels = ' + $.ajax({async: false, url: 'sunline.asp?cmd=labels&type=l&lang=' + lang}).responseText);
	
	// esegue la richiesta al server per le etichette toolptip
	eval('tooltips = ' + $.ajax({async: false, url: 'sunline.asp?cmd=labels&type=t&lang=' + lang}).responseText);

	// imposta le risorse nella pagina html
	for (i = 0; i < labels.length; i++) $("#" + labels[i].l).html(labels[i].v);
	for (i = 0; i < tooltips.length; i++) $("#" + tooltips[i].l).attr("alt", tooltips[i].v).attr("title", tooltips[i].v);
	
	if (scProduttore != null) {
		if (scProduttore.input.val() == scProduttore.config.emptyText) scProduttore.input.val("");
		scProduttore.config.emptyText = res.scproduttore_emptytext;
		scProduttore.applyEmptyText();
	}
	
	if (scModello != null) {
		if (scModello.input.val() == scModello.config.emptyText) scModello.input.val("");
		scModello.config.emptyText = res.scmodello_emptytext1;
		scModello.applyEmptyText();
	}
}


//------------------------------------------------------------------------------------------
// seleziona/cambia la pagina del wizard
function wizPage(page)
{
	// innanzitutto convalida l'uscita dalla pagina corrente se sto andando avanti
	if ((page > currWizPage) && !wizValidatePage(currWizPage)) return;
	
	// poi guarda dove sta andando
	if (page < 0) return;
	if (page > MAXPAGE) {
		wizDone();
		return;
	}
	
	// sistema i bottoni avanti e indietro
	var btnPrev = $("#btnPrev");
	var btnNext = $("#btnNext");
	var btnRestart = $("#btnRestart");
	((page == 0) || (page == MAXPAGE)) ? btnPrev.hide() : btnPrev.show();
	(page == MAXPAGE) ? btnNext.hide() : btnNext.show();
	(page == MAXPAGE) ? btnRestart.show() : btnRestart.hide();
	
	// mostra / nasconde le pagine
	$("#wizPage" + (currWizPage + 1)).hide("slow");
	$("#wizPage" + (page + 1)).show("slow");
	
	// aggiorna la pagina corrente
	currWizPage = page;

	// sistema le label
	$("#wizLabels > a").removeClass("lblPageDone").removeClass("lblPageCurrent");
	$("#wizLabels > a:lt(" + page + ")").addClass("lblPageDone");
	$("#wizLabels > a:eq(" + page + ")").addClass("lblPageCurrent");
	
}


//------------------------------------------------------------------------------------------
// validazione pagine
function wizValidatePage(page)
{
	var errors, val;
	
	switch (page) {
	
	
	// validazione informazioni generali
	case 0:

		// validazione anagrafica disabilitata come da mail Cozzi del 23 marzo 2010
		/*
		if (enable_validation) {
			var has_email_or_tel;
			errors = new Array();
			if (!$("#txtNome").val().apStrip().match(VALID_NAME)) errors[errors.length] = res.validate_err_name;
			if (!$("#txtSocieta").val().apStrip().match(VALID_NAME)) errors[errors.length] = res.validate_err_company;
			val = $("#txtEMail").val().apStrip();
			if (val.length && !val.match(VALID_EMAIL)) errors[errors.length] = res.validate_err_email;
			has_email_or_tel = val.length;
			val = $("#txtTelefono").val().apStrip();
			if (val.length && !val.match(VALID_PHONE)) errors[errors.length] = res.validate_err_phone;
			has_email_or_tel += val.length;
			val = $("#txtFax").val().apStrip();
			if (val.length && !val.match(VALID_PHONE)) errors[errors.length] = res.validate_err_fax;
			//almeno uno dei due tra email e telefono è obbligatorio
			if (!has_email_or_tel) errors[errors.length] = res.validate_err_phonemail;
			if (errors.length > 0) {
				alert(res.validate_error + "\r\n\r\n\- " + errors.join("\r\n\r\n- "));
				return false;
			}
		}
		*/
		
		//aggiorna il server
		$.post("sunline.asp",
			{
				cmd: "step1",
				nominativo: $("#txtNome").val(),
				societa: $("#txtSocieta").val(),
				indirizzo: $("#txtIndirizzo").val(),
				citta: $("#txtCitta").val(),
				prov: $("#txtProvincia").val(),
				cap: $("#txtCAP").val(),
				nazione: $("#txtNazione").val(),
				tel: $("#txtTelefono").val(),
				fax: $("#txtFax").val(),
				email: $("#txtEMail").val(),
				numero: $("#txtNumero").val(),
				progetto: $("#txtProgetto").val(),
				note: $("#txtNote").val()
			},
			function (data) {
				if (data.status != "ok") alert(data.status);
				request_id = data.id;
			},
			"json");
			
		return true;
	
	
	// validazione modello pannelli
	case 1:
		if (enable_validation) {
		
			var produttore = scProduttore.input.val();
			var modello = scModello.input.val();
			
			if (!produttore.length || !modello.length || (produttore == scProduttore.config.emptyText) || (modello == scModello.config.emptyText)) {
				alert(res.validate_err_model);
				return false;
			}
			// validazione range solo per valori inseriti a mano
			if (scModello.hidden.val() == "new") {
				errors = new Array();
				val = safeInt($("#txtPotenza").val())
				if ((val < 10) || (val > 500)) errors[errors.length] = res.validate_err_power;
				$("#txtPotenza").val(val);
				val = safeInt($("#txtAltezza").val())
				if ((val < 100) || (val > 2000)) errors[errors.length] = res.validate_err_height;
				$("#txtAltezza").val(val);
				val = safeInt($("#txtLarghezza").val())
				if ((val < 100) || (val > 2000)) errors[errors.length] = res.validate_err_width;
				$("#txtLarghezza").val(val);
				val = safeInt($("#txtSpessore").val())
				if ((val != 34) &&
					(val != 35) &&
					(val != 36) &&
					(val != 38) &&
					(val != 40) &&
					(val != 42) &&
					(val != 46) &&
					(val != 48) &&
					(val != 50)) errors[errors.length] = res.validate_err_thickness;
				// spessori supportati (34,35,36,38,40,42,46,48,50)
				$("#txtSpessore").val(val);
				val = safeInt($("#txtPeso").val())
				if ((val < 5) || (val > 50)) errors[errors.length] = res.validate_err_weight;
				$("#txtPeso").val(val);
				if (errors.length > 0) {
					alert(res.validate_error + "\r\n\r\n\- " + errors.join("\r\n\r\n- "));
					return false;
				}
			}
		}
		
		//aggiorna il server
		$.post("sunline.asp",
			{
				cmd: "step2",
				id: request_id,
				produttore: scProduttore.input.val(),
				modello: scModello.input.val(),
				potenza: $("#txtPotenza").val(),
				altezza: $("#txtAltezza").val(),
				larghezza: $("#txtLarghezza").val(),
				spessore: $("#txtSpessore").val(),
				peso: $("#txtPeso").val(),
				nuovo: (scModello.hidden.val() == "new") ? "1" : "0"
			},
			function (data) {
				if (data.status != "ok") alert(data.status);
			},
			"json");
			
		return true;

		
	// tipo installazione
	case 2:
		// costruisce il tipo come P/C + telaio o copertura
		var tipo = $("input[id^='txtTipo']:checked").val();
		tipo += $("input[id^='txt" + (tipo == 'P' ? 'Telaio' : 'Copertura')+ "']:checked").val();
		var categoria = 'SL-' + {'PS':'ST', 'PH':'ST-HI', 'FT':'GT', 'FC':'GC', 'FL':'MLA', 'FO':'DF', 'FP':'LT'}[tipo];
		
		// ricarica dinamicamente la lista supporti
		$.getJSON("sunline.asp?cmd=get_products&cat=" + categoria + "&lang=" + lang_id, {}, function(supporti) {
			var scSupporto = $("#scSupporto");
			scSupporto.children().remove();
			for (i = 0; i < supporti.length; i++) {
				var opt = $("<option />");
					opt.attr("value", supporti[i].value)
					.text(supporti[i].text)
					.data("range_max", supporti[i].range_max.toString().replace('.', ','))
					.data("img", supporti[i].img);
				opt.appendTo(scSupporto);
			}
			//taccone per ie6----boh sempre + mistero----devo usare questo sistema per selezionare il primo elemento!!!
			document.getElementById("scSupporto").selectedIndex = 0;
			
			// imposta il range_max iniziale
			$("#lblMaxInterasse").html(supporti[0].range_max.toString().replace('.', ','));

			//simula click scelta supporto per impostare immagine e range interasse;
			wizPage4_scSupporto_OnClick();
		});
		
		
		//aggiorna il server
		$.post("sunline.asp",
			{
				cmd: "step3",
				id: request_id,
				superficie: tipo.substr(0, 1),
				copertura: tipo.substr(1, 1),
				orientamento: $("input[id^='txtOrientamento']:checked").val(),
				profilo: $("#cbProfilo").val()
			},
			function (data) {
				if (data.status != "ok") alert(data.status);
			},
			"json");

		return true;
		
		
	// scelta supporti
	case 3:
		if (enable_validation) {
			var range_max = $("#lblMaxInterasse").html();
			val = safeFloat($("#txtInterasse").val());
			$("#txtInterasse").val(val.toString().replace('.', ','));
			
			// Nuovo! Obbliga solo valori >= 0
			if (val <= 0) {
				alert(res.validate_err_padding_ltz);
				return false;
			}
			
			/*
			if ((val < 0.2) || (val > safeFloat(range_max))) {
				if (!confirm(res.validate_err_padding.replace("$range_min$", "0,2").replace("$range_max$", range_max))) return false;
			}
			*/
		}
		
		//aggiorna il server
		$.post("sunline.asp",
			{
				cmd: "step4",
				id: request_id,
				idsupporto: $("#scSupporto").val(),
				interasse: $("#txtInterasse").val()
			},
			function (data) {
				if (data.status != "ok") alert(data.status);
			},
			"json");

		return true;
	
	
	// disposizione pannelli
	case 4:
		var griglia = $("#txtDisposizioneG").attr("checked");
		if (enable_validation) {
			if (griglia) {
				// griglia
				var pannelli = safeInt($("#txtRighe").val()) * safeInt($("#txtColonne").val());
				if (pannelli < 1) {
					alert(res.validate_err_panel1);
					return false;
				}
				if (pannelli > 5000) {
					alert(res.validate_err_panelmax);
					return false;
				}
			} else {
				// manuale
				if (document.getElementById("scRC").options.length < 1) {
					alert(res.validate_err_panelrow1);
					return false;
				}
			}
		}
		
		//aggiorna il server
		var disp;
		if (griglia) {
			disp = "G" + $("#txtRighe").val() + ":" + $("#txtColonne").val();
		} else {
			disp = "M";
			for (var options = document.getElementById("scRC").options, i = 0; i < options.length; i++) disp += options[i].value + ",";
			disp = disp.substr(0, disp.length - 1);
		}
		$.post("sunline.asp",
			{
				cmd: "step5",
				id: request_id,
				disposizione: disp
			},
			function (data) {
				if (data.status != "ok") alert(data.status);
			},
			"json");
			
		return true;
		
		
	// nessuna validazione richiesta in fase finale
	case 5:
		return true;
	}

	// errore per default
	return false;
}


//------------------------------------------------------------------------------------------
// click su pulsante "Indietro"
function btnPrev_OnClick()
{
	wizPage(currWizPage - 1);
}


//------------------------------------------------------------------------------------------
// click su pulsante "Avanti"
function btnNext_OnClick()
{
	wizPage(currWizPage + 1);
}

function Reset_Data()
{
	// TODO: azzerare tutti i campi
	$("#txtNome").val("");
	$("#txtSocieta").val("");
	$("#txtIndirizzo").val("");
	$("#txtCitta").val("");
	$("#txtCAP").val("");
	$("#txtProvincia").val("");
	$("#txtNazione").val("");
	$("#txtTelefono").val("");
	$("#txtFax").val("");
	$("#txtEMail").val("");
	$("#txtNumero").val("");
	$("#txtProgetto").val("");
	$("#txtNote").val("");
	
	scProduttore.input.val("");
	scProduttore.hidden.val("");
	scProduttore.applyEmptyText();
	$("#txtPotenza").val("");
	$("#txtAltezza").val("");
	$("#txtLarghezza").val("");
	$("#txtSpessore").val("");
	$("#txtPeso").val("");
	wizPage2_scProduttore_OnChange();
	
	$("#txtTipoP").attr("checked", true);
	$("#txtCoperturaT").attr("checked", true);
	$("#txtOrientamentoO").attr("checked", true);
	impostaCopertura();
	$("#imgOrientamentoV").hide();
	$("#imgOrientamentoO").show();
	
	$("#scSupporto").children().remove();
	$("#txtInterasse").val("");
	
	$("#txtDisposizioneG").attr("checked", true);
	$("#txtRighe").val("");
	$("#txtColonne").val("");
	$("#txtColonneM").val("");
	$("#txtRigheM").val("");
	$("#scRC").children().remove();
	setDisposizione(true);
	$("#imgDisposizioneM").hide();
	$("#imgDisposizioneG").show();
}


//------------------------------------------------------------------------------------------
// click su Restart
function btnRestart_OnClick()
{
	// inizializzazione variabili globali
	wizPage(0);

}


//------------------------------------------------------------------------------------------
// click su label in alto per salto diretto a pagina
function lblPage_OnClick(evt)
{
	evt.preventDefault();
	wizPage(safeInt(this.id.substr(7, 1)) - 1);
}


//------------------------------------------------------------------------------------------
// click su Inizia
function wizCover_btnStart_OnClick()
{
	// provo a spostare qui le istruzioni per nascondere le immagini visto che nel solito IE-cacca non funziona mai un tubo
	$("#wizCover").hide("slow");
	// inizializzazione variabili globali
	Reset_Data();
	wizPage(0);
}

//------------------------------------------------------------------------------------------
// evento immissione testo Produttore
function wizPage2_scProduttore_OnChange()
{
	var produttore = scProduttore.input.val();
	var idProduttore = scProduttore.hidden.val();
	
	if (produttore.length > 0) {
	
		$("#warnSelf").hide();
		$("span[id^=warnRange]").hide();
		$("#warnWeight").show();
		
		if (idProduttore == "new") {
			// se e' disabilitato oppure ha la lista di modelli
			if (scModello.input.attr("disabled") || (scModello.config.data.length > 0)) {
				// azzera e ricrea
				wizPage2_scModello_Update(0, false);
			} else {
				// altrimenti azzera solo il contenuto della input box
				scModello.input.val("");
				scModello.applyEmptyText();
				$("#warnSelf").hide();
				$("span[id^=warnRange]").hide();
				$("#warnWeight").show();
			}
		} else {
			//popola la lista modelli del produttore scelto
			wizPage2_scModello_Update(idProduttore, false);
		}
		
	} else wizPage2_scModello_Update(0, true);

}


//------------------------------------------------------------------------------------------
// evento immissione testo Modello
function wizPage2_scModello_OnChange()
{
	var idProduttore = scProduttore.hidden.val();
	var idModello = scModello.hidden.val();
	
	if (idModello == "new") {
		$("#warnSelf").show();
		$("span[id^=warnRange]").show();
		$("#warnWeight").hide();
		$("#wizPage2 > input:[id^=txt]").attr("readonly", false).removeClass("locked").val("");
	} else {
		$.getJSON("sunline.asp?cmd=get_panel&id=" + idModello, {}, function(modello) {
			$("#warnSelf").hide();
			$("span[id^=warnRange]").hide();
			$("#warnWeight").show();
			$("#txtPotenza").attr("readonly", true).addClass("locked").val(modello.potenza);
			$("#txtAltezza").attr("readonly", true).addClass("locked").val(modello.altezza);
			$("#txtLarghezza").attr("readonly", true).addClass("locked").val(modello.larghezza);
			$("#txtSpessore").attr("readonly", true).addClass("locked").val(modello.spessore);
			$("#txtPeso").attr("readonly", true).addClass("locked").val(modello.peso);
		});
	}
}


//------------------------------------------------------------------------------------------
// (ri)crea la sexy combo Modello
function wizPage2_scModello_Update(id_produttore, disabled)
{
	// ricrea la sexycombo, dato che la libreria non offre metodi per aggiornare dinamicamente la lista dati
	$("#scModelloContainer").children().remove();
	$.sexyCombo.create({
		id: "scModello",
		container: "#scModelloContainer",
		emptyText: disabled ? res.scmodello_emptytext1 : ((id_produttore > 0) ? res.scmodello_emptytext2 : res.scmodello_emptytext3),
		initialHiddenValue: "new",
		initCallback: function() { scModello = this; },
		textChangeCallback: wizPage2_scModello_OnChange,
		url: (id_produttore > 0) ? ('sunline.asp?cmd=get_panels&id=' + id_produttore) : ""
	});
	
	//modello disabilitato fino a scelta produttore
	scModello.input.attr("disabled", disabled);
	// ne approfitto anche per resettare i valori delle input box...
	$("#wizPage2 > input:[id^=txt]").attr("readonly", true).addClass("locked").val("");
	// ...e nascondere l'avviso
	$("#warnSelf").hide();
	$("span[id^=warnRange]").hide();
	$("#warnWeight").show();
}


//------------------------------------------------------------------------------------------
// evento scelta tipo copertura (spaccato in 2 funz per poterle chiamare separatamente)
function impostaCopertura()
{
	var piano = $("#txtTipoP").attr("checked");
	var slhi = piano && $("#txtTelaioH").attr("checked")
	
	$("input[id^=txtCopertura]").attr("disabled", piano);
	$("input[id^=txtTelaio]").attr("disabled", !piano);
	if (piano) {
		$("label[id^=lblTelaio]").removeClass("disabled");
		$("label[id^=lblCopertura]").addClass("disabled");
	} else {
		$("label[id^=lblCopertura]").removeClass("disabled");
		$("label[id^=lblTelaio]").addClass("disabled");
	}
	
	// se ho scelto piano-slhi metto lunghezza fissa 6 metri
	if (slhi) {
		$("#cbProfilo").attr("disabled", true).val("6");
		$("#lblProfilo").addClass("disabled");
	} else {
		$("#cbProfilo").attr("disabled", false);
		$("#lblProfilo").removeClass("disabled");
	}
}

function wizPage3_Tipo_OnClick() { impostaCopertura(); }
function wizPage3_Telaio_OnClick() { impostaCopertura(); }
function wizPage3_Copertura_OnClick() { impostaCopertura(); }

//------------------------------------------------------------------------------------------
// evento scelta orientamento (spaccato in 2 funz per poterle chiamare separatamente)
function setImgOrientamento(verticale)
{
	if (verticale) {
		$("#imgOrientamentoO").hide("fast");
		$("#imgOrientamentoV").show("fast");
	} else {
		$("#imgOrientamentoV").hide("fast");
		$("#imgOrientamentoO").show("fast");
	}
}
function wizPage3_Orientamento_OnClick() { setImgOrientamento(this.value == 'V'); }


//------------------------------------------------------------------------------------------
// evento scelta supporto
function wizPage4_scSupporto_OnClick()
{
	//reimposta immagine di destra e interasse
	var sup = $("#scSupporto");
	var opt = sup.find('option[value="' + sup.val() + '"]');
	$("#lblMaxInterasse").html(opt.data("range_max"));
	$("#imgBox4").css("background-image", "url(img/wait.gif)");
	$("#imgBox4").css("background-image", "url(img/" + opt.data("img") + ")");
}


//------------------------------------------------------------------------------------------
// evento scelta tipo copertura (spaccato in 2 funz per poterle chiamare separatamente)
function setDisposizione(griglia)
{
	if (griglia) {
		$("#txtRighe").attr("disabled", false).removeClass("locked");
		$("#txtColonne").attr("disabled", false).removeClass("locked");
		$("#lblRighe").removeClass("disabled");
		$("#lblColonne").removeClass("disabled");
		$("#txtRigheM").attr("disabled", true).addClass("locked");
		$("#txtColonneM").attr("disabled", true).addClass("locked");
		$("#lblRigheM").addClass("disabled");
		$("#lblColonneM").addClass("disabled");
		$("#scRC").attr("disabled", true);
		$("#wizPage5 > input[id^=btn]").each(function() { imageButtonDisable(this, true); });
		$("#imgDisposizioneM").hide("fast");
		$("#imgDisposizioneG").show("fast");
	} else {
		$("#txtRighe").attr("disabled", true).addClass("locked");
		$("#txtColonne").attr("disabled", true).addClass("locked");
		$("#lblRighe").addClass("disabled");
		$("#lblColonne").addClass("disabled");
		$("#txtRigheM").attr("disabled", false).removeClass("locked");
		$("#txtColonneM").attr("disabled", false).removeClass("locked");
		$("#lblRigheM").removeClass("disabled");
		$("#lblColonneM").removeClass("disabled");
		$("#scRC").attr("disabled", false);
		$("#wizPage5 > input[id^=btn]").each(function() { imageButtonDisable(this, false); });
		$("#imgDisposizioneG").hide("fast");
		$("#imgDisposizioneM").show("fast");
	}
}
function wizPage5_Disposizione_OnClick() { setDisposizione(this.value == 'G'); }


//------------------------------------------------------------------------------------------
// evento click pulsante Aggiungi pannelli
function wizPage5_btnAdd_OnClick()
{
	var righe = $("#txtRigheM");
	var colonne = $("#txtColonneM");
	var rc = document.getElementById("scRC");
	var r = safeInt(righe.val());
	var c = safeInt(colonne.val());
	var tot;
	var option;

	//controllo file
	if ((r < 1) || (r > 200)) {
		alert(res.validate_err_panelrows);
		return;
	}
	
	//controllo ppf
	if ((c < 1) || (c > 200)) {
		alert(res.validate_err_panelsperrow);
		return;
	}

	// controllo totale
	for (i = 0, tot = 0; i < rc.options.length; i++) {
		var item = rc.options[i].value.split(':');
		tot += (safeInt(item[0]) * safeInt(item[1]));
	}
	
	if ((tot + r * c) > 5000) {
		alert(res.validate_err_panelmax);
		return;
	}
	
	//aggiunge l'elemento alla lista della select
	rc.options[rc.options.length] = new Option(r + ' ' + (r == 1 ? res.panel_row : res.panel_rows) + ' ' + res.panel_of + ' ' + c + ' ' + (c == 1 ? res.panel_panel : res.panel_panels), r + ':' + c);
	
	// reimposta il valore inserito
	righe.val(r);
	colonne.val(c);
	
}


//------------------------------------------------------------------------------------------
// evento click pulsante Su
function wizPage5_btnUp_OnClick()
{
	var rc = document.getElementById("scRC");
	var a, b;
	var idx = rc.selectedIndex;
	if (idx < 1) return;
	a = rc.options[idx].innerHTML;
	b = rc.options[idx].value;
	rc.options[idx] = null;
	rc.options.add(new Option(a, b), idx - 1);
	rc.selectedIndex = idx - 1;
}


//------------------------------------------------------------------------------------------
// evento click pulsante Giu
function wizPage5_btnDown_OnClick()
{
	var rc = document.getElementById("scRC");
	var a, b;
	var idx = rc.selectedIndex;
	if ((idx < 0) || (idx == (rc.options.length - 1))) return;
	a = rc.options[idx].innerHTML;
	b = rc.options[idx].value;
	rc.options[idx] = null;
	rc.options.add(new Option(a, b), idx + 1);
	rc.selectedIndex = idx + 1;
}


//------------------------------------------------------------------------------------------
// evento click pulsante Elimina
function wizPage5_btnDel_OnClick()
{
	var rc = document.getElementById("scRC");
	var idx = rc.selectedIndex;
	if (idx < 0) return;
	rc.options[idx] = null;
	rc.selectedIndex = (idx > (rc.options.length - 1)) ? idx - 1 : idx;
}


//------------------------------------------------------------------------------------------
// download file pdf o xls
function getFile(tipo) {
	var furl = "sunline.asp?cmd=create_file&id=" + request_id + "&type=" + tipo + "&lang=" + lang_id;
	if (offline) {
		$.ajax({url: furl});
	} else {
		if (tipo == 'htm') {
			var distinta = window.open(furl, "_blank", "width=900,height=700,menubar=yes,toolbar=yes,location=no,status=no,directories=no,scrollbars=yes");
			distinta.print();
		} else window.location = furl;
	}
}


//------------------------------------------------------------------------------------------
// evento click su Download PDF
function wizPage6_btnPDF_OnClick() { getFile("pdf"); }


//------------------------------------------------------------------------------------------
// evento click su Download XLS
function wizPage6_btnXLS_OnClick() { getFile("xls"); }


//------------------------------------------------------------------------------------------
// evento click su Stampa
function wizPage6_btnPrint_OnClick() { getFile(offline ? "mht" : "htm"); }


//------------------------------------------------------------------------------------------
// inizializzazione generale jQuery
$(document).ready(function() {

	// associazione oggetti-eventi generali
	$("#btnPrev").click(btnPrev_OnClick);
	$("#btnNext").click(btnNext_OnClick);
	$("#btnRestart").click(btnRestart_OnClick);
	$("#wizLabels > a").click(lblPage_OnClick);

	// associazione oggetti-eventi pagine
	$("#btnStart").click(wizCover_btnStart_OnClick);
	$("input[id^=txtTipo]").click(wizPage3_Tipo_OnClick);
	$("input[id^=txtTelaio]").click(wizPage3_Telaio_OnClick);
	$("input[id^=txtCopertura]").click(wizPage3_Copertura_OnClick);
	$("input[id^=txtOrientamento]").click(wizPage3_Orientamento_OnClick);
	$("#scSupporto").click(wizPage4_scSupporto_OnClick);
	$("input[id^=txtDisposizione]").click(wizPage5_Disposizione_OnClick);
	$("#btnAdd").click(wizPage5_btnAdd_OnClick);
	$("#btnUp").click(wizPage5_btnUp_OnClick);
	$("#btnDown").click(wizPage5_btnDown_OnClick);
	$("#btnDel").click(wizPage5_btnDel_OnClick);
	$("#btnXLS").click(wizPage6_btnXLS_OnClick);
	$("#btnPDF").click(wizPage6_btnPDF_OnClick);
	$("#btnPrint").click(wizPage6_btnPrint_OnClick);
	$("img[id^=btnLang]").click(function() {
		loadLanguage(this.id.substr(this.id.length - 2, 2).toLowerCase());
	});
	//$("#btnTest").click(test);
	
	//riabilita le pagine wizard per il calcolo outerHeight sexy combo, le nasconde dopo nella function del ritorno JSON
	$("div[id^=wizPage]").show();

	// carica la lingua di default
	url = window.location.toString()
	lid = url.indexOf('?');
	if (lid > 0) lang_id = url.substr(lid + 1, 2);
	loadLanguage(lang_id);
	
	$("#imgBox4").css("background-image", "url(img/wait.gif)");
	
	// converti le select in sexycombo caricando i dati in ajax
	$.getJSON("sunline.asp?cmd=get_manufacturers", {}, function(jsonData) {
		
		// crea la sc Produttori
		$.sexyCombo.create({
			id: "scProduttore",
			container: "#scProduttoreContainer",
			emptyText: res.scproduttore_emptytext,
			initialHiddenValue: "new",
			initCallback: function() { scProduttore = this; },
			textChangeCallback: wizPage2_scProduttore_OnChange,
			data: jsonData
		});
		
		wizPage2_scModello_Update(0, true);
		
		// NOTA: ho spostato queste inizializzazioni qui perchè altrimenti la sexy combo aveva le altezze sballate...boh
		
		// altre inizializzazioni nelle pagine
		$("#warnSelf").hide();
		$("span[id^=warnRange]").hide();
		
		// taccone: nascondo tutte le pagine wizard via jquery anziche' averle gia' nascoste via css
		// altrimenti alcune funzioni di calcolo height/width ritornano misteriosamente 0...
		$("div[id^=wizPage]").hide();
		
	});
		
});


function test()
{
	//$("#warnWeight").toggle();
}
