$(function() {
	
	getAutoData(0,"merk,ASC");
	initSearchList();
	
	$(".sort").click(function() {
		$(this).removeAttr("href");
		$(this).css({cursor:"pointer"});
		
		var rev = $(this).attr("rev");
		
		$(".cavCarSortOptions").find(".sort").each(function() {
			if($(this).hasClass("blueArrowDown") || $(this).hasClass("blueArrowUp")) {
				if ($(this).attr("rev") == rev) {
					if ($(this).hasClass("blueArrowDown")) {
						$(this).removeClass("blueArrowDown");
						$(this).addClass("blueArrowUp");
						$(this).attr("rel","DESC");
					} else {
						$(this).removeClass("blueArrowUp");
						$(this).addClass("blueArrowDown");
						$(this).attr("rel","ASC");
					}
				} else {
					$(this).removeClass("blueArrowDown");
					$(this).removeClass("blueArrowUp");
					$(this).addClass("grayArrowDown");
					$(this).attr("rel","ASC");
				}
			} else {
				if ($(this).attr("rev") == rev) {
					$(this).removeClass("grayArrowDown");
					$(this).addClass("blueArrowDown");
				}
			}
		});
		getAutoData(0,rev + "," + $(this).attr("rel"));
	});
	
	$(".searchEdit").click(function() {
		var url = $(this).attr("href");
		$(this).removeAttr("href");
		$.post("/cavSetData.php",{searchType:"edit"}, function(data) {
			if (data.succes) {
				location.href = "/"+ url;
			}
		},"json");
	});

	$(".searchNew").click(function() {
		var url = $(this).attr("href");
		$(this).removeAttr("href");
		$.post("/cavSetData.php",{searchType:"new"}, function(data) {
			if (data.succes) {
				location.href = "/" + url;
			}
		},"json");
	});

	$('#cavMerk').change(function() {
		$('#cavModel').html("");
		$('#cavModel').append("<option value=\"\">Alle modellen</option>");

		$.post('/cavGetData.php',{dataType:'model', merk:$(this).val(), carType:CARTYPE},
			function(modelData) {
				for (i in modelData.model) {
					if (i != parseInt(i)) {
						continue;
					}
					$('#cavModel').append('<option value="' + modelData.model[i].voertuigtype + '">' + modelData.model[i].voertuigtype + '</option>');
				}
			}, 'json');
	});

	$(".searchBtn").click(function() {
		updateList();
	});
});

function updateList() {
	dataObject = makeDataObj();
	$.post('/cavSetData.php',dataObject,
		function(data) {
			if (data.succes) {
				getAutoData(0,"prijs,ASC");
				initSearchList();
			} else {
				alert("zoekopdracht niet verzonden");	
			}
		},"json");
}

function updatePage(obj) {
	dataObject = makeDataObj();
	$.post('/cavSetData.php',dataObject,
		function(data) {
			if (data.succes) {
				location.href = $(obj).attr("href");
			} else {
				alert("zoekopdracht niet verzonden");	
			}
		},"json");
}

function makeDataObj() {
	dataObject = new Object;
	$(".cavSearchUpdate").find('select, input:checked').each(function() {
		dataObject[$(this).attr('name')] = $(this).val();
	});
	
	dataObject['cavBrandstof'] = "";
	dataObject['cavTransmissie'] = "";
	$(".brandstof , .transmissie").find("a.selected").each(function() {
		dataObject[$(this).attr('rel')] = $(this).attr('rev');
	});
	
	dataObject['dataType'] = 'search';
	return dataObject;
}

function listHoverEnter(obj) {
	obj.find(".cavCarListElementImage").addClass("cavCarListElementImageHover");
	obj.css("color","#004379");
	obj.find("a.modelLink").css("color","#004379");
}

function listHoverLeave(obj) {
	obj.find("a.modelLink").css("color","#5A5B5A");
	obj.css("color","#5A5B5A");
	if(obj.find(".cavCarListElementImage").hasClass("cavCarListElementImageHover")){
		obj.find(".cavCarListElementImage").removeClass("cavCarListElementImageHover");
	}
}

function photoHoverEnter(obj) {
	obj.find(".cavCarPhotoElementImage").addClass("cavCarPhotoElementImageHover");
	obj.css("color","#004379");
	obj.find("a.modelLink").css("color","#004379");
}

function photoHoverLeave(obj) {
	obj.find("a.modelLink").css("color","#5A5B5A");
	obj.css("color","#5A5B5A");
	if(obj.find(".cavCarPhotoElementImage").hasClass("cavCarPhotoElementImageHover")){
		obj.find(".cavCarPhotoElementImage").removeClass("cavCarPhotoElementImageHover");
	}
}

function initSearchList() {
	$.post('/cavGetData.php', {dataType:'initSearchList', carType: CARTYPE}, function(data) {
		// Alle merken
		$("#cavMerk").html("");
		$("#cavMerk").append("<option value=\"\">Alle merken</option>");
		for (i in data.merk.car) {
			if (i != parseInt(i)) {
				continue;
			}
			$("#cavMerk").append("<option value=\"" + data.merk.car[i].voertuigmerk_omschrijving + "\"" + (data.merk.car[i].voertuigmerk_omschrijving == data.merk.selected ? " selected=\"selected\"":"") + ">" + data.merk.car[i].voertuigmerk_omschrijving + "</option>");
		}
		
		// Modellen
		$("#cavModel").html("");
		$("#cavModel").append("<option value=\"\">Alle modellen</option>");
		for (i in data.model.car) {
		//for (i in modelData.model) {
			if (i != parseInt(i)) {
				continue;
			}

			$("#cavModel").append("<option value=\"" + data.model.car[i].voertuigtype + "\"" + (data.model.car[i].voertuigtype.toLowerCase() == data.model.selected.toLowerCase() ? " selected=\"selected\"":"") + ">" + data.model.car[i].voertuigtype + "</option>");
		}
				
		// Prijzen
		$("#cavPrijsVan").html("");
		$("#cavPrijsVan").append("<option value=\"\">Minimum prijs</option>");
		$("#cavPrijsTot").html("");
		$("#cavPrijsTot").append("<option value=\"\">Maximum prijs</option>");
		var x = 500;
		for (i = 500; i <= 100000; (i = i + x)) {
			$("#cavPrijsVan").append('<option value="' + i + '"' + (i == data.prijsVan.selected ? ' selected="selected"':'') + '>&euro; ' + i + '</option>');
			$("#cavPrijsTot").append('<option value="' + i + '"' + (i == data.prijsTot.selected ? ' selected="selected"':'') + '>&euro; ' + i + '</option>');
			if (i >= 2500 && i < 10000) {
				x = 2500;
			} else if (i >= 10000 && i < 30000) {
				x = 5000;	
			} else if (i >= 30000) {
				x = 10000;	
			}
		}
		
		// Aantal kilometers
		$("#cavKilometerVan").html("");
		$("#cavKilometerVan").append("<option value=\"\">Minimum kilometers</option>");
		$("#cavKilometerTot").html("");
		$("#cavKilometerTot").append("<option value=\"\">Maximum kilometers</option>");
		for (i = 10000; i <= 150000; (i = i + 10000)) {
			$("#cavKilometerVan").append('<option value="' + i + '"' + (i == data.kilometerVan.selected ? ' selected="selected"':'') + '>' + i + '</option>');
			$("#cavKilometerTot").append('<option value="' + i + '"' + (i == data.kilometerTot.selected ? ' selected="selected"':'') + '>' + i + '</option>');
		}
		
		// Bouwjaar
		var today = new Date();
		$("#cavBouwjaarVan").html("");
		$("#cavBouwjaarVan").append("<option value=\"\">Minimum bouwjaar</option>");
		$("#cavBouwjaarTot").html("");
		$("#cavBouwjaarTot").append("<option value=\"\">Maximum bouwjaar</option>");
		for (i = today.getFullYear(); i >= data.bouwjaar.bouwjaar; i--) {
			$("#cavBouwjaarVan").append('<option value="' + i + '"' + (i == data.bouwjaarVan.selected ? ' selected="selected"':'') + '>' + i + '</option>');
			$("#cavBouwjaarTot").append('<option value="' + i + '"' + (i == data.bouwjaarTot.selected ? ' selected="selected"':'') + '>' + i + '</option>');
		}
		
		// Occasion / demo / nieuwe voertuigen
		$(".type").html("");
		$(".type").append('<a href="occasion-overzicht.html" class="updateType' + (data.type.selected == 1 ? ' selected':'') + '" title="Occasions (' + (data.type.occasion ? data.type.occasion:'0') + ')">Occasions (' + (data.type.occasion ? data.type.occasion:'0') + ')</a>');
		$(".type").append('<a href="demonstratieautos-overzicht.html" class="updateType' + (data.type.selected == 2 ? ' selected':'') + '" title="Demonstratieauto\'s ( ' + (data.type.demo ? data.type.demo:'0') + ')">Demonstratieauto\'s (' + (data.type.demo ? data.type.demo:'0') + ')</a>');
		$(".type").append('<a href="nieuwe-autos-overzicht.html" class="updateType' + (data.type.selected == 4 ? ' selected':'') + '" title="Nieuwe auto\'s op voorraad ( ' + (data.type.nieuw ? data.type.nieuw:'0') + ')">Nieuwe auto\'s op voorraad (' + (data.type.nieuw ? data.type.nieuw:'0') + ')</a>');
		
		// Brandstof
		$(".brandstof").html("");
		$(".brandstof").append('<a href="#" class="updateList' + (data.brandstof.selected == "B" ? ' selected':'') + '" title="Benzine (' + (data.brandstof.aantal['B'] ? data.brandstof.aantal['B']:'0') + ')" rel="cavBrandstof" rev="B">Benzine (' + (data.brandstof.aantal['B'] ? data.brandstof.aantal['B']:'0') + ')</a>');
		$(".brandstof").append('<a href="#" class="updateList' + (data.brandstof.selected == "D" ? ' selected':'') + '" title="Diesel (' + (data.brandstof.aantal['D'] ? data.brandstof.aantal['D']:'0') + ')" rel="cavBrandstof" rev="D">Diesel (' + (data.brandstof.aantal['D'] ? data.brandstof.aantal['D']:'0') + ')</a>');
		$(".brandstof").append('<a href="#" class="updateList' + (data.brandstof.selected == "E" ? ' selected':'') + '" title="Electrisch (' + (data.brandstof.aantal['E'] ? data.brandstof.aantal['E']:'0') + ')" rel="cavBrandstof" rev="E">Electrisch (' + (data.brandstof.aantal['E'] ? data.brandstof.aantal['E']:'0') + ')</a>');
		$(".brandstof").append('<a href="#" class="updateList' + (data.brandstof.selected == "G" ? ' selected':'') + '" title="Gas (' + (data.brandstof.aantal['G'] ? data.brandstof.aantal['G']:'0') + ')" rel="cavBrandstof" rev="G">Gas (' + (data.brandstof.aantal['G'] ? data.brandstof.aantal['G']:'0') + ')</a>');
		$(".brandstof").append('<a href="#" class="updateList' + (data.brandstof.selected == "A" ? ' selected':'') + '" title="Aardgas (' + (data.brandstof.aantal['A'] ? data.brandstof.aantal['A']:'0') + ')" rel="cavBrandstof" rev="A">Aardgas (' + (data.brandstof.aantal['A'] ? data.brandstof.aantal['A']:'0') + ')</a>');
		$(".brandstof").append('<a href="#" class="updateList' + (data.brandstof.selected == "H" ? ' selected':'') + '" title="Hybride (' + (data.brandstof.aantal['H'] ? data.brandstof.aantal['H']:'0') + ')" rel="cavBrandstof" rev="H">Hybride (' + (data.brandstof.aantal['H'] ? data.brandstof.aantal['H']:'0') + ')</a>');

		// Transmissie
		$(".transmissie").html("");
		$(".transmissie").append('<a href="#" class="updateList' + (data.transmissie.selected == "H" ? ' selected':'') + '" title="Handgeschakeld (' + (data.transmissie.aantal['H'] ? data.transmissie.aantal['H']:'0') + ')" rel="cavTransmissie" rev="H">Handgeschakeld (' + (data.transmissie.aantal['H'] ? data.transmissie.aantal['H']:'0') + ')</a>');
		$(".transmissie").append('<a href="#" class="updateList' + (data.transmissie.selected == "A" ? ' selected':'') + '" title="Automaat (' + (data.transmissie.aantal['A'] ? data.transmissie.aantal['A']:'0') + ')" rel="cavTransmissie" rev="A">Automaat (' + (data.transmissie.aantal['A'] ? data.transmissie.aantal['A']:'0') + ')</a>');
		$(".transmissie").append('<a href="#" class="updateList' + (data.transmissie.selected == "Q" ? ' selected':'') + '" title="Sequentronic (' + (data.transmissie.aantal['Q'] ? data.transmissie.aantal['Q']:'0') + ')" rel="cavTransmissie" rev="Q">Sequentronic (' + (data.transmissie.aantal['Q'] ? data.transmissie.aantal['Q']:'0') + ')</a>');
		$(".transmissie").append('<a href="#" class="updateList' + (data.transmissie.selected == "S" ? ' selected':'') + '" title="Semi-automaat (' + (data.transmissie.aantal['S'] ? data.transmissie.aantal['S']:'0') + ')" rel="cavTransmissie" rev="S">Semi-automaat (' + (data.transmissie.aantal['S'] ? data.transmissie.aantal['S']:'0') + ')</a>');
		
		$(".updateList").bind("click", function() {
			$(this).removeAttr("href");
			$(this).css({cursor:"pointer"});
			if ($(this).hasClass("selected")) {
				$(this).removeClass("selected");	
			} else {
				$(this).parent().find("a").removeClass("selected");
				$(this).addClass("selected");
			}
			updateList();
		});
		
		$(".updateType").bind("click", function(){
			updatePage($(this));
		});
		
	},"json");
}

function getAutoData(pageId, orderBy) {
	$.post('/cavGetData.php',{dataType:'getCars', pageId:pageId, orderBy:orderBy, carType: CARTYPE},function(data) {
		$(".cavCarDataList").html("");
		$(".cavCarDataPhoto").html("");
		if (data.pages.carType == 1) {
			carTypeText = "occasion(s)";
		} else if(data.pages.carType == 2) {
			carTypeText = "demonstratieauto(s)";
		} else if (data.pages.carType == 4) {
			carTypeText = "nieuwe auto(s)";
		} else {
			carTypeText = "occasion(s)";
		}

		$(".oneOrMore").html((data.pages.totalCars == 1 ? "is":"zijn"));
		$(".totalCars").html(data.pages.totalCars + (data.pages.CarBrand != "" && data.pages.CarBrand != null ? " " + data.pages.CarBrand:"") + " " + carTypeText);
		sortOrder = data.pages.orderBy.split(",");
		
		$(".cavCarSortOptions").find(".sort").each(function() {
			if($(this).hasClass("blueArrowDown")) {
				$(this).removeClass('blueArrowDown');
				$(this).addClass('grayArrowDown');
			}
			if ($(this).attr("rev") == sortOrder[0]) {
				$(this).removeClass('grayArrowDown');
				if (sortOrder[1] == "ASC") {
					$(this).addClass('blueArrowDown');						
				} else {
					$(this).addClass('blueArrowUp');						
				}
			}
		
		});
		for (i in data.cars) {
			if (i != parseInt(i)) {
				continue;
			}

			var htmlL = "";
			htmlL += "<div class=\"cavCarListElement\" style=\"color: rgb(90, 91, 90);\" onclick=\"location.href='/" + data.cars[i].voertuignummer + ".html'\">\n";
				htmlL += "<div class=\"cavCarListElementImage\">\n";
					htmlL += "<a href=\"/" + data.cars[i].voertuignummer + ".html\" title=\"\"><img src=\""+ (data.cars[i].afbeelding120 != "" ? data.cars[i].afbeelding120:"") +"\" alt=\"\" width=\"128\" /></a>\n";
				htmlL += "</div>\n";
				htmlL += "<div class=\"cavCarListElementModel\">\n";
					htmlL += "<a href=\"/" + data.cars[i].voertuignummer + ".html\" class=\"modelLink\" title=\"\">" + data.cars[i].voertuigmerk_omschrijving + " " + data.cars[i].voertuigtype + " " + data.cars[i].uitvoering + "</a>\n";
					htmlL += "<a href=\"/" + data.cars[i].voertuignummer + ".html\" class=\"morePhotos\" title=\"Meer foto's\">Meer foto's</a>\n";
				htmlL += "</div>\n";
				htmlL += "<div class=\"cavCarListElementPrice\"><p>&euro; " + data.cars[i].vraagprijs + "</p></div>\n";
				htmlL += "<div class=\"cavCarListElementKm\"><p>" + data.cars[i].kilometerstand + " Km</p></div>\n";
				htmlL += "<div class=\"cavCarListElementYear\"><p>" + data.cars[i].bouwjaar + "</p></div>\n";
				// htmlL += "<div class=\"cavCarListElementLocation\"><p>" + data.cars[i].woonplaats_aanbieder + "</p></div>\n";
				htmlL += "<br clear=\"all\" />\n";
			htmlL += "</div>\n";
			$(".cavCarDataList").append(htmlL);
			
			var htmlP = "";
			htmlP += "<div class=\"cavCarPhotoElement\" onclick=\"location.href='/" + data.cars[i].voertuignummer + ".html'\">\n";
				htmlP += "<div class=\"cavCarPhotoElementImage\">\n";
					htmlP += "<a href=\"/" + data.cars[i].voertuignummer + ".html\" title=\"\"><img src=\""+ (data.cars[i].afbeelding200 != "" ? data.cars[i].afbeelding200:"") +"\" alt=\"\" width=\"219\" /></a>\n";
				htmlP += "</div>\n";
				htmlP += "<div class=\"cavCarPhotoElementModel\">\n";
					htmlP += "<a href=\"/" + data.cars[i].voertuignummer + ".html\" class=\"modelLink\" title=\"\">" + data.cars[i].voertuigmerk_omschrijving + " " + data.cars[i].voertuigtype + " " + data.cars[i].uitvoering + "</a>\n";
					htmlP += "<span class=\"modelPrice\">&euro; " + data.cars[i].vraagprijs + "</span>\n";
					htmlP += "<br clear=\"all\" />\n";
				htmlP += "</div>\n";
			htmlP += "</div>\n";

			$(".cavCarDataPhoto").append(htmlP);
		}
		
		$(".cavCarSortOptionsPager").html("<p>Pagina</p>");
		for (i = 1; i <= data.pages.totalPages; i++) {
			var html = "<a href=\"#\" class=\"pager" + (i == (parseInt(data.pages.current) + 1) ?  " activePage":"") + "\" title=\"pagina " + i + "\" rel=\"" + (i - 1) + "\" rev=\"" + data.pages.orderBy + "\">" + i + "</a>";	
			$(".cavCarSortOptionsPager").append(html);
		}
		
		$(".cavCarSortOptionsButtons").html("");
		if (data.pages.current > 0) {
			$(".cavCarSortOptionsButtons").append("<a href=\"#\" class=\"blueArrowRight pager\" title=\"Vorige pagina\" rel=\"" + (parseInt(data.pages.current) - 1) + "\" rev=\"" + data.pages.orderBy + "\">Vorige pagina</a>");
		} else {
			$(".cavCarSortOptionsButtons").append("<span class=\"grayArrowRight\" title=\"Vorige pagina\">Vorige pagina</span>");
		}
		
		if ((parseInt(data.pages.current) + 1) < data.pages.totalPages) {
			$(".cavCarSortOptionsButtons").append("<a href=\"#\" class=\"blueArrowLeft pager\" title=\"Volgende pagina\" rel=\"" + (parseInt(data.pages.current) + 1) + "\" rev=\"" + data.pages.orderBy + "\">Volgende pagina</a>");
		} else {
			$(".cavCarSortOptionsButtons").append("<span class=\"grayArrowLeft\" title=\"Volgende pagina\">Volgende pagina</span>");
		}

		$(".cavCarListElement").bind("mouseover",function() { listHoverEnter($(this))});
		$(".cavCarListElement").bind("mouseout",function() { listHoverLeave($(this))});
		$(".cavCarPhotoElement").bind("mouseover",function() { photoHoverEnter($(this))});
		$(".cavCarPhotoElement").bind("mouseout",function() { photoHoverLeave($(this))});
		$(".pager").bind("click",function() {
			$(this).removeAttr("href");
			$(this).css({cursor:"pointer"});
			getAutoData($(this).attr("rel"), $(this).attr("rev"));
		});
		
	},"json");
}

