/* 
 * 
 * Boligbasen ( BOB )
 * Main module
 * 
 * |> Andreas Rudi Søvik <andreas.rudi.sovik@eddamedia.no>
 * 
 */

var Main = new Class( {
	
	doSearch: function(text) {
		window.location = '/eiendomsbasen/searchresult/display/s/' + escape(text.value) + '/datesort/desc';
	},
	
	doAdvancedSearch: function(text) {
		
		var s = $('s');
		var municipality = $('selected_municipality');
		var type = $$('input[name=type]');
		var prices = $$('input[name=price]');
		var years = $('years');
		var code = $('code');
		
		var gnr = $('gnr').value;
		var bnr = $('bnr').value;
		var snr = $('snr').value;
		var fnr = $('fnr').value;
		
		var searchurl = 's/' + escape(text.value);	
		searchurl += 	'/selected_municipality/';
		
		for (var i=0;i<municipality.options.length;i++)
		{
			if (municipality.options[i].value != null) {
				searchurl += municipality.options[i].value;
				if (i != (municipality.options.length - 1)) 
					searchurl += "%3A";
			}
		}
		
		searchurl += 	'/type/';
		var first = true;
		for (var i=0;i<type.length;i++) {
			if (type[i].checked) {
				if (!first)
					searchurl += "%3A";
					
				searchurl += type[i].value;
				first = false;
			}
		}
				
		searchurl +=	'/price/';
		var first = true;
		for (var i=0;i<prices.length;i++) {
			if (prices[i].checked) {
				if (!first)
					searchurl += "%3A";
					
				searchurl += escape(prices[i].value);
				first = false;
			}		
		}		
								
		searchurl +=	'/years/' + years.options[years.selectedIndex].value;	
		searchurl += ('/opts/' + gnr + ',' + bnr + ',' + fnr + ',' + snr);
		
		window.location = '/eiendomsbasen/searchresult/display/' + searchurl + '/datesort/desc';
	},
	
	doSearchMap: function(mapcontroller, searchtext) {
		mapcontroller.findLocation(searchtext);
	},
	
	doSearchMapTurnovers: function(mapcontroller, radius) {
		mapcontroller.radius = radius;
				
		switch(radius) {
			case "50": var zoom = 18; break;
			case "100": var zoom = 17; break;
			case "200": var zoom = 16; break;
			case "500": var zoom = 15; break;
			default: var zoom = 12;
		}
		
		mapcontroller.map.setCenter(new GLatLng(mapcontroller.coords['lat'], mapcontroller.coords['long']), zoom, mapcontroller.type);
		mapcontroller.plotTurnoverPoints();		
	},
	
	doTindeSearch: function(querystring) {
		window.location = 'http://www.tinde.no/result/full_text_search?vertical=tinde-property&querystring=' + escape(querystring);
	},
	
	autoComplete: function() {
		
		objx = this;

         $('searchtxt').addEvent('keyup', function(event){
		 	if (event.key == 'esc') {
				$('autocomplete').set('class', 'inactive');
				return;
			}
			
	        var burl = '/eiendomsbasen/feed/autocomplete';
	
			if ($('searchtxt').value.length >= 2) {
		        arequest = new Request({
					url:burl,
		        	method: 'get',
					onRequest: function() {
						var title = new Element('h3').inject($('autocomplete'));
						$('autocomplete').empty();
						var msg = new Element('p').set('html', 'Søker...').inject(title);
					},
					
		            onComplete: function(request) {
		                $('autocomplete').empty();
		                $('autocomplete').setProperty('class', 'active');
						
		                if (request) var results = JSON.decode(request);
		                if (results) objx.buildResults(results);
		             }
					 
		        });
				
		        arequest.send('s=' + escape($('searchtxt').value));
	        }
        });
		
	},

	highlight: function(text) {
		var str = new String($('searchtxt').value);
		return text.replace(eval('/'+str+'/ig'), '<span class="highlight">'+str.toUpperCase()+'</span>');
	},
	
    buildResults: function(results) {
        var container = $('autocomplete'); //search results
        var close = new Element('img', {'src': '/eiendomsbasen/html/assets/graphics/x.gif', 'style':'float:right;margin-top:0px;'}).inject(container);
        
        close.addEvent('click', function(event) { 
        	$('autocomplete').toggleClass('inactive');
        });
         
        var status = new Element('h3').inject(container);

		if (results.length < 1) {
			var msg = new Element('p').set('html', 'Ingen treff').inject(status);			
		}
		else {
			results.each(function(result, i) {
				var searchHit = new Element('div', {'class':'search_hit'}).inject(container);
				
				searchHit.addEvent('click', function(event) {
					window.location = '/eiendomsbasen/turnover?id='+result.id;
				});
				
				var searchHeader = new Element('h3').inject(searchHit);
				
				if (result.housetype == 'U') result.housetype = 'AN';
					
				var image = new Element('img', {
					'src': '/eiendomsbasen/html/assets/graphics/' + result.housetype + '_40x60_33bg.gif',
					'style': 'float:left',
					'class': 'acImg'
				}).inject(searchHeader);
								
				if (result.street) {
					var searchtitle = result.street + ' ' + result.housenumber + ' ' + result.houseletter;
				} else {
					var searchtitle = 'Gnr: ' + result.cadastralnumber + ', Bnr: ' + result.propertynumber + ', Fnr: ' + result.leaseholdnumber + ', Snr: ' + result.sectionnumber;
				}
				
				var link = new Element('a', {
					'href': '/eiendomsbasen/turnover?id=' + result.id,
					'class': 'acA'
				}).set('html', objx.highlight((i + 1) + '. ' + searchtitle)).inject(searchHeader);
				
				break1 = new Element('br').inject(link, 'bottom');
				var info = new Element('p', {'style':'font-size:12px;'}).set('html', objx.highlight('Pris: '  + result.price + ',- Fra ' + result.seller + ' til ' + result.buyer)).inject(break1.getParent(), 'bottom');
				var break2 = new Element('br').inject(info, 'bottom');
			});
		}
    }
	
});

