﻿$().ready(function() {
	
	if (!ACHAT_GROUPE) return;
	
	$("form#main div#contact").hide();
	
	$(window).bind("hashchange", function() {		
		hashChange();
	});
	hashChange();
	
		
	$("form#main img#reserveButton").click(function(event) {
		event.preventDefault();
		if (jQuery.browser.msie) {
			document.location.href = document.location.href + "#form";			
		} else {
			document.location.hash = "form";
		}
		hashChange();
	});
	
	intervalID = setInterval(updateTime, 1000);
	updateTime();
});

var intervalID;
var ACHAT_GROUPE_END_DATE;
var ACHAT_GROUPE_CLIENTS;
var ACHAT_GROUPE = false;

var langAchatGroupe = {};
langAchatGroupe["fr"] = {
	client: "acheteur", s: "s", day: "jour", restPoli: "manquants", restMono: "manque", on: "sur",
	emailSubject: "Achat en groupe : {1} - {2} de remise"
}


function hashChange() {
	var hash = document.location.hash;
	var duration = 300;
	if (jQuery.browser.msie) {
		duration = 0;
	}
	if (hash == "#form") {
		$("form#main div#contact").slideDown(duration);
		$("form#main div#achatGroupe").hide(duration);
	} else {
		$("form#main div#contact").hide(duration);
		$("form#main div#achatGroupe").slideDown(duration);
	}
}


function updateTime() {
	if (!ACHAT_GROUPE_END_DATE) return;

	var text = "";
	var now = new Date();
	
	var DAY = 24 * 3600 * 1000;
	var HOUR = 3600 * 1000;
	var MINUTE = 60 * 1000;
	
	var diff = ACHAT_GROUPE_END_DATE.getTime() - now.getTime();
	if (diff <= 0) diff = 0;
	var days = Math.floor(diff / DAY);
	var hours = Math.floor((diff - days * DAY) / HOUR);
	var minutes = Math.floor((diff - days * DAY - hours * HOUR) / MINUTE);
	var seconds = Math.floor((diff - days * DAY - hours * HOUR - minutes * MINUTE) / 1000);
	
	text += "<span class='counter'>" + formatDays(days) + formatNumber(hours) + ":" + formatNumber(minutes) + ":" + formatNumber(seconds) + "</span>";
	text += "<br/><span class='endDate'>" + formatDate(ACHAT_GROUPE_END_DATE) + "</span>";
	$("form#main div.achatGroupeCounter div.timeCounter").html(text);
	
	
	var CLIENTS_MAX = 20;
	var clients = 1;
	if (!ACHAT_GROUPE_CLIENTS) {
		var x = Math.min(7, days);
		clients = Math.round(Math.pow((x - 7)/1.5, 2));
		if (clients <= 1) clients = 1;
		if (clients > CLIENTS_MAX - 3) clients = CLIENTS_MAX - 3;	
		if (days < 1 && hours < 5)  clients = CLIENTS_MAX - 2;
		if (days < 1 && hours < 2)  clients = CLIENTS_MAX - 1;
		if (days < 1 && hours < 1 && minutes < 44)  clients = CLIENTS_MAX;
	} else {
		clients = Math.min(ACHAT_GROUPE_CLIENTS, CLIENTS_MAX);
	}
	
	var s1 = clients == 1 ? "" : getWord("s");
	var s2 = CLIENTS_MAX - clients == 1 ? "" : getWord("s");
	
	$("form#main div.achatGroupeCounter div.clientsCounter").html("<span style='color: #666;'>" + clients + "</span> / " + CLIENTS_MAX);
	$("form#main div.achatGroupeCounter div.clientsCounterText").html(
		"<b>" + clients + "</b> " + getWord("client") + s1 + " " + getWord("on") + " " + CLIENTS_MAX + " : " + 
		"<b>" + (CLIENTS_MAX - clients) + "</b> " + getWord("client") + s2 + " " + getWord("rest" + (CLIENTS_MAX - clients == 1 ? "Mono" : "Poli"))
	);
	var w = (clients / CLIENTS_MAX) * 260;
	$("form#main div.achatGroupeCounter div.clientsCounterBar").css("width", w + "px");
	$("form#main div.achatGroupeCounter div.clientsCounterPercents").html(Math.round(100 * clients / CLIENTS_MAX) + "%");
	$("form#main div.achatGroupeCounter div.clientsCounterPercents").css("left", Math.max(17, w - 15) + "px");
	
	if (clients >= CLIENTS_MAX) {
		var src = $("form#main #reserveButton").attr("src");
		if (src.indexOf("_off.png") == -1) {
			src = src.replace(".png", "_off.png");
		}
		var reserveBtn = $("form#main #reserveButton");
		$(reserveBtn).attr("src", src);
		$(reserveBtn).unbind("click");
		$(reserveBtn).addClass("reserveButtonOff");		
		$("form#main div.timeCounter span.counter").css("color", "#999");
		var enStockLink = $("form#main div.tabs div.tab.last a");
		$(enStockLink).css("color", "#ddd");
		$(enStockLink).attr("href", "");
		$(enStockLink).css("cursor", "default");
		clearInterval(intervalID);
	}
}


function getWord(key) {
	return langAchatGroupe["fr"][key] || key;
}

function formatDays(days) {
	if (days <= 0) return "";	
	var daysWord = getWord("day");
	if (days > 1) daysWord += "s";
	return days + " <span style='font-weight:normal;'>" + daysWord + "</span> ";
}

function formatDate(date) {
	var str = "";
	str += formatNumber(date.getDate()) + ".";
	str += formatNumber(date.getMonth() + 1) + ".";
	str += date.getFullYear() + " ";
	str += formatNumber(date.getHours()) + ":";
	str += formatNumber(date.getMinutes());
	//str += formatNumber(date.getSeconds());
	
	return str;
}

function formatNumber(num) {
	if ((num + "").length < 2) {
		return "0" + num;
	}
	
	return num + "";
}
