/**
 * @author		Peter Riet
 * @copyright	Copyright (c) Serve it V.O.F. 2008
 * @version		1.0.0
 */
function cWijnEnWijnZoeken() {
	var _self = this;
	
	this.strFrontpageStandaardZoekterm = "";
	this.strAJAXURL = "";
	this.timeoutHover = undefined;
	this.timeoutAfbeeldingHover = undefined;
	this.arrWijnenMetAfbeelding = [];
	
	this.timeoutTussenResultaat = undefined;
	this.timeoutNaamOnChange = undefined;
	
	// Zoeken Frontpage
	this.frmZoekenFrontpage_onsubmit = function(frm) {
		frm.btnSubmit.disabled = true;
	}
	
	// Zoeken eenvoudig
	this.frmZoekenEenvoudig_onsubmit = function(frm) {
		if (frm.zoekop.value.trim().length == 0) {
			frm.zoekop.focus();
			return false;
		}
		else {
			frm.btnSubmit.disabled = true;
			return true;
		}
	}

	this.frmZoekenEenvoudig_zoekop_onfocus = function(el) {
		el.select();
	}
	
	// Zoeken Uitgebreid
	this.frmZoekenUitgebreid_onsubmit = function(frm) {
		var blnOK = true, i = 0;
		
		blnOK = (frm.naam.value.trim().length > 0);		
		
		// Controleer of een van de andere velden wel is ingevuld
		if (!blnOK) {
			var elSelects = [frm.kleur, frm.prijs, frm.land, frm.regio, frm.jaar, frm.druifsoort];
			for (i = 0; i < elSelects.length; i++) {
				blnOK = (elSelects[i].options[elSelects[i].selectedIndex].value != 0);
				if (blnOK) break;
			}
		}
		
		if (blnOK) {
			var arrElements = ["naam", "kleur", "prijs", "land", "regio", "jaar", "druifsoort"];
			var el;
			for (i = 0; i < arrElements.length; i++) {
				el = frm[arrElements[i]];
				if ((el.tagName == "INPUT" && el.value.length == 0) || (el.tagName == "SELECT" && el.selectedIndex == 0))
					el.disabled = true;
			}

			frm.btnSubmit.disabled = true;
		}
		return blnOK;
	};
	
	// Zoekservice
	this.frmZoekservice_onsubmit = function(frm) {
		var strNaam = frm.txtNaam.value.trim();
		var strEmail = frm.txtEmail.value.trim();
		var strWijnen = frm.txtWijnen.value.trim();
		
		if (strNaam.length == 0) {
			alert("Geef uw naam op");
			frm.txtNaam.focus();
			return false;
		}
		else if (!checkEmail(strEmail)) {
			alert("Geef uw e-mailadres op, hierop sturen wij u een antwoord terug");
			frm.txtEmail.select();
			frm.txtEmail.focus();
			return false;
		}
		else if (strWijnen.length == 0) {
			alert("Omschrijving welke wijnen u zoekt maar niet kunt vinden");
			frm.txtWijnen.focus();
			return false;
		}
		
		frm.btnSubmit.disabled = true;
		return true;
	}
	
	// Hovers afbeeldingen
	this.initAfbeeldingHovers = function() {
		$("table.wijnenwijn_zoekresultaten tr[class!=header] td.afbeelding img").attr("alt", "").hover(
			// Over
			function() {
				var elImg = this;
				clearTimeout(_self.timeoutAfbeeldingHover);
				
				// Delay
				_self.timeoutAfbeeldingHover = setTimeout(function() {
					var strID = $(elImg).parents("tr").get(0).id;
					var intPos = strID.indexOf("_");
					var intWinkelID = parseInt(strID.substr(2, intPos - 2), 10)
					var intWijnID = parseInt(strID.substr(intPos + 1), 10);
					
					var offset = $(elImg).offset();
					// Bepaal plaats van tooltip, mag niet buiten scherm vallen
					var intDiff = ($(document).scrollTop() + $(window).height()) - (offset.top + $("#divWijnAfbeeldingToolTip").height());
					var intTop = (intDiff < 17) ? offset.top + intDiff - 17 : offset.top;

					var strNaam = $(elImg).parents("tr").children("td.naam").children("a").text()
					$("#divWijnAfbeeldingToolTip p.naam span").text(strNaam);
					$("#divWijnAfbeeldingToolTip")
						.css({
							left: offset.left + $(elImg).width() + 10,
							top: intTop
						})
						.show();
						
					// Haal gegevens op
					$.ajax({
						type: "POST",
						complete: function(req, strStatus) {
						},
						data: {
							"method": "geefWijnAfbeelding",
							"winkel_id" : intWinkelID,
							"wijn_id" : intWijnID
						},
						dataType: "xml",
						error: function(reg, strStatus, e) {
							//alert("Fout tijdens uitvoeren: " + strStatus);
						},
						success: function(data, strStatus) {
							var strAfbeeldingURL = $("afbeelding_url", data).text().trim();
							if (strAfbeeldingURL.length == 0) {
							}
							else {
								$("#divWijnAfbeeldingToolTip div.afbeelding img")
									.load(function() {
										$("#divWijnAfbeeldingToolTip div.afbeelding").removeClass("loading");
										
										var intWidthDiv = $("#divWijnAfbeeldingToolTip p.naam span").width();
										var intWidthImg = $("#divWijnAfbeeldingToolTip div.afbeelding img").width();
										var intMaxWidth = intWidthDiv;
										if (intWidthImg > intWidthDiv) intMaxWidth = intWidthImg;
										
										$("#divWijnAfbeeldingToolTip div.afbeelding").css("width", intMaxWidth);
										
										$(this).show();
										
										// Herbepaal plaats van tooltip, mag niet buiten scherm vallen
										var intDiff = ($(document).scrollTop() + $(window).height()) - (offset.top + $("#divWijnAfbeeldingToolTip").height());
										$("#divWijnAfbeeldingToolTip").css("top", (intDiff < 17) ? offset.top + intDiff - 17 : offset.top);
									})
									.attr("src", strAfbeeldingURL)
									;
							} 
						},
						url: _self.strAJAXURL
					});					
				}, 100);
			},
			// Out
			function() {
				clearTimeout(_self.timeoutHover);
				
				$("#divWijnAfbeeldingToolTip").hide();
				$("#divWijnAfbeeldingToolTip p.naam span").text(" ");
				$("#divWijnAfbeeldingToolTip div.afbeelding").addClass("loading");
				$("#divWijnAfbeeldingToolTip div.afbeelding img").hide();
			}
		);
	}
	
	// Hovers zoekresultaten
	this.initZoekresultatenHovers = function() {
		$("table.wijnenwijn_zoekresultaten tr[class!=header] td.naam a").hover(
			// Over
			function() {
				var elA = this;
				clearTimeout(_self.timeoutHover);
				
				// Delay
				_self.timeoutHover = setTimeout(function() {
					var strID = $(elA).parents("tr").get(0).id;
					var intPos = strID.indexOf("_");
					var intWinkelID = parseInt(strID.substr(2, intPos - 2), 10)
					var intWijnID = parseInt(strID.substr(intPos + 1), 10);
					
					var offset = $(elA).offset();
					// Bepaal plaats van tooltip, mag niet buiten scherm vallen
					var intDiff = ($(document).scrollTop() + $(window).height()) - (offset.top + $("#divWijnToolTip").height());
					var intTop = (intDiff < 17) ? offset.top + intDiff - 17 : offset.top;

					// Verberg afbeelding
					if ($.inArray(intWijnID, _self.arrWijnenMetAfbeelding) == -1)
						$("#divWijnToolTip td.afbeelding").hide();
					
					$("#divWijnToolTip p.naam").text($(elA).text());
					$("#divWijnToolTip")
						.css({
							left: offset.left + $(elA).width() + 10,
							top: intTop
						})
						.show();
					
					// Haal gegevens op
					$.ajax({
						type: "POST",
						complete: function(req, strStatus) {
						},
						data: {
							"method": "geefWijnTooltip",
							"winkel_id" : intWinkelID,
							"wijn_id" : intWijnID
						},
						dataType: "xml",
						error: function(reg, strStatus, e) {
							//alert("Fout tijdens uitvoeren: " + strStatus);
						},
						success: function(data, strStatus) {
							$("#tdWijnToolTipWinkel").text($("winkel", data).text());
							$("#tdWijnToolTipDruifsoort").text($("druifsoort", data).text());
							$("#tdWijnToolTipKleur").text($("kleur", data).text());
							$("#tdWijnToolTipSoort").text($("soort", data).text());
							$("#tdWijnToolTipLand").text($("land", data).text());
							$("#tdWijnToolTipRegio").text($("regio", data).text());
							$("#tdWijnToolTipAppellation").text($("appellation", data).text());
							$("#tdWijnToolTipBesteleenheid").text($("besteleenheid", data).text());
							$("#tdWijnToolTipJaar").text($("jaar", data).text());
							var intPrijs = parseInt($("prijs", data).text(), 10);
							var fltPrijs = parseFloat(intPrijs / 100);
							var strPrijs = fltPrijs.toFixed(2).toString().replace("\.", ",");
							$("#tdWijnToolTipPrijs").text("€ " + strPrijs);
							
							var strAfbeeldingURL = $("afbeelding_url", data).text().trim();
							if (strAfbeeldingURL.length == 0) {
								$("#divWijnToolTip td.afbeelding").hide();
							}
							else {
								$("img#imgWijnToolTipBlank").get(0).src = strAfbeeldingURL;
								$("img#imgWijnToolTipBlank").load(function() {
									$("img#imgWijnToolTipLoading").hide();
									$(this).show();
									// Herbepaal plaats van tooltip, mag niet buiten scherm vallen
									var intDiff = ($(document).scrollTop() + $(window).height()) - (offset.top + $("#divWijnToolTip").height());
									$("#divWijnToolTip").css("top", (intDiff < 17) ? offset.top + intDiff - 17 : offset.top);
								});
							} 
						},
						url: _self.strAJAXURL
					});	
				}, 300);
			},
			// Out
			function () {
				clearTimeout(_self.timeoutHover);
				
				$("#divWijnToolTip").hide();
				$("#divWijnToolTip td.value").html("&nbsp;");
				$("#divWijnToolTip p.naam").html("&nbsp;");
				$("#divWijnToolTip td.afbeelding").show();
				$("img#imgWijnToolTipBlank").hide();
				$("img#imgWijnToolTipLoading").show();
			}
		);
	}
	
	this.initUitgebreidZoekenOnChange = function() {
		$("#frmZoekenUitgebreid select").change(function() {
			_self.frmZoekenUitgebreid_onchange($("#frmZoekenUitgebreid").get(0));
		});
		
		$("#inpNaam").keyup(function() {
			clearTimeout(_self.timeoutNaamOnChange);
			
			_self.timeoutNaamOnChange = setTimeout(function() {
				_self.frmZoekenUitgebreid_onchange($("#frmZoekenUitgebreid").get(0));
			}, 250);
		});
	}
	
	this.frmZoekenUitgebreid_onchange = function(frm) {
		clearTimeout(_self.timeoutTussenResultaat);
		
		// Delay
		_self.timeoutTussenResultaat = setTimeout(function() {
			$.ajax({
				type: "POST",
				url: _self.strAJAXURL,
				complete: function(req, strStatus) {
				},
				data: {
					"method": "geefZoekenTussenresultaat",
					naam: frm.naam.value,
					kleur: frm.kleur.value,
					prijs: frm.prijs.value,
					land: frm.land.value,
					regio: frm.regio.value,
					jaar: frm.jaar.value,
					druifsoort: frm.druifsoort.value
				},
				dataType: "xml",
				error: function(reg, strStatus, e) {
					//alert("Fout tijdens uitvoeren: " + strStatus);
				},
				success: function(data, strStatus) {
					var intAantal = parseInt($("aantal", data).text(), 10) || 0;
					$("#pWijnEnWijnZoekenTussenresultaat span.aantal").text(intAantal);
				}
			});
		}, 100);
	}
	
	this.scrollNaarResultaten = function() {
		var intTop = $("a[name=resultaten]").offset().top;
		$("html, body").animate({
			scrollTop: intTop + "px"
		}, 1000, "swing");
	}
}

var objWijnEnWijnZoeken = new cWijnEnWijnZoeken();