// 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_dine');	// 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_disconnect"; break;
		case "checkbox_chambre_4":
		case "checkbox_chambre_5":
			tab = "options_delight"; break;*/
		default:
			tab = "options_dine"; 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_[0-9]/)) {
		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;
}

//date
var d = new Date();
var year=d.getFullYear();
var prix=135;


// Donnees :
var prix = {
	checkbox_chambre_1: prix,
	checkbox_chambre_2: prix,
	checkbox_chambre_3: prix,
	checkbox_chambre_4: 155,
	checkbox_chambre_5: 175,

// Dine/Déguster
	checkbox30: 135,	//Forfait SKyspa
	checkbox13: 100,	//Restaurant Niji
	checkbox14: 100,	//Restaurant La Tomate Blanche
	checkbox15: 100,	//Restaurant L'Aurochs
	checkbox16: 100,	//Restaurant Kabana

// Delight/Délirer
	checkbox28: 175,		//Katia Lepage

// Disconnect/Décrocher
	//Sky spa
	checkbox4: 210,		// Cloud massage + thermal [relation1]
	checkbox5: 178,		// Cloud massage [relation1]
	checkbox7: 78,		// Ullimited access [relation1]
	
	checkbox1: 85,		// Seduction
	checkbox3: 55		// Bouquet of flowers
	

};

// Checkbox inter-dependants
var checkbox_relations = {
	relation1: ["checkbox4","checkbox5","checkbox7"]
};

