// ALT
// @author :	SGL
// @date :		2009-05-28
// @version :	1

var checkboxes = [];
var forfait_cookie = readCookie('forfait_cookie');
var forfait_cookie_obj = extract_forfait_val(forfait_cookie);


// DOM Ready
function forfaits_ready() {
	
	Event.observe(window, 'scroll', function(event) {
		return forfait_total_position(event);
	});
	
	forfait_total_position(null);

	init_form_interactivite();	// prend en compte le cookie
	init_tab_interactivite();

	update_forfait_total();
}


// Fonction init_tab_interactivite
// Initialisation des tab des options
function init_tab_interactivite() {

	$$(".optionstab").each(function(tab_obj) {
		var tab = tab_obj.readAttribute('id');

		Element.hide(tab);

		Event.observe('tab_'+tab, 'click', function(event) {
			forfait_tab_reset();

			select_forfait_visuel(tab);

			Event.stop(event);
			return false;
		});
	});

	var chambre_active = get_active_chambre();
	if (chambre_active) {
		select_forfait_tab(chambre_active);
	} else {
		select_forfait_tab('options_couple');	// Defaut
	}
}


// Fonction forfait_tab_reset
// Remise a 0 des tab visuellement (over et div d'options)
function forfait_tab_reset() {
	$$("td.forfait_menutab").each(function(e) {
		e.removeClassName('forfait_menutab_over');
		var tab = e.down('a').readAttribute('id').replace(/tab_/,'');	// Cacher le contenu
		$(tab).hide();
	});
	return true;
}


// Fonction select_forfait_tab
// @param e : string ("id" de l'objet checkbox)
function select_forfait_tab(e) {
	forfait_tab_reset();
	var tab = "";
	
	switch ($(e).readAttribute('id')) {
		case "checkbox_chambre_2":
			tab = "options_famille"; break;
		case "checkbox_chambre_3":
			tab = "options_animal";
			break;
		case "checkbox_chambre_4":
		case "checkbox_chambre_5":
			tab = "options_entreamis"; break;
		default:
			tab = "options_couple"; break;
	}
	
	$('checkbox43').checked = $('checkbox_chambre_3').checked;	// option obligatoire pour le toutou
	
	select_forfait_visuel(tab);
	return;
}

// Fonction select_forfait_visuel
// @param tab : string "id"
function select_forfait_visuel(tab) {

	$("tab_"+tab).up().addClassName('forfait_menutab_over');
	$(tab).show();
}


// Fonction init_form_interactivite
// Initialisation des elements du formulaire en prenant compte des valeurs du cookie
function init_form_interactivite() {
	
	$$('input, select').each(function(e){

		if(e.type == 'checkbox') {
			checkboxes.push(e);
		
			Event.observe(e, 'click', function(event) {
				update_forfait_preExecute(e);
				return update_forfait_total();
			});

			// Valeur du cookie
			if (forfait_cookie_obj[$(e).readAttribute('id')])
				$(e).checked = forfait_cookie_obj[$(e).readAttribute('id')];
			
		} else if (e.type == 'select-one') {
			Event.observe(e, 'change', function(event) {
				return update_forfait_total();
			});
			
			// Valeur du cookie
			if (forfait_cookie_obj[$(e).readAttribute('id')])
				$(e).value = forfait_cookie_obj[$(e).readAttribute('id')];
		}
	});
	
	// Reset form
	$('remisea0').observe('click', function(event) {
		$$('input').each(function(e) {
			e.checked=false;
		});
		$$('select').each(function(e) {
			e.value = 1;
		});
		
		update_forfait_total();
		Event.stop(event);
	});
}


// Fonction update_forfait_preExecute
// Manipulation des options avant de faire quoi que ce soit.
// @param e : string ("id" de l'objet checkbox)
function update_forfait_preExecute(e) {
	if (!e || !$(e).hasAttribute('id'))
		return;

	if ($(e).readAttribute('id').match(/checkbox_chambre/)) {
		forfait_nuit_uncheck(e);
		select_forfait_tab(e);
	}
	if ($(e).hasAttribute('class') && $(e).readAttribute('class').match(/relation[0-9]{1,2}/)) {
		relation = $(e).readAttribute('class').replace(/(.*)relation([0-9]{1,2})$/,"relation$2");	// relation toujours a la fin de l'attribut class
		checkbox_relations[relation].each(function (r) {
			if ($(e).readAttribute('id') != r)
				$(r).checked = false;
		});
	}
}

// Fonction update_forfait_total
// Mettre a jour le prix total
function update_forfait_total() {

	chambre = get_active_chambre();
	chambre_prix = (chambre != null) ? parseInt(prix[chambre.readAttribute('id')]) : 0;

	var tot = chambre_prix * parseInt($('forfait_nuits').value) + montant_checkbox_options();
	$('forfait_total').update(format_prix(tot));
	
	save_forfait();
	return;
}


// Fonction forfait_nuit_uncheck
// Un seul choix de chambre, uncheck sauf celle qui a ete cochee
// @parame_actif : prototype objet (checkbox coche)
function forfait_nuit_uncheck(e_actif) {

	$$("#zone_forfaits_chambres input").each(function (e) { 
		if (e.readAttribute('id') != e_actif.readAttribute('id'))
			e.checked = false;
	});
}


// Fonction get_active_chambre
// Retourner la chambre cochee
// @return chambre : prototype objet (checkbox coche)
function get_active_chambre() {
	var chambre = null;
	$$("#zone_forfaits_chambres input").each(function (e) {
		if (e.checked == true)
			chambre = e;
	});
	return chambre;
}


// Fonction montant_checkbox_options
// Calculer le montant total de toutes les options sans exception
// @return montant_opt : int
function montant_checkbox_options() {
	var montant_opt = 0;
	checkboxes.each(function(c) {
		if (c.readAttribute('id').match(/checkbox[0-9]{1,2}/) && c.checked == true)
			montant_opt += prix[c.readAttribute('id')];
	});
	
	return montant_opt;
}


// Fonction forfait_total_position
// Positionner la zone du montant total
function forfait_total_position(event) {

	var scrollVerticalPosition = parseInt(document.viewport.getScrollOffsets().top);

	if (scrollVerticalPosition > 365) {
		// IE ne reconnait pas position:fixed
		if (Prototype.Browser.IE) {
			$('zone_forfait_total').setStyle({
				position: 'absolute',
				top: (scrollVerticalPosition+50)+'px'
			});
		} else {
			$('zone_forfait_total').setStyle({
				position: 'fixed',
				top: '50px'
			});
		}
	} else {
		$('zone_forfait_total').setStyle({
			position: 'static'
		});
	}
}


// Helpers

function extract_forfait_val(cookie_format) {
	if (!cookie_format) {
		return new Object();
	}
	return cookie_format.evalJSON();
}


function save_forfait() {
	return createCookie('forfait_cookie', serialize_forfait(), 7);	// 7 jours
}


// serialize_forfait
// Notation JSON
function serialize_forfait() {
	var ser = new Object();
	var ser = "{ ";
	$$('input').each(function(e){ 
		ser += $(e).readAttribute('id')+': '+($(e).checked ? 1:0)+',';
	});
	$$('select').each(function(e){
		ser += $(e).readAttribute('id')+': '+$(e).value+',';
	});

	// Remplacer dernier "," par la fin du JSON
	return ser.replace(/,$/," }");
}


function format_prix(prix) {
	return (langue == 'fr') ? formatInt(prix)+' $' : ' $'+formatInt(prix);
}

function formatInt(num) {
	if (typeof(num) == 'number')
		return num;
	if (!num)
		return 0;
	var num_int = parseInt(num.replace(/ /g,''));
	if (isNaN(num_int))
		return 0;
	return num_int;
}


// Donnees :
var prix = {
	checkbox_chambre_1: 129,
	checkbox_chambre_2: 129,
	checkbox_chambre_3: 129,
	checkbox_chambre_4: 149,
	checkbox_chambre_5: 169,

// Couple
	checkbox13: 100,	//Restaurant Niji
	checkbox14: 100,	//Restaurant La Tomate Blanche
	checkbox15: 100,	//Restaurant L'Aurochs
	checkbox16: 50,		//Le Grand Bistro
	checkbox10: 210,	//SkySpa-1 [relation10]
	checkbox17: 178,	//SkySpa-2 [relation10]
	checkbox18: 78,		//SkySpa-3 [relation10]
	checkbox20: 85,		//Théâtre L'Étoile [relation20]
	checkbox21: 0,		//Radio Lounge [relation21]
	checkbox9: 25,		//Mousseux à la chambre-1
	checkbox23: 45,		//Mousseux à la chambre-2
	checkbox24: 40,		//Pyramide de truffes
	checkbox26: 55,		//Bouquet de fleurs
	checkbox27: 0,		//Lounge ALT [relation27]

// Entre amis
	checkbox28: 50,		//Restaurant Zibo
	checkbox29: 50,		//Restaurant Fontana bar & lounge
	checkbox30: 50,		//Rouge Bistro & Grill oriental
	checkbox22: 420,	//SkySpa-1 [relation10]
	checkbox31: 356,	//SkySpa-2 [relation10]
	checkbox32: 156,	//SkySpa-3 [relation10]
	checkbox34: 170,	//Théâtre L'Étoile [relation20]
	checkbox35: 175,	//Styliste mode
	checkbox36: 0,		//Radio Lounge [relation21]
	checkbox19: 236,	//Golf La Prairie-1
	checkbox37: 280,	//Golf La Prairie-2
	checkbox39: 0,		//Lounge ALT [relation27]
	checkbox40: 50,		//Salle de jeux

// En famille
	checkbox1: 100,		// Restaurant Le Cumulus
	checkbox3: 112,		// Parc Safari
	checkbox4: 120,		// La Ronde
	checkbox5: 40,		// Cinéma Cinéplex Odéon
	checkbox7: 170,		// Théâtre L'Étoile [relation20]
	checkbox11: 50,		// Atelier Toutou
	checkbox12: 0,		// Console Wii avec Wii Fit et jeux

// Avec toutou
	checkbox43: 30,		// Obligatoire
	checkbox46: 55,		// Toilettage Concept Kalin
	checkbox44: 25,		// Service de garde Concept Kalin
	checkbox45: 0,		// Biscuits
	checkbox47: 0		// Bols
}

// Checkbox inter-dependants
var checkbox_relations = {
	relation20: ["checkbox20","checkbox34","checkbox7"],
	relation10: ["checkbox10","checkbox17","checkbox18","checkbox22","checkbox31","checkbox32"],
	relation21: ["checkbox21","checkbox36"],
	relation27: ["checkbox27","checkbox39"],
	relation19: ["checkbox19","checkbox37"]
}