var boligsiden = function() {
 return {
	 overlaytimer : false,
	
	 commitSearch : function() {
		 var zipcity = jQuery('input[name="zipcity_s"]').val();
		 var zipcode = '';
		 var city = '';
		 var price_from = jQuery('input[name="price_from"]').val();
		 var price_to = jQuery('input[name="price_to"]').val();
		
		 if (parseInt(zipcity) == zipcity) {
			 zipcode = zipcity;
		 } else {
			 city = zipcity;
		 }
		if(jQuery('input[name="type_s"]').val()){
			var types = jQuery('input[name="type_s"]').val();
		} else {
		 	var types = jQuery('select[name="type"] option:selected').val();
		}
		var loop=0;
		 jQuery.getJSON('http://abgruppen.boligsiden.dk/search.php?callback=?', {types: types, zipcode: zipcode, city: city, price_from: price_from, price_to: price_to}, function(data) {
			 boligsiden.printTableHeader(data.count, data.itemtype, data.links);
			 jQuery.each(data.results, function(i, item) {
				 boligsiden.appendResult(item, data.itemtype); 
			 });
			 boligsiden.printLinks(data.links);
			 jQuery('#bs_results table a.overlay').hover(
					 function(e) {
						 clearTimeout(boligsiden.overlaytimer);
						 boligsiden.showoverlay(this.id, e.pageY);
					 },
					 function() {
						 boligsiden.overlaytimer = setTimeout(function() { jQuery('#bs_overlay').hide(); }, 1000);
					 }
			 );
			 jQuery('#bs_results').show();
		 });
	 },
	 
	 bs_frontpagesearch_old : function() {
		 //+escape("http://thor.dev.linkfactory.dk/test-indhold/resultater/")
		  var zipcity = jQuery('input[name="zipcity"]').val();
		  var zipcode = '';
		  var city = '';
		  var price_from = jQuery('input[name="price_from"]').val();
		  var price_to = jQuery('input[name="price_to"]').val();
		
		  if (parseInt(zipcity) == zipcity) {
			  zipcode = zipcity;
		  } else {
			  city = zipcity;
		  }
		
		  var types = jQuery('select[name="type"] option:selected').val();
		  //alert("bs_frontpagesearch");
		  jQuery.getJSON('http://abgruppen.boligsiden.dk/search.php?callback=?', {"types":types,"zipcode":zipcode,"city":city,"price_from":price_from,"price_to":price_to}, 	function(data) {		  
		 		if (data.count < 1) {
		 			alert('Der er ingen søgeresultater.');
		 			return;
		 		 }	 		
		 		document.location.href = '/resultater/';
		 	}, 'json');
		  //return false;
	 },
	
	 navigateResult : function(params) {
	 //		 jQuery.getJSON('http://abgruppen.boligsiden.dk/result.php?callback=?', params , function(data) {	 ,"noCache": noCache
		//var noCache = Date();
		
		var date = new Date();
		jQuery('html, body').animate({scrollTop:200}, 'veryfast');
		
		
		jQuery.ajax({
			type: "GET",
			url: "http://abgruppen.boligsiden.dk/result.php?_="+date.getTime(),
			dataType: "jsonp",
			cache: false, // don't cache the result
			contentType: "application/json", //tell the server we're looking for json
			data: params,
			success: function(data) {
				//do stuff with data
				 boligsiden.printTableHeader(data.count, data.itemtype, data.links);
				 jQuery.each(data.results, function(i, item) {
					 boligsiden.appendResult(item, data.itemtype);
				 });
			 	boligsiden.printLinks(data.links);
			 	jQuery('#bs_results a.overlay').hover(
			 		function(e) {
						clearTimeout(boligsiden.overlaytimer);
						boligsiden.showoverlay(this.id, e.pageY);
				 	},
				 	function() { boligsiden.overlaytimer = setTimeout(function() { jQuery('#bs_overlay').hide(); }, 1000);
				 });
				 jQuery('#bs_results').show();
			},
			error: function(xhr, status, error) {
				alert(xhr.status);
			}
		});
		
		
		/*
		jQuery.ajaxSetup({ cache: false });		
		jQuery.getJSON('http://abgruppen.boligsiden.dk/result.php?callback=?&_='+date.getTime(), params , function(data) {
		 	//alert(data.count);
			jQuery.ajaxSetup({ cache: true });

			 boligsiden.printTableHeader(data.count, data.itemtype, data.links);
			 jQuery.each(data.results, function(i, item) {
				 boligsiden.appendResult(item, data.itemtype);
			 });
			 boligsiden.printLinks(data.links);
			 jQuery('#bs_results a.overlay').hover(
			 	function(e) {
					clearTimeout(boligsiden.overlaytimer);
					boligsiden.showoverlay(this.id, e.pageY);
			 	},
			 	function() { boligsiden.overlaytimer = setTimeout(function() { jQuery('#bs_overlay').hide(); }, 1000);
			 });
			 jQuery('#bs_results').show();
		 });
		 */
	 },
	
	 printTableHeader : function(count, type, links) {
		 if (type == 'partiallyowned') {
			 jQuery('#bs_results').html('<table cellspacing="0"><thead><tr><th>&nbsp;</th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.address) + '); return false;\'>Adresse</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.price) + '); return false;\'>Pris</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.pricedevelopment) + '); return false;\'>+/-</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.salesperiod) + '); return false;\'>Tid</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.area) + '); return false;\'>m2</a><br /><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.areaprice) + '); return false;\'>Kr./m2</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.paymentgross) + '); return false;\'>Boligudgift</th><th>V&aelig;r.</th><th>M&aelig;gler</th></tr></thead></table>').prepend('<h1>' + count + ' resultater i alt</h1>');
		 } else {
//			 jQuery('#bs_results').html('<table cellspacing="0"><thead><tr><th>&nbsp;</th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.address) + '); return false;\'>Adresse</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.price) + '); return false;\'>Pris/Udb.</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.pricedevelopment) + '); return false;\'>+/-</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.salesperiod) + '); return false;\'>Tid</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.area) + '); return false;\'>m2</a><br /><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.areaprice) + '); return false;\'>Kr./m2</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.paymentgross) + '); return false;\'>Brutto</a><br /><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.paymentnet) + '); return false;\'>Netto</a></th><th>V&aelig;r.</th><th>M&aelig;gler</th></tr></thead></table>').prepend('<h1>' + count + ' resultater i alt</h1>');
 			 jQuery('#bs_results').html('<table cellspacing="0"><thead><tr><th>&nbsp;</th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.address) + '); return false;\'>Adresse</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.price) + '); return false;\'>Pris/Udb.</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.pricedevelopment) + '); return false;\'>+/-</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.salesperiod) + '); return false;\'>Tid</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.area) + '); return false;\'>m2</a><br /><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.areaprice) + '); return false;\'>Kr./m2</a></th><th><a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.sortorder.paymentgross) + '); return false;\'>Brutto</a><br />Netto</th><th>V&aelig;r.</th><th>M&aelig;gler</th></tr></thead></table>').prepend('<h1>' + count + ' resultater i alt</h1>');
// 			 jQuery('#bs_results').html('<table cellspacing="0"><thead><tr><th>&nbsp;</th><th>Adresse</th><th>Pris/Udb.</th><th>+/-</th><th>Tid</th><th>m2<br />Kr./m2</th><th>Brutto<br />Netto</th><th>V&aelig;r.</th><th>M&aelig;gler</th></tr></thead></table>').prepend('<h1>' + count + ' resultater i alt</h1>');
		 }
		
		 return true;
	 },
	
	 printLinks : function(links) {
		// jQuery('#bs_results').append('<p> <a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.resultsperpage[20]) + ');return false\'>20</a> / <a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.resultsperpage[40]) + ');return false\'>40</a> / <a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.resultsperpage[60]) + ');return false\'>60</a></p>');
		var pageno = jQuery("#pageno").val();
		 pager = '';
		 jQuery.each(links.pages, function(i, item) {
			// pager += '<a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.pages[i]) + ');return false;\'>' + i + '</a> &nbsp; ';
			if(i==pageno){
				pager += '<strong>'+ i + '</strong> &nbsp; ';
			} else {
				if(links.sortorder.price.ds){
					params = '{pageno: ' + i + ', ds: "'+links.sortorder.price.ds+'"}';
				} else {
					params = '{pageno: ' + i + '}';
				}

//				pager += '<a href="#" onclick=\'boligsiden.navigateResult(' + jQuery.toJSON(links.pages[i]) + ');jQuery("#pageno").val('+i+');return false;\'>' + i + '</a> &nbsp; ';
			 	pager += '<a href="#" onclick=\'boligsiden.navigateResult('+params+');jQuery("#pageno").val('+i+');return false;\'>' + i + '</a> &nbsp; ';
			 }
		 });
		
		 jQuery('#bs_results').append('<p>' + pager + '</p>');
	 },
	
	 appendResult : function(item, itemtype) {
		 if (itemtype == 'partiallyowned') {
			 jQuery('#bs_results table').append('<tr><td><a target="_blank" href="' + item.PropertyLink + '" id="' + item.Id + '" class="overlay"><img src="http://pic.boligsiden.dk/property/100x80/1/' + item.ImageUrlSuffix + '"></a></td><td>' + boligsiden.getDanishType(item.ItemType) + '<br />' + item.StreetName + '<br />' + item.City + '</td><td>' + boligsiden.number_format(item.PaymentCash, 0, ',', '.') + '</td><td>' + boligsiden.number_format((item.PriceDevelopment*100), 0, ',', '.') + '%</td><td>' + item.SalesPeriod + '</td><td>' + item.AreaResidential + '<br />' + boligsiden.number_format(item.AreaPaymentCash, 0, ',', '.') + '</td><td>' + boligsiden.number_format(item.PropertyCharges, 0, ',', '.') + '</td><td>' + item.NumberOfRooms + '</td><td><a target="_blank" href="' + item.PropertyLink + '" title=""><img src="http://pic.boligsiden.dk/agent/' + item.LogoUrlSuffix + '" alt="" /></a><br /><a target="_blank" href="' + item.PropertyLink + '">Se bolig</a></tr>');
		 } else {
			 jQuery('#bs_results table').append('<tr><td><a target="_blank" href="' + item.PropertyLink + '" id="' + item.Id + '" class="overlay"><img src="http://pic.boligsiden.dk/property/100x80/1/' + item.ImageUrlSuffix + '"></a></td><td>' + boligsiden.getDanishType(item.ItemType) + '<br />' + item.StreetName + '<br />' + item.City + '</td><td>' + boligsiden.number_format(item.PaymentCash, 0, ',', '.') + '<br />' + boligsiden.number_format(item.DownPayment, 0, ',', '.') + '</td><td>' + boligsiden.number_format((item.PriceDevelopment*100), 0, ',', '.') + '%</td><td>' + item.SalesPeriod + '</td><td>' + item.AreaResidential + '<br />' + boligsiden.number_format(item.AreaPaymentCash, 0, ',', '.') + '</td><td>' + boligsiden.number_format(item.PaymentGross, 0, ',', '.') + '<br />' + boligsiden.number_format(item.PaymentNet, 0, ',', '.') + '</td><td>' + item.NumberOfRooms + '</td><td><a target="_blank" href="' + item.PropertyLink + '" title=""><img src="http://pic.boligsiden.dk/agent/' + item.LogoUrlSuffix + '" alt="" /></a><br /><a target="_blank" href="' + item.PropertyLink + '">Se bolig</a></tr>');
		 }
	 },
	
	 showoverlay : function(id, top) {
		 jQuery.getJSON('http://abgruppen.boligsiden.dk/overlay.php?callback=?', {"id":id}, function(data) {
			 jQuery('#bs_overlay').html(data.html).css({position:'absolute',top:(top-100)+'px',left:'120px'}).show().hover(
			 function() {
				 clearTimeout(boligsiden.overlaytimer);
			 },
			 function() {
				 boligsiden.overlaytimer = setTimeout(function() { jQuery('#bs_overlay').hide(); }, 500);
			 }
		 );
		
		 });
	 },
	
	 getDanishType : function(type) {
		 if (type == 'House') { return 'Villa'; }
		 else if (type == 'FreeholdFlat') { return 'Ejerlejlighed'; }
		 else if (type == 'HolidayHouse') { return 'Fritidsbolig'; }
		 else if (type == 'TerraceHouse') { return 'R&aelig;kkehus'; }
		 else if (type == 'ApartmentHouse') { return 'Villalejlighed'; }
		 else if (type == 'CountryHouse') { return 'Landejendom'; }
		 else if (type == 'PartiallyOwned') { return 'Andelsbolig'; }
		 else return '';
	 },
	
	 number_format : function(number, decimals, dec_point, thousands_sep) {
		 var n = number, prec = decimals;
		
		 var toFixedFix = function (n,prec) {
			 var k = Math.pow(10,prec);
			 return (Math.round(n*k)/k).toString();
		 };
	
		 n = !isFinite(+n) ? 0 : +n;
		 prec = !isFinite(+prec) ? 0 : Math.abs(prec);
		 var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
		 var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;
		
		 var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
		
		 var abs = toFixedFix(Math.abs(n), prec);
		 var _, i;
		
		 if (abs >= 1000) {
			 _ = abs.split(/\D/);
			 i = _[0].length % 3 || 3;
			
			 _[0] = s.slice(0,i + (n < 0)) +
			 _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
			 s = _.join(dec);
		 } else {
			 s = s.replace('.', dec);
		 }
	
		 var decPos = s.indexOf(dec);
		 if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
			 s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
		 }
		 else if (prec >= 1 && decPos === -1) {
			 s += dec+new Array(prec).join(0)+'0';
		 }
		 return s;
	 }
 }
}();