/* DOM READY
--------------------------------------------------------------------------------------------------------------------------------------*/

$(function(){
	// functionality
	initCart();
	initShoppingButtons();
	initCodePromo();
	// effects
	initBasics();
	if($('#slider-home')[0]) initSliderHome();
	if($('#pack-formules')[0]) initPackFormules();
	$('.offer, .offre-internet').find('strike').each(function () {
		$(this).find('big').each(function () {
			$(this).append('<span class="line"></span>');
		});
		$(this).after('<span class="prix-reduc">' + $(this).html() + '</span>');
		$(this).remove();
	});
	if ($('#top-promo-autoexpander').size()) {
		$('#top-promo .btn-toggle').triggerHandler('click');
	}
});

/* FUNCTIONS
--------------------------------------------------------------------------------------------------------------------------------------*/

/********** BASIC EFFECTS **********/

function initBasics(){
	// Corner : "Besoin d'un conseiller ?"
	$('.conseiller').facybox({opacity:0.7});
	
	// Button : "Démonstration"
	$('.big-btn-demo, .demonstration').facybox({opacity:0.7});
	
	// Sidebar : "Besoin d'un conseiller ?"
	$('li.conseiller a').facybox({opacity:0.7});
	
	// Sidebar : "Comparer nos offres"
	$('li.comparer a').facybox({opacity:0.7});
	
	
	
	// Top Promo
	var topPromo = $('#top-promo');
	$('.btn-toggle', topPromo).click(function(){
		if(topPromo.hasClass('active')){
			topPromo.stop(true).animate({'marginTop':'-112px'}, 800, 'easeOutQuart').removeClass('active');
			$('span', this).fadeIn(800);
		}else{
			topPromo.stop(true).animate({'marginTop':'-0px'}, 800, 'easeOutQuart').addClass('active');
			$('span', this).fadeOut(800);
		}
	});
	
	// Menu hover
	var menuHover = $('#menu-hover');
	menuHover.css({opacity:0, visibility:'visible'}).animate({opacity:0}, 1000, function(){
		goMenuHover(menuHover, $('#menu .active'), true);
	});
	
	$('#menu li a').bind('mouseenter', function(){
		goMenuHover(menuHover, $(this).parent());
	});
	$('#menu').bind('mouseleave', function(){
		goMenuHover(menuHover, $('#menu .active'));
	});
	
	initLBAndContent();
	$('.facy').facybox({opacity:0.7});
	$(document).bind('reveal.facybox', function(){
		initLBAndContent();
	});
	
	// Focus Form Reset
	$('.reset-focus').focus(function(){
		if($(this).attr('value') == this.defaultValue) $(this).attr('value', '');
	}).blur(function(){
		if($.trim(this.value) == '') this.value = (this.defaultValue ? this.defaultValue : '');
	});
	
	// Toggle contents
	if (!($.browser.msie && (($.browser.version.substr(0, 2) == '6.') || ($.browser.version.substr(0, 2) == '7.')))) {
		$('#inner .toggle-content .intro').show();
		$('#inner .toggle-content .plus').show();
		$('#inner .toggle-content .content').hide();
		$('#inner .toggle-content .hide-on-show').show();
		initToggleContent();
	}
	
	// Equal height
	equalHeight($('.list-services li'));
	equalHeight($('.boxes-conf .white-box'));
	
	// Tooltips
	$('#prods-tech .prod').hover(function(){
		$(this).find('.tooltip').stop(true, true).fadeIn('500');
	}, function(){
		$(this).find('.tooltip').stop(true, true).fadeOut('500');
	});
	$('#sidebar .satisfait').hover(function () {
		$(this).find('.tooltip').stop(true, true).fadeIn('500');
	}, function () {
		$(this).find('.tooltip').stop(true, true).fadeOut('500');
	});
}

function initLBAndContent(){
	// TO20110106 : désactivé car déjà exécuté dans setTarif (qui est exécuté au chargement de chaque page). C'est cette double exécution qui fait recharger la page intégralement sous IE 6.
	// CG110924 modifié à nouveau pour rendre calcul de tarif optionnel.
	// Cufon font replace
	Cufon.replace('#content h1, #slider-home h1, #footer h4, #lightbox h1, .merge');
	
	// jqtransform
	$('.jqtransform').each(function () {
		$(this).jqTransform();
	});
	
	$('.jqTransformHidden').prev('ul').find('li').each(function () {
		var self = $(this);
		$(this).find('a').click(function () {
			var index = self.parent('ul').find('li').index(self);
			$(this).find('option:eq(' + index + ')').attr('selected', 'selected');
			updateCart();
			return false;
		});
	});
}

function goMenuHover(menuHover, tab, first){
	if ((typeof(tab) == 'undefined') || (menuHover == 'undefined') || (tab == null)) {
		return;
	}
	if ((typeof(menuHover) == 'undefined') || (menuHover == 'undefined') || (menuHover == null)) {
		return;
	}
	if ((typeof(tab.attr('id')) == 'undefined') || (tab.attr('id') == 'undefined') || (tab.attr('id') == null)) {
		return;
	}
	var bgPos = (tab.attr('id').substr(8)-1)*46;
	if(!first) menuHover.stop(true);
	menuHover
		.css('backgroundPosition', 'left -'+bgPos+'px')
		.attr('href', tab.find('a').attr('href'))
		.animate({left:tab.position().left-2, width:(tab.width()+13)+'px', opacity:1}, 500, 'easeOutQuart');
}

function initToggleContent(){
	$('.toggle-content .toggle').click(function(){
		var elem = $(this).parents('.elem');
		$('.hide-on-show', elem).toggle(500, 'easeOutQuart');
		
		elem.toggleClass('active').find('.content').stop(true, true).slideToggle(800, 'easeOutQuart');
		elem.find('.intro').stop(true, true).slideToggle(300);
		if(elem.find('.plus').text() != 'Voir les détails') elem.find('.plus').toggleText('Fermer', 'Voir les détails');
		else elem.find('.plus').toggleText('Fermer', 'En savoir +');
		
		return false;
	});
}

jQuery.fn.toggleText = function(a, b) {
	return this.each(function() {
		jQuery(this).text(jQuery(this).text() == a ? b : a);
	});
};

function equalHeight(group) {
	var tallest = 0;
	group.each(function() {
		var thisHeight = $(this).height();
		if(thisHeight > tallest) {
			tallest = thisHeight;
		}
	});
	group.height(tallest);
}

/********** SLIDER HOME **********/

function initSliderHome(){
	shInterval = setInterval(nextSlideHome, 11000);
	$('#slider-nav li a').click(function(){
		clearInterval(shInterval);
		showSlide($($(this).attr('href')), $(this).parent());
		return false;
	});
}

function nextSlideHome(){
	var next = $('#slider-home .tab-active').next();
	if(!next.length) next = $('#slider-home .slider-tab').eq(0);
	
	var nextTab = $('#slider-nav .active').next();
	if(!nextTab.length) nextTab = $('#slider-nav li').eq(0);
	
	showSlide(next, nextTab);
}

function showSlide(slide, tab){
	// Animate active arrow
	$('#slider-nav li').removeClass('active');
	tab.addClass('active');
	var arrPos = tab.position().left + (tab.width()/2) - 16;
	$('#slide-home-arrow').stop(true).animate({left:arrPos}, 800, 'easeOutQuart');
	
	$('.slider-tab', '#slider-content').stop(true, true).removeClass('tab-active').fadeOut(800, 'easeOutQuart');
	slide.addClass('tab-active').stop(true, true).fadeIn(800, 'easeOutQuart');
}

function initPackFormules(){
	var pack = $('#pack-formules');
	$('li:not(.active) img', pack).fadeTo(500, 0.25);
	$('.tooltip', pack).css({'display':'block', 'opacity': 0});
	
	$('li', pack).hover(function(){
		$(this).find('img').stop(true, true).fadeTo(500, 1);
		$(this).find('.tooltip').stop(true, true).animate({top: '20px', opacity: 1}, 500, 'easeOutQuart');
	}, function(){
		if(!$(this).hasClass('active')) $(this).find('img').stop(true, true).fadeTo(500, 0.25);
		$(this).find('.tooltip').stop(true, true).animate({top: '0px', opacity: 0}, 500, 'easeOutQuart');
	});
}

/********** CART **********/

function setTarif(tarif, fi, ttc) {
	valTarif = tarif.toString().replace(/(\.\d\d)\d+$/, '$1');
	txtTarif = '<span class="tarif_valeur">'+valTarif+'€</span> <span class="smaller_ttc_ht">'+(ttc?'TTC':'HT')+'/mois</span><br/>';
	txtTarif += '<span class="smallest_ttc_ht">(soit '+(Math.round((valTarif*12/365) * 100) / 100)+'€/jour)</span><br /><br />';
	txtFi = fi.toString().replace(/(\.\d\d)\d+$/, '$1')+'€';
	$('#ctarif').show();
	$("#tarif_val").html(txtTarif);
	$("#fi_val").html(txtFi);
	Cufon.replace('#ctarif');
}

function ajaxTarif() {
	var f = $('#formule').val();
	var t = $('#type').val();
	var p = $('#mode').val();
	if (!f || !t || !p) {
		$('#ctarif').hide();
		return;
	}
	$.ajax({
		url: 'js_tarif.php',
		type: 'post',
		data: {formule: f, type: t, pvi: (p=='pvi')?1:0},
		async: false,
		success: function (d) {
			if (!d) {
				return;
			}
			t = eval(d);
			setTarif(t.tarif_mensuel, t.frais_installation, t.tarif_type == 'ttc');
		}
	});
}

function updateCart() {
	if ($('#formule').val() == 'pro') {
		$('#type').parents('li').hide();
		$('#mode').parents('li').hide();
	} else {
		$('#type').parents('li').show();
		$('#mode').parents('li').show();
	}
	switch ($('#formule').val()) {
		case 'ts':
			$('#cart_ainfo').attr('href', 'formules_telesurveillance.php');
			$('#cart_aresa').attr('href', 'redir.php?particulier=1&nofork=1');
			break;
		case 'tsp':
			$('#cart_ainfo').attr('href', 'formules_plus.php');
			$('#cart_aresa').attr('href', 'redir.php?particulier=1&nofork=1');
			break;
		case 'tsi':
			$('#cart_ainfo').attr('href', 'formules_integrale.php');
			$('#cart_aresa').attr('href', 'redir.php?particulier=1&nofork=1');
			break;
		case 'pro':
			$('#cart_ainfo').attr('href', 'formules_pro.php');
			$('#cart_aresa').attr('href', 'redir.php?pro=1&nofork=1');
			break;
	}
	ajaxTarif();
}

function updateFormule() {
	updateCart();
	if (gsection == 'reservation') {
		document.location = 'redir.php?nofork=1&f='+$('#formule').val();
	} else {
		document.location = 'redir.php?mode=f&f='+$('#formule').val();
	}
}

function initCart() {
	$('#formule').change(updateFormule);
	$('#type').change(updateCart);
	$('#mode').change(updateCart);
	if ((typeof(gsession) != 'undefined') && (gsession != null)) {
		$('#formule').val((gsession.statut == 'pro') ? 'pro' : gsession.formule);
		$('#type').val(gsession.type);
		$('#mode').val(gsession.pvi != 0 ? 'pvi' : 'pv');
	}
	updateCart();
}
function initShoppingButtons() {
	if ((typeof(gsection) != 'undefined') && (gsection == 'form')) {
		if ((typeof(gsession) != 'undefined') && (gsession != null)) {
			if (gsession.statut == 'particulier') {
				$('#a_ts').click(function () {
					$.ajax({
						url: 'js_setformule.php',
						type: 'post',
						data: {f: 'ts'},
						async: false,
						success: function (d) {
							window.history.go(0);
						}
					});
				});
				$('#a_tsp').click(function () {
					$.ajax({
						url: 'js_setformule.php',
						type: 'post',
						data: {f: 'tsp'},
						async: false,
						success: function (d) {
							window.history.go(0);
						}
					});
				});
				$('#a_tsi').click(function () {
					$.ajax({
						url: 'js_setformule.php',
						type: 'post',
						data: {f: 'tsi'},
						async: false,
						success: function (d) {
							window.history.go(0);
						}
					});
				});
			} else {
				$('#a_pro').click(function () {
					$.ajax({
						url: 'js_setformule.php',
						type: 'post',
						data: {f: 'pro'},
						async: false,
						success: function (d) {
							window.history.go(0);
						}
					});
				});
			}
		}
	} else {
		$('#a_ts').click(function () {
			$('#formule').val('ts');
			$('#formule').triggerHandler('change');
		});
		$('#a_tsp').click(function () {
			$('#formule').val('tsp');
			$('#formule').triggerHandler('change');
		});
		$('#a_tsi').click(function () {
			$('#formule').val('tsi');
			$('#formule').triggerHandler('change');
		});
		$('#a_pro').click(function () {
			$('#formule').val('pro');
			$('#formule').triggerHandler('change');
		});
	}
	
	// active
	if ((typeof(gsession) != 'undefined') && (gsession != null)) {
		if ((typeof(gsession.statut) != 'undefined') && (gsession.statut == 'pro')) {
			$('#a_pro').parents('li').addClass('active');
		} else {
			$('#a_'+gsession.formule).parents('li').addClass('active');
		}
	}
}

function initCodePromo() {
	$('#form-promo').submit(function () {
		var success = 0;
		t= window.location.toString().match(/particulier_\w+\.php/) ? 'part' : 'pro';
		$.ajax({
			url: 'js_checkpromo.php',
			type: 'post',
			data: {code: $('#code_promo').val(), type: t},
			async: false,
			success: function (d) {
				if (!d) {
					$('#promo-desc').text('');
					return;
				}
				cp = eval(d);
				if (cp.desc) {
					$('#promo-desc').text("Votre code promotionnel est accepté : "+cp.desc);
				} else {
					$('#promo-desc').text("Votre code promotionnel est accepté.");
				}
				success = 1;
			}
		});
		if (!success) {
			$('#promo-error').show();
			return false;
		}
		$('#promo-error').hide();
		return false;
	});
}

/********** INPUT VALIDATION **********/
function formerror(name, e, err) {
	if (e) {
		for (li=e.parentNode; li && li.tagName!='LI'; li=li.parentNode)
			;
		if (!li) return;
		for (i in li.childNodes) {
			c = li.childNodes[i];
			if (c.tagName != 'LABEL') {
				continue;
			}
			c.style.color = err ? '#f00' : '';
		}
	}
	if (err && (errdiv = document.getElementById('error'))) {
		errdiv.style.display = 'block';
		errdiv.innerHTML = err;
	}
}

