
if (!String.prototype.trim) {
	String.prototype.trim = function() {
		return this.replace(/^\s+/, "").replace(/\s+$/, "");
	};
}

function addOnLoad(f)
{
	var old = window.onload;
	if (old)
		window.onload = function() {
			old();
			return f();
		}; 
	else window.onload = f;
}

function byId(id)
{
	return document.getElementById(id);
}


var Check = {
	int: function(value) {
		var re = /^\d+$/;
		var stringValue = value.toString();
		var found = stringValue.match(re);
		return found != null;
	},
	
	email: function(value) {
		var re = /[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)*@[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)+/;
		var found = value.match(re);
		if (found == null || found[0].length != value.length) {
			return false;
		}
		return true;
	},
	
	numeric: function(value) {
		return /^\d+$/.test(value.toString());	
	},
	
	length: function(value, length) {
		return value.toString().length == length;
	}
};

/**
 * I valori presenti nella tabella t_sys_impostazioni che devono
 * essere resi disponibili al codice javascript vengono inseriti nello
 * omonimo array associativo.
 * Tale array puņ considerarsi interamente popolato solamente a
 * caricamento pagina completato.
**/
var t_sys_impostazioni = {};

/**
 * Gestione carrello della spesa magazzino
 * NB: dipende da jQuery 1.2.1 o superiore
**/
var carrello = {
	add: function(inputId, commessa, materiale, qta, lavorazione, dimensioni, spessore, obj) {
		var input = $("#"+inputId);
		var qtaOrg = parseFloat(input.val().split(',').join('.'));
		
		if (qtaOrg <= 0.0 || qtaOrg > obj['Qta']) {
			alert(t_sys_impostazioni['SW_QtaOutOfBounds']);
			return;
		}
		
		obj._QtaOrd = qtaOrg
		
		msg = t_sys_impostazioni['SW_ConfermaAggiunta'];
		for (var k in obj) {
			msg = msg.split('#'+k+'#').join(obj[k]);
		}
		if (!confirm(msg))
			return;
		
		byId('ord_mag_commessa').value = commessa;
		byId('ord_mag_materiale').value = materiale;
		byId('ord_mag_lavorazione').value = lavorazione;
		byId('ord_mag_dimensioni').value = dimensioni;
		byId('ord_mag_spessore').value = spessore;
		byId('ord_mag_qta').value = qta;
		byId('ord_mag_qta_ord').value = input.val();
		
		byId('CAR_ACTION').value = 'INSERT';
		byId('ord_mag_props').value = $.toJSON(obj);
		
		var form = input.get(0).form;
		var url = $.url(form.action);
		url.params.st = $("#sw2_risultati").scrollTop();
		form.action = url.toString();
		form.submit();
	},
	updQta: function(input, index) {
		byId('CAR_ACTION').value = 'UPDQTA';
		byId('ord_mag_qta_ord').value = $(input).val().split(',').join('.');
		byId('ord_mag_art_idx').value = index;
		input.form.submit();
	},
	del: function(index) {
		byId('CAR_ACTION').value = 'DELETE';
		var hidden = byId('ord_mag_art_idx');
		hidden.value = index;
		hidden.form.submit();
	},
	sendmail: function(btn) {
		//byId('CAR_ACTION').value = 'SENDMAIL';
		//btn.form.submit();
		//location.href = location.href.split(location.search).join("") + '?idMenu=' + idMenu + '&idMenuApp='+idMenuApp+'&sTipoPagina=SENDMAIL';
		var form = btn.form;
		form.action = form.action.split('sTipoPagina=CONFCAR').join('sTipoPagina=SENDMAIL');
		var isRequired = function(id) {
			return byId(id).className.indexOf("required") >= 0;
		};
		var fields = {
            "car_conf_ragsoc": {required: isRequired("car_conf_ragsoc")},
            "car_conf_nome": {required: isRequired("car_conf_nome")},
            "car_conf_cognome": {required: isRequired("car_conf_cognome")},
            "car_conf_tel": {required: isRequired("car_conf_tel")},
            "car_conf_fax": {required: isRequired("car_conf_fax")},
            "car_conf_email": {required: isRequired("car_conf_email"), check: Check.email},
            "car_conf_indirizzo": {required: isRequired("car_conf_indirizzo")},
            "car_conf_citta": {required: isRequired("car_conf_citta")},
            "car_conf_provincia": {required: isRequired("car_conf_provincia")},
            "car_conf_cap": {required: isRequired("car_conf_cap")}, //check: function(v) {return Check.numeric(v) & Check.length(v, 5);}},
            "car_conf_stato": {required: isRequired("car_conf_stato")}
		};
		for (var i in fields) {
			var field = fields[i];
			var fieldLabel = field.label || $("label", $("#"+i).parent()).text().trim();
			var fieldValue = byId(i).value;
			if (field.required && !fieldValue) {
				alert(t_sys_impostazioni['ValidazioneCampoObbligatorio'].split("#FieldLabel#").join(fieldLabel));
				return false;
			}
			if (fieldValue && field.check && !field.check(fieldValue)) {
				alert(t_sys_impostazioni['ValidazioneCampoErrato'].split("#FieldLabel#").join(fieldLabel));
				return false;
			}
		}
		form.submit();
	},
	modificaNote: function(url, nome, index, note) {
		url += '?idx=' + index;
		var width = 320;
		var height = 200;
		var screenX = window.screenX + Math.floor((window.outerWidth - width) / 2);
		var screenY = window.screenY + Math.floor((window.outerHeight - height) / 2);
		byId('ord_mag_art_idx').value = index;
		byId('ord_mag_note').value = note;
		window.open(url, nome, "screenX="+screenX+",screenY="+screenY+",width="+width+",height="+height+",toolbar=0,titlebar=0,status=0,dependent=1");
	},
	go: function(url) {
		var u = $.url(url);
		if (!u.params['sTipoPagina'])
			u.params['sTipoPagina'] = "RIA";
		switch (u.params['sTipoPagina']) {
			case "RIA":
				u.params['sTipoPagina'] = "CAR";
				break;
			case "CAR":
				u.params['sTipoPagina'] = "CONFCAR";
				break;
			case "CONFCAR":
				u.params['sTipoPagina'] = "SENDMAIL";
				break;
		}
		location.href = u.toString();
		return false;
	},
	back: function() {
		var u = $.url(location.href);
		switch (u.params['sTipoPagina']) {
			case "CAR":
				u.params['sTipoPagina'] = "RIA";
				break;
			case "CONFCAR":
				u.params['sTipoPagina'] = "CAR";
				break;
			default:
				u.params['sTipoPagina'] = "RIA";
		}
		location.href = u.toString();
		return false;
	}
};

/**
 * Gestione muletto ordini web
 * NB: dipende da jQuery 1.2.1 o superiore
**/
var muletto = {
	show: function(idDiv, numDoc, dataDoc, idMenu, lingua) {
		var el = $('#'+idDiv);
		if (el.html() == '&nbsp;')
			el.load(
				'OrdiniWeb/ajax_mulettoweb.aspx?m='+idMenu+'&l='+lingua,
				{'Num_doc': numDoc, 'Data_doc': dataDoc},
				function (responseText, textStatus, XMLHttpRequest) {
					$(this).show();
				}
			);
		else el.show();
		this.showHideDetail(false, $("th.first a", el.prev()));
	},
	
	showHideDetail: function(show, self, id) {
		var tbl = id ? $("#"+id) : $(self).parents("table:first").nextAll("table:first");
		$("img", self).get(0).src = "ImgGrafica/" + (show ? "collapse" : "expand") + ".png";
		tbl[show ? "show" : "hide"]();
		if (show)
			this.close(tbl.prev().find("a.OoL_ChiudiCaricabili"));
	},
	
	toggleDetail: function(self, id) {
		var el = $("#"+id);
		if (el.is(":hidden"))
			this.showHideDetail(true, self, id);
		else
			this.showHideDetail(false, self, id);
	},
	
	expandAll: function() {
		$(".tbl_testa_ow th.first a img").each(function() {
			this.src = "ImgGrafica/collapse.png";
		});
		$(".tbl_righe_ow").show();
	},
	
	collapseAll: function() {
		$(".tbl_testa_ow th.first a img").each(function() {
			this.src = "ImgGrafica/expand.png";
		});
		$(".tbl_righe_ow").hide();
	},
	
	close: function(btn) {
		var parent = $(btn).parent();
		while (parent.get(0).tagName.toLowerCase() != 'div')
			parent = parent.parent();
		parent.hide();
		return false;
	},

	addAll: function(msg, btn) {
		var table = $(btn);
		do {
			table = table.parent();
		} while (table.get(0).tagName.toLowerCase() != 'table');
		
		var buttons = $('a.OoL_Ordina', table);
		var totPeso = 0, totQta = 0;
		
		buttons.each(function(i) {
			var obj = {};
			this.onclick(null, obj);
			totPeso += obj.peso*obj.qtaTot;
			totQta += obj.qtaTot;
		});
		
		msg = msg.split('#TotQta#').join(totQta.toString())
		         .split('#TotPeso#').join(totPeso.toString());
		if (confirm(msg)) {
			$('select', table).each(function(i) {
				this.selectedIndex = this.length - 1;
			});
			buttons.each(function(i) {
				this.onclick(null, true);
			});
		}
	},

	add: function(msg, idSelect, commessa, desc, dim, spess, peso, qtaTot, param) {
		/**
		 * param:
		 *   false  -> comportamento normale della add
		 *   true   -> add senza confirm
		 *   object -> no add, riempie l'oggetto param nel seguente modo {peso: <Peso>, qta: <Qta>, qtaTot: <QtaTot>} 
		**/
		
		var self = this;
		
		var data = {
			action: "MULADD",
			Commessa: commessa,
			Desc_articolo: desc,
			TipoMis: dim,
			SPESS: spess,
			Peso: peso,
			Qta: $('#'+idSelect).val(),
			QtaTot: qtaTot
		};
		msg = msg.split('#Qta#').join(data.Qta)
		         .split('#Desc#').join(desc)
		         .split('#Peso#').join(peso*data.Qta);
		if (!param && confirm(msg)) {
			param = true;
		}
		
		if (typeof param == "object") {
			param.peso = parseFloat(peso);
			param.qta = parseFloat(data.Qta);
			param.qtaTot = parseFloat(qtaTot);
			return;
		}
			
		if (param) {
			$.post('OrdiniWeb/ajax_mulettoweb.aspx', data, function (data, textStatus) {
				self.changeTruckButton(true);
			});
		}
	},
	
	setLinkMulClass: function () {
		var self = this;
		var data = {
			action: "MULCNT"
		};
		$.post('OrdiniWeb/ajax_mulettoweb.aspx', data, function (data, textStatus) {
			var obj = eval("(" + data + ")");
			self.changeTruckButton(obj.count > 0);
		});
	},
	
	changeTruckButton: function(on) {
		var btn = $('.OoL_BtnCamion');
		if (on) {
			btn.find("img").get(0).src = "ImgGrafica/camion.png";
			btn.get(0).disabled = false;
		} else {
			btn.find("img").get(0).src = "ImgGrafica/camion_bw.png";
			btn.get(0).disabled = true;
		}
	},
	
	go: function(url) {
		location.href = url;
		return false;
	},
	
	confirm: function(link) {
		return this.view(link);
	},
	
	remove: function(btn, k) {
		var self = this;
		var data = {
			action: "MULDEL",
			index: $(btn).next().val()
		};
		$.post('OrdiniWeb/ajax_mulettoweb.aspx', data, function (data, textStatus) {
			var tr = $(btn);
			do {
				tr = tr.parent();
			} while (tr.get(0).tagName.toLowerCase() != 'tr');
			tr.remove();
			
			var els = $('input.OoL_ArtMulIndex');
			if (els.length)
				els.each(function(i) {this.value = i;});
			else
				self.changeTruckButton(false);
			
			var obj = eval('('+data+')');
			$('#ool_tot_peso_mul').text(obj.tot_peso);
		});
	},
	
	updQta: function(select, k) {
		var data = {
			action: "MULQTA",
			index: $('#art_mul_index_'+k).val(),
			qta: select.value
		};
		$.post('OrdiniWeb/ajax_mulettoweb.aspx', data, function (data, textStatus) {
			var obj = eval(['(',')'].join(data));
			$('#ool_parziale_peso_mul_'+k).text(obj.tot_peso_parziale);
			$('#ool_tot_peso_mul').text(obj.tot_peso);
		});
	},
	
	sendmail: function(btn) {
		var form = btn.form;
		form.action = form.action.split('v=c').join('v=m');
		form.submit();
	}
};

var sw2 = {
	onLoadRicerca: function() {
	},
	onLoadRiepilogo: function() {
		$(".SW2_BtnBack").html($(".SW2_BtnBack img").attr("alt"));
	},
	onLoadConferma: function() {
		$(".SW2_BtnBack").html($(".SW2_BtnBack img").attr("alt"));
	},
	openPopUpCommessa: function(commessa, rigaComboMarmi) {
		var url = $.url(location.href);
		var target = "/Moduli/Magazzino/popUpCommessa.aspx?m=" + url.get('IDMenu') + "&c=" + commessa + "&r=" + rigaComboMarmi;
		window.open(target, "Commessa", "width=700,height=400,menubar=no,titlebar=no,toolbar=no");
	}
};

var ool2 = {

	btnCarica: {
		imgOn: "./ImgGrafica/forklift.gif",
		imgOff: "./ImgGrafica/forklift_off.gif",
		enable: function(btn) {
			btn.removeAttr("disabled");
			btn.removeClass("Disabled");
			$("img", btn).attr("src", this.imgOn);
		},
		disable: function(btn) {
			btn.attr("disabled", "disabled");
			btn.addClass("Disabled");
			$("img", btn).attr("src", this.imgOff);
		}
	},
	
	onLoadPaginaPrincipale: function() {
		$("#ool2_tot_peso").bind("update.ool2", function() {
			var peso = parseFloat(this.value.indexOf(',') >= 0 ? this.value.split(',').join('.') : this.value);
			peso > 0 ? $("button.OoL2_BtnCamion").show()
			         : $("button.OoL2_BtnCamion").hide();
		}).trigger("update.ool2");
		
		$("select.Ool2_QtaRichiesta").bind("change.ool2", function() {
			var btn = $("button.Ool2_BtnCarica", $(this).parent().parent());
			ool2.btnCarica.enable(btn);
		});
		
		$("input.Ool2_QtaRichiesta").bind("keypress.ool2", function(e) {
			if (e.which <= 0)
				return;
			var btn = $("button.Ool2_BtnCarica", $(this).parent().parent());
			ool2.btnCarica.enable(btn);
		});
		
		$("span.OoL2_Stampa").bind("click.ool2", function() {
			var current = $.url(location.href);
			var url = "/Moduli/Ordini2/stampa.ashx";
			if ("c" in current.params)
				url += "?c=" + current.params["c"];
			//location.href = url;
			window.open(url, "Stampa");
		});
		
		var delta = $(window).height() - $(document).height();
		var height = $("div.OoL2_Lines").height() + delta;
		if (height > 100) $("div.OoL2_Lines").height(height);

		var i = location.search.indexOf('st=');
		if (i < 0)
			return;
		var scrollTop = parseInt(location.search.substr(i+3));
		$("div.OoL2_Lines").scrollTop(scrollTop);
  
	},
	
	onClickCarica: function(btn) {
		var tr = $(btn).parent().parent();
		var obj = $.evalJSON(tr.attr("json"));
		var field = $(".Ool2_QtaRichiesta", tr);
		if (field.is("select")) {
			obj._pezziRichiesti = field.val();
		} else {
			var qta = parseFloat(field.val().split(',').join('.'));
			var qtaMax = parseFloat(field.attr("maxvalue").split(',').join('.'));
			if (isNaN(qta) || qta > qtaMax || qta < 0.0) {
				alert(t_sys_impostazioni['OoL2_QtaOutOfBounds']);
				return false;
			}
			obj._qtaRichiesta = qta;
		}
		ool2.btnCarica.disable($(btn));
		$.post(
			'/Moduli/Ordini2/add_to_list.ashx',
			{ riga: $.toJSON(obj) },
			function(data, textStatus) {
				$("#ool2_tot_peso").val(data);
				$("#ool2_tot_peso").trigger("update.ool2");
			},
			"text"
		);
		return false;
	},
	
	goUrl: function(where, code) {
		var url = $.url(location.href);
		url.params['t'] = where;
		if (code) url.params['c'] = code;
		return url.toString();
	},
	
	go: function(where, code) {
		location.href = this.goUrl(where, code);
	},
	
	onLoadPaginaRiepilogo: function() {
		$("#btn_indietro").bind("click.ool2", function() {
			var url = $.url(location.href);
			url.params['t'] = "p";
			location.href = url.toString();
		});
		var pesoTot = parseFloat($("#ool2_tot_peso").val().split(',').join('.'));
		if (isNaN(pesoTot) || pesoTot <= 0.0) {
			$("#btn_invia").attr("disabled", "disabled");
		}
	},
	
	onClickInvia: function(btn) {
		var action = this.goUrl('m');
		btn.form.action = action;
		btn.form.submit();
	}
};
