// Global vars
var search_timer = false;

function showResult(results, keyword)
{  
	// Dölj ruta
	document.getElementById('search_ajax').setStyle('display','none');
	
	// Töm innehåll
	document.getElementById('search_ajax').innerHTML = "";
	
	var typ = "";
	// Visa nytt
	
	for (i = 0 ; i < results.length ; i++)
	{  		
		// Ny typ?
		if(results[i].typ != typ)
		{
			typ = results[i].typ;
		}
	
		var item_span = document.createElement('span');
		item_span.setAttribute('class', 'search_proposal');
		item_span.setAttribute('title' , results[i].title.toLowerCase());
		item_span.setAttribute('style' , results[i].permalink);
		
		var content = results[i].title.toLowerCase();
		
		// Fetmarkera sökord i förslag
		var keyword_pos = content.indexOf(keyword.toLowerCase(), 0);
		
		var marked_keyword =  '<strong>' + keyword.toLowerCase() + '</strong>';
		
		var content = content.replace(keyword.toLowerCase(), marked_keyword);
		
		item_span.innerHTML = content.toLowerCase();
		document.getElementById('search_ajax').appendChild(item_span);
	}

	$$('div.search_ajax').setStyle('display','block');
	
	$$('span.search_proposal').addEvent('click', function(event) {
		$('keyword_field').value = $('selected_span').title;
		window.location = "http://www.gratislandet.se/sok/" + $('keyword_field').value;
	});
	
	$$('span.search_proposal').addEvent('mouseover', function(event) {
		if($('selected_span'))
			$('selected_span').set('id', '');
		
		$(this).addClass('hover');
		$(this).set('id', 'selected_span');
	});
	
	$$('span.search_proposal').addEvent('mouseout', function(event) {
		$('selected_span').removeClass('hover');
	$('selected_span').set('id', '');
	});
}

// DOM READY

window.addEvent('domready', function()
{
	// Form submit
	$('search_form').addEvent('submit', function(event) {
		event.stop();
		return false;
	});
	
	// Knapptryck
	$('start_search').addEvent('click', function(event) {
		window.location = "http://www.gratislandet.se/sok/" + $('keyword_field').value;	
	});
	
	// Autocomplete och pil upp/ner
	$('keyword_field').addEvent('keyup', function(event) {
		event.stop();
	
		// Ner
		if (event.code == 40)
		{
			if($('selected_span'))
			{
				var temp = $('selected_span');
				$('selected_span').removeClass('hover');
			$('selected_span').set('id', '');
			
				$(temp).getNext('.search_proposal').addClass('hover').set('id', 'selected_span');
			}
			else
			{
				// Hitta första span
				$$('.search_proposal')[0].addClass('hover').set('id', 'selected_span');
			}
			
			$('keyword_field').value = $('selected_span').title;
		}
		// Upp
		else if (event.code == 38)
		{
			if($('selected_span'))
			{
				var temp = $('selected_span');
				$('selected_span').removeClass('hover');
			$('selected_span').set('id', '');
			
				$(temp).getPrevious('.search_proposal').addClass('hover').set('id', 'selected_span');
			}
			else
			{
				// Hitta första span
				$$('.search_proposal')[0].addClass('hover').set('id', 'selected_span');
			}
			
			$('keyword_field').value = $('selected_span').title;
		}
		// Enter
		else if (event.code == 13)
		{
			event.stop();
			if($('selected_span'))
			{
				$('selected_span').fireEvent('click');
			}
			else
			{
				window.location = "http://www.gratislandet.se/sok/" + $('keyword_field').value;	
			}
			return false;
		}
		// Sökförslag
		else
		{
			clearTimeout(search_timer);
			search_timer = setTimeout(start_search, 250);
		}
	});
});

function start_search()
{
	var keyword = $('keyword_field').value;
    if(keyword.length > 1)
    {
		var jsonRequest = new Request.JSON({
	    url: "http://www.gratislandet.se/sok/ajax/",
	    onSuccess: function(results)
	    {
	    	var items = new Array();
	    	for (var key in results)
	    	{
	    		if (results.hasOwnProperty(key))
	    		{
	    			var obj = results[key];
	    			for (var prop in obj)
					{
						if (obj.hasOwnProperty(prop))
						{
							items.push(obj[prop]);
						}
					}
				}
			}
			
			showResult(items, keyword);
	    	
		}		
		}).get({'keyword': keyword});
    }
    else
    {
    	// Dölj ruta
    	$$('div.search_ajax').setStyle('display','none');
    }
}
