//
Grupn = new function () {
	
	var clocks = {};
	var now = new Date();
	
	this.addClock = function (id, date) {
		var vto = new Date(date);
		clocks[id] = ((vto - now) / 1000);
		this.updateClock(id);
	};
	
	this.updateClock = function (id) {
		var s, m, h, d;	
		if (clocks[id] > 0) {
			s = Math.round(clocks[id]);
			m = Math.round(s / 60);
			h = Math.round(m / 60);
			d = Math.floor(h / 24);
			
			$(id).innerHTML = 
				'<em>' + d + '</em>'
				+ '<em>' + (((h%24) < 10)? '0' : '') + (h%24) + '</em>'
				+ '<em>' + (((m%60) < 10)? '0' : '') + (m%60) + '</em>'
				+ '<em>' + (((s%60) < 10)? '0' : '') + (s%60) + '</em>';
			
			clocks[id] -= 1;
		}
		else {
			delete(clocks[id]);
		}
	};
	
	this.updateClocks = function () {
		for (var id in clocks) { this.updateClock(id); }
	};
	
	//
	
	var grupn = {};
	this.setGrupn = function (id, price, rest) {
		grupn = {id: id, price: price, rest: rest};
	};
	
	var prods = {}, grupnTotal = 0, grupnQty = 0;
	this.addProdController = function (id) {
		var f = function () { updateProdTotal(id) };
		AddEvent($('grupnProdQty'+id), 'keyup', f);
		AddEvent($('grupnProdQty'+id), 'blur', f);
		prods[id] = {total: 0, qty: 0};
	}
	
	var updateProdTotal = function (id) {
		var v = parseInt($('grupnProdQty'+id).value);
		if (v < 1 || isNaN(v)) { v = 0; }
		grupnQty -= prods[id].qty;
		$('grupnProdQty'+id).value = prods[id].qty = v;
		grupnQty += prods[id].qty;
		
		grupnTotal -= prods[id].total;
		$('grupnProdTotal'+id).innerHTML = prods[id].total = Number((v * grupn.price).toFixed(2));
		grupnTotal += prods[id].total;
		
		$('grupnTotalPrice').innerHTML = grupnTotal;
		$('grupnTotalQty').innerHTML = grupnQty;
	}
	
	this.validateBuy = function (url) {
		var id, v = '', q = 0, e;
		for (id in prods) {
			updateProdTotal(id);
			if (prods[id].qty > 0) {
				v += ';'+id+':'+prods[id].qty;
				q += prods[id].qty;
			}
		}
		
		if (v === '' || (grupn.rest > 0 && grupn.rest < q)) {
			e = $('grupnError');
			e.innerHTML = v == ''? 'You must buy at least 1 product' :
				'You can only buy ' + grupn.rest + ' products in total';
			e.style.display = 'block';
		}
		else {
			v = 'grupn' + '=' + grupn.id + '&'
				+ 'prods' + '=' + v.substr(1);
			oCookie.set('grupn', v);
			document.location.href = url;
		}
	};
	
	//
	
	var lay = false;
	this.showTerms = function (el) {
		if (!lay) {
			lay = new layer('GroupTerms', 'termsConds');
			AddEvent($('closeGroupTerms'), 'click', function(){ lay.close() });
			
			var h = getBodyWHAvaible().h - 150;
			$('conSolDeCont200Pos0').style.height = ((h < 800)? h : 800) + 'px';
			$('conSolDeCont200Pos1').style.height = ((h < 800)? h : 800) + 'px';
		}
		lay.open(el);
	}
	
	var layB = false;
	this.showBought = function (el) {
		if (!layB) {
			layB = new layer('Bought', 'bought');
			AddEvent($('closeBought'), 'click', function(){ layB.close() });
		}
		layB.open(el);
	}
	
	// SEND
	var loading = false, loadedSend = false, initedSend = false, laySend, infoSend;
	var loadSend = function () {
		if (loading) { return false; }
		loading = true;
		var v = 'codigo' + SEP_IGUAL + infoSend.code + SEP_AND;
		var r = new Request();
		r.listener = function () {
			var d = r.respuestaXML;
			loadedSend = true;
			
			cargarHTMLRequest(d.firstChild.data);
			initSend(); 
		}
		r.pedir(DIR_ROOT + 'requests/gruponFormRecomendar.php', v);
		return true;
	};
	
	var initSend = function () {
		if (!initedSend) {
			var email, emailv;
			var ER_STR_3 = RegExp('.{3,}');
			laySend = new layer('GruponRecomendar', 'gruponRecomendar');
			laySend.addField($('nombreGruponRecomendar'), 'nombre', ER_STR, false);
			laySend.addField($('emailGruponRecomendar'), 'email', ER_EMAIL, false);
			laySend.addField($('nombreAmigoGruponRecomendar'), 'nombreAmigo', ER_STR, true);
			laySend.addField($('emailAmigoGruponRecomendar'), 'emailAmigo', ER_EMAIL, true);
			
			AddEvent($('nombreGruponRecomendar'), 'keypress', function(e){ if (e.keyCode == 13) { laySend.send(); }});
			AddEvent($('emailGruponRecomendar'), 'keypress', function(e){ if (e.keyCode == 13) { laySend.send(); }});
			AddEvent($('nombreAmigoGruponRecomendar'), 'keypress', function(e){ if (e.keyCode == 13) { laySend.send(); }});
			AddEvent($('emailAmigoGruponRecomendar'), 'keypress', function(e){ if (e.keyCode == 13) { laySend.send(); }});
			AddEvent($('cerrarGruponRecomendar'), 'click', laySend.close);
			AddEvent($('enviarGruponRecomendar'), 'click', function(){ laySend.send(); });
			initedSend = true;
		}
		this.openSend(false, infoSend.ele, infoSend.code, infoSend.type);
	}.closure(this);
	
	this.openSend = function(evt, ele, code, type) {
		if (evt) { StopEvent(evt) }
		infoSend = {ele: ele, code: code, type: type};
		if (!loadedSend) { loadSend(); }
		else {
			laySend.moreInfo = 'codigo' + SEP_IGUAL + code + SEP_AND;
			laySend.moreInfo += 'tipo' + SEP_IGUAL + type + SEP_AND;
			laySend.open(ele);
		}
	};
	
};
window.setInterval(function () { Grupn.updateClocks(); }, 1000);
