/**
 * @author Jaap - Autodealers
 * Zoekfilterobject functionaliteit
 * Vereist jQuery 1.3 of hoger
 */
var adfilter;

function Zoekfilter() {
	this.containerWidth;
	var handle = this;
	// ************* methods **************
	
	// format functie
	this.format = function() {
		handle.containerWidth = $("ul.zoekfilters_categorie").parent().width(); // bepaal de grote van de container waar filters in staan
		handle.marginRight = parseInt($("ul.zoekfilters_categorie:first").css("margin-right")); // bepaal de ruimtes tussen de categorien zoals bepaald in CSS
		//alert("containerWidth: "+handle.containerWidth+"\nmarginRight: "+handle.marginRight);
		$("ul.zoekfilters_categorie").each(function(i) {
			if (handle.containerWidth >= 0) {
				var listWidth = $(this).width();
				var nextWidth = $("ul.zoekfilters_categorie:eq(" + (i + 1) + ")").width();
				if ((listWidth + handle.marginRight + nextWidth) <= handle.containerWidth) {
					// er is ruimte voor de lijst + de volgende
					$(this).css("display","inline");
					if($.browser.msie) { //Dit om ervoor te zorgen dat de lijstjes recht onder elkaar staan in ie
					    $(this).css("margin-left", '-15px');
					 }
				} else if (listWidth <= handle.containerWidth) {
					// er is ruimte voor alleen nog deze lijst
					$(this).css("margin-right", 0).css("display","inline");
					if($.browser.msie) { //Dit om ervoor te zorgen dat de lijstjes recht onder elkaar staan in ie
					    $(this).css("margin-left", '-15px');
					}
				} else {
					$(this).hide();
				}
				handle.containerWidth = handle.containerWidth - listWidth - handle.marginRight;
			} else {
				$(this).hide();
			}
		});
	}
	
	// verwijder de filter
	this.removeFilter = function (zoekCriterium) {
		// Fade uit en laat link volgen
		zoekCriterium.parents("li").fadeOut(100, function(){
			return true;
		});
	}
	
	// laden van zoekfilters
	this.laden = function (rUrl) {
		if ($("#zoekfilters > div").length < 1) { // als er geen zoekscherm is
	        $.ajax({ // zoekscherm laden
		        type: requestType,
		        url: rUrl,
		        dataType: "html",
				success: function(resultaat) {
					$(resultaat).appendTo("#zoekfilters");
					$(".zoek_resultaten_tools_zoekfilters").addClass("current");
					$("ul.zoekfilters_categorie").each(function(i) { // voor elke zoekcategorie
						$(this).attr("id", "zoekfilters_"+i).hide(); // verberg alle zoek categorien
					});
							
					handle.format();
				}
		    });
			
			
			// *********** constructor *************
			$("ul.zoekfilters_categorie").each(function(i) { // voor elke zoekcategorie
				$(this).attr("id", "zoekfilters_"+i).hide(); // verberg alle zoek categorien
			});
			
	    } else { // als het zoekscherm er wel al is
			$(".zoek_resultaten_tools_zoekfilters").toggleClass("current");
			$("#zoekfilters").toggle();
		}
	}
}

/** Autos vergelijken **/


function vergelijkAutos(object) {
	var ids = new Array();
	var prefix = "";
	var queryString = $(object).attr("href");
	
	$(".zoek_resultaat_vergelijk input:checked").each(function(i){
		ids[ids.length] = parseInt($(this).val().substr(prefix.length));
	});
	
	if (queryString.indexOf('?') > -1) { // als er al een parameter is
		queryString += "&vid=";
	} else {
		queryString += "?vid=";
	}
	
	for (i=0; i < ids.length; i++) {
		if (i == 0) {
			queryString += ids[i];
		} else {
			queryString += ","+ids[i];
		}
	}
	// console.log(queryString);
	
	if (ids.length <= 1) { // als er maar 1 id is
		return false;
	} else {
		$(object).attr("href",queryString);
		return true;
	}
}

/** Autos sorteren **/
function sorteerAutos(object) {
	if ($(".zoek_resultaten_tools_sorteren_dropdown:visible").length < 1) { // als sorteerdropdown dicht is
		$(object).addClass("current");
		$(".zoek_resultaten_tools_sorteren_dropdown").slideDown(150, function(){
			$("body").bind("click", function() {
				$(".zoek_resultaten_tools_sorteren_dropdown").slideUp(150).unbind("click");
				$(object).removeClass("current");
				$("body").unbind("click");
			});
			
			$(".zoek_resultaten_tools_sorteren_dropdown").bind("click", function(event){
				event.stopPropagation();
			});
		});
		

	} else { // als dropdown open is
		$(object).removeClass("current");
		$(".zoek_resultaten_tools_sorteren_dropdown").slideUp(150);
	}
	
	
	return false;
}

$(document).ready(function(){
	// ********** zoekfilter *************
	adfilter = new Zoekfilter();
	
	$("ul#zoekfilters_criteria li a").live("click", function(){
		return adfilter.removeFilter($(this));
	});
	
	$("ul.zoekfilters_categorie li a.meer").live("click", function(){
		$(this).parents("li").siblings(".zoekfilters_item_hide").toggle();
		var newText;
		
		if ($(this).text().substr(0,6) == "+ meer") {
			newText = "- minder"+$(this).text().substr(6);
		} else if ($(this).text().substr(0,8) == "- minder"){
			newText = "+ meer"+$(this).text().substr(8);
		}
		
		$(this).text(newText);
		return false;
	});
	
	// ********* vergelijking ***********
	$("a.zoek_resultaten_tools_vergelijk").click(function(){
		return vergelijkAutos(this);
	});
	
	// ********* sorteren ***********
	$("a.zoek_resultaten_tools_sorteren").click(function(){
		return sorteerAutos(this);
	});
	
	
	nieuweFilters = function(){
		if ($(".zoek_resultaten_tools_zoekfilters").length > 0) {
			$(".zoek_resultaten_tools_zoekfilters").bericht("<h4>Vind uw auto sneller</h4><p>Probeer onze nieuwe zoekfilters om snel de auto van u keuze te vinden</p>", {
				fadeInDuur: 1000,
				duur: 6000
			});
		}
	}
	
	
	setTimeout("nieuweFilters()", 3000);
});
