function getCookieVal(offset) {
	var endstr=document.cookie.indexOf (";", offset);
	if (endstr==-1)
      		endstr=document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}
function getCookie (name) {
	var arg=name+"=";
	var alen=arg.length;
	var clen=document.cookie.length;
	var i=0;
	while (i<clen) {
		var j=i+alen;
		if (document.cookie.substring(i, j)==arg)
                        return getCookieVal (j);
                i=document.cookie.indexOf(" ",i)+1;
                        if (i==0) break;}
	return null;
}

function charge_page(page, id_ville, id_chaine, tri, filtre) {
	//	On supprime la petite_carte
	$('#petite_carte').remove();
	$('#coldroite').empty();
	$('#coldroite').addClass('loading');
	window.scrollTo(0, 0);
	var rep_templates = getCookie('rep_templates');
	$.get(
		rep_templates+'/results.php',
		{id_ville: id_ville, page: page, id_chaine: id_chaine, tri: tri, filtre:filtre},
		function(data) {
			$('#coldroite').append(data);
			$('#coldroite').removeClass('loading');
			liens_js(id_ville, id_chaine, tri, filtre);
			$('#petite_carte').attr('style', 'display: block');
		}
	);
}

function liens_js(id_ville, id_chaine, tri, filtre) {
	if(isNaN(id_chaine))
		id_chaine = '';
	//	Gestion des liens des multipages
	$('.pagination a').click(
		function() {
			var url = $(this).attr('href');
			var reg = new RegExp('.*-page([0-9]+)\.html?', 'g');
			var page = url.replace(reg, "$1");
			if(isNaN(page))
				page = 1;
			charge_page(page, id_ville, id_chaine, tri, filtre);
			pageTracker._trackPageview(url);
			omniture(url);
			return false;
		}
	);
	//	Gestion des faux liens dans les détails
	$('.result').each(
		function() {
			//	On ajoute les liens "carte" et "détails"
			var liens = '<div class="liens"><span class="lien">Carte</span>&nbsp;|&nbsp;<span class="lien">Détails de l\'hôtel</span></div>';
			$(this).find('.equipements').after(liens);
			var lien = $(this).find('h3 a').attr('href');
			var reg = new RegExp('.html', 'g');
			$(this).find('.lien').each(function() {
				$(this).addClass('faux_lien');
				$(this).click(function() {
					var lien_perso = lien;
					var html = $(this).html();
					var onglet = '';
					if(html.indexOf('Carte', 0) != -1)
						onglet = 'carte';
					else if(html.indexOf('Équipements', 0) != -1)
						onglet = 'services';
					if(onglet != '')
						lien_perso = lien_perso.replace(reg, '--'+onglet+'.html');
					document.location = lien_perso;
				});
			});
			
			//	On ajoute le lien "sélectionner cet hôtel", qui pointe vers la page hôtel
			var rep_templates = getCookie('rep_templates');
			var bouton = '<div class="bouton_select"><img src="'+rep_templates+'/img/bouton_select.gif"></div>';
			$(this).find('.liens').after(bouton);
			$(this).find('.bouton_select').click(function() {
				document.location = lien;
			});
		}
	);

	//	Gestion de la liste de tri
	if(tri == '' || tri == undefined)
		tri = 'prix';
	html = '<ul id="liste_tri"><li class="titre">Trier par :</li><li><a href="prix">Prix</a></li><li><a href="qualite">Meilleur rapport qualité-prix</a></li><li><a href="etoiles">Nombre d\'étoiles</a></li></ul>';
	$('.pagination:first').after(html);
	
	//	On ajoute la class "actif" au li conteneur si on est bien dans le bon contexte
	$('#liste_tri a').each(function(){
		var href = ie_href($(this).attr('href'));
		if(href == tri)
			$(this).parent().addClass('actif');
		$(this).click(function() {
			var tri = href;
			charge_page(1, id_ville, id_chaine, tri, filtre);
			return false;
		});
	});
	
	//	Si on a des coordonnées présentes, on affiche la petite carte
	var rep_templates = getCookie('rep_templates');
	var petite_carte = '<div id="petite_carte"><a href="#">Voir les hôtels sur une carte</a><a href="#" class="image"><img src="'+rep_templates+'/img/map.gif"></a></div>';
	var is_carte = false;
	$('.numero').each(function() {
		is_carte = true;
	});
	if(is_carte) {
		//	On affiche la petite carte en-dessous du moteur
		$('#moteur').after(petite_carte);
		$('#petite_carte a').click(function() {
		$('#grande_carte').attr('style', 'display: block');
		carte();
		$('#petite_carte').attr('style', 'display: none');
		return false;
	});

	}
}

function ie_href(href) {
	var url = document.URL;
	var reg_http = new RegExp('^http');
	var reg_url = /([-0-9a-z]+)$/;
	if(reg_http.test(href)) {
		reg_url.exec(href);
		href = RegExp.$1;
	}
	return href;
}

function liens_gauche(id_ville) {
	var tab = new Array('tarifs', 'etoiles', 'services', 'chaines');
	for(var i = 0; i < tab.length; i++) {
		nom_ul = 'filtre_'+tab[i];
		if(document.getElementById(nom_ul)) {
			$('#'+nom_ul+' li').find('input').each(function() {
				$(this).click(function() {
					$(this).parent().parent().toggleClass('selected');
					var filtre = get_filtre();
					var tri = get_tri();
					charge_page(1, id_ville, '', tri, filtre);
				});
			});
		}
	}
}

function get_id_hotel() {
	return($('#id_hotel').text());
}

function get_filtre() {
	var retour = $('#filtre form').serialize();
	$('#champ_filtre').val(retour);
	return retour;
}

function get_tri() {
	var tri = $('#liste_tri .actif a').attr('href');
	return ie_href(tri);
}

function get_onglet(url) {
	var reg = /.*--([0-9a-z-]+)/;
	reg.exec(url);
	return(RegExp.$1);
}

function liste_onglets() {
	var hotel = get_id_hotel();
	$('#onglets a').click(function() {
		load_onglet($(this).attr('href'));
		return false;
	});
	
	//	On effectue le même traitement
	$('.btn_recherche').each(function() {$(this).click(function() {
		load_onglet($(this).attr('href'));
		return false;
	})});
}

function load_onglet(href) {
	var onglet = get_onglet(href);
	if(onglet == '')
		onglet = 'description';
	var hotel = get_id_hotel();
	var rep_templates = getCookie('rep_templates');
	//	Gestion du look des onglets
	$('#onglets a').removeClass('actif');
	$('#onglets a').each(function() {
		if($(this).attr('href') == href)
			$(this).addClass('actif');
	});
	
	//	On charge le contenu
	$('#hotel .contenu').empty();
	$('#hotel .contenu').addClass('loading');
	$.get(
		rep_templates+"/hotel-"+onglet+".php",
		{id: hotel},
		function(data){
			$('#hotel .contenu').removeClass('loading');
			$('#hotel .contenu').append(data);
			pageTracker._trackPageview(href);
			if(onglet == 'tarifs')
				$('.btn_recherche').each(function() {$(this).addClass('nobutton')});
			else
				$('.btn_recherche').each(function() {$(this).removeClass('nobutton')});
			if(onglet == 'carte')
				load_carte();
			else if(onglet == 'photos') {
				$('#hotel_photos li a').click(function() {
					$('#apercu').attr('src', this.href);
					return false;
				});
			}
			else if(onglet == 'tarifs') {
				initPageSelects();
				initAllCalendars();
				checkform('moteur');
				age_enfants();
			}
		}
	);
}

function get_params() {
	var url = document.URL;
	var rep_templates = getCookie('rep_templates');
	var reg = new RegExp('.*/([a-z0-9-_]+)\.html.*', 'gi');
	reg.exec(url);
	var retour = $.ajax(
		{
			url: rep_templates+'/lib/php/analyse_url.php',
			data: 'url='+RegExp.$1,
			async: false
		}
	).responseText;
	var contenu = retour.split('|');
	return contenu;
}

function age_enfants() {
	//	Si on modifie la sélection du nombre des enfants, afficher des menus déroulants avec leurs âges
	if(document.getElementById('nnins')) {
		if(document.getElementById('colgauche'))
			var type = 'colonne';
		else
			var type = 'hotel';
		$('#nnins').change(function() {
			var nombre = $(this).val()*$('#nhab').val();
			add_enfants(type, nombre);
		});
		$('#nhab').change(function() {
			var nombre = $(this).val()*$('#nnins').val();
			add_enfants(type, nombre);
		});
		
		//	On ajoute la gestion du champ "edad", qui contient la liste des âges des enfants, sous la forme 1#2#3#		
		$('#moteur form').submit(function() {
			if($('#enfants').length) {
				var enf = '';
				$(this).find('#enfants select').each(function() {
					enf += $(this).val()+'#';
				});
				$('#edad').val(enf);
			}
			return true;
		});
	}	
}

function add_enfants(type, nombre) {
	$('#enfants').remove();
	if(nombre > 0) {
		switch(type) {
			case 'colonne':
				$('#rech_hotel').before('<fieldset id="enfants"></fieldset>');
				break;
			case 'hotel':
				$('fieldset.nobottom').append('<div id="enfants" class="half"></div>');
				break;
		}
		$('#enfants').append('<label>Âges des enfants :</label>');
		for(var i = 1; i <= nombre; i++) {
			$('#enfants').append('<label for="enfant_'+i+'">Enfant '+i+': <select name="enfant_'+i+'" id="enfant_'+i+'"></select></label>');
			$('#enfants select:last').each(function() {
				for(var j = 1; j <= 12; j++) {
					if(j == 1)
						var an = 'an';
					else
						var an = 'ans';
					$(this).append('<option value="'+j+'">'+j+' '+an+'</option>');
				}
			});
		}
		$('#enfants').append('<input type="hidden" name="edad" id="edad">');
	}
}
$(document).ready(function() {
	liste_onglets();
	age_enfants();
	
	//	On prépare les liens en JS
	var params = get_params();
	if(params[0] == 'ville') {
		liens_js(params[2], params[3], '', '');
		liens_gauche(params[2]);
	}
	
	//	Si on est sur la page carte, on charge la carte directement
	if(get_onglet(document.URL) == 'carte')
		load_carte();
		
	//	Si on est sur la home, on rend les prix du top destinations cliquables, ainsi que l'image et le texte du "A la une"
	if(document.getElementById('topdest')) {
		$('#topdest li').each(function() {
			var url = $(this).find('a').attr('href');
			var span = $(this).find('span');
			$(span).wrap('<a href="'+url+'"></a>');
		});
	}
	if(document.getElementById('dest_une')) {
		var url = $('#dest_une h2 a').attr('href');
		$('#dest_une').find('img').wrap('<a href="'+url+'"></a>');
		var p = $('#dest_une').find('p');
		var texte = $(p).text();
		$(p).empty();
		$(p).append('<a href="'+url+'">'+texte+'</a>');
	}	
});
