var oldNumber;
var isFormLocked = true;
var ajaxListener = "/remote77/ajaxListener.cfc";
$(function(){
	// bind loader to ajax requests
	$(".loader").ajaxStart(function(){ $(this).show(); }).ajaxStop(function(){$(this).hide();});

	// bind form element events to submit the form through a timeout.
	$("input,select","#searchForm").not(".ignore").keyup(timeoutFrm);
	$("input:checkbox", $(".subcat-form-l")).click(timeoutFrm);
	$("#selectBox select").change(function(){
		timeoutFrm(); createItemInfoBar(this);
	}).each(function(){  createItemInfoBar(this)});
	$(".ui-slider").bind("slidechange",function(event,ui){ timeoutFrm(); });
	$("#subcat-form-postcode").keyup(function(){
		currentValue = $(this).val();
		if(currentValue.length > 0){
			$(".active-highlight-map").trigger("click");
			$(this).removeClass("ignore");
		} else {
			$(this).addClass("ignore");
		}
		timeoutFrm();
	});
	// toggle slider for checkboxes.
	$("#verfijn_show_options, #verfijn_hide_options").click(function(){
		$(".extraOption").toggle();
		$("#show_options").slideToggle(500); 
		$("#verfijn_show_options").toggle();
		$("#verfijn_hide_options").toggle();
	});

	// bind hideButton to checkboxes
	$("#show_options .option-item input:checkbox").change(function(){
		toggleHideButton();
		timeoutFrm();
	});

	// expand checkBoxes when options were selected.
	var checkedBoxes = $("#show_options .option-item input:checkbox:checked");
	if(checkedBoxes.length > 0) { $("#verfijn_show_options").trigger("click"); toggleHideButton();}

	// price range slider.
	if ($("#price-range").length) {
		//createStandardPriceSlider();
		createVariablePriceSlider();
	}
});
$(window).load(function(){
	isFormLocked = false;
});
function submitAjaxForm(){
	var params = createFrmObject();
	params["wsdl"] = "";
	params["method"] = "countClassifieds";
	$.get(ajaxListener,	params,	setSearchNumber	);
}
var timeout;
function timeoutFrm(){
	if(!isFormLocked){
		clearTimeout(timeout); 
		timeout = setTimeout(submitAjaxForm,500);
	}
}
function setSearchNumber(number){
	var x = number.toString();
	var strNumber = "";
	var counter = 0;
	for(var i=x.length-1; i >= 0; i--){
		if(counter % 3==0 && i < x.length-1 && counter > 0){
			strNumber = "." + strNumber;
		}
		strNumber = x.substring(i,i+1) + strNumber;
		counter++;
	}
	if(x.length >= 4){
		if(x.length >= 6){
			$(".numberOfSearchResults:eq(0),.numberOfSearchResults:eq(2)").html('<span class="tinyNumber">' + strNumber + '</span>');
		} else {
			$(".numberOfSearchResults:eq(0),.numberOfSearchResults:eq(2)").html('<span class="smallNumber">' + strNumber + '</span>');
		}
		$(".numberOfSearchResults:eq(1),.numberOfSearchResults:eq(3)").html(strNumber + " ");
	} else {
		$(".numberOfSearchResults").html(strNumber);
	}
	if(number != oldNumber) {
		highlightResults();
	}
	toggleSubmit();
}
function toggleSubmit(){
	var submitButton = $("#btnSubmitForm");
	if(!submitButton.data("init")) {
		submitButton.data("init", true);
	}
}
function createFrmObject() {
	var frmObject = {};
	var rangeObject = {};
	var defaultValues = {pricemin:0,pricemax:999999999,lang0:0,lang1:0,typev:0,typea:0,photo:0,sort:" ",r:20};
		defaultValues["lock-regio"] = 0;
	$("#searchForm input[name], #searchForm select[name]").not(":checkbox[name='cca_options'],.ignore").each( function(i,item){
		var _name = $(this).attr("name");
		if( $(this).attr("type") == "checkbox" ) {
			if( defaultValues[_name] === undefined || defaultValues[_name] != $(this).val() ){
				frmObject[_name] = (this.checked ? 1 : 0);
			}
		} 
		else if( /_(van|tot)/i.test(_name) ) {
			if( /_van/.test(_name) ){
				rangeObject[_name] = $(this).val();
			} else {
				var testStr = _name.replace("_tot","_van");
				if( rangeObject[ testStr ] ){
					frmObject[testStr] = rangeObject[ testStr ];
					frmObject[_name] = $(this).val();
				}	
			}
		}
		else {
			if($(this).val().toString().length > 0){
				if( defaultValues[_name] === undefined || defaultValues[_name] != $(this).val() ){
					frmObject[_name] = $(this).val();
				}
			}
		}
	});
	frmObject["cca_options"] = "";
	$("#searchForm input:checkbox[name='cca_options']:checked").each(function(){
		frmObject["cca_options"] += $(this).val() + ",";
	});
	return frmObject;
}
function createGetString(){
	var frmObject = createFrmObject();
	var get = "?";
	for(var key in frmObject) {
		get += key + "=" + frmObject[key] + "&";
	}
	return get;
}
function submitSearchForm(){
	document.location.href = redirectDomain + createGetString() + "#results";
	//$("#searchForm").trigger("submit");
}
function showSubRubriekenBox(){
	$("#infoSubrubriek").hide();
	$("#infoSelectSubrubriek").show();
	$("#SubRubriekenID").bind("blur",function(){
		hideSubRubriekenBox();
	});
}
function hideSubRubriekenBox(){
	$("#infoSubrubriek").show();
	$("#infoSelectSubrubriek").hide();
	$("#SubRubriekenID").focus();
}
function toggleHideButton() {
	var length = $("#show_options .option-item input:checkbox:checked").length;
	if(length > 0) {
		$("#wis-alle-verfijningen").slideDown();
	} else {
		$("#wis-alle-verfijningen").slideUp();
	}
}
function removeCBValues(){
	$("#show_options .option-item input:checkbox:checked").attr("checked","");
	toggleHideButton();
	submitAjaxForm();
}
function highlightResults(){
	$("#btnSubmitForm").removeClass("inactivesubmitBtn").addClass("submitBtn");
	$(".hugeNumber").pulse({textColors:['#f60','darkgrey', '#06c', 'silver'],runLength: 1});
	
}
function createItemInfoBar(elem) {
	var infoBarItemId = elem.name+"-infobar";
	var infoBarItemHtml = "";
	
	if ($(elem).val().length == '') {
		removeItemInfoBar(elem.name);
	} else {
		if($("#"+infoBarItemId).length) {
			$(".verfijn_catvalue","#"+infoBarItemId).html( elem.options[elem.selectedIndex].text );
			if (elem.name == "SubSubrubriekenIDLevel1") { removeItemInfoBar("SubSubrubriekenIDLevel2"); }
		} else {
			infoBarItemHtml += '<div id="'+infoBarItemId+'" class="infokeuzes"><div class="geenrand">';
			//infoBarItemHtml += '<span class="verfijn_cat">'+$(elem).parent().parent().find("label[for='"+elem.name+"']:eq(0)").html()+'</span>';
			infoBarItemHtml += '<span class="verfijn_catvalue">'+elem.options[elem.selectedIndex].text+'</span>';
			infoBarItemHtml += '&nbsp; <a class="orange" href="javascript:void(0)" onclick="removeItemInfoBar(\''+elem.name+'\');">x</a>';
			infoBarItemHtml += '</div><div class="clearer"></div></div>';
			$(infoBarItemHtml).insertBefore("#info-bar-opties > .clearer");
		}
	}
}
function removeItemInfoBar(elemName) {
	$("#"+elemName+"-infobar").remove();
	node = $("select[name='"+elemName+"']").get(0);
	if(node) {
		node.options[0].selected=true;
		timeoutFrm();
		if(node.name == "SubSubrubriekenIDLevel1") {
			removeItemInfoBar("SubSubrubriekenIDLevel2");
		}
	}
}				
function updateRegionCookie() {
	var regionLock = $("#lock-regio:checked").length;
	var regionCode = $("#prov-frm-field").val();
	$.get(ajaxListener,{wsdl:"",method:"updateRegionCookie",regionLock:regionLock,regionCode:regionCode},function(){ });
}
function loadNextLevel(oSelect,currentLevel) {
	var selectedValue = oSelect.options[oSelect.selectedIndex].value;
	var nextLevelId = "SubSubrubriekenIDLevel"+(currentLevel+1);
	if(selectedValue.length) {
		$.getJSON(ajaxListener,{subRubriekId:subCategoryId,parentIdList:selectedValue,wsdl:"",method:"getSubSubCategory"},function(rsSubSubCategory){
			var options = "<option value=''></option>";
			$("#"+nextLevelId).empty();
			if(rsSubSubCategory["DATA"].length) {
				for(var i=0; i < rsSubSubCategory["DATA"].length;i++) {
					options += '<option value="' + rsSubSubCategory["DATA"][i][1] + '">' + rsSubSubCategory["DATA"][i][0] + '</option>';
				}
				$("#"+nextLevelId).append(options).trigger("change");
				$("#"+nextLevelId).parent().parent().pulse({backgroundColors:['#ECF4FE','#FFF'],runLength: 1});
			}
		})
		
	} else {
		$("#"+nextLevelId).empty().append("<option value=''></option>").trigger("change");
	}
}
function createStandardPriceSlider() {
	maxPriceSlider = maxPriceSlider || 10000; // check to make sure is has a correct value;
	$("#price-range").slider({
		range: true,
		min: 0,
		max: maxPriceSlider,
		values: [$("#pricemin").val(), $("#pricemax").val()],
		step: calcStepValue(0, maxPriceSlider),
		slide: function(event, ui){
			var maxvalue = ui.values[1];
			var minvalue = ui.values[0];
			if (maxvalue == $("#price-range").slider("option", "max")) {
				$("#pricemax").val(999999999);
				$("#price-amount").val(formatNumber(ui.values[0]) + ' - max Euro');
			}
			else {
				$("#price-amount").val(formatNumber(ui.values[0]) + ' - ' + formatNumber(ui.values[1]) + ' Euro');
				$("#pricemax").val(ui.values[1]);
			}
			$("#pricemin").val(ui.values[0]);
			timeoutFrm();
		}
	});
	var maxvalue = $("#price-range").slider("values", 1);
	if (maxvalue == $("#price-range").slider("option", "max")) {
		maxvalue = "max";
	}
	$("#price-amount").val(formatNumber($("#price-range").slider("values", 0)) + ' - ' + maxvalue + ' Euro');	
}
function createVariablePriceSlider(){
	var variablePriceValues = [0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,225,250,275,300,350,400,450,500,600,700,800,900,1000,1250,1500,1750,2000,2500,3000,3500,4000,4500,5000,5500,6000,6500,7000,7500,8000,8500,9000,9500,10000,11000,12000,13000,14000,15000,16000,17000,18000,19000,20000,25000,30000,35000,40000,45000,50000,100000,150000,200000,250000,300000,350000,400000,450000,500000,600000,700000,800000,900000,1000000,1500000,2000000,5000000,6000000,7000000,8000000,9000000,10000000];
	$("#price-range").slider({
		range: true,
		min: 0,
		max: (variablePriceValues.length-1),
		values: [findInArray(variablePriceValues,$("#pricemin").val()), (findInArray(variablePriceValues,$("#pricemax").val()) > 0 ? findInArray(variablePriceValues,$("#pricemax").val()) : (variablePriceValues.length-1) )],
		step: 1,
		slide: function(event, ui){
			var maxvalue = ui.values[1];
			$("#pricemin").val(variablePriceValues[ui.values[0]]);
			if (maxvalue == $("#price-range").slider("option", "max")) {
				$("#pricemax").val(999999999);
				$("#price-amount").val(formatNumber(variablePriceValues[ui.values[0]]) + ' - max Euro');
			} else {
				$("#pricemax").val(variablePriceValues[ui.values[1]]);
				$("#price-amount").val(formatNumber(variablePriceValues[ui.values[0]]) + ' - ' + formatNumber(variablePriceValues[ui.values[1]]) + ' Euro');
			}
			timeoutFrm();
		}
	});
	var maxvalue = $("#price-range").slider("values", 1);
	if (maxvalue == $("#price-range").slider("option", "max")) {
		maxvalue = "max";
	}
	$("#price-amount").val(formatNumber(variablePriceValues[$("#price-range").slider("values", 0)]) + ' - ' + (maxvalue == "max" ? maxvalue : formatNumber(variablePriceValues[$("#price-range").slider("values", 1)]) ) + ' Euro');	
}

function navigateSubrubriek(obj,url) {
	var option = obj.options[obj.selectedIndex];
	var domainArray = url ? url.split("/") : redirectDomain.split("/");
	redirectDomain = "/" + (domainArray[1] != "results" ? domainArray[1] : regexFormat($("#rubriek-name").text())) + "/" + regexFormat(option.text) + "/";
	submitSearchForm();
}
function regexFormat(s) {
	// replace spaces with _
	var regex;
	var replaceArray = [["-",""],[" {2,}"," "],["'",""],["[ëèéê]","e"],["[áäàãåâ]","a"],["[úüùû]","u"],["[óöòõô]","o"],["[ïíìî]","i"],["ñ","n"],["[^A-Za-z0-9-]","_"]];
	for(var x=0; x < replaceArray.length;x++) {
		regex = new RegExp( replaceArray[x][0], "gi" );
		s = s.replace( regex, replaceArray[x][1] )
	}
	return s;
}
function postCodeFrm(){
	
}
function selectCountry(){
	$('.active-highlight-map').trigger("click");
	//$(".map-highlight-active").trigger("clear");
}
