searchIndex = -1;
searchCount = 0;

function closeSearch (event)
{
	var target = event.target;
	var $popup = $("#searchPopup");
	var field  = $("#searchText").get(0);
	var popup  = $popup.get(0);
	
	if (target == field || target == popup) {
		return;
	}
	
	var found   = false;
	var parents = $(target).parents();
	parents.each(function(i){
		if (this == field || this == popup) {
			found = true;
			return false;
		}
	});
	
	
	
	if (!found){
		$("#sel-paxplan").show();
		$popup.css("display","none");
	}
}

function searchNavigate (event)
{		
	switch (event.keyCode)
	{	
		case 38: // UP
			event.preventDefault();
			searchSelectPrev();
			return false;
				
		case 40: // DOWN
			event.preventDefault();
			searchSelectNext();
			return false;
				
		case 9:  // TAB
		case 13: // RETURN
			event.preventDefault();
			searchEnter();
			return false;
				
		case 27: // ESC
			event.preventDefault();
			$("#searchPopup").css ("display","none");
			return false;
			
		default:
			return true;
	}	
}

function search (event)
{
	var txt    = $("#searchText").get(0).value;
	var $popup = $("#searchPopup");
	
	switch (event.keyCode)
	{	
		case 38: // UP
		case 40: // DOWN
		case 9:  // TAB
		case 13: // RETURN
		case 27: // ESC
			event.preventDefault();
			return false;
	}
	
	if (txt.length < 2) {
		$("#sel-paxplan").show();
		$popup.css ("display","none");
		return false;
	}
	
	
	
	var destStr  = "";
	var hotelStr = "";
	var str      = "";
	
	searchCount = 0;
	searchIndex = -1;
	
	txt = noAccent(txt).toUpperCase();
	
	for (var i = 0; i < searchDestinations.length; i++)
	{
		var dest   = searchDestinations[i];
		if (dest)
		{
			var dname  = dest.name;
			var hotels = dest.hotels;
			
			if (noAccent(dname).toUpperCase().indexOf (txt) != -1)
			{
				destStr += '<div class="searchContent" searchType="d" searchId="' + dest.id + '" seoName="'+ dest.seoname +'"><span>' + dname + '</span>';
				if (hotels) {
					destStr += '<br/><span class="searchInfo"><span class="searchArrow">→</span> Voir les ' + hotels.length + ' hôtels</span></div>\n';
			    }
			    else {
			    	destStr += '<br/><span class="searchInfo">Aucun hôtel</span>';
			    }
			    destStr += '</div>';		    
				destStr += '<div class="sep-h-nomargin"></div>\n';
			    
			    searchCount++;
			}
			
			if (hotels)
			{
				for (var j = 0; j < hotels.length; j++)
				{
					var hotel = hotels[j];
					var hname = hotel.name;
								
					if (noAccent(hname).toUpperCase().indexOf (txt) != -1)
					{
						hotelStr += '<div class="searchContent" searchType="h" searchId="' + hotel.id + '" seoName="'+ hotel.seoname +'"><span>' + hname + '</span>';
						hotelStr += getStars (hotel);
						hotelStr += '<span class="searchInfo">' + capitalize (hotel.destination.name) + '</span></div>\n';					
						hotelStr += '<div class="sep-h-nomargin"></div>\n';
	
						searchCount++;
					}
				}
			}
		}
	}
	
	if (destStr.length == 0 && hotelStr.length == 0) {
		$("#sel-paxplan").show();
		$popup.css ("display","none");
		return;
	}
	
	if (destStr.length > 0) {
		str += '<div class="searchHeader">Destination</div>\n' + destStr + '\n';
	}
	
	if (hotelStr.length > 0) {
		str += '<div class="searchHeader">Hébergement</div>\n' + hotelStr + '\n';
	}
		
	$popup.get(0).innerHTML = str;//html (str);
	$popup.css ("display","block");
	$("#sel-paxplan").hide();
	$popup.css ("zIndex",2000);
	$popup.find (".searchContent").click (searchClick);
	$popup.find (".searchContent").mouseover (searchSelect);
}

function getStars (hotel)
{
	var stars = parseInt(hotel.stars);
	
	if (stars < 6)
		return '<br/><span class="searchStar">'+ stars +' ★</span>'; 
	else if (stars >=6 && stars < 8)
		return '<br/><span class="searchStar">'+ (stars -1)+' ★ Luxe</span>'; 
	
	return "<br/>";
}

function initSearch ()
{
	for (var i = 0; i < searchHotels.length; i++) {
		var hotel = searchHotels[i];
		
		if (hotel)
		{
			var dest  = findHotelRootDest (hotel.did);
			
			if (dest != null) {

				if (!dest.hotels) {
					dest.hotels = [];
				}
		
				dest.hotels.push (hotel);
			}
		}
	}
		
	for (var i = 0; i < searchDestinations.length; i++) {
		var dest   = searchDestinations[i];
		
		if (dest)
		{
			var hotels = dest.hotels;
				
			if (hotels){
				for (var j = 0; j < hotels.length; j++){
					var hotel = hotels[j];
					hotel.destination = dest;
				}
			}
		}
	}	
}

function findHotelRootDest (id)
{
	for (var i = 0; i < searchDestinations.length; i++) {
		var desta = searchDestinations[i];
		if (desta) {
			
			if (desta.id == id) return desta;
			
		}
	}
	return null;
}

function searchFocus (event)
{
	var input = $("#searchText").get(0);
	
	if (!input.focusedOnce) {
		input.focusedOnce = true;
		input.value = "";
	}
}

function searchSelectPrev ()
{
	if (searchIndex == 0) return;
	
	$(".searchContent:eq("+searchIndex+")").removeClass("selected");	
	$(".searchContent:eq("+(--searchIndex)+")").addClass("selected");
}

function searchSelectNext ()
{
	if (searchIndex == searchCount - 1) return;
	
	$(".searchContent:eq("+searchIndex+")").removeClass("selected");	
	$(".searchContent:eq("+(++searchIndex)+")").addClass("selected");
}

function searchEnter ()
{
	var searchContent = $(".searchContent:eq("+searchIndex+")");
	
	_searchClick (searchContent);
}

function searchClick (event)
{
	var target = event.target;
	var searchContent = $(target).closest (".searchContent");
	
	_searchClick (searchContent);
}

function searchSelect (event)
{
	var target = event.target;
	var searchContent = $(target).closest (".searchContent");
	
	$(".searchContent").removeClass ("selected");
	searchContent.addClass ("selected");
	
	$(".searchContent").each (function (i) {
		if (this == target) {
			searchIndex = i;
			return false;
		}
	});
}

function _searchClick (searchContent)
{
	//var searchType = searchContent.attr ("searchType");
	//var searchId   = searchContent.attr ("searchId");

	var name       = searchContent.find ("span:first").text();
	

	//$("input:[name='searchType']").val (searchType);
	//$("input:[name='searchId']").val (searchId);
		
	$("#searchForm").attr("action", searchContent.attr ("seoName") + "#form_search");

	
	$("#searchText").val (name);
	
	$("#searchPopup").css ("display","none");
	$("#sel-paxplan").show();
}

function showDatePicker (event)
{
	$(event.target).prev("input").datepicker('show');
}

function searchSubmit ()
{
	/*
	var searchType = $(this).find("input[name='searchType']");
	var searchId = $(this).find("input[name='searchId']");


	
 	var form = $(this);
 	
 	switch (searchType.val())
 	{
 		case 'h':
 			//form.attr ("action", "/twpub/closeupa.cgi");		
 			form.prepend("<input type='hidden' name='cdo' value='" + searchId.val() + "'/>");
 			//searchId.attr ("name","cdo");
  			break;
 		
 		case 'd':
 			//form.attr ("action", "/twpub/searcha.cgi");
 			form.prepend("<input type='hidden' name='loc' value='" + searchId.val() + "'/>");
 			//searchId.attr ("name","loc");
 			break;
 		
 		default:
 			alert ("Merci de choisir un hôtel ou une destination.");
 			return false;		
 	}
 	
	//searchType.remove();
	
	*/
	if ($("#searchForm").attr("action") == "")
		$("#searchForm").attr("action", document.location.href); 
	
	return true;
}

function capitalize (str)
{
	return str.toLowerCase().replace(/\b[a-z]/g, function(){
			return arguments[0].toUpperCase();
		});
}

function noAccent (str)
{
  str = str.replace (/[àâä]/gi,"a");
  str = str.replace (/[éèêë]/gi,"e");
  str = str.replace (/[îï]/gi,"i");
  str = str.replace (/[ôö]/gi,"o");
  str = str.replace (/[ùûü]/gi,"u");
  
  return str
}


$(document).ready (function()
{
/*
	var zIndexNumber = 1000;
	$('div').each(function() {
		$(this).css('zIndex', zIndexNumber);
		zIndexNumber -= 10;
	});
*/	
	var txt = $("#searchText");
 	initSearch();
	txt.keyup (search);
	txt.keydown (searchNavigate);
	txt.focus (searchFocus);
	txt.click (searchFocus);
	$("#searchForm").submit(searchSubmit);
	
	
	$(document).pngFix();
	
	$("input[name=dtd]").datepicker({ 
		duration:'',dateFormat:'dd/mm/yy'
		, minDate : new Date()
		,onClose: function () {
			var newDate = $(this).datepicker('getDate');
			newDate.setDate(newDate.getDate() + 7);
		
			$("input[name=dta]").datepicker('option', 'minDate', $(this).datepicker('getDate'));
			$("input[name=dta]").datepicker('setDate', newDate);
		}
	});
	$("input[name=dta]").datepicker({ duration:'',dateFormat:'dd/mm/yy' });
	$(".calendrier").click (showDatePicker);	
	$(document).click (closeSearch);
	
	$(".ui-datepicker").each(function() {
		$(this).css('z-index', 9999);
	});
	
	$("#sel-paxplan").change(function (){
		var elements = $(this).val().split("/");
		for (var element in elements){
			var chaine = elements[element];
			var chaineSplitted = chaine.split("=");
			
			var name = chaineSplitted[0];
			var value = chaineSplitted[1];
			
			$("#recherche").find("input[type=hidden][name="+"paxplan."+name+"]").val(value);
		}
	});
	
	
	$("#newsletter input[type=text][name=clientemail]").data("default", $("#newsletter input[type=text][name=clientemail]").val());

	$("#newsletter").submit(function (){
		var $input = $(this).find("input[type=text][name=clientemail]");
		if ($input.val() == $input.data("default")){
			alert("Veuillez entrer votre adresse email");
			return false;
		}
	});
	
	$("#newsletter input[type=text][name=clientemail]").focus(function (){
		if ($(this).val() == $(this).data("default"))
			$(this).val("");
	}).blur(function (){
		if ($(this).val() == "")
			$(this).val($(this).data("default"));
	})
	
});