
skMgr.register("adv_clubfloor");
skMgr.register("adv_outpool");
skMgr.register("adv_inpool");
skMgr.register("adv_spa");
skMgr.register("adv_fitness");
skMgr.register("adv_beach");
skMgr.register("adv_tennis");
skMgr.register("adv_squash");
skMgr.register("adv_golf");
skMgr.register("adv_sights");

for(var j=0; j<interestsList.length; j++) {
	skMgr.register("advint_"+interestsList[j]);
}

function advancedSearchInit() {
	
	
	$(".advSearchFacilities input").bind('change',function() {
		$(this).val($(this).val() == 1 ? 0 : 1);
		var activateFilter = $(this).val()  == 1 ? true : false;
		
		var name= $(this).attr('name');
		
		eval("filters."+name+"=activateFilter");
		applyFilters();
	});
	
	
	
	$("#adv_sights").change(function() {
		orderByDistance( $(this).val() );
	});
	
	$(".unmask").click(function() {
        
		$(".advSearchFacilities input").removeAttr("checked");
		$(".advSearchFacilities input").val("0");
        
		$(".advSearchFacilities .skinnableCheckbox").each(function () {
			var obj = skMgr.getById(this.id.substr(5, this.id.length));
			obj.refresh();
		})
		
		jQuery.each(filters, function(key) {
              eval("filters."+key+" = false");
        });
        applyFilters();
        
		return false;
    });
	
	$(".searchOffersDropdown").click(function() {
        
		var v = $(this).parent().next().css('display');
		if(v == 'none') {
			$(this).parent().next().load($(this).attr('href'), function() {
				updateOffers();
				$(this).show();
			})
        } else {
			$(this).parent().next().hide().empty();
		}		
		return false;
	});
}

function updateOffers() {
	
	$(".offersClose").unbind('click');
	$(".offersClose").bind('click', function () {
        $(this).parent().parent().hide().empty();
        return false;        
    }); 
	
}


function applyFilters() {
    
    //pour chaque hotel, vérifie qu'il remplit les filtres.
	//si ce n'est pas le cas, on le masque 
    var masked = 0;
	
	for(var i= 0; i < amenities.length; i++) {
        
		hide = false;

		if(filters.clubfloor == true && amenities[i].clubfloor == false) {
            //marque l'hotel comme à masquer
            hide = true;
        }
		if(filters.outpool == true && amenities[i].outpool == false) {
            //marque l'hotel comme à masquer
            hide = true;
        }
		if(filters.inpool == true && amenities[i].inpool == false) {
            //marque l'hotel comme à masquer
            hide = true;
        }
		if(filters.spa == true && amenities[i].spa == false) {
            //marque l'hotel comme à masquer
            hide = true;
        }
		if(filters.fitness == true && amenities[i].fitness == false) {
            //marque l'hotel comme à masquer
            hide = true;
        }
		if(filters.beach == true && amenities[i].beach == false) {
			//marque l'hotel comme à masquer
			hide = true;
		}
		if(filters.tennis == true && amenities[i].tennis == false) {
            //marque l'hotel comme à masquer
            hide = true;
        }
		if(filters.squash == true && amenities[i].squash == false) {
            //marque l'hotel comme à masquer
            hide = true;
        }
        if(filters.golf == true && amenities[i].golf == false) {
            //marque l'hotel comme à masquer
            hide = true;
        }
		
		if(! hide) {
			//interests
			//pour chaque interet actif filtré, on regarde si l'hotel a cet intéret
			for(var j=0; j<interestsList.length; j++) {
			    //console.log('on traite '+interestsList[j]);
				
				if(eval("filters.advint_"+interestsList[j]+" == true")) { //si on a demandé à filtrer
	                
					//console.log('filtre active sur '+interestsList[j]);
	                
					var found = false;
				    for(k=0; k<amenities[i].interests.length; k++) {
		                if(amenities[i].interests[k] == interestsList[j]) {
						    found = true;
					    }
		            }
				    if(!found) {hide = true};
			    }
			}
		}
	
		if(hide) {
			//masque l'item de la liste des hotels
			$("#hotel_"+amenities[i].id).hide();
			masked ++;
		} else {
			//affiche l'item dans la liste
			$("#hotel_"+amenities[i].id).show();
		}		
    }
	
	//message
    if(masked == amenities.length) {
        $("#advSearchMaskAllMsg").show();
        $("#advSearchMaskMsg").hide();
    } else if(masked == 0) {
        $("#advSearchMaskMsg").hide();
        $("#advSearchMaskAllMsg").hide();           
    } else { // amenities.length
        if(masked == 1) {
            $("#advSearchMaskMsgNb").text(masked+' '+intTexts.hidden1);
        } else {
			$("#advSearchMaskMsgNb").text(masked+' '+intTexts.hiddenMany);
		}
		$("#advSearchMaskMsg").show();
        $("#advSearchMaskAllMsg").hide();
    }
    
	//mode nosearch : masque les listes parents si elles sont vides
	if(noSearch) {
		$('.noSearchList > li > ul').children().each(function() {
			if(! $(this).find('li:visible').length) {
				$(this).hide();
			} else {
				$(this).show();
			}
		});

        $('.noSearchList').children().each(function() {
            if(! $(this).find('li:visible').length) {
                $(this).hide();
            } else {
                $(this).show();
            }
        });
    } 
}


function orderByDistance(sightId) {
	var ordered = new Array();
	if(! sightId)
	   return false;
	
	for(var i=0; i< distances.length; i++) {
		var hId = distances[i].id;
		for(var j=0; j< distances[i].m.length; j++) {
			if(distances[i].m[j].id == sightId) {
                ordered.push({id:hId, d:distances[i].m[j].d});
			}
		}
	}
	ordered.sort(sortDists);
	ordered.reverse();
	
	//re-order the search results in the list
	for(var i=0; i < ordered.length; i++) {	
		$("#hotel_"+ordered[i].id).prependTo("#searchResultsList");
	}
}

function sortDists(a,b)
{
    return a.d - b.d;
}

$(document).ready(advancedSearchInit);

