var calendar = (function() {
	var fromStart = 0;
	var totalItems = 0;
	var take = 6;
	var $list = null;
	var $ul = null;
	var pageID = 0;
	var query = null;
	var spinner = '<li><img class="spinner" src="/cui/img/ajax-loader.gif" /></li>';
	var pageIndex = 0;
	function fetchNews(step) {
		fromStart += step;	
		$.ajax({
			type: 'GET',
			url: '/Templates/JSON/CalendarItemFetcher.aspx?fromStart=' + fromStart,			
			dataType: 'json',
			cache: false,
			data: '{}',
			contentType: 'application/json; charset=utf-8',
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				alert(XMLHttpRequest);
				alert(textStatus);
				alert(errorThrown);
			},
			beforeSend: function() {
				$list.find('.actions').hide();
				$ul.html(spinner);
			},
			success: function(data) {
				var t = setTimeout(function() {
					$ul.empty().hide();	
					for(var i=0, j=data.Pages.length; i<j; i++) {
						$ul
						.append('<li>'
						+'<div><span class="month sprite">'+data.Pages[i].Month + '</span><span class="day sprite">'+data.Pages[i].Day+'</span></div>'
						+'<a class="'+isCurrentPage(data.Pages[i].PageID)+'" href="'+data.Pages[i].LinkURL+'&fromStart='+fromStart+'">'+data.Pages[i].PageName+'<img class="sprite" alt="" src="/cui/img/plh.gif"/></a>'
						+'</li>');
					}
					$ul.find('li:last').css('background','none').end().fadeIn('slow');
					linkViewState();
					$list.find('.actions').show();

				},200);
			}
		});
	};
	
	function isCurrentPage(pageLinkID) {
		if(pageLinkID === pageID) {
			return "current";
		}
		else return "";
	};
		
	function linkViewState() {
		var prev = $('.move-prev');
		var next = $('.move-next');
		if(fromStart === 0 || (fromStart + take) < 0) {
			prev.hide();
		}
		else {
			prev.show();
		}
		if((fromStart + take) >= totalItems) {
			next.hide();
		}
		else {
			next.show();
		}
	};
	
	function addNavigation() {
		$list.append('<div class="actions sprite clearfix"><a href="#" class="move-prev">Tidigare</a><a href="#" class="move-next">Senare<img class="sprite" alt="" src="/cui/img/plh.gif"/></a></div>');
		$('.move-next').live('click', function(e) {
			e.preventDefault();
			fetchNews(take);
		});
		$('.move-prev').live('click', function(e) {
			e.preventDefault();
			fetchNews(-take);
		});
		linkViewState();
	};
	
	return {
		init: function() {			
			$list = $('.calendar-list');			
			
			if($list.length === 0) {
				return;
			}
			
			totalItems = parseInt($('#totalpageItems').val()); // read from hidden input
			pageID = $('#currentPageID').val();	// read from hidden input
			$ul = $list.find('ul:first');
			$ul.find('li:last').css({background:'none'});
			
			query = location.search;
			pageIndex = query.substring(query.lastIndexOf('=')+1);
			if(pageIndex.length !== 0) { // where not at the startpage
				fromStart = parseInt(pageIndex);
			}
			addNavigation();			
		}
	};
})();


var news = (function() {
	var fromStart = 0;
	var totalItems = 0;
	var take = 6;
	var $list = null;
	var $dl = null;
	var pageID = 0;
	var query = null;
	var spinner = '<dt><img class="spinner" src="/cui/img/ajax-loader.gif" /></dt>';
	var pageIndex = 0;
	function fetchNews(step) {
		fromStart += step;	
		$.ajax({
			type: 'GET',
			url: '/Templates/JSON/NewsItemsFetcher.aspx?fromStart=' + fromStart,			
			dataType: 'json',
			cache: false,
			data: '{}',
			contentType: 'application/json; charset=utf-8',
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				alert(XMLHttpRequest);
				alert(textStatus);
				alert(errorThrown);
			},
			beforeSend: function() {
				$list.find('.actions').hide();
				$dl.html(spinner);
			},
			success: function(data) {
				var t = setTimeout(function() {
					$dl.empty().hide();	
					for(var i=0, j=data.Pages.length; i<j; i++) {
						$dl
						.append('<dt>'+data.Pages[i].Published+'</dt>')
						.append('<dd class="'+isCurrentPage(data.Pages[i].PageID)+'"><a href="'+data.Pages[i].LinkURL+'&fromStart='+fromStart+'">'+data.Pages[i].PageName+'<img class="sprite" alt="" src="/cui/img/plh.gif"/></a></dd>');
					}
					$dl.fadeIn('slow');
					linkViewState();
					$list.find('.actions').show();
				},200);
			}
		});
	};
	
	function isCurrentPage(pageLinkID) {
		if(pageLinkID === pageID) {
			return "current";
		}
		else return "";
	};
		
	function linkViewState() {
		var prev = $('.move-prev');
		var next = $('.move-next');
		if(fromStart === 0 || (fromStart + take) < 0) {
			prev.hide();
		}
		else {
			prev.show();
		}
		if((fromStart + take) >= totalItems) {
			next.hide();
		}
		else {
			next.show();
		}
	};
	
	function addNavigation() {
		$list.append('<div class="actions sprite clearfix"><a href="#" class="move-prev">Nyare</a><a href="#" class="move-next">Äldre<img class="sprite" alt="" src="/cui/img/plh.gif"/></a></div>');
		$('.move-next').live('click', function(e) {
			e.preventDefault();
			fetchNews(take);
		});
		$('.move-prev').live('click', function(e) {
			e.preventDefault();
			fetchNews(-take);
		});
		linkViewState();
	};
	
	return {
		init: function() {			
			$list = $('.news-list');			
			
			if($list.length === 0) {
				return;
			}
			
			totalItems = parseInt($('#totalpageItems').val()); // read from hidden input
			pageID = $('#currentPageID').val();	// read from hidden input
			$dl = $list.find('dl:first');
			
			query = location.search;
			pageIndex = query.substring(query.lastIndexOf('=')+1);
			if(pageIndex.length !== 0) { // where not at the startpage
				fromStart = parseInt(pageIndex);
			}
			addNavigation();			
		}
	};
})();

var modalm = {
	close: function(dialog) {
		dialog.data.fadeOut('slow', function () {
			dialog.container.fadeOut('slow', function () {
				dialog.overlay.fadeOut('slow', function () {
					$.modal.close();
				});
			});
		});
	},
	open: function(dialog) {
		dialog.overlay.fadeIn('slow', function () {
			dialog.container.fadeIn('slow', function () {
				dialog.data.hide().fadeIn('slow').find('input[type=text]:first').focus();
			});
		});
	},
	init: function() {
		$('.modal-me').click(function(e) {
			e.preventDefault();
			$('#newsletter-signup-dialog').modal({
				onOpen: modalm.open,
				onClose: modalm.close,
				closeHTML: '<a class="modalCloseImg" title="Stäng"><span>Stäng</span></a>',
				opacity:60
			});
		});
		
		$('#simplemodal-overlay, .close-dialog a').live('click', function(e) {
			e.preventDefault();
			$.modal.close();
		});
	}
};

var newsletter = {
	url: '/Templates/Ajax/NewsletterSubscribe.aspx',
	emailRegex: /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i,
	subscribe: function(email) {
		if(newsletter.validate(email)) {
			$.ajax({
				url: newsletter.url,
				type: 'POST',
				data: 'email=' + email + '&subscribe=true',
				beforeSend: function() {
					$('#newsletter-email, #btn-newsletter-subscribe').attr('disabled', 'disabled');
					$('#newsletter-signup-dialog').find('.loader').show().end().find('.error').hide();
				},
				success: function(status) {
					status = status.toLowerCase();					
					if (status === 'false') {
						newsletter.feedback('Vi kunde tyävrr inte registrera din epost-adress. Vänligen försök igen.', 'error');
					}
					else {
						newsletter.feedback('Du är nu registrerad!', 'success');
					}
					$('#newsletter-email, #btn-newsletter-subscribe').attr('disabled', '');
					$('#newsletter-signup-dialog .loader').hide();
				}
			});
		}
		else {
			$('#newsletter-signup-dialog label').find('span').remove().end().append(' <span class="error">Felaktig epost-adress</span>');
		}
	},
	validate: function(email) {
		var re = new RegExp(newsletter.emailRegex);
		if(!re.test(email)) {
			return false;
		}
		else return true;
	},
	feedback: function(message, cssClass) {
		$('#newsletter-signup-dialog .inputs, #newsletter-signup-dialog .actions').hide().end().find('#newsletter-signup-dialog .feedback').show().addClass(cssClass).find('#newsletter-signup-dialog .message').html(message).end().find('#newsletter-signup-dialog .close-dialog a').focus();
	},
	init: function() {
		$('#btn-newsletter-subscribe').click(function() {
			newsletter.subscribe($('#newsletter-email').val());		
		});
		$('#newsletter-email').keyup(function(e) {
			if(e.keyCode === 13) {
				newsletter.subscribe($('#newsletter-email').val());
			}
		});
	}
};



//modal tip a friend functionality
var modalFriend = {
	close: function(dialog) {
		dialog.data.fadeOut('slow', function () {
			dialog.container.fadeOut('slow', function () {
				dialog.overlay.fadeOut('slow', function () {
					$.modal.close();
				});
			});
		});
	},
	open: function(dialog) {
		dialog.overlay.fadeIn('slow', function () {
			dialog.container.fadeIn('slow', function () {
				dialog.data.hide().fadeIn('slow').find('input[type=text]:first').focus();
			});
		});
	},
	init: function() {
		$('.tellFriend').click(function(e) {
			e.preventDefault();
			$('#tipfriend-dialog').modal({
				onOpen: modalFriend.open,
				onClose: modalFriend.close,
				closeHTML: '<a class="modalCloseImg" title="Stäng"><span>Stäng</span></a>',
				opacity:60
			});
		});
		
		$('#simplemodal-overlay, .close-dialog a').live('click', function(e) {
			e.preventDefault();
			$.modal.close();
		});
	}
};

var tellFriend = {
    url: '/Templates/Ajax/TipFriend.aspx',
    emailRegex: /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i,
    subscribe: function(senderName, senderEmail, friendName, friendEmail, friendMessage, pageName, PageLink) {
        var isValid = true;
        $('#tipfriend-dialog').find('.error').hide();
        if (!tellFriend.validate(senderEmail)) {
            $('#tipfriend-dialog label:eq(1)').find('span').remove().end().append(' <span class="error">Felaktig epost-adress</span>');
            isValid = false;
        }
        if (!tellFriend.validate(friendEmail)) {
            $('#tipfriend-dialog label:eq(3)').find('span').remove().end().append(' <span class="error">Felaktig epost-adress</span>');
            isValid = false;
        }
        if (isValid) {
            $.ajax({
                url: tellFriend.url,
                type: 'POST',
                data: 'senderName=' + senderName + '&senderEmail=' + senderEmail + '&friendName=' + friendName + '&friendEmail=' + friendEmail + '&friendMessage=' + friendMessage + '&pageName=' + pageName + '&pageLink=' + PageLink,
                beforeSend: function() {
                    $('#tipfriend-dialog input, #tipfriend-dialog textarea').attr('disabled', 'disabled');
                    $('#tipfriend-dialog').find('.loader').show().end().find('.error').hide();
                },
                success: function(status) {
                    status = status.toLowerCase();
                    if (status === 'false') {
                        tellFriend.feedback('Tyvärr går det inte skicka någon e-post för tillfället. Var god försök senare.', 'error');
                    }
                    else {
                        tellFriend.feedback('Tack! En länk till denna sida har nu skickats.', 'success');
                    }
                    $('#tipfriend-dialog input, #tipfriend-dialog textarea').attr('disabled', '');
                    $('#tipfriend-dialog .loader').hide();
                }
            });
        }
    },
    validate: function(email) {
        var re = new RegExp(tellFriend.emailRegex);
        if (!re.test(email)) {
            return false;
        }
        else return true;
    },
    feedback: function(message, cssClass) {
        $('#tipfriend-dialog .inputs, #tipfriend-dialog .actions').hide().end().find('#tipfriend-dialog .feedback').show().addClass(cssClass).end().find('#tipfriend-dialog .message').html(message).end().find('#tipfriend-dialog .close-dialog a').focus();
    },
    init: function() {
        $('#btn-tipfriend-send').click(function() {
            tellFriend.subscribe($('#tipfriend-senderName').val(), $('#tipfriend-senderEmail').val(), $('#tipfriend-friendName').val(), $('#tipfriend-friendEmail').val(), $('#tipfriend-message').val(), $('#hidPageName').val(), $('#hidPageLink').val());
		});
        /*
        $('#tipfriend-dialog textarea').keyup(function(e) {
        if(e.keyCode === 13) {
        tellFriend.subscribe($('#newsletter-email').val());
        }
        });
        */
    }

};






/* ---------------------
 * Document ready
--------------------- */
$(document).ready(function() {
	news.init();
	calendar.init();
	modalm.init();
	newsletter.init();
	modalFriend.init();
	tellFriend.init();
	
	/* Startpage carousel setup */
	if ($('#promo').length > 0) {
		$('#promo').carousel({
			width: 978,
			height: 271,
			addNavigation: true,
			autoPlay: true,
			interval: 6000,
			easing: 'easeInOutCubic',
			animSpeed: 1000,
			vertical: true
		}).find('a').click($.carouselPaus).each(function(){
			if ($(this).height() > 31) {
				$(this).addClass('two-row').parent().addClass('two-row');
			}
		});
	}
	
	/* Link and document icons */
	$('div#content a').linkicons({
		iconPath: '/cui/img/icons/',
		linkCss: {
			padding: '0 0 2px 20px',
			backgroundPosition: '0 0'
		},
		disableIeSix: false,
		fileTypes: {
			doc: 'page_white_word.png',
			docx: 'page_white_word.png',
			xls: 'page_white_excel.png',
			xlsx: 'page_white_excel.png',
			ppt: 'page_white_powerpoint.png',
			pptx: 'page_white_powerpoint.png',
			pdf: 'page_white_acrobat.png'			
		}
	});
	
	/* Controls the max-width of image articles */
	$('#article img').each(function() {
		if($(this).width() > $('#article').width()) {
			$(this).css({
				width: $('#article').width() + 'px'
			});
		}
	});
	/* table fixes for IE */
	$('#article table').attr('cellspacing', 0);
	$('#article td').each(function() {
		if($(this).html().length < 1) {
			$(this).html('&nbsp;');
		}
	});
	
	/* Tooltip for commerce pages */
	$('area[rel]').tooltip({
		delay: 0,
		localHTML: true,
		tooltipCss: {},
		offX: -47,
		offY: 10
	}).removeAttr('alt');
	
	//regionMap functionality, moving bkg in 4 steps by 244 (244,488,732,976)
	$(".regionMapContainer .region1").hover(
		function(){
			$(".regionMapContainer img#regionMap").css({'background-position':'-244px 0'});
		},
		function(){
			$(".regionMapContainer img#regionMap").css({'background-position':'0 0'});
		}
	);
	$(".regionMapContainer .region2").hover(
		function(){
			$(".regionMapContainer img#regionMap").css({'background-position':'-488px 0'});
		},
		function(){
			$(".regionMapContainer img#regionMap").css({'background-position':'0 0'});
		}
	);
	$(".regionMapContainer .region3").hover(
		function(){
			$(".regionMapContainer img#regionMap").css({'background-position':'-732px 0'});
		},
		function(){
			$(".regionMapContainer img#regionMap").css({'background-position':'0 0'});
		}
	);
	$(".regionMapContainer .region4").hover(
		function(){
			$(".regionMapContainer img#regionMap").css({'background-position':'-976px 0'});
		},
		function(){
			$(".regionMapContainer img#regionMap").css({'background-position':'0 0'});
		}
	);
	
	//map popup functionality for towns
	$(".regionMapContainer a.town").click(function(){
		var townTopOffset = $(this).offset().top - $(this).offsetParent().offset().top + 16;
		var townLeftOffset = $(this).offset().left - $(this).offsetParent().offset().left + 8;
		if ($(this).next(".mapPopup").css("display") != "block" ) {
			$(".regionMapContainer .mapPopup").hide();
			$(".regionMapContainer a.town").removeClass("active");
			$(this).next(".mapPopup").css({'top': townTopOffset});
			$(this).next(".mapPopup").css({'left': townLeftOffset - 205});
			$(this).next(".mapPopup").show();
			$(this).addClass("active");
		} else {
			$(this).next(".mapPopup").hide();
			$(this).removeClass("active");
		}
		return false;
	});
	$(".closeMapPopup").click(function(){
		$(this).parents(".mapPopup").hide();
		$(this).parents(".mapPopup").prev("a.town").removeClass("active");
		return false;
	});
		
	//map popup functionality for incubatorSmall
	$(".regionMapContainer a.incubatorSmall").click(function(){
		var townTopOffset = $(this).offset().top - $(this).offsetParent().offset().top + 10;
		var townLeftOffset = $(this).offset().left - $(this).offsetParent().offset().left + 6;
		if ($(this).next(".mapPopup").css("display") != "block" ) {
			$(".regionMapContainer .mapPopup").hide();
			$(".regionMapContainer a").removeClass("activeSmall").removeClass("activeBig");
			$(this).next(".mapPopup").css({'top': townTopOffset});
			$(this).next(".mapPopup").css({'left': townLeftOffset - 205});
			$(this).next(".mapPopup").show();
			$(this).addClass("activeSmall");
		} else {
			$(this).next(".mapPopup").hide();
			$(this).removeClass("activeSmall");
		}
		return false;
	});
	$(".closeMapPopup").click(function(){
		$(this).parents(".mapPopup").hide();
		$(this).parents(".mapPopup").prev("a.incubatorSmall").removeClass("activeSmall");
		return false;
	});
	
	//map popup functionality for incubatorBig
	$(".regionMapContainer a.incubatorBig").click(function(){
		var townTopOffset = $(this).offset().top - $(this).offsetParent().offset().top + 19;
		var townLeftOffset = $(this).offset().left - $(this).offsetParent().offset().left + 9;
		if ($(this).next(".mapPopup").css("display") != "block" ) {
			$(".regionMapContainer .mapPopup").hide();
			$(".regionMapContainer a").removeClass("activeBig").removeClass("activeSmall");
			$(this).next(".mapPopup").css({'top': townTopOffset});
			$(this).next(".mapPopup").css({'left': townLeftOffset - 205});
			$(this).next(".mapPopup").show();
			$(this).addClass("activeBig");
		} else {
			$(this).next(".mapPopup").hide();
			$(this).removeClass("activeBig");
		}
		return false;
	});
	$(".closeMapPopup").click(function(){
		$(this).parents(".mapPopup").hide();
		$(this).parents(".mapPopup").prev("a.incubatorBig").removeClass("activeBig");
		return false;
	});
	
	
	
	
});
