
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 = document.body.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) {
		location.href = url;
		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();
	}
};