var guid = 0;
var withinDealers = "";
var searchString = "";
var spelledSearchString = "";
$.resultAjax = "";
$(document).ready(function(){

	/*$.tablesorter.addParser({
	    id: "commaNum",
	    is: function(s) {
	      	return /^[\d-]?[\d,]*(\.\d+)?$/.test(s);
	    },
	    format: function(s) {
	      	return s.replace(/,/g,'').replace('.','');
	    },
	    type: 'numeric'
    });*/
    
    if (($("input[name='searchBox']").val() != '' && $("input[name='searchBox']").val() != undefined) || ($("input[name='withinDealersField']").val() != '' && $("input[name='withinDealersField']").val() != undefined)){
    	requestSelectedDealers();
    	doButtonSearch();
    }
	//$(".searchButton").click(function(){doSearch($("#searchBox").val())});
	
	
	$("#advancedSearchButton").click(function(){
		//$("#advancedSearchButton").hide();
		buildDealerSelector();
		if ( $('#advancedSearchForm').is(':visible')){
			$(this).attr("class","advancedSearchButton");
		}else{
			$(this).attr("class","advancedSearchButtonActive");
		}
		$("#advancedSearchForm").slideToggle();
	});
	
});

function toggleDealer(ndx){
	if (dealer[ndx] != undefined){
		dealer[ndx].active = !dealer[ndx].active;
		$("#withChoosenDealers").text("");
		withinDealers = "";
		var html = "";
		var c = 0;
		$.each(dealer,function(index,value){
			if (value != undefined){
				if (value.active == true){
					c++;
					html += '<a href="javascript:toggleDealer('+index+')">'+value.dealer+'</a>, ';
					withinDealers += index+",";
				}
			}
		});
		withinDealers = withinDealers.replace(/,$/, '');
		$("#withinDealersField").val(withinDealers);
		if (html != ""){
			html = html.replace(/, $/, '.');
			var starthtml = html
			if (html.lastIndexOf(', ')>-1){
				starthtml = html.substr(0,html.lastIndexOf(', '));
			}
			var endhtml = "";
			if (html.lastIndexOf(', ')>-1){
				endhtml = html.substring(html.lastIndexOf(', ')+2);
			}
			html = starthtml;
			if (endhtml != ""){
				html += ' og ' + endhtml;
			}
			if (c == 1){
				$("#withDealers").text("hos forhandleren");
			}else{
				$("#withDealers").text("hos forhandlerne");
			}
			$("#withNoDealers").hide();
			$("#withChoosenDealers").html(html);
			$("#withChoosenDealers").show();
		}else{
			$("#withDealers").text("hos alle forhandlere");
			$("#withNoDealers").show();
			$("#withChoosenDealers").hide();
		}
	}
}
function requestSelectedDealers(){
	var selectedDealers = $("input[name='withinDealersField']").val();
	if (selectedDealers != undefined){
		selectedDealers = selectedDealers.split(",");
		$.each(selectedDealers,function(index,value){
			toggleDealer(value);
		});
	}
	//$("#availableDealers").html(html);
	/*$("a[name='chooseDealerLink']").click(function(){
		$("#withChoosenDealers").append($(this).html())
	});*/
}
function buildDealerSelector(){	
	$("#availableDealers").html("");
	var html = "V&aelig;lg forhandler(e)<hr/>";
	sortedDealers = sortArray(dealer,'dealer',1);
	$.each(sortedDealers,function(index,value){
		if (value != undefined){
			if (value.dbactive != '0')
			html += '<span style="padding-right:10px;"><a href="javascript:toggleDealer('+value.guid+')" style="line-height:20px;">'+value.dealer+'</a></span>';
		}
	});
	$("#availableDealers").html(html);
	/*$("a[name='chooseDealerLink']").click(function(){
		$("#withChoosenDealers").append($(this).html())
	});*/
}
function closeDealerSelector(){
	$("#availableDealers").hide();
}

function openWine(guid){
	$.fancybox({'type':'iframe', 'width':800, 'height':400, 'href':'/vin/wine_popup.asp?ref=wine&wine_guid='+guid,'margin':0,'padding':0});
	/*$.get('mit/reviewwine.asp?wine_guid='+guid, function(data) {
		if (data == 'faved'){
	  		$('#newfav'+guid).attr("class","faved");
	  	}else{
	  		$('#newfav'+guid).attr("class","newfav");
	  	}
	});*/
}
function editWine(guid){
	$.fancybox({'type':'iframe', 'width':500, 'height':500, 'href':'/note.asp?ref=wine&wine_guid='+guid});
}

function doButtonSearch(){
	/*var searchParams = {};
	if ($("input[name='searchOffersField']").val() == "true"){
		searchParams.special = "offers";
	}*/
	doSearch($("input[name='searchBox']").val(),{},"makesortable()");
}

function suggestcallback(str){
	alert(str);
}

function sortArray(arr, sortKey, sortDirection){
	var newarr = $(arr).sort(function(a, b) {  
		return a.dealer > b.dealer; 
	}); 
	return newarr;
}


function doSearch(searchDisplayed, searchParams, callback){
	
	if ((searchDisplayed != "" && searchDisplayed != undefined) || $("input[name='withinDealersField']").val() != ""){
		guid++;
		
		numberOfShops = 0;
		
		primary = searchString = searchDisplayed;
		//searchCriteria = searchCriteria.split(",");
		//primary = searchCriteria[0];
		
		var data = "";
		if (searchParams != "" && searchParams != undefined){
			data = searchParams;
		}else{
			data = {};
		}
		data.guid = guid;
		data.primary = primary;
		if (data.withinDealers == undefined)
			data.withinDealers = $("input[name='withinDealersField']").val();
		var c = 0;
		var dealerhtml = "";
		if (dealer){
			$.each(dealer,function(index,value){
				if (value != undefined){
					if (value.active == true){
						dealerhtml += ''+value.dealer+', ';
						//withinDealers += index+",";
						c++;
					}
				}
			});
		}
		if (dealerhtml != ""){
			dealerhtml = dealerhtml.replace(/, $/, '.');
			var starthtml = dealerhtml
			if (dealerhtml.lastIndexOf(', ')>-1){
				starthtml = dealerhtml.substr(0,dealerhtml.lastIndexOf(', '));
			}
			var endhtml = "";
			if (dealerhtml.lastIndexOf(', ')>-1){
				endhtml = dealerhtml.substring(dealerhtml.lastIndexOf(', ')+2);
			}
			dealerhtml = starthtml;
			if (endhtml != ""){
				dealerhtml += ' og ' + endhtml;
			}
		     if (c == 1){
				dealerhtml = " hos forhandleren " + dealerhtml;
			}else{
				dealerhtml = " hos forhandlerne " + dealerhtml;
			}	
		}
		if (searchDisplayed == ""){
			searchDisplayed = "S&oslash;ger"
		}
		//dealerhtml = ""
 		//winehtml = '';
 		
 		//$("#splitter").prepend(winehtml);
	     $("#searchResultHeadline").attr('class','searchResultHeadlineActive').html(searchDisplayed+''+dealerhtml);
		
		$.ajax({url:"/wine.asp?1="+new Date(), data:data, contentType: "application/json",dataType: 'json',
	   		error:function(XMLHttpRequest, textStatus, errorThrown){
	   			alert("url /wine.asp?"+JSON.stringify(data));
	   			alert("XMLHttpRequest=\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown+"\nError: "+XMLHttpRequest.responseText);
	   			/*var err = "";
	   			for (itm in XMLHttpRequest){
	   				err += itm+"\n";
	   			}*/
	   			
	   			/*dispatchEvent
				removeEventListener
				open
				setRequestHeader
				send
				readyState
				status
				getResponseHeader
				responseText
				channel
				responseXML
				statusText
				abort
				getAllResponseHeaders
				sendAsBinary
				overrideMimeType
				multipart
				mozBackgroundRequest
				withCredentials
				upload
				onreadystatechange
				onuploadprogress
				onabort
				onerror
				onload
				onloadstart
				onprogress
				getInterface*/

	   			
	   			//alert(err);
	   			$.resultAjax = "";
	   		},
	   		success:function(returndata,status){
	   			$.resultAjax = returndata;
	     		if (returndata.error != undefined){
	     			
	     			$("#searchResultHeadline").attr('class','searchResultHeadline');
	     			alert('Der skete en fejl ved din søgning. Vi er blevet underrettet og retter fejlen hurtigst muligt.\n\nPrøv at ændre dine søge kriterier.');
	     		}else{
		     		
		     		if (returndata.result.length == 0){
		     			spelledSearchString = searchString;
		     			//http://search.yahooapis.com/WebSearchService/V1/spellingSuggestion?appid=YahooDemo&query=madnna%20album&output=json&callback=sdsad
		     			$.getJSON("http://search.yahooapis.com/WebSearchService/V1/spellingSuggestion?appid=YahooDemo&query="+searchString+"&output=json&callback=?",
						   	function(result){
						   		//spellresults++;
						   		//if (result[1].length > 0){
									//spelledSearchString = spelledSearchString.replace(result[0],result[1][0][0]);
								//}
								if (result != undefined){
								if (result.ResultSet != undefined){
								if (result.ResultSet.Result != undefined){
								resultsuggestion = result.ResultSet.Result;
								//if (spellresults == searchStrings.length){
									if (spelledSearchString != resultsuggestion && resultsuggestion != "undefined" && resultsuggestion != undefined){
										$("span.results").html($("span.results").html() + " - mente du <a href='/?searchBox="+resultsuggestion+"'>"+resultsuggestion+"</a>?");
									}
								//}
								}
								}
								}
						   	}
						);
		     			
		     		}
		     		
		     		
		     		rd = returndata.result;
					
					var winehtml = [];
					
					var i = 0;
					
					var length = rd.length;
		     		
		     		//winehtml.push('<div id="searchResult'+guid+'" class="searchResult">');
		     		
		     		if (length == 0){
		     			$("#searchResultResults").html("0 resultater");
		     			winehtml.push('');
		     		}else{
			     		if(rd[0].error != undefined){
			     			$("#searchResultResults").html(rd[0].results+" resultater");
			     			winehtml.push('<div>Antallet af resultater overstiger maks. - V&aelig;lg venligst flere kriterier</div>');
			     		}else{
			     			rds = returndata.settings;
			     		
			     			$("#searchResultResults").html(rd.length+" resultater");
			     		
			     			//$("#searchResultHeadline").html($("#searchResultHeadline").html()+"<span class='results'> : "+rd.length+" resultater</span>")
			     		
			     			var ml = 0;
				     		for(i=0; i<length; i++){
				     			//alert(returndata.result[i].artist.toLowerCase()+" : "+_urlvars['artist'].toLowerCase());
				     			crd = rd[i];
				     			winehtml.push('<div class="wine_row'+((crd.i == '1') ? ' ignored' : '')+'" guid="'+crd.guid+'" i="'+i+'">');
				     			//winehtml.push('<div style="position:relative;float:right;"><div style="position:absolute;top:0px;right:-30px;"><a href="javascript:void(0);" class="newnote" nodeid="'+crd.guid+'" title="Se kommentarer til denne vin">&nbsp;</a></div></div>');
				     			winehtml.push('<div class="guid">'+crd.guid+'</div>');
				     			ml = crd.sz.replace('.00','').replace('.50','.5');
				     			if (ml > 0)
				     				ml += ' ml.';
				     			winehtml.push('<div class="year">'+unescape(crd.y)+'</div><div class="size">'+ml+'</div>');
				     			//if (guuk!=''){
				     			
				     			winehtml.push('<div class="favstar"><a class="'+((crd.fw == '1') ? 'faved' : 'newfav')+'" id="newfav'+crd.guid+'">&nbsp;</a></div>');
				     			//}
				     			//winehtml.push('<div style="position:absolute;top:3px;left:63px;"><a href="/showWine.asp?guid='+crd.guid+'" target="_blank">'+unescape(crd.w)+'</a></td><td>');
				     			//winehtml.push('<a href="javascript:openWine('+crd.guid+');"><div class="wine">'+replaceamp(unescape(crd.w))+'</div></a>');
				     			winehtml.push('<a href="javascript:openWine('+crd.guid+');" name="wineinfo"><div class="wine">'+replaceamp(unescape(crd.w))+'</div></a>');
				     			
				     			//winehtml.push('<div class="winetype"></div>');
				     			winehtml.push('<div class="producerdata">'+(winetype[crd.t] != undefined ? '<span class="winetype">'+winetype[crd.t].name_da+'</span> ' : '')+'fra ');
				     			winehtml.push('<span class="c">'+unescape(crd.c)+'</span> > ');
				     			winehtml.push('<span class="r">'+unescape(crd.r)+'</span> > ');
				     			if (crd.p.substr(0,1) != "?")
				     				winehtml.push('<span class="p">'+unescape(crd.p)+'</span>');
				     			winehtml.push('</div>');
				     			winehtml.push('<div class="prices">');
				     			var lowprice = 100000;
				     			var lownum = 0;
				     			var realpriceattr = "";
				     			for (pi=0;pi<rds.length;pi++){
				     				price = "";
				     				priceattr = "";
				     				for (pii=0;pii<crd["prices"].length;pii++){
				     					//alert(crd["prices"][pii].num+" "+rds[pi]);
				     					
				     					if (Number(crd["prices"][pii].n) == rds[pi]){
				     						//if (crd.d == 112){
				     						//	original_price = 'SEK'+crd["prices"][pii].p.replace(',','.');
				     						//}else{
				     							original_price = crd["prices"][pii].p.replace(',','.');
				     						//}
				     						if (crd["prices"][pii].p != ""){
				     							price = original_price;//calculatePrice(original_price,'dk');
				     							priceattr = 'price="'+original_price+'"'
				     						}
				     						break;
				     					}
				     				}
				     				if (price != ""){
					     				//winehtml.push('<div '+priceattr+'>'+price+' v/'++'</div>');
					     				//console.log("price ",price);
					     				if (Number(price) < lowprice){
					     					realpriceattr = priceattr;
					     					lowprice = price;
					     					lownum = crd["prices"][pii].n
					     				}
				     				}
				     				
				     				/*price = "";
				     				for (pii=0;pii<crd["prices"].length;pii++){
				     					//alert(crd["prices"][pii].num+" "+rds[pi]);
					     				if (Number(crd["prices"][pii].n) == rds[pi]){
					     					price = crd["prices"][pii].p;
					     				}
				     				}
				     				winehtml.push('<div>'+price+'</div>');*/
				     			}
				     			winehtml.push('<div '+realpriceattr+'>');
				     			if (crd.pc > 0)
				     				winehtml.push('<div class="pricechange">nedsat <b>'+crd.pc+'%</b></div>');
				     			winehtml.push('v/'+lownum+' fl. <b class="realprice">'+lowprice+'</b><b> kr.</b></div></div>');
				     			//winehtml.push('<td style="text-align:right;"><div style="position:relative;float:right;"><div style="position:absolute;top:0px;right:-30px;"><a href="javascript:editWine('+crd.guid+');" class="newnote" id="newnote'+crd.guid+'" title="Ret eller kommentér denne vin">&nbsp;</a></div></div><a href="/showWine.asp?guid='+crd.guid+'" target="_blank">'+dealer[crd.d].dealer+'</a></td></tr>');
				     			winehtml.push('<div class="dealer">hos <b>'+dealer[crd.d].dealer+'</b></div>');
				     			winehtml.push('</div>');
				     		}
			     		
						//winehtml.push('</div>');
						
			     		}
		     		}
		     		//alert(winehtml.join(''));
		     		$("#searchResults").append(winehtml.join(''));
		     		$("#searchResultHeadline").attr('class','searchResultHeadline');
		     		
		     		//$("a[name='wineinfo']").attr("title","Læs anmeldelser og skriv din egen").click(function(){openWine($(this).attr("id").replace("newfav",""));});
		     		
					/*if (rd.length > 0){
						$('#searchResult'+guid+'').tablesorter();
					    $('#searchResult'+guid+' tbody').trigger("update"); 
						// set sorting column and direction, this will sort on the first and third column 
						var sorting = [[0,0],[1,0]]; 
						// sort on the first column 
						$('#searchResult'+guid+' tbody').trigger("sorton",[sorting]);
					}*/
				   	if (callback != undefined){
						eval(callback);
					}
				}
	   		}
	   	});
		
		$("span#auctions_result").html("");
		$("span#auctions_results").html("");
		if (data.primary != ''){
			auction_result_count = 0;
			var auctionsearchstr = "";
			auctionsearchstr += data.primary + " ";
			auctionsearchstr += data.years + " ";
			//alert(auctionsearchstr);
			doAuctionSearch(auctionsearchstr,'vinmonopolet','Vinmonopolet.no');
			doAuctionSearch(auctionsearchstr,'systembolaget','Systembolaget.se');
			doAuctionSearch(auctionsearchstr,'qxl','QXL.dk');
			doAuctionSearch(auctionsearchstr,'lauritz','Lauritz.com');
			doAuctionSearch(auctionsearchstr,'bruun','Bruun Rasmussen');
			doAuctionSearch(auctionsearchstr,'vinforum','Vinforum.dk');
			doAuctionSearch(auctionsearchstr,'qxl','QXL.dk');
		}
	}
	
}

function makesortable(){
	//alert($.resultAjax.result.length);
	if ($.resultAjax.result.length > 0){
		if($.resultAjax.error == undefined){
			var sorthtml = '<b>Sorter efter</b> <a href="javascript:void(0);" id="sortby_id">ID</a>&nbsp;<a href="javascript:void(0);" id="sortby_year">&Aring;r</a>&nbsp;<a href="javascript:void(0);" id="sortby_size">Ml.</a>&nbsp;<a href="javascript:void(0);" id="sortby_wine">Vin</a>';
			//for (var i=0; i<$.resultAjax.settings.length; i++)
			
			sorthtml += '&nbsp;<a href="javascript:void(0);" id="sortby_winetype">Vintype</a>';
			sorthtml += '&nbsp;<a href="javascript:void(0);" id="sortby_country">Land</a> <a href="javascript:void(0);" id="sortby_region">Region</a> <a href="javascript:void(0);" id="sortby_producer">Producent</a>';
			sorthtml += '&nbsp;<a href="javascript:void(0);" id="sortby_dealer">Forhandler</a>';
			sorthtml += '&nbsp;<a href="javascript:void(0);" id="sortby_pris">Pris</a>';
			//alert(sorthtml);
			$("div#sorters").html(sorthtml).show();
			//$("div.wine_row").tsort("div.producerdata span:nth-child(1)", {order:"desc"});
			$("a#sortby_wine").click(function(){
				orderby = setOrderClass($(this));
				$("div.wine_row").tsort("div.wine", {order:orderby});
			});
			$("a#sortby_size").click(function(){
				orderby = setOrderClass($(this));
				$("div.wine_row").tsort("div.size", {order:orderby});
			});
			$("a#sortby_year").click(function(){
				orderby = setOrderClass($(this));
				$("div.wine_row").tsort("div.year", {order:orderby});
			});
			$("a#sortby_id").click(function(){
				orderby = setOrderClass($(this));
				$("div.wine_row").tsort("div.guid", {order:orderby});
			});
			$("a#sortby_dealer").click(function(){
				orderby = setOrderClass($(this));
				$("div.wine_row").tsort("div.dealer", {order:orderby});
			});
			$("a#sortby_winetype").click(function(){
				orderby = setOrderClass($(this));
				$("div.wine_row").tsort("div.winetype", {order:orderby});
			});
			$("a#sortby_country").click(function(){
				orderby = setOrderClass($(this));
				$("div.wine_row").tsort("div.producerdata span.c", {order:orderby});
			});
			$("a#sortby_region").click(function(){
				orderby = setOrderClass($(this));
				$("div.wine_row").tsort("div.producerdata span.r", {order:orderby});
			});
			$("a#sortby_producer").click(function(){
				orderby = setOrderClass($(this));
				$("div.wine_row").tsort("div.producerdata span.p", {order:orderby});
			});
			
			//for (var i=0; i<$.resultAjax.settings.length; i++)
				$("a#sortby_pris").click(function(){
					orderby = setOrderClass($(this));
					$("div.wine_row").tsort("div.prices .realprice", {order:orderby});
				});
		}else{
			$("div#sorters").hide();
		}
	
	}else{
		$("div#sorters").hide();
	}
}

function replaceamp(str){
	//console.log("wine "+str);
	while (str.indexOf("&amp;")>-1)
	  {
	  str = str.replace("&amp;","&");
	  }
	//console.log("wine after "+str);
	return str;
}

function setOrderClass(obj){
	var orderby = "";
	$("div#sorters .active").removeClass("active");
	$(obj).addClass("active");
	if ($(obj).hasClass("asc")){
		$(obj).addClass("desc");
		$(obj).removeClass("asc");
		orderby = "desc";
	}else{
		$(obj).addClass("asc");
		$(obj).removeClass("desc");
		orderby = "asc";
	}
	return orderby;
}



var kurs = {};
kurs.eu = 745.2900;
kurs.se = 81,6600;
kurs.dk = 100;
function calculatePrice(p,c){
	if (c == 'dk'){
		//if (p.substring(0,3) == 'SEK'){
		//	p = roundNumber(Number(p.substring(3,300))*(kurs.se/kurs.dk));
		//}else{
			p = p;//.substring(3,300);
		//}
	}
	if (c == 'se'){
		//if (p.substring(0,3) == 'DKK'){
			p = roundNumber(Number(p)*(kurs.dk/kurs.se));
		//}else{
		//	p = p.substring(3,300);
		//}
	}
	if (c == 'eu'){
		if (p.substring(0,3) == 'DKK'){
			p = roundNumber(Number(p)*(kurs.dk/kurs.eu));
		}else if (p.substring(0,3) == 'SEK'){
			p = roundNumber(Number(p)*(kurs.se/kurs.eu));
		}
	}
	return p;
}
function calculateAllPrices(c){
	$(".buttoninset").removeClass("buttoninset");
	$("."+c+"_16").addClass("buttoninset");
	$("td[price]").each(function(){$(this).html(calculatePrice($(this).attr("price"),c))})
}
function roundNumber(num) {
	var result = num.toFixed(2);
	return result;
}
function highlightRow(obj,state){
	if ($(obj).attr('selected') != 'true'){
		$(obj).attr('class',state);
	}
}


