/**
 * Search
 *
 **********
 *
 * Håndterer simpel og avanceret søgning i annoncerne.
 */
Search={

/**
 * init
 *
 **********
 *
 * Initialiserer søgefeltet og sørger for at vise den indtastede søgning rigtigt.
 */
init:function(){
	// Tjek om der er indtastet en avanceret søgning
	var is_adv=document.getElementById('search_is_adv').value;

	// Klargør variabler
	document.getElementById('search_fields').stdHeight=document.getElementById('search_fields').offsetHeight-2;

	// Vis felterne
	if(parseInt(is_adv)){
		document.getElementById('search_adv2').innerHTML=document.getElementById('search_adv').innerHTML;
		document.getElementById('search_adv_link').style.display='none';
	}

	// Håndter lukning af søgeforslag
	if(document.attachEvent) document.attachEvent('onclick',Search.helpClose);
	else document.addEventListener('click',Search.helpClose,false);
},

/**
 * help
 *
 **********
 *
 * Indlæser forslag til søgninger, baseret på brugerens input.
 */
help:function(){
	// Indlæs søge-forespørgslen
	var s=document.getElementById('search_text').value;
	if(s=='Søgeord...'||s==''){
		document.getElementById('search_q_dropdown').style.display="none";
		return;
	}

	try{s=encodeURIComponent(s);}catch(e){s=escape(s);}

	// Lav et AJAX-objekt (tag højde for browser-forskelle)
	var ajax=(window.ActiveXObject)?new ActiveXObject('Microsoft.XMLHTTP'):new XMLHttpRequest();

	// Klargør modtagning af status
	ajax.onreadystatechange=
	function(){
		// Tjek om hele status er modtaget
		if(ajax.readyState==4 && ajax.status==200){
			// Er det den aktuelle søgning, der modtages? - Hvis ikke har brugeren søgt videre, og vi ignorerer dette resultat
			var s=ajax.responseText.substr(0,ajax.responseText.indexOf('\n\n'));
			var s2=document.getElementById('search_text').value;

			if(s!=s2) return false;

			// Vis resultatet af søgningen
			if(ajax.responseText.substr(ajax.responseText.indexOf('\n\n')+2)){
				document.getElementById('search_q_dropdown').innerHTML=ajax.responseText.substr(ajax.responseText.indexOf('\n\n')+2);
				document.getElementById('search_q_dropdown').style.display="block";
			}else{
				document.getElementById('search_q_dropdown').style.display="none";
			}
		}
	}

	// Forespørg status
	ajax.open("GET",document.getElementsByTagName('base')[0].href+"ajax/default/search.php?q="+s,true);
	ajax.send(null);
},

/**
 * helpClose
 *
 **********
 *
 * Lukker søgeforslag, når brugeren klikker med musen.
 */
helpClose:function(){
	// Luk menuen
	document.getElementById('search_q_dropdown').style.display="none";
},

/**
 * search
 *
 **********
 *
 * Indlæser brugerens input og søger på de valgte kriterier
 */
search:function(){
	// Klargør variabler
	var is_adv=document.getElementById('search_is_adv').value;
	var search="";

	// Indlæs brugerens input
	var q=document.getElementById('search_text').value;
	if(q=='Søgeord...') q='';

	var cat=document.getElementById('search_category').value;

	// Håndter avancerede søgninger
	if(parseInt(is_adv)){
		// Indlæs pris
		var price=document.getElementById('search_price').value;
		if(price=='Ikke angivet...') price='';
		search+=price?'&price='+price:'';

		// Indlæs stand
		var state=document.getElementById('search_state').value;
		search+=state?'&state='+state:'';

		// Indlæs mærke
		var brand=document.getElementById('search_brand');
		if(brand){
			brand=brand.value?brand.value:null;
			search+=brand?'&brand='+brand:'';
		}

		// Håndter tags
		var list=document.getElementById('search_fields').getElementsByTagName('select');
		var i=list.length; var j=i;

		if(i>0)do{
			var tmp=list[j-i];
			if(tmp.id.indexOf('search_tag')==0){
				search+='&tag'+tmp.id.substring(10)+'='+encodeURIComponent(tmp.value);
			}
		}while(--i);
	}

	// Håndter sorteringen
	var sort=document.getElementById('search_sort').value;
	sort=sort?'&sort='+sort:'';

	// Kør søgningen
	window.location.href=document.getElementsByTagName('base')[0].href+cat+'?q='+encodeURIComponent(q)+'&adv='+is_adv+search+sort;
},

/**
 * simpleSearch
 *
 **********
 *
 * Kører en simpel søgning, hvis brugeren skifter kategori.
 */
simpleSearch:function(){
	// Klargør variabler
	var is_adv=document.getElementById('search_is_adv').value;
	var search="";

	// Indlæs brugerens input
	var q=document.getElementById('search_text').value;
	if(q=='Søgeord...') q='';

	var cat=document.getElementById('search_category').value;

	// Håndter avancerede søgninger
	if(parseInt(is_adv)){
		// Indlæs pris
		var price=document.getElementById('search_price').value;
		if(price=='Ikke angivet...') price='';
		search+=price?'&price='+price:'';

		// Indlæs stand
		var state=document.getElementById('search_state').value;
		search+=state?'&state='+state:'';
	}

	// Håndter sorteringen
	var sort=document.getElementById('search_sort').value;
	sort=sort?'&sort='+sort:'';

	// Kør søgningen
	window.location.href=document.getElementsByTagName('base')[0].href+cat+'?q='+encodeURIComponent(q)+'&adv='+is_adv+search+sort;
},

/**
 * adv
 *
 **********
 *
 * Denne funktion viser muligheden for avanceret søgning.
 */
adv:function(){
	// Indlæs reference til søgefeltet
	var fade=document.getElementById('search_fields');
	if(!fade.fieldList) fade.fieldList=fade.getElementsByTagName('div')[0];

	// Klargør variabler
	fade.style.height=fade.fieldList.offsetHeight+'px';

	// Fade "udvidet søgning" ud
	document.getElementById('search_adv_link').opacity=100;
	this.adv_timer=setInterval(function(){Search.adv2();},10);

	// Gem info om at der bruges avanceret søgning
	document.getElementById('search_is_adv').value=1;
},
adv2:function(){
	// Fade "udvidet søgning" ud
	var fade=document.getElementById('search_adv_link');
	fade.opacity-=10;

	fade.style.opacity=fade.opacity/100;
	fade.style.filter='alpha(opacity='+fade.opacity+')';

	// Afslut fade ud og begynd at fade ind
	if(fade.opacity==0){
		// Afslut fade ud
		clearInterval(this.adv_timer);

		// Opdater felterne
		document.getElementById('search_adv2').innerHTML=document.getElementById('search_adv').innerHTML;
		document.getElementById('search_adv_link').style.display='none';

		// Fix IE-bug (inputs vises for tidligt)
		if(document.all){
			var list=document.getElementById('search_adv2').getElementsByTagName('input');
			var i=list.length; var j=i;

			if(i>0)do{
				list[j-i].style.visibility='hidden';
			}while(--i);

			var list=document.getElementById('search_adv2').getElementsByTagName('select');
			var i=list.length; var j=i;

			if(i>0)do{
				list[j-i].style.visibility='hidden';
			}while(--i);
		}

		// Fade ind
		this.adv_timer=setInterval(function(){Search.adv3();},5);
	}
},
adv3:function(){
	// Fade ind
	var fade=document.getElementById('search_fields');
	fade.style.height=Math.min((fade.offsetHeight+fade.fieldList.offsetHeight/30),fade.fieldList.offsetHeight)+'px';

	// Afslut fade ind
	if(fade.offsetHeight>=fade.fieldList.offsetHeight){
		// Fix IE-bug (inputs vises for tidligt)
		if(document.all){
			var list=document.getElementById('search_adv2').getElementsByTagName('input');
			var i=list.length; var j=i;

			if(i>0)do{
				list[j-i].style.visibility='visible';
			}while(--i);

			var list=document.getElementById('search_adv2').getElementsByTagName('select');
			var i=list.length; var j=i;

			if(i>0)do{
				list[j-i].style.visibility='visible';
			}while(--i);
		}
		
		clearInterval(this.adv_timer);
	}
},

/**
 * simple
 *
 **********
 *
 * Forkorter listen over søgefelter, når brugeren klikker på "simpel søgning".
 */
simple:function(){
	// Fade "udvidet søgning" ud
	var fade=document.getElementById('search_fields');
	if(!fade.fieldList) fade.fieldList=fade.getElementsByTagName('div')[0];

	// Fix IE-bug (inputs vises for tidligt)
	if(document.all){
		var list=document.getElementById('search_adv2').getElementsByTagName('input');
		var i=list.length; var j=i;

		if(i>0)do{
			list[j-i].style.visibility='hidden';
		}while(--i);

		var list=document.getElementById('search_adv2').getElementsByTagName('select');
		var i=list.length; var j=i;

		if(i>0)do{
			list[j-i].style.visibility='hidden';
		}while(--i);
	}

	this.simple_timer=setInterval(function(){Search.simple2();},10);

	// Gem info om at der bruges avanceret søgning
	document.getElementById('search_is_adv').value=0;
},
simple2:function(){
	// Fade ind
	var fade=document.getElementById('search_fields');
	fade.style.height=Math.max(fade.stdHeight,(fade.offsetHeight-fade.fieldList.offsetHeight/30))+'px';

	// Afslut fade ind
	if(fade.offsetHeight<=fade.stdHeight+2){
		// Afslut fade ind
		clearInterval(this.simple_timer);

		// Opdater felterne
		document.getElementById('search_adv_link').style.display='inline';
		document.getElementById('search_adv_link').opacity=0;

		// Fade udvidet søgning ind
		this.simple_timer=setInterval(function(){Search.simple3();},10);
	}
},
simple3:function(){
	// Fade "udvidet søgning" ind
	var fade=document.getElementById('search_adv_link');
	var fields=document.getElementById('search_adv2');
	fade.opacity+=10;

	fade.style.opacity=fade.opacity/100;
	fade.style.filter='alpha(opacity='+fade.opacity+')';

	fields.style.opacity=(100-fade.opacity)/100;
	fields.style.filter='alpha(opacity='+(100-fade.opacity)+')';

	// Afslut fade ud og begynd at fade ind
	if(fade.opacity==100){
		// Afslut fade ud
		clearInterval(this.simple_timer);

		// Opdater felterne
		fields.innerHTML='';
		fields.style.opacity=1;
		fields.style.filter='alpha(opacity=100)';
	}
}

}

// Initialiser søgefeltet
if(/WebKit/i.test(navigator.userAgent)){
	var _timer=setInterval(function(){
	if(/loaded|complete/.test(document.readyState)){
		clearInterval(_timer);
		Search.init();
	}},10);
}else if(document.all){
	document.write("<script id=__ie_onload defer src=javascript:void(0)></script>");
	var script=document.getElementById("__ie_onload");
	script.onreadystatechange=function(){if(this.readyState=="complete") Search.init();};
}else{
	document.addEventListener("DOMContentLoaded",Search.init,false);
}