var navi,data,prev,next,chartId;
var slideWidth,slideScrollAmount,slidesForward,slidesViewable,slideAmount;
var tempOptions = [];

// Add class when JS is enabled
if(document.getElementById){
	var html = document.getElementsByTagName("html")[0];
	html.className = 'jsDone';
}

// DOM ready
$(document).ready(function(){
	var autoCompleteHostname = 'http://'+ TV2.getSite("ajax");

	chartInit();
	widgetSlider();
	accessibleInputs();
	submenu();
	newsSlider();
	iconOverlay('.w-video');
	iconOverlay('.w-gallery');
	tabs();
	searchresult(20);
	boxClick();
	popwin();
	dkweatherteaser();
	mapApp();
	beachmap();
	mapOverlay();
	videoOverlay();
	overlay();
	fixSharelinks();
	$('#w-widget #w-search-input').autocomplete({
		url : autoCompleteHostname + '/vejret/autocomplete.php?search=',
		query : '',
		container : $('#w-widget-search'),
		classes : {
			selected : 'selected'
		}
	});
	$('.w-widgetbox #w-search-input').autocomplete({
		url : autoCompleteHostname + '/vejret/autocomplete.php?search=',
		query : '',
		container : $('#w-widgetbox-search'),
		classes : {
			selected : 'selected'
		}
	});
	syndicationOverlay();
	syndicationCopyAndClose();
});

// slides graphs
function widgetSlider(){
	if($('#w-widget').get(0)){
		navi = '#w-widget-navi';
		data = '#w-widget-data';
		prev = 'w-widget-prev';
		next = 'w-widget-next';
		var chartElem = $(data).find('li:first');
		$(data).before('<a class="'+prev+'" href="#w-2w">&lt;</a>').after('<a class="'+next+'" href="#w-48h">&gt;</a>');
		$(navi).find('ul').find('li:first').addClass('first').before('<li class="'+prev+'"><a href="#w-2w">&lt;</a></li>').end().find('li:last').addClass('last').after('<li class="'+next+'"><a href="#w-48h">&gt;</a></li>');
		widgetButtons(chartElem);

		$.localScroll.hash({
			target: data,
			axis: 'x',
			queue: true,
			duration: 400,
			onAfter: function(elem, settings){
				if (elem && elem.id != 'w-24h') {
					widgetButtons(elem);
					drawChart(elem);
					updateWidgetButtons(elem);
				}
			}
		});

		$('#w-widget-sub').localScroll({ // direct buttons
			target: data,
			axis: 'x',
			duration: 400,
			hash:true,
			queue:true,
			onBefore: function(e,elem){
				widgetButtons(elem);
			},
			onAfter: function(elem, settings){
				drawChart(elem);
				updateWidgetButtons(elem);
			}
		});
	}
}

// button-states
function widgetButtons(chartElem){
	var id = $(chartElem).attr('id');
	$(navi).find('li.selected').removeClass('selected').end().find('li a[href=#'+id+']').not('.' + prev + ', .' + next).parent().addClass('selected');
	$(data).parent().children('[class='+prev+'],[class='+next+']').hide().delay(400).fadeIn();
}

function updateWidgetButtons(chartElem){
	var prevId = $(chartElem).prev().attr('id');
	if (typeof prevId == "undefined") {
		prevId = $(chartElem).parent().find('li:last-child').attr('id');
	}
	$('.' + prev).find('a').attr('href', '#' + prevId);
	$('a.' + prev).attr('href', '#' + prevId);
	var nextId = $(chartElem).next().attr('id');
	if (typeof nextId == "undefined") {
		nextId = $(chartElem).parent().find('li:first-child').attr('id');
	}
	$('.' + next).find('a').attr('href', '#' + nextId);
	$('a.' + next).attr('href', '#' + nextId);
}

function chartInit(chartId){
	if($('#w-widget').get(0)){
		var table = $('[id=' + chartId + '] table');
		if(chartId == 'w-48h'){
 			var options = {
				chart: {
					renderTo: 'w-graph-'+ chartId.substr(2) ,
					margin: [0, 0, 0, 0],
					backgroundColor: 'rgba(0,0,0,0)'
				},
				title: {
					text: ''
				},
				credits: {
					enabled: false
				},
				legend: {
					enabled: false
				},
				xAxis: [{
					categories: [],
					labels: {
						enabled: false
					},
					tickWidth: 0,
					gridLineWidth: 0
				}, {
					categories: [],
					labels: {
						enabled: false
					},
					tickWidth: 0,
					gridLineWidth: 0,
					max: 15,
					min: 0
				}],
				yAxis: [{ // Primary yAxis
					labels: {
						enabled: false
					},
					gridLineWidth: 0,
					plotLines: [{
						color: '#999',
						value: 0,
						width: 1
					}]
				}, { // Secondary yAxis
					title: {
						text: 'Rainfall',
						margin: 70,
						style: {
							color: '#4572a7'
						}
					},
					labels: {
						enabled: false
					},
					minorGridLineWidth: 0,
					gridLineWidth: 0,
					max: 20,
					min: 0
				}],
				tooltip: {
					enabled: true,
					formatter: function() {
						if (isNaN(this.y)) {
							return false;
						}
						var value = this.y.toString();
						value = value.split('.');
						if (value.length < 2) {
							value[1] = '0';
						}
						if (this.series.index == 0) {
							return '<b>' + htmlDecode('Nedb&oslash;r') + '</b><br/>' + value[0] + ',' + value[1] +'mm';
						}
						if (this.series.index == 1 || this.series.index == 2) {
							return '<b>Temperatur</b><br/>' + value[0] + ',' + value[1] + htmlDecode('&#176;') + 'C';
						}
						return false;
					}
				},
				plotOptions: {
					spline: {
						lineWidth: 2,
						marker: {
							enabled: false
						}
					},
					 scatter: {
						 lineWidth: 0,
						 marker: {
							 enabled: false
						 },
						 dataLabels: {
							enabled: true,
							formatter: function() {
								if (this.y == null) {
									return null;
								}
								var str = new String(this.y).indexOf('.') == -1 ? this.y : Math.round(this.y);
								return this.y > 0 ? str + htmlDecode('&#176;') : '<span style="color:#0072BC">' + str + htmlDecode('&#176;') + '</span>';
							},
							 style: {
								display: 'block',
								width: '27px',
								height: '27px',
								color: '#EE2B32',
								font: 'normal 13px/27px ColaborateRegular,\'arial narrow\',arial,verdana,sans-serif',
								textAlign: 'center'
							 },
							 y: 3
						 }
					 },
					 column: {
						 borderWidth: 0,
						 shadow: false,
						 pointPadding:0,
						 groupPadding: 0.15,
						 dataLabels: {
							enabled: true,
							formatter: function() {
								if (isNaN(this.y) || this.y == null || this.y == 0) {
									return null;
								}
								var value = this.y.toString();
								value = value.split('.');
								if (value.length < 2) {
									value[1] = '0';
								}
								return value[0] + ',' + value[1];
							},
							 style: {
								 color: '#5495b5',
								 font: 'normal 8px/10px ColaborateLightRegular,\'arial narrow\',arial,verdena,sans-serif',
								 textAlign: 'center'
							 }
						 }
					},
					series: {
						states: {
							hover: {
								enabled: false
							}
						}
					}
				},
				series: [
				{
					name: 'Rainfall',
					color: '#5495b5',
					type: 'column',
					yAxis: 1,
					xAxis: 0,
					data: []
				},
				{
					name: 'Temperatur',
					color: '#ee2b32',
					type: 'spline',
					data: []
				},
				{
					name: 'Temperatur',
					color: '#0072bc',
					type: 'spline',
					data: []
				},
				{
					name: 'Temperatur marker',
					color: '#ee2b32',
					type: 'scatter',
					data: []
				}]
			};
			Highcharts.visualize(table, options, chartId);
		}
		if(chartId == 'w-1w' || chartId == 'w-2w'){
			 var options = {
				 chart: {
					 renderTo: 'w-graph-'+ chartId.substr(2) ,
					 margin: [0, 0, 0, 0],
					 backgroundColor: 'rgba(0,0,0,0)'
				},
				title: {
					text: ''
				},
				credits: {
					enabled: false
				},
				legend: {
					enabled: false
				},
				xAxis: {
					categories: [],
					labels: {
						enabled: false
					},
					tickWidth: 0,
					gridLineWidth: 0
				},
				yAxis: [{ // Primary yAxis
					labels: {
						enabled: false
					},
					gridLineWidth: 0,
					plotLines: [{
						 color: '#999',
						 value: 0,
						 width: 1
					}]
				}],
				tooltip: {
					enabled: false
				},
				plotOptions: {
					spline: {
						lineWidth: 2,
						marker: {
							enabled: false
						},
						dataLabels: {
							formatter: function() {
								if (this.y == null || (this.x - .5) % 1 != 0) {
									return null;
								}
								return this.y > 0 ? this.y + htmlDecode('&#176;') : '<span style="color:#0072BC">' + this.y + htmlDecode('&#176;') + '</span>';
							},
							enabled: true,
							style: {
								display: 'block',
								width: '27px',
								height: '27px',
								color: '#EE2B32',
								font: 'normal 12px/27px ColaborateRegular,\'arial narrow\',arial,verdana,sans-serif',
								textAlign: 'center'
							},
							y: 3
						}
					},
					column: {
						borderWidth: 0,
						shadow: false,
						pointPadding:0,
						groupPadding: .2,
						dataLabels: {
							enabled: true,
							style: {
								color: '#5495b5',
								font: 'normal 8px/10px ColaborateLightRegular,arial,verdana,sans-serif',
								textAlign: 'center'
							}
						}
					},
					series: {
						states: {
							hover: {
								enabled: false
							}
						}
					}
				},
				series: [
				{
					name: 'Temperatur',
					color: '#ee2b32',
					type: 'spline',
					data: []
				},
				{
					name: 'Temperatur',
					color: '#0072bc',
					type: 'spline',
					data: []
				}]
			};
			Highcharts.visualize(table, options, chartId);
		}
	}
}

Highcharts.visualize = function(table, options, chartId) {
	if (chartId == 'w-48h') {

		//read precipitation data from table
		var precs = [];
		var offset = 0;
		if ($('.w-widget-data-prec td', table).length < 30) {
			offset = .64;
			options.series[0].xAxis = 1;
			options.plotOptions.column.groupPadding = .045
		}
		var maxPrec = 0;
		$('.w-widget-data-prec td', table).each( function(i) {
			precs.push({"x": i - offset, "y": parseFloat($(this).text())});
			if (parseFloat($(this).text())) {
				maxPrec = Math.max(maxPrec, parseFloat($(this).text()));
			}
		});
		var scale = 10;
		while (maxPrec > scale) {
			scale = scale * 2;
		}
		options.series[0].data = precs;
		options.yAxis[1].max = scale;

		//read temp data from table
		var temps = [];
		$('.w-widget-data-temps td', table).each( function(i) {
			if ($('span', this).text() != '') {
				temps.push({"x": i, "y": parseFloat($('span', this).text())});
			}
		});
		

		//split data into series
		$(temps).each( function(i) {
			if (i > 0) {
				if ((temps[i-1].y < 0 && this.y > 0) || (temps[i-1].y > 0 && this.y < 0)) {
					var deltaY = Math.abs(temps[i-1].y) + Math.abs(this.y);
					var factor = Math.abs(temps[i-1].y) / deltaY;
					var deltaX = this.x - temps[i-1].x;
					var x = temps[i-1].x + deltaX * factor;
					options.series[1].data.push({"x": x, "y": 0});
					options.series[2].data.push({"x": x, "y": 0});
				}
			}
			options.series[(this.y > 0 ? 1 : 2)].data.push({"x": this.x, "y": this.y});
			options.series[(this.y > 0 ? 2 : 1)].data.push({"x": this.x, "y": null});
		});

		options.series[3].data = insertMarker(temps);

		$('#'+chartId+' .w-widget-data-prec').remove();
		$('#'+chartId+' .w-widget-data-temps').find('td').css('height','0').empty().end().after('<tr class="w-widget-data-graph"><td id="w-graph-'+chartId.substr(2)+'" colspan="48"></td></tr>');
		tempOptions[0] = options;
	}
	if (chartId == 'w-1w' || chartId == 'w-2w') {
		//read temp data from table
		var temps = [{"x": 0, "y": null}];
		options.series[0].data.push({"x": 0, "y": null});
		options.series[1].data.push({"x": 0, "y": null});
		$('.w-widget-data-temps:first td', table).each( function(i) {
			var x = (i * 2) + .5;
			var y = parseFloat($('.w-widget-data-temps:first td:eq(' + i + ')', table).text());
			temps.push({"x": x, "y": y});
			var x = (i * 2) + 1.5;
			var y = parseFloat($('.w-widget-data-temps:last td:eq(' + i + ')', table).text());
			if (x < 13) {
				temps.push({"x": x, "y": y});
			}
		});
		$(temps).each( function(i) {
			if (i > 1) {
				if ((temps[i-1].y <= 0 && this.y > 0) || (temps[i-1].y > 0 && this.y <= 0)) {
					var deltaY = Math.abs(temps[i-1].y) + Math.abs(this.y);
					var factor = Math.abs(temps[i-1].y) / deltaY;
					var deltaX = this.x - temps[i-1].x;
					var x = temps[i-1].x + deltaX * factor;
					options.series[0].data.push({"x": x - (this.y == 0 ? 0.001 : 0), "y": 0});
					options.series[1].data.push({"x": x, "y": 0});
				}
			}
			options.series[(this.y > 0 ? 0 : 1)].data.push({"x": this.x, "y": this.y});
			options.series[(this.y > 0 ? 1 : 0)].data.push({"x": this.x, "y": null});
		});
		options.series[0].data.push({"x": 13, "y": null});
		options.series[1].data.push({"x": 13, "y": null});

		$('#'+chartId+' .w-widget-data-temps').find('td').css('height','0').empty();
		$('#'+chartId+' .w-widget-data-temps:first').before('<tr class="w-widget-data-graph"><td id="w-graph-'+chartId.substr(2)+'" colspan="7"></td></tr>');
		if (chartId == 'w-1w') {
			tempOptions[1] = options;
		}
		if (chartId == 'w-2w') {
			tempOptions[2] = options;
		}
	}
	var chart = new Highcharts.Chart(options, function(chart) { // on complete
		insertMarkerBackground(chart);
	});
}

function insertMarkerBackground(chart) {
	if (chart.series.length > 3) {
		$.each(chart.series[3].data, function(i, point) {
			renderMarkerBackground(chart, point);
		})
	} else {
		for (var i = 0; i < 2; i++) {
			$.each(chart.series[i].data, function(i, point) {
				renderMarkerBackground(chart, point);
			})
		}
	}
}

function renderMarkerBackground(chart, point) {
	if (point.dataLabel) {
		chart.renderer.circle(
			point.plotX + chart.plotLeft,
			point.plotY + chart.plotTop - 1,
			13 
		).attr({
			fill: '#f9fbfd',
			zIndex: 4
		}).add();
	}
}

function insertMarker(data) {
	var ret = [];
	var pre = -2;
	$(data).each( function(i) {
		if (i > 0 && i < data.length - 1 && this.y) {
			if (this.y >= data[i - 1].y && this.y > data[i + 1].y) {
				if ((i - pre) > 1) {
					ret.push(this);
					pre = i;
				}
			} else if (this.y <= data[i - 1].y && this.y < data[i + 1].y) {
				if ((i - pre) > 1) {
					ret.push(this);
					pre = i;
				}
			}
		} else {
			if ((i - pre) > 1) {
				ret.push(this);
				pre = i;
			}
		}
	});
	return ret;
}

function drawChart(chartElem) {
	chartId = $(chartElem).attr('id');
	$('tr.w-widget-data-graph td').not(chartElem).empty();
	if (chartId == 'w-48h') {
		optionsId = 0;
	}
	if (chartId == 'w-1w') {
		optionsId = 1;
	}
	if (chartId == 'w-2w') {
		optionsId = 2;
	}
	if (tempOptions[optionsId]) {
		var chart = new Highcharts.Chart(tempOptions[optionsId], function(chart) { // on complete
			insertMarkerBackground(chart);
		});
		return;
	}
	chartInit(chartId);
}

// inserts label-values into form-elements
function accessibleInputs(){
	$("label.w-label[for]").each(function(i){
		var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi;
		var newVal = this.innerHTML.replace(regexp,"");
		if($("#"+this.htmlFor).is("input") || $("#"+this.htmlFor).is("textarea")){
			if(($("#"+this.htmlFor).val() == "") || ($("#"+this.htmlFor).val() == newVal)){
				$("#"+this.htmlFor).attr("value",newVal);
			}else{
				$("#"+this.htmlFor).addClass('active')
			}
			$('#' +this.htmlFor).focus(function(){if(this.value == newVal) this.value = '';$(this).addClass('active')});
			$('#'+this.htmlFor).blur(function(){if(this.value == '') this.value = newVal;if(this.value == newVal) $(this).removeClass('active')})
		} else if($("#"+this.htmlFor).is("select")){
			var orgOptions = $("#"+this.htmlFor).html();
			var newOptions = '<option value="">'+newVal+'</option>'+orgOptions;
			// IE special Kung Fu
			if($.browser.msie && $.browser.version < 8){
				var go=0;
				$("#"+this.htmlFor).find("option").each(function(i){
					if($(this).get(0).defaultSelected){
						go=1;
					}
				})
				if(go==0){
					newOptions = newOptions.replace(/selected>/g,">");
				}
			}
			$("#"+this.htmlFor).html(newOptions);
		}
	})
	cleanForms();
}

// removes label-values from textfields on submit
function cleanForms(){
	$('form').has('label.w-label').submit(function(){
		$('label.w-label[for]').each(function(){
			var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi;
			var newVal = this.innerHTML.replace(regexp,'');
			if($('#'+this.htmlFor).attr('value') == newVal){
				$('#'+this.htmlFor).attr('value','');
			}
		})
	})
}

// news slider
function newsSlider(){
	slideWidth=162;
	slideScrollAmount=6;
	slidesForward=0;
	slidesViewable=6;
	slideAmount=$('#w-newsslider li').length;
	if(slideAmount>6){
		$('#w-newsslider').find('dt').prepend('<div class="w-newsslider-prev">&lt;</div><div class="w-newsslider-next">&gt;</div>');
		$('.w-newsslider-next').click(function(){
			if(slidesViewable+(slideScrollAmount*slidesForward)<slideAmount && $(this).not('.disabled')){
				slidesForward=slidesForward+1;
				var slidePx="-"+slideWidth*slideScrollAmount*slidesForward+"px";
				$('#w-newsslider ul').animate({marginLeft:slidePx},500,'');
				$('.w-newsslider-prev').removeClass('disabled');
			}
			if(slidesViewable+(slideScrollAmount*slidesForward)>slideAmount){
				$(this).addClass('disabled');
			}
		})
		$('.w-newsslider-prev').addClass('disabled').click(function(){
			if(slidesForward>0 && $(this).not('.disabled')){
				slidesForward=slidesForward-1;
				var slidePx="-"+slideWidth*slideScrollAmount*slidesForward+"px";
				$('#w-newsslider ul').animate({marginLeft:slidePx},500,'');
				$('.w-newsslider-next').removeClass('disabled');
			}
			if(slidesForward==0){
				$(this).addClass('disabled');
			}
		})
	}
}

// buttons on images
function iconOverlay(cls){
	$(cls).each(function(){
		var image=$(this).find('img');
		if(cls=='.w-video' || cls=='.w-gallery'){
			offsetLeft=(image.attr('width')/2);
			offsetTop=(image.attr('height')/2);
			$(this).find('span').remove();
			$(this).append('<span style="left:'+offsetLeft+'px;top:'+offsetTop+'px"></span>')
		}
	});
}

// tabs
function tabs(){
	$('.w-tabs dt:first-child').addClass('selected');
	$('.w-tabs dt').click(function(){
		if(!$(this).hasClass('selected')){
			$(this).parent().find('dt').removeClass('selected');
			$(this).parent().find('dd').fadeOut();
			$(this).addClass('selected').next('dd').fadeIn();
			iconOverlay('.w-video');
		}
	})
}

// filtering searchresults
function searchresult(divider){
	var listArray = $('.w-searchresult li');
	$('#w-searchresult-info').show().find('.showall').addClass('selected');
	if(listArray.length > divider){
		$('.w-searchresult:last').after('<div class="w-pagination"><span class="w-pagination-prev"><em><span>&lt;</span></em></span><span class="w-pagination-navi"><span>&#183;</span></span><span class="w-pagination-next"><strong><span>&gt;</span></strong></span></div>');
		searchfilter(listArray,divider)
	}
	$('#w-searchresult-info li').find('span').click(function(){
		$(this).parents('ul').find('.selected').removeClass('selected');
		$(this).parent().addClass('selected');
		var filterClass=$(this).attr('class');
		searchfilter(listArray,divider,filterClass);
	})
}

function searchfilter(listArray,divider,filterClass){
	var page=1;
	var startIndex=0;
	var endIndex=divider;
	$('.w-searchresult li').hide();
	if(typeof filterClass!='undefined'){
		if(filterClass!=''){
			var filteredArray = [];
			$(listArray).each(function(){
				if($(this).hasClass(filterClass)){
					filteredArray.push($(this).get(0));
				}
			});
		}
	}
	if(typeof filteredArray=='undefined'){
		var filteredArray = $(listArray);
	}
	for(i=startIndex;i<endIndex;i++){
		$(filteredArray).eq(i).show();
	}
	var pages = Math.ceil(filteredArray.length/divider);
	searchpagination(filteredArray,divider,page,pages,startIndex,endIndex);
}

function searchpagination(filteredArray,divider,page,pages,startIndex,endIndex,clickElm){
	$('.w-pagination-prev strong,.w-pagination-next strong').unbind('click');
	$('.w-pagination-navi').empty();
	if(filteredArray.length > divider){
		if($(clickElm).hasClass('w-pagination-prev')){
			$(filteredArray).hide();
			page=page-1;
			startIndex=startIndex-divider;
			endIndex=divider*page;
			for(i=startIndex;i<endIndex;i++){
				$(filteredArray).eq(i).show();
			}
		}else if($(clickElm).hasClass('w-pagination-next')){
			$(filteredArray).hide();
			page=page+1;
			startIndex=startIndex+divider;
			endIndex=divider*page;
			for(i=startIndex;i<endIndex;i++){
				$(filteredArray).eq(i).show();
			}
		}else if($(clickElm).hasClass('w-pagination-page')){
			$(filteredArray).hide();
			page=parseInt($(clickElm).attr('id').slice(4));
			startIndex=(page*divider)-divider;
			endIndex=page*divider;
			for(i=startIndex;i<endIndex;i++){
				$(filteredArray).eq(i).show();
			}
		}
		if(page==1){
			$('.w-pagination-prev strong').replaceWith('<em><span>&lt;</span></em>')
		}else{
			$('.w-pagination-prev em').replaceWith('<strong><span>&lt;</span></strong>')
		}
		if(page!=pages){
			$('.w-pagination-next em').replaceWith('<strong><span>&gt;</span></strong>')
		}else{
			$('.w-pagination-next strong').replaceWith('<em><span>&gt;</span></em>')
		}
		for(i=1;i<=pages;i++){
			if(i==page){
				$('.w-pagination-navi').append('<strong>'+i+'</strong><span>&#183;</span>');
			}else{
				$('.w-pagination-navi').append('<em class="w-pagination-page" id="page'+i+'">'+i+'</em><span>&#183;</span>');
			}
		}
		$('.w-pagination-prev strong,.w-pagination-next strong').bind('click',function(){
			var clickElm=$(this).parent().get(0);
			searchpagination(filteredArray,divider,page,pages,startIndex,endIndex,clickElm);
		})
		$('.w-pagination-page').bind('click',function(){
			var clickElm=$(this).get(0);
			searchpagination(filteredArray,divider,page,pages,startIndex,endIndex,clickElm);
		})
		$('.w-pagination').show();
	}else{
		$('.w-pagination').hide();
	}
}

// hover and click-effect on boxes
function boxClick(){
	$('.w-boxclick').each(function(i){
		if($(this).find(":header a").html()!=null){
			$(this).css("cursor","pointer").click(function(){
				var pageUrl=$(this).find(":header a").attr("href");
				if($(this).find(":header a").attr('class')=='w-popup'){
					popwin(pageUrl);
				}else{
					document.location.href=pageUrl;
				}
				return false;
			})
			$(this).hover(function(){
				$(this).addClass("hover");
			}, function(){
				$(this).removeClass("hover")
			})
			$(this).mousedown(function(){
				$(this).addClass("active");
			})
			$(this).mouseup(function(){
				$(this).removeClass("active");
			})
		}
	})
}

function popwin(url){
	if(url){
		window.open(url)
		return false;
	}else{
		$('a.w-popup').bind('click',function(){
			window.open($(this).attr('href'))
			return false;
		})
	}
}

// make share-links pretty
function fixSharelinks(){
	$('.button_print,.i2sendlink,.fb_link').each(function(){
		$(this).html($(this).text().replace(/(^\w+)/,'<span>$1</span>'));
	})
	$('#w-widget-tools a').click(function(){
		if (document.location.hash) {
			$(this).attr('href', function(index, attr){
				return attr + 'hash/' + document.location.hash.substring(1) + '/';
			});
		}
	});
}

function dkweatherteaser(){
	$('.w-dkweatherteaser-data').attr('title',$('.w-dkweatherteaser-button').text());
	$('.w-dkweatherteaser-data').click(function(){
		document.location = $('.w-dkweatherteaser-button').attr('href')
	})
}

/**
 * JSON Autocompleter which autocompletes on a single word in a input type text element.
 * the element used for this plugin MUST only match one element.
 */

function autocompleteResult(data){
	if (data.searchString != $('#w-search-input').val()) {
		return;
	}

	var ul = $('#w-search-input-autocomplete');
	for (var key in data.results) {
		var value = data.results[key];
		if(key<5){
			if((value.regionname!='') && (value.regionname!=null)){
				var regionname = value.regionname+', ';
			}else{
				var regionname = '';
			}
			ul.append('<li><a href="'+ value.url +'" class="w-flag16 '+ value.countrycode.toLowerCase() +'"><strong>'+ value.name +'</strong><span>'+ regionname + value.countryname +'</span></a></li>')
		}
	}
	
	if(data.results.length > 4){
		ul.append('<li class="more">Se flere</li>')
	}
	
	if (data.results.length > 0) {
		ul.show();
	}
}

jQuery.fn.autocomplete = function (options) {
	var self = this;

	if(typeof this.id == undefined){
		return;
	}

	var defaults = {
		url : 'http://' + TV2.getSite('ajax') + '.tv2.dk/vejret/autocomplete.php?search=',
		query : '',
		params : '',
		ul : {
			id_suffix : '-autocomplete',
			class_name : 'autocomplete'
		},
		container : null,
		classes : {
			selected : 'selected'
		},
		callback : function(data, statusText) {

		}
	}

	options = $.extend(defaults, options);
	var functions = {
		clear : function(ul) {
			$('li', ul).remove();
			ul.hide();
		}
	}
	var timeout;
	var selected = -1;
	var input = $(this);
	var form = input.parents('form');
	var ul = $('<ul />', {
		id : input.attr('id')	 + options.ul.id_suffix
	}).addClass(options.ul.class_name).hide();

	//prevent firefox autocomplete history
	input.attr('autocomplete', 'off');

	if (options.container) {
		ul.appendTo(options.container);
	} else {
		ul.insertAfter(input);
	}

	//When the input loses focus remove the ul li
	input.blur(function(e) {
		setTimeout(function() {
			functions.clear(ul)
			selected = -1;
		}, 300);
	});

	//assign the mouseover hover, to support older browsers
	ul.delegate('li', 'mouseover', function(e){
		var li = $(this);

		//get the indexOf the selectedli element
		selected = li.parent().children().index(li);

		$('li.' + options.classes.selected, li.parent()).removeClass(options.classes.selected);
		li.addClass(options.classes.selected)
	}).delegate('li.more', 'click', function(e){
		form.submit();
	})



	input.keyup(function(e){
		//We dont want 13: Enter, 27: Escape, 37: Left, 38: Up, 39: Right, 40: Down, 46: delete
		//to interfere.
		var break_keys = {13 : '', 27 : '', 37 : '', 38 : '', 39 : '', 40 : '', 46 : ''}

		if (e.which in break_keys) {
			return true;
		}

		// The timeout stops us from HAMMERING the server with request while people are still
		// typing in the input box.
		clearTimeout(timeout);
		
		input.val(input.val().replace(/^\s*/ , ''));
		if (input.val().length < 3) {
			return;
		}

		timeout = setTimeout(function() {
			//Remove previously found autocompletion thingies
			//and reset the selected one to -1
			functions.clear(ul)
			selected = -1;

			var url = options.url + options.query + input.val() + options.params;
			var ajaxOptions = {
				'url' : url,
				'callback' : autocompleteResult,
				'dataType' : 'jsonp'
			}

			$.ajax(ajaxOptions)
		}, 400);
	});

	input.keydown(function(e){
		//Handle arrow up arrow down etc.
		switch (e.which) {
			case 27: //Escape
				if (ul.is(':visible')) {
					input.trigger('blur');
					input.focus();
					e.preventDefault();
				}
				break;
			case 38: //up
			case 40: //down
				var test = e.which == 38 ? selected - 1 : selected + 1;

				if (test < ul.children().length && test >= 0) {
					ul.children(':eq(' + selected + ')').removeClass(options.classes.selected);
					ul.children(':eq(' + test + ')').addClass(options.classes.selected);
					selected = test;

					e.preventDefault();
				}

				break;
			case 13: //enter
				if (selected >= 0) {
					var li = ul.children('.' + options.classes.selected)

					if (li.hasClass('more') == false) {
						window.location = $('a', li).attr('href');
						e.preventDefault();
					}
				}
				break;
		}
	});
}

jQuery.fn.autocomplete.ajaxRequestsNum = 0;

function overlay(){
	$('.w-overlay').fancybox({
		'titleShow': false,
		'type': 'iframe',
		'width': 655,
		'height': 800,
		'autoScale': false,
		'scrolling': 'auto'
	})
}

function mapOverlay(){
	$('.w-searchresult h3 + p a').fancybox({
		'titleShow': false,
		'type': 'iframe',
		'width': 800,
		'height': 600,
		'autoScale': false,
		'scrolling': 'auto'
	})
}


function syndicationOverlay(){
	$('#w-widget-tools a.overlay').fancybox({
		'titleShow': false,
		'type': 'iframe',
		'width': 517,
		'height': 517,
		'autoScale': false,
		'scrolling': 'no'
	})
}

function videoOverlay(){
	$('.w-hostbig a').fancybox({
		'titleShow': false,
		'type': 'iframe',
		'width': 647,
		'height': 364,
		'autoScale': false,
		'scrolling': 'no'
	})
}

function syndicationCopyAndClose(){
	if($('#w-syndicationbox-code textarea').get(0)){
		$('#w-syndicationbox-code textarea').focus().select();
		$('#w-syndicationbox-code').append('<button>Luk vinduet</button>');
	}
	$('#w-syndicationbox-code textarea').focus(function(){
		$('#w-syndicationbox-code textarea').select();
	})
	$('#w-syndicationbox-code button').click(function(){
		parent.$.fancybox.close();
	})
}

function beachmap(){
	$('#w-beachmap img').removeAttr('alt');
	var mapWidth = $('#w-beachmap img').width();
	$('#w-beachmap ul li').each(function(){
		$(this).append('<div class="w-beachmap-wrap" style="display:none"><div class="w-beachmap-hover"><span class="left">&nbsp;</span><span class="center">'+$(this).find('a').attr('title')+'</span><span class="right">&nbsp;</span></div></div>');
		$(this).hover(function(){
			var position = $(this).position();
			$(this).css('z-index','2').find('.w-beachmap-wrap').stop(true, true).fadeIn(300);
			var elmWidth = $(this).find('.w-beachmap-hover').width();
			if(position.left + elmWidth + 50 > mapWidth){
				$(this).find('.w-beachmap-wrap').addClass('righthover').css('right',elmWidth);
			}
		},function(){
			$(this).css('z-index','1').find('.w-beachmap-wrap').stop(true, true).fadeOut(300);
		}).find('a').removeAttr('title');
	})
}

function mapApp(){
	if($('#w-widgetapp-cities').get(0)){
	$('#w-widgetapp-type').append('<div id="w-widgetapp-citytoggle" class="hide" title="Vis/skjul byer"></div>');
		$('#w-widgetapp-citytoggle').click(function(){
			$('#w-widgetapp-citytoggle').toggleClass('hide');
			$('#w-widgetapp-cities').toggle();
		});
	}
	$('#w-widgetapp.map-dk,#w-widgetapp.map-regions').append('<div id="w-widgetapp-regions"></div>');
	$('#w-widgetapp-clickmap li').hover(function(){
		$('#w-widgetapp-regions').addClass($(this).attr('class'));
	},function(){
		$('#w-widgetapp-regions').attr('class','');
	})
	$('#w-widgetapp-text-bubble .disclaimer').appendTo('#w-widgetapp-text-bubble');
	$('#w-widgetapp-text-bubble').find('.info').click(function(){
		$(this).toggleClass('selected');
		$('#w-widgetapp-text-bubble > h2,#w-widgetapp-text-bubble > p,#w-widgetapp-text-bubble > .disclaimer').slideToggle();
	})
}

function submenu(){
	var dtWidth=$('#w-submenu dt').width()+20;
	var ddWidth=0;
	var i=0;
	$('#w-submenu dd').each(function(){
		ddWidth=ddWidth+2+$(this).width();
		var totalWidth=dtWidth+ddWidth
		if(totalWidth > 850){
			if(i==0){
				$('#w-submenu').append('<dd id="mdMenuExtend"><span>Mere</span><ul style="display:none"></ul></li>');
			}
			$('#mdMenuExtend ul').append($(this));
			$(this).replaceWith('<li class="'+$(this).attr('class')+'">'+$(this).html()+'</li>');
			i++;
		}
	});
	$('#w-submenu').parents('.col-12').css('overflow','visible');
	$('#mdMenuExtend li').click(function(){$('#mdMenuExtend ul').hide()});
	$('#mdMenuExtend').hover(function(){
		clearTimeout(this.dropdownTimeOut);
		$('#mdMenuExtend ul').slideDown('fast');
	},function(){
		this.dropdownTimeOut=setTimeout(function(){$('#mdMenuExtend ul').slideUp('fast')},400);
	})
}

function htmlDecode(value){
	return $('<div/>').html(value).text();
}
