jQuery.fn.defuscate = function( settings ) {
	settings = jQuery.extend({
		link: true,
		find: /\b([A-Z0-9._%-]+)\([^)]+\)((?:[A-Z0-9-]+\.)+[A-Z]{2,6})\b/gi,
		replace: '$1@$2'
	}, settings);
	return this.each(function() {
		if ( $(this).is('a[@href]') ) {
			$(this).attr('href', $(this).attr('href').replace(settings.find, settings.replace));
			var is_link = true;
		}
		$(this).html($(this).html().replace(settings.find, (settings.link && !is_link ? '<a href="mailto:' + settings.replace + '">' + settings.replace + '</a>' : settings.replace)));
	});
};

$(document).ready(function(){
	
	langue = $('html').attr('lang');
	
	var moreInfo;
	if (langue == 'en') {
		moreInfo = 'More info';
	} else if (langue == 'nl') {
		moreInfo = 'Meer';
	} else {
		moreInfo = 'Plus d’infos';
	}
	
	// Commande
	var nb;
	var nb_tranches;
	var tarif;
	
	calculer();
	
	function calculer()
	{
		nb=$('#nb_guides').attr("value")*1;
		
		if(!isNaN(nb) && nb>0)
		{
			$('#nb_guides').removeAttr("readonly");
			
			if(nb <= 2)
				tarif = 6;
			else if(nb <= 54)
				tarif = 20;
			else if(nb <= 108)
				tarif = 25;
			else if(nb <= 162)
				tarif = 30;
			else if(nb <= 216)
				tarif = 35;
			else if(nb <= 576)
				tarif = 45;
			else if(nb <= 1152)
				tarif = 55;
			else if(nb <= 1728)
				tarif = 65;
			else
			{
				nb_tranches = parseInt((nb - 1728 + 1151) / 1152);
				tarif = 65 + nb_tranches * 33;
			}
			
			tarif = tarif + tarif * 21 / 100;
			tarif = tarif.toFixed(2);
			
			$('#montant_ttc').attr("value" , tarif+" €");
		}
		else
		{
			$('#nb_guides').attr("value" , "");
			$('#montant_ttc').attr("value" , "");
		}
	}
	
	$('#nb_guides').keyup(
	function()
	{
		calculer();
	});
	
	$('#nb_guides').change(
	function()
	{
		calculer();
	});
	
	$('#nb_guides').mouseout(
	function()
	{
		calculer();
	});
	
	// Galerie de type "diaporama"
	$(".diaporama").wrap("<div class='galerie-wrap'></div>").innerfade({
		speed: 3000,
		timeout: 4000,
		type: 'random',
		containerheight: '150px'
	});

	$("#banners ul").innerfade({
		speed: 1500,
		timeout: 15000
	});
	
	// Galerie de type "numerotée"
	$(".numerotee").wrap("<div class='galerie-wrap'></div>").css({height:'150px', margin:0}).after('<p class="numerotation"></p>').children().css({position:'absolute'}).hide().each(
		function(i){
			id = i + 1;
			titre = $(this).children('a').children('img').attr('alt');
			$(this).attr('id', 'photo-'+id);
			$(".numerotation").append('<a id="#lien-'+id+'" href="#photo-'+id+'" title="Show '+titre+'">'+id+'</a>');
		}
	).first().show();
	
	$(".numerotation").children().click(
		function(){
			id = $(this).attr('id').substring(6);
			if($(this).attr('class')!='actif'){
				$(".numerotation").children().removeClass('actif');
				$(this).removeAttr('href').addClass('actif');
				$(".numerotee").children().fadeOut('normal');
				$('#photo-'+id).fadeIn('normal');
			}
		}
	).first().addClass('actif');

	$('a.fancybox').fancybox({
		//'titlePosition':'over'
	 });

	// ajout d'une marge à gauche pour les imgae flottantes à droite
	$('img').each(function(index) {
		if ($(this).css('float') == 'right') {
			$(this).css({'margin':'0 0 18px 18px'});
		};
	});

	$('#reservationForm').validationEngine();
	$('#contactForm').validationEngine();
	$('#commentaireForm').validationEngine();
	$('#inscritsForm').validationEngine();
	// $('#loginForm').validationEngine({
		// 'scroll':false,
	// });
	$('#commandesForm').validationEngine();
	
	$('.adresse').defuscate();

	$('.calendar').datepicker({
		dateFormat: 'dd/mm/yy',
		minDate: new Date(),
		showAnim: 'fadeIn',
		speed: 'fast',
		showOn: 'button',
		buttonText: 'Choose',
		buttonImage: '/images/calendar.png',
		buttonImageOnly: true
	});	

	// Gmaps 
	if ($('#map').length) {
		var markers = [];
		var noms = [];
		var iterator = 0;
		var mapOptions = { 
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			center: new google.maps.LatLng(50.85,4.36),
			mapTypeControl: false,
			streetViewControl: false,
			zoom: 16
		};
		var map = new google.maps.Map(document.getElementById("map"), mapOptions);
		// var markerCluster = new MarkerClusterer(map);

		google.maps.event.addListener(map, 'click', function() {
			infoWindow.close();
		});

		function drop() {
			if (markers.length <= 3) {
				for (var i = 0; i < markers.length; i++) {
					setTimeout(function() {
						addMarker(google.maps.Animation.DROP);
					}, i * 200);
				}
			} else {
				for (var i = 0; i < markers.length; i++) {
					addMarker(false);
				}
			}
		}

		function addMarker(animation) {
			
			// decaler un marker s'il y a déjà un point à la même position
			var dedans = 0;
			for (var i = markers.length - 1; i >= 0; i--){
				if (markers[iterator]['Oa'] == markers[i]['Oa'] && markers[iterator]['Na'] == markers[i]['Na']) {
					dedans++;
				}
			};
			if (dedans >= 2) {
				// Il y a deux point ayant la même position, alors on décale un des deux
				markers[iterator]['Oa'] += Math.random() / 4000 + 0.00001;
				// console.log(markers[iterator]['Oa'] + '. Html :' + markers[iterator].html);
			};
			//
			
			var marker = new google.maps.Marker({
				position: markers[iterator],
				map: map,
				draggable: false,
				animation: animation
			});
			marker.html = markers[iterator]['html'];
			google.maps.event.addListener(marker, 'click', onMarkerClick);
			// google.maps.event.addListener(marker, 'mouseover', highligthAddress);
			iterator++;
		}

		function highligthAddress() {
			// console.log('mouse is over a marker');
		}

		function AutoCenter() {
			var bounds = new google.maps.LatLngBounds();
			$.each(markers, function (index, marker) {
				bounds.extend(markers[index]);
			});
			map.fitBounds(bounds);
			var listener = google.maps.event.addListener(map, "idle", function() { 
				if (map.getZoom() > 16) map.setZoom(16); 
				google.maps.event.removeListener(listener); 
			});
		}
		
		var infoWindow = new google.maps.InfoWindow();
		var onMarkerClick = function() {
			var marker = this;
			console.log(marker);
			// var latLng = marker.getPosition();
			infoWindow.setContent(this.html);
			infoWindow.open(map, marker);
		};
		
		var infoWindow = new google.maps.InfoWindow;

		$.getJSON('?json', function(data) {
			for (var i = 0; i < data.length; i++) {
				var url = window.location + '/' + data[i]._data.id + '-' + data[i]._data.permalink_fr;
				url = url.replace(/\/\//gi,'/');
				if (!data[i]._data.societe) {
					data[i]._data.societe = data[i]._data.prenom + ' ' + data[i]._data.nom;
				};
				markers[i] = new google.maps.LatLng(data[i]._data.latitude, data[i]._data.longitude);
				markers[i]['html'] = '';
				markers[i]['html'] += '<p style="margin-bottom:0; line-height:16px">';
				markers[i]['html'] += '<strong>' + data[i]._data.societe + '</strong>';
				markers[i]['html'] += '<br />';
				markers[i]['html'] += data[i]._data.rue + ' ' + data[i]._data.numero;
				markers[i]['html'] += '<br />';
				markers[i]['html'] += data[i]._data.codepostal + ' ' + data[i]._data.localite;
				markers[i]['html'] += '<br />';
				markers[i]['html'] += '<a href="' + url + '">' + moreInfo + '</a>';
				markers[i]['html'] += '</p>';
			};
			drop();
			AutoCenter();
		});
		
	};
		

	$.ga.load('UA-12581118-1'); // Google Analytics
	
});

