/**
 * Legger på focus og blur effekter på inputfelter, og visning skjuling av tekst inne i feltet.
 */
$(document).ready(function(){
	$('input[@type=text]').each(function(){
		$(this).attr('label',$(this).val());
	});
	$('input[@type=text]').focus(function(){
		$(this).parent().addClass('focus');
		if($(this).val() == $(this).attr('label')){
			$(this).val('');
		}
	});
	$('input[@type=text]').blur(function(){
		if($.trim($(this).val()).length < 1){
			$(this).val($(this).attr('label'));
		}
		$(this).parent().removeClass('focus');
	});
});



/**
 * Løper gjennom alle overskriftene i artikkellisten og fjerner lenkene.
 */
/*$(document).ready(function(){
	$('#newslist h2 a').each(function(){
		$(this).replaceWith($(this).html());
	});
});*/


/**
 * Klasse som implementerer søkefunksjonen
 */
var search = {
	prevValue:'',
	tags:new Array(),
	
	setTags:function(){
		$.getJSON(
			'/ret.php?act=get.all.tags&method=ajax',
			function(data){
				search.tags = $.makeArray(data);
			}
		);
	},
	
	showTags:function(frase){
		var html = '';
		var maxNumber = 9;
		var j = 0;
		if(frase.length > 0){
			html = '<ul>';
			for(var i=0;(i<search.tags.length && j < maxNumber);i++){
				if(new RegExp('^('+frase+'.*)', 'i').exec(search.tags[i].name)){
					html += '<li><a href="/tags/'+search.tags[i].address+'/" rel="tag" title="Sorter etter tags">'+search.tags[i].name+'</a></li>';
					j++;
				}
			}
			html += '</ul>';
		}
		$('div#searchpane').removeClass('result tags');
		$('div#searchpane').html(html);
		this.addTagClickEventsMain();
	},
	
	addTagClickEvent:function(){
		var tag = '';
		var match = /\/tags\/(.+)\//i.exec($(this).attr('href'));
		if(match){
			tag = match[1];
		}
		$(this).click(function(event){
			event.preventDefault();
			search.tag(tag);
		});
	},
	
	/**
 	* Løper igjennom alle taggene på siden og legger på klikkhendelser
 	*/
	addTagClickEventsMain:function(){
		$('a[rel="tag"]').each(search.addTagClickEvent);
	},
	
	/**
 	* Løper igjennom alle taggene i søkeresultatfeltet og legger på klikkhendelser
 	*/
	addTagClickEvents:function(){
		$('#result a').each(search.addTagClickEvent);
	},
	
	/**
 	* Slår opp nyheter på en tagg
 	*/
	tag:function(tag){
		$('#searchpane').fadeOut('normal',function(){
			$('#newslist').load(
				'/ret.php?act=get.articles.on.tag&method=ajax',
				{'tag':tag}
			);
		});
	},
	
	/**
 	* Slår opp nyheter på en frase
 	*/
	frase:function(frase){
		$('#searchpane').fadeOut('normal',function(){
			$('#newslist').load(
				'/ret.php?act=get.articles.on.frase&method=ajax',
				{'frase':frase},
				function(responseText, textStatus){
					/* Viser melding om ingen treff */
					if(textStatus == 'error'){
						search.showResultMessage('frase',0,frase);
					}
				}
			);
		});
	},
	
	/**
 	* Viser resultatmelding i søkeområdet.
 	*/
	showResultMessage:function(type,news,frase){
		var newsText = (news > 1)?language['nyheter']:language['nyhet'];
		$('#searchpane').addClass('result');
		switch(type){
			case 'frase':
				$('#searchpane').addClass('frase');
				if(news > 0){
					$('#searchpane').html('<h3><a href="/tags/">'+language['Søkeresultat']+'</a></h3><span>'+language['Viser']+' <strong>'+news+'</strong> '+newsText+' '+language['som inneholder']+':</span><em>'+frase+'</em><a href="" class="back">'+language['Tilbake til alle nyheter']+'</a>');
				}else{
					$('#searchpane').html('<h3><a href="/tags/">'+language['Søkeresultat']+'</a></h3><span>'+language['Ingen treff på']+':</span><em>'+frase+'</em><a href="" class="back">'+language['Tilbake til alle nyheter']+'</a>');		
				}
				break;
			case 'tag':
				$('#searchpane').addClass('tags');
				$('#searchpane').html('<h3><a href="/tags/">'+language['Sortert etter tags']+'</a></h3><span>'+language['Viser']+' <strong>'+news+'</strong> '+newsText+' '+language['som er merket med']+':</span><em>'+frase+'</em><a href="" class="back">'+language['Tilbake til alle nyheter']+'</a>');
				break;
		}
		$('#searchpane').fadeIn();
	},
	
	/**
 	* Bytter bilde på knapper for å skape hover-effekt
 	*/
	hover:function(event){
		var src = $(this).attr('src');
		if(src.indexOf('_aktiv') < 0){
			src = src.replace('btn_','btn_aktiv_');
		}else{
			src = src.replace('btn_aktiv_','btn_');
		}
		$(this).attr('src',src);
	},
	
	/**
 	* Slår opp frasen i databasen og foreslår tagger
 	*/
	lookUp:function(frase){
		$('#searchpane').removeClass('frase');
		$('#searchpane').removeClass('tags');
		$('#searchpane').removeClass('result');
		$('#searchpane').html('<h3>'+language['Tags']+'</h3><div id="result"></div>');
		$('#result').load('/ret.php?act=lookup.tags&method=ajax',{'frase':frase});
	},
	
	activate:function(){
		/* Slår på hovereffekt på knapper */
		$('#content input.button').hover(search.hover,search.hover);
		
		/* Legger på submit-event på skjema */
		$('#search form').submit(function(event){
			event.preventDefault();
			frase = $.trim($(this).find('#frase').val());
			if(frase.length > 0){
				search.frase(frase);
			}
		});
		
		/* Legger på hendelse på tast-opp i søkefeltet som slår frasen opp i databasen dersom det er skjedd endringer i feltet */
		$('#frase').keyup(function(){
			var frase = $.trim($(this).val());
			if(frase != search.prevValue){
				search.showTags(frase);
				//search.lookUp(frase);
				search.prevValue = frase;
			}
		});
		
		this.setTags();
	},
	
	setFixed:function(){
		if(!(BrowserDetect.OS == 'Mac' && BrowserDetect.browser == 'Firefox')){
			if($(window).height() > 730){
				$('#search').addClass('fixed');
				$('#newsletter').addClass('fixed');
			}else{
				$('#search').removeClass('fixed');
				$('#newsletter').removeClass('fixed');
			}
		}
	}
}

$(document).ready(function(){
	search.activate();
	search.addTagClickEventsMain();
	search.setFixed();
	$(window).resize(search.setFixed);
});

/**
 * Klasse som implementerer nyhetsbrevregistreing
 */
var newsletter = {
	oldHTML:'',
	register:function(event){
		event.preventDefault();
		var email = $.trim($(this).find('#email').val());
		
		/* Registrerer håndtering av feilmelding */
		$('#newsletterheader').ajaxError(function(){
			$('#newsletterheader').fadeOut().addClass('error').fadeIn();
		});
		
		/* Sender input fra bruker og viser takkemelding dersom ok. Feilmelding derom ikke */
		$.get(
			'/ret.php?act=registrer.newsletter&method=ajax',
			{'email':email},
			function(responseText, textStatus){
				$('#newslettercanvas').fadeOut('normal',function(){
					$('#newslettercanvas').html(responseText);
					$('#newslettercanvas').fadeIn().fadeTo(2000,1).fadeOut(function(){
						$('#newslettercanvas').html(newsletter.oldHTML);
						$('#newsletter form').submit(newsletter.register);
						$('#newslettercanvas').fadeIn();
					});
				});
			}
		);
	}
}

/* Registrer ajaxfunksjonalitet på nyhetsbrevskjemaet. */
$(document).ready(function(){
	newsletter.oldHTML = $('#newslettercanvas').html();
	$('#newsletter form').submit(newsletter.register);
})

/* Bytter ut "skulte bilder" med bilder */
$(document).ready(function(){
	$('#newslist div.article a.no-image').delay(300,function(){
		var image = '<img width="572" height="166" alt="" src="'+$(this).attr('rel')+'"/>';
		$(this).replaceWith(image);
	});
});
