$(function()
{

	/* SETTINGS
	------------------------------------*/

	var globalAnimation = false; // set to true if you want animation on, else false
	var doEqualHeight = false; // set to true if you want the equal heights plugin on


	// settings for overlay
	var fbset = {
		opacity: 0.5,
		overlay: true,
		loadingImage: '/thema/vis2009/images/bgs/loading.gif',
		closeImage: '/thema/vis2009/images/buttons/fb-close.png',
		imageTypes: ['png', 'jpg', 'jpeg', 'gif'],
		useAnim: globalAnimation,
		faceboxHtml: '\
		<div id="facebox" style="display:none;"> \
		  <div class="popup"> \
			<table> \
			  <tbody> \
				<tr> \
				  <td class="tl"/><td class="tb"/><td class="tr"/> \
				</tr> \
				<tr> \
				  <td class="lb"/> \
				  <td class="body"> \
					<div class="content"> \
					</div> \
					  <a href="#" class="close"> \
						<img src="/facebox/closelabel.gif" title="close" class="close_image png" /> \
					  </a> \
				  </td> \
				  <td class="rb"/> \
				</tr> \
				<tr> \
				  <td class="bl"/><td class="bb"/><td class="br"/> \
				</tr> \
			  </tbody> \
			</table> \
		  </div> \
		</div>'
	};

	// carousel on frontpage
	if (globalAnimation)
	{
		var carouselSettings = {
			visible: 4,
			animation: 'normal'
		};
	}
	else
	{
		var carouselSettings = {
			visible: 4,
			animation: 0
		};
	}

	/* END SETTINGS */

	/* MISC
	------------------------------------*/
	$.fontsizer('.page-toolbar'); // add a font resizer to the page
	$('#search-box').originalValue(); // makes the search box empty on focus so user won't have to erase its contents
	$('#carousel').removeClass('before-plugin').jcarousel(carouselSettings); // carousel on frontpage
	$('a[rel*=overlay]').facebox(fbset); // overlay triggers

	// open or close the language selection menu
	$('#language-selection > a').live("click", function()
	{
		$('#language-selection > a').toggle(
		    function()
		    {
		    	$('#language-selection ul').removeClass('open').addClass('closed');
		    	return false;

		    },
		    function()
		    {
		    	$('#language-selection ul').removeClass('closed').addClass('open');
		    	return false;
		    }
		);
		$('#language-selection ul').removeClass('closed').addClass('open');
		return false;
	});

	// display the language that is currently being viewed
	var str = document.URL,
		str = str.replace("http://" + document.domain, ""),
		eng = str.search("english");
	pol = str.search("polski");

	if (eng > 0)
		$('div#language-selection > a').swap('div#language-selection ul a:first').end().find('div#language-selection > a').addClass('selected').next().find('a:first').removeClass('selected');
	else if (pol > 0)
		$('div#language-selection > a').swap('div#language-selection ul a:last').swap('div#language-selection ul a:first').end().find('div#language-selection > a').addClass('selected').next().find('a:first').removeClass('selected');

	// the equal heights plugin
	if (doEqualHeight && location.search.toLowerCase().indexOf('design=true') == -1)
	{
		$('.equal-heights .container-content').equalHeights();
		$('.equal-heights').resize(function()
		{
			$('.equal-heights .container-content').equalHeights();
		});

		// fix heights on text resize
		$('ul.text-resize-options li.bigger-text a, ul.text-resize-options li.smaller-text a').click(function()
		{
			$('.equal-heights .container-content').height('auto').equalHeights();
		});
	}

	// automatically add rounded corners to containers with the right class
	$('.whitecorners:not(.general-error, .general-info, .general-warning)').css('position', 'relative').append('<span class="tl-whitebg"></span><span class="tr-whitebg"></span><span class="bl-whitebg"></span><span class="br-whitebg"></span>');
	$('.graycorners:not(.general-error, .general-info, .general-warning)').css('position', 'relative').append('<span class="tl-graybg"></span><span class="tr-graybg"></span><span class="bl-graybg"></span><span class="br-graybg"></span>');
	$('.tabpane.whitebg, .whitebg .tabpane').css('position', 'relative').append('<span class="tl-whitebg"></span><span class="tr-whitebg"></span><span class="bl-whitebg"></span><span class="br-whitebg"></span>');
	$('.tabpane.graybg, .graybg .tabpane').css('position', 'relative').append('<span class="tl-graybg"></span><span class="tr-graybg"></span><span class="bl-graybg"></span><span class="br-graybg"></span>');
	$('.general-error.whitecorners').append('<span class="tr-error-whitebg"></span><span class="tl-error-whitebg"></span><span class="bl-error-whitebg"></span><span class="br-error-whitebg"></span>');
	$('.general-error.graycorners').append('<span class="tr-error-graybg"></span><span class="tl-error-graybg"></span><span class="bl-error-graybg"></span><span class="br-error-graybg"></span>');
	$('.general-info.whitecorners').append('<span class="tr-info-whitebg"></span><span class="tl-info-whitebg"></span><span class="bl-info-whitebg"></span><span class="br-info-whitebg"></span>');
	$('.general-info.graycorners').append('<span class="tr-info-graybg"></span><span class="tl-info-graybg"></span><span class="bl-info-graybg"></span><span class="br-info-graybg"></span>');
	$('.general-warning.whitecorners').append('<span class="tr-warning-whitebg"></span><span class="tl-warning-whitebg"></span><span class="bl-warning-whitebg"></span><span class="br-warning-whitebg"></span>');
	$('.general-warning.graycorners').append('<span class="tr-warning-graybg"></span><span class="tl-warning-graybg"></span><span class="bl-warning-graybg"></span><span class="br-warning-graybg"></span>');
	markupFormErrors();

	// automatically add faded ends to background shadows in containers with headings
	$('.container-heading .container-content').append('<span class="bg-right-end"></span><span class="bg-left-end"></span>');
    $('.quotebox').prepend('<span class="quote png"></span><span class="arrow"></span>');

	// FLÝTILEIÐIR
	// initialialize state
	if ($.cookie('visflytileidir') == 'open') $('.quicklinks').addClass('open').removeClass('closed');
	// bind click event
	$('.quicklinks-header h2').click(function()
	{
		if (globalAnimation)
		{
			$('.quicklinks-body').slideToggle('normal');
		}
		else
		{
			$('.quicklinks-body').toggle();
		}

		if ($(this).parents('.quicklinks').hasClass('closed'))
		{
			$(this).parents('.quicklinks').addClass('open').removeClass('closed');
			$.cookie('visflytileidir', 'open', 365);
		}
		else
		{
			$(this).parents('.quicklinks').addClass('closed').removeClass('open');
			$.cookie('visflytileidir', 'closed', 365);
		}
	});

	// frontpage functionality
	$('ul.frontpage-functionality > li a:not(a.remote)').click(function()
	{
		$(this).parent().addClass('Active').end().next().show();
        if (pageTracker && pageTracker._trackEvent) pageTracker._trackEvent('Aðgerðir', 'Opna', $(this).parent().find("span").text());
		return false;
	});
	$('ul.frontpage-functionality li a.close').click(function()
	{
		$(this).parents('div.popupcontent').parent().removeClass('Active').end().hide();
        if (pageTracker && pageTracker._trackEvent) pageTracker._trackEvent('Aðgerðir', 'Loka', $(this).parent().text());
		return false;
	});

	// DEMO VEFÞULUPLAYER
	$('$div.player a').click(function()
	{
		$('.player a').toggle('normal');
	});


	/* END MISC */



	/* FUNCTIONALITY FOR HELPFUL PLUGIN
	------------------------------------*/
	if ($.cookie('vishelpful' + document.URL))
		$('div.feedback-module ul.feedback-module').html('<li class="comments">Takk fyrir aðstoðina</li>');
	else
	{
		var text, athugasemd, nafn, netfang, pageuri = document.URL;

		$('ul.feedback-module li.yes a').click(function()
		{
			text = $(this).text();
			$('#Helpful p.field-row.hjalplegt input').val(text);
			$('#Helpful p.sida input').val(pageuri);
			submitFeedback();
			return false;
		});

		$('ul.feedback-module li.no a').click(function()
		{
			text = $(this).text();
			$('#Helpful p.field-row.hjalplegt input').val(text);
			$('#Helpful p.sida input').val(pageuri);
			submitFeedback();
			return false;
		});
	}
	/* END FUNCTIONALITY FOR HELPFUL PLUGIN */



	/* FUNCTIONALITY FOR TABLES
	------------------------------------*/
	if ($('.maincontent table').length)
	{
		// zebra stripe tables
		$('.maincontent table.zebra tr:even:not(.headerrow):not(.subrow)').addClass('alt');

		// some functions to add classes to tables with javascript to ease content management
		$('.maincontent table tr.superrow td:first-child').addClass('first');

		// highlight horizontal table row
		$('.maincontent table.highlighth tr').hover(
			function()
			{
				$(this).addClass('trHover');
			},
			function()
			{
				$(this).removeClass('trHover');
			}
		);

		// top highlight hack
		var rowHeight = $('.maincontent table tr.highlightselector').height();
		$('.maincontent table tr.highlightselector').parents('table').css('margin-top', '-' + rowHeight + 'px').parent('div').css('margin-top', rowHeight + 'px');


		$('.maincontent .highlightselector a').click(function()
		{
			var table = $('.maincontent .highlightselector').parents('table');
			var classes = table.attr('class').split(' ');

			for (i in classes)
			{
				if (classes[i].indexOf('highlightcol') == 0)
				{
					table.removeClass(classes[i]);
				}
			}

			table.addClass($(this).attr('class'));

			highlightCol(table);

			return false;
		});

		// put highlight classes on td in table with class highlightx where x is the colum number to highlight
		highlightCol($('.maincontent table[class*=highlightcol]'));

		// functionality for tables with subrows that are hidden but openable
		var counter = 0;
		$('.maincontent table.collapsible-rows tr').each(function()
		{
			if ($(this).hasClass('superrow'))
			{
				counter++;
				$(this).attr('id', 'collapsegroup' + counter);
			}
			else if ($(this).hasClass('subrow'))
			{
				$(this).addClass('collapsegroup' + counter);
			}
		});


		$('.maincontent table tr[id*=collapsegroup]:not(.stayopen)').each(function()
		{
			$(this).siblings('.' + $(this).attr('id')).css('display', 'none').end().removeClass('open').addClass('closed').click(function()
			{
				if ($(this).hasClass('closed')) $(this).siblings('.' + $(this).attr('id')).removeAttr('style').end().removeClass('closed').addClass('open');
				else $(this).siblings('.' + $(this).attr('id')).css('display', 'none').end().removeClass('open').addClass('closed');
			});
		});
	}
	/* END FUNCTIONALITY FOR TABLES */

	/* HIGHLIGHT FUNCTIONALITY FOR SLIDERS
	------------------------------------*/

	$('#slider_bg div#slider_min_thumb img, #slidersingle_bg div#slidersingle_thumb img').hover(
        function()
        {
        	$(this).attr("src", "images/buttons/sliderdropsmall-left-hover.png");
        },
        function()
        {
        	$(this).attr("src", "images/buttons/sliderdropsmall-left.png");
        }
    );

	$('#slider_bg div#slider_max_thumb img').hover(
        function()
        {
        	$(this).attr("src", "images/buttons/sliderdropsmall-right-hover.png");
        },
        function()
        {
        	$(this).attr("src", "images/buttons/sliderdropsmall-right.png");
        }
    );

	/* END HIGHLIGHT FUNCTIONALITY FOR SLIDERS */


	/* FUNCTIONALITY FOR TABS
	------------------------------------*/
	if ($('.tabcontrol').length)
	{
		var tabselem = $('ul.tabs');

		// INITIALIZE TABS
		var tabsapi = tabselem.tabs('.tabpane', {
			history: 'true',
			api: 'true',

			onClick: function()
			{
				this.getPanes().each(function()
				{
					if (!$(this).hasClass('tabpane-hidden'))
					{
						$(this).addClass('tabpane-hidden');
					}
				});
				this.getCurrentPane().removeClass('tabpane-hidden');
			}
		});


		// SCROLLABLE TABS
		var tabswidth = 0;
		var scrollable = false;

		tabselem.children('li').each(function()
		{
			tabswidth += $(this).outerWidth(true);
		});

		if (tabswidth > tabselem.parent().width())
		{
			scrollable = true;

			// set up scroll links
			$('<a href="/" title="Skruna til vinstri" class="scrollPrevTab">Vinstri</a>').appendTo(tabselem.parent());
			$('<a href="/" title="Skruna til hægri" class="scrollNextTab">Hægri</a>').appendTo(tabselem.parent());

			// wrap tabs in container div
			tabselem.wrap('<div class="scrollcontainer"></div>');

			// set up click event
			tabsapi.onClick(function(index)
			{
				var items = $('ul.tabs li');
				var itemsroot = tabselem;

				var itemWidth = items.eq(index).outerWidth();
				var itemPos = items.eq(index).position().left;
				var containerWidth = itemsroot.parent().width();

				var scrollPos = (itemsroot.css('left') == 'auto') ? 0 : parseInt(itemsroot.css('left').substring(0, itemsroot.css('left').length - 2)) * -1;

				if (itemPos < scrollPos)
				{
					var pos = -itemPos
					itemsroot.css('left', pos);
				}
				else if (scrollPos + containerWidth < itemPos + itemWidth)
				{
					var pos = (itemPos + itemWidth - containerWidth) * -1;
					itemsroot.css('left', pos);
				}
			});
		}
		// END OF SCROLLABLE TABS

		// TABPAGER
		if ($('ul.tabpager, div.tabpager ul').length)
		{
			var numberOfTabs = tabsapi.getTabs().length;
			var currentIndex = tabsapi.getIndex() + 1;

			$('div.tabpane').append('\
			<div class="tabpaging clearfix"><div><a href="/" class="previous-tab" title="Smelltu hér til að sjá næsta flipa til vinstri">Fyrri flipi</a> \
			<span class="text"><span class="current-index"></span> / <span class="number-of-tabs"></span></span> \
			<a href="/" class="next-tab" title="Smelltu hér til að sjá næsta flipa til hægri">Næsti flipi</a></div></div> \
			<div class="clearfix" style="line-height: 0"></div>');

			var currentNum = $('span.current-index');
			var prevTab = scrollable ? $('.previous-tab, .scrollPrevTab') : $('.previous-tab');
			var nextTab = scrollable ? $('.next-tab, .scrollNextTab') : $('.next-tab');

			currentNum.append(currentIndex);
			$('span.number-of-tabs').append(numberOfTabs);

			if (currentIndex == 1) { prevTab.addClass('prevInactive'); }
			if (currentIndex == numberOfTabs) { nextTab.addClass('nextInactive'); }

			prevTab.click(function()
			{
				tabsapi.prev();

				currentIndex = tabsapi.getIndex() + 1;
				currentNum.empty().append(currentIndex);
				if (currentIndex == 1) { prevTab.addClass('prevInactive'); }
				if (currentIndex == numberOfTabs - 1) { nextTab.removeClass('nextInactive'); }

				location.hash = tabsapi.getTabs().eq(tabsapi.getIndex()).attr('href').substr(1);

				return false;
			});

			nextTab.click(function()
			{
				tabsapi.next();

				currentIndex = tabsapi.getIndex() + 1;
				currentNum.empty().append(currentIndex);
				if (currentIndex == numberOfTabs) { nextTab.addClass('nextInactive'); }
				if (currentIndex == 2) { prevTab.removeClass('prevInactive'); }

				location.hash = tabsapi.getTabs().eq(tabsapi.getIndex()).attr('href').substr(1);

				return false;
			});

			tabsapi.onClick(function(index)
			{
				currentIndex = tabsapi.getIndex() + 1;
				currentNum.empty().append(currentIndex);

				prevTab.removeClass('prevInactive');
				nextTab.removeClass('nextInactive');

				if (currentIndex == numberOfTabs) { nextTab.addClass('nextInactive'); }
				if (currentIndex == 1) { prevTab.addClass('prevInactive'); }
			});
		}

		// set heights to equal on tabs
		if (doEqualHeight && location.search.toLowerCase().indexOf('design=true') == -1)
		{
			$('.tabcontrol').each(function()
			{
				$(this).find('.tabpane').equalHeights();
				$(this).addClass('equal-heights-on');
				if ($(this).hasClass('tabpager')) { $(this).find('.tabpane').height($(this).find('.tabpane').height() + 30); }
			}).resize(function()
			{
				$('.tabcontrol').each(function()
				{
					$(this).find('.tabpane').equalHeights();
				});
			});

			$('ul.text-resize-options li.bigger-text a, ul.text-resize-options li.smaller-text a').click(function()
			{
				$('.tabcontrol').each(function()
				{
					$(this).find('.tabpane').height('auto').equalHeights();
					if ($(this).hasClass('tabpager')) { $(this).find('.tabpane').height($(this).find('.tabpane').height() + 30); }
				});
			});
		}
	}
	/* END FUNCTIONALITY FOR TABS */
});




/* HELPERS
------------------------------------*/

// put highlight classes on td in table with class highlightx where x is the colum number to highlight
function highlightCol(table)
{
	table.each(function()
	{
		var classstrings = $(this).attr('class').split(' ');


		$(this).find('td').removeClass('highlight').removeClass('topArrow').removeClass('bottomArrow');
        $(this).find('th').removeClass('highlight');

		for (i in classstrings)
		{
			if (classstrings[i].indexOf('highlightcol') == 0)
			{
				if (classstrings[i].substr(12))
				{
					$(this).find('tr').each(function()
					{
						$(this).find('td').eq(parseInt(classstrings[i].substr(12))).addClass('highlight');
						$(this).find('th').eq(parseInt(classstrings[i].substr(12))).addClass('highlight');
					});

					var firsttd = $(this).find('tr:first td').eq(parseInt(classstrings[i].substr(12)));
					var lasttd = $(this).find('tr:last td').eq(parseInt(classstrings[i].substr(12)));
                    firsttd.addClass('topArrow');
                    lasttd.addClass('bottomArrow');
				}
			}
		}
	});
}

// sends helpful request via ajax. makes cookie
function submitFeedback() {
	$('#Helpful form').ajaxSubmit();
	$('div.feedback-module ul.feedback-module').html('<li class="comments">Takk fyrir aðstoðina</li>');
	$.cookie('vishelpful' + document.URL, 'Done', 30);
}

// adds non-semantic markup for looks on form errors
function markupFormErrors()
{
	$('.form-warning, .form-error').each(function()
	{
		var content = $(this).html();
		$(this).html('<span class="roundtop"><span class="b1"></span><span class="b2"></span><span class="b3"></span></span> \
							<span class="content">' + content + '</span><span class="arrow"></span> \
							<span class="roundbottom"><span class="b3"></span><span class="b2"></span><span class="b1"></span></span>');
		$(this).addClass('rounded');
	});
}

/* END HELPERS */