var DEBUG = false;

var submenuTimeoutA = null;
var submenuTimeoutB = null;

var hashInterval = null;

$(function()
{
	MENUfx.bind('#menu');
//	MENUfx.slider('#frontmenu');
//	MENUfx.slider('#menu');

	hashInterval = setInterval('HASH.parse()', 100);

	if ($.browser.msie)
		$('body').append('<iframe style="display:none" id="dummy" src="dummy.php"></iframe>');

	if (window.location.hash == '')
	{
		$('#innercontents').css({'height': 0}).animate({'height': 365});

		$('#menu ul').css({'left': -1000}).animate({'left': 0}, 500);
		$('#menu ul li a').one('click', function()
		{
			$('#submenu, #footer').css({'display': 'block'});
		});
	}

	if (DEBUG)
		$('body').prepend('<div id="debug" style="position:absolute;top:4px;left:6px">debug enabled...</div>');
});

var HASH = {
	active: '',

	set: function(hashString)
	{
		clearInterval(hashInterval);

		if (hashString.indexOf('#') == 0)
			hashString = hashString.substring(1);

		if (HASH.active != hashString)
		{
			if ($.browser.msie)
			{
				$('#dummy')[0].contentWindow.document.open();
				$('#dummy')[0].contentWindow.document.close();

				$('#dummy')[0].contentWindow.document.location.hash = hashString;
			}

			window.location.hash = hashString;
		}

		hashInterval = setInterval('HASH.parse()', 100);
	},

	parse: function()
	{
		if ($.browser.msie)
			var hashString = $('#dummy')[0].contentWindow.document.location.hash || window.location.hash;
		else
			var hashString = window.location.hash;

		if (DEBUG)
			$('#debug').html('hash: ' + hashString + '<br />hashactive: ' + HASH.active);

		if (hashString != '' && hashString != undefined)
		{
			if (HASH.active != hashString)
			{
				HASH.active = window.location.hash = hashString;

				var bid = hashString.substring(hashString.indexOf('#') + 1, hashString.indexOf('|'));
				var url = hashString.substring(hashString.indexOf('|') + 1);

				if (bid == 'submenu' && url.substring(0, url.indexOf('_')))
				{
					$.get('templates/sv/' + url.substring(0, url.indexOf('_')) + '_menu.php', {}, function(contents)
					{
						$('#submenu').html(contents);
						$('#submenu ul').css({'left': 924});
						$('#submenu ul').animate({'left': 0}, 500, function()
						{
							MENUfx.bind('#submenu');
							//MENUfx.slider('#submenu')
						});
					});
				}

				MENUfx.trigger('#' + bid, 'templates/sv/' + url);
			}
		}
	}
};

var MENUfx = {
	active: false,

	bind: function(bid)
	{
		var targetEffect = $(bid +' a').attr('rel') || '';

		$(bid +' a').unbind('click').bind('click', function()
		{
			var url	= this.href.substring(0, this.href.length - 4) || '';

			$(bid + ' a').removeClass('active');

			$(this).addClass('active');

			//MENUfx.trigger(bid, url);

			HASH.set(bid + '|' + url.substring(url.lastIndexOf('/') + 1));

			return false;
		});
	},

	trigger: function(bid, url)
	{
		var h		= 365;

		if (url != '')
		{
			clearTimeout(SLIDESHOW.timeout);													// remove queued image effect
			clearTimeout(submenuTimeoutA);													// remove queued image effect
			clearTimeout(submenuTimeoutB);													// remove queued image effect

			$('#innercontents, #submenu ul, #innerimage_left, #innerimage_right, .odd, .even, .bar').stop();		// stop potentially running anmiations.

			$('#submenu,#loading').css({display: 'block'});
			$('#innercontents').css({opacity: '1.0'});

			switch (bid)
			{
				case '#menu':
					$.get(url + '.php', {}, function(contents)
					{
						$('#loading').css({display: 'none'});

						$('#innercontents').css({'height': 0, 'opacity': 0}).html(contents)

						$('#submenu').html('&nbsp;');

						$('#innercontents').animate({'height': h, 'opacity': 1.0}, 750, function()
						{
							$('#innercontents').css({overflow: 'hidden'});

							menuTimeout = setTimeout(function() {
								SLIDESHOW.effectPosition = 0;
								SLIDESHOW.exec({'effect': 'glide'})
							}, 0);

							$.get(url + '_menu.php', {}, function(contents)
							{
								$('#submenu').html(contents);
								$('#submenu ul').css({'left': 924});
								$('#submenu ul').animate({'left': 0}, 500, function()
								{
									MENUfx.bind('#submenu');
									//MENUfx.slider('#submenu')
								});
							});
						});
					});
				break;

				case '#submenu':
					$('#innercontents').fadeOut(750);

					$.get(url + '.php', {}, function(contents)
					{
						submenuTimeoutA = setTimeout(function()
						{
							$('#loading').css({display: 'none'});

							$('#innercontents').html(contents).fadeIn(500);

							submenuTimeoutB = setTimeout(function() { IMAGEfx.effect({'effect': 'cross'}) }, 2250);
						}, 500);
					});
				break;
			}
		}
	},

	fadeIn: function(sid)
	{
		if (sid != '')
		{
			$(sid + ' ul').prepend('<div class=\'hover\'>&nbsp;</div>');

			$(sid + ' a').bind('mouseover', function()
			{
				if (MENUfx.active)
					$(sid + ' a').removeClass('active');

				var p = $(this);

				$(sid + ' .hover').stop().hide().css({
					'top':	p[0].offsetTop,
					'left':	p[0].offsetLeft,
					'width':	p.width() + 12
				}).fadeIn(275);
			});

			$(sid + ' a').bind('click', function()
			{
				MENUfx.active = this;

				$(sid + ' a').removeClass('active');

				$(this).addClass('active');
			});

			$(sid).bind('mouseout', function() {
				if (MENUfx.active)
					$(MENUfx.active).addClass('active');

				$(sid + ' .hover').hide()
			});
		}
	},

	slider: function(sid)
	{
		if (sid != '')
		{
			$(sid + ' ul').prepend('<div class="hover">&nbsp;</div>');

			$(sid + ' a').bind('mouseover', function()
			{
				if (MENUfx.active)
					$(sid + ' a').removeClass('active');

				var p = $(this);

				$(sid + ' .hover').stop().animate({
					'top':	p[0].offsetTop,
					'left':	p[0].offsetLeft,
					'width':	p.width() + 12
				}, 200);
			});

			$(sid + ' a').bind('click', function()
			{
				MENUfx.active = this;

				$(sid + ' a').removeClass('active');

				$(this).addClass('active');
			});

			$(sid).bind('mouseout', function() {
				if (MENUfx.active)
					$(MENUfx.active).addClass('active');

				$(sid + ' .hover').hide()
			});
		}
	}
};

var SLIDESHOW = {

	timeout:		undefined,
	settings:		{},
	images: 		undefined,
	position:		0,
	effectPosition:	0,
	showended:		0,

	exec: function(params)
	{
		SLIDESHOW.settings = $.extend({}, {
			effect	: 'glide',
			timer		: 2.5,
			minlength	: 3
		}, params);

		clearTimeout(SLIDESHOW.timeout);

		SLIDESHOW.images 		= new Array();
		SLIDESHOW.position 	= 0;

		$('#slideshow img').each(function(i)
		{
			SLIDESHOW.images[i] = this.src;
		});

		if (DEBUG)
			$('#debug').html('Antal bilder: ' + SLIDESHOW.images.length + "\n" + 'Bildpos: ' + SLIDESHOW.position);

		if(SLIDESHOW.images.length > 1)
			SLIDESHOW.timeout = setTimeout('SLIDESHOW.step(\'next\', true)', SLIDESHOW.settings.timer * 1000);
	},

	step: function(direction, auto)
	{
		if (DEBUG)
			$('#debug').html('stepping');

		clearTimeout(SLIDESHOW.timeout);

		var effect = $('#slideshow img').slice(SLIDESHOW.position).attr('rel');
		effect = (effect == undefined || effect == '') ? SLIDESHOW.settings.effect : effect;

		switch (direction)
		{
			case 'previous':
				SLIDESHOW.position = (SLIDESHOW.position > 0) ? SLIDESHOW.position - 1 : SLIDESHOW.images.length - 1;
			break;

			case 'next':
				SLIDESHOW.position = (SLIDESHOW.position < (SLIDESHOW.images.length - 1)) ? SLIDESHOW.position + 1 : 0;
			break;
		}

		if(SLIDESHOW.position == SLIDESHOW.settings.minlength - 1)
		{
			if (DEBUG)
				$('#debug').html('stepping - end');

			$('#innercontents').prepend(
				'<div class="button" id="back"><a onclick="SLIDESHOW.step(\'previous\', false);return false" href="#">&laquo;</a></div>' +
				'<div class="button" id="next"><a onclick="SLIDESHOW.step(\'next\', false);return false" href="#">&raquo;</a></div>'
			);
			auto = false;
		}

		if (DEBUG)
			$('#debug').html('stepping - starting: ' + SLIDESHOW.images[SLIDESHOW.position]);

		var img	= new Image();
		img.onload	= function()
		{
			if (DEBUG)
				$('#debug').html('stepping - image loaded: ' + SLIDESHOW.images[SLIDESHOW.position]);

			IMAGEfx.effect({
				'obj':		$('#slideshow img')[0],
				'zindex':		10,
				'effect':		IMAGEfx.effectList[SLIDESHOW.effectPosition] || SLIDESHOW.settings.effect,
				//'effect':		effect,
				'slideshow':	true,
				'duration':		SLIDESHOW.settings.timer / 2
			});

			$('#slideshow img')[0].src = SLIDESHOW.images[SLIDESHOW.position];

			SLIDESHOW.effectPosition = (SLIDESHOW.effectPosition == IMAGEfx.effectList.length - 1) ? 0 : SLIDESHOW.effectPosition + 1;

			if (auto == true)
				SLIDESHOW.timeout = setTimeout('SLIDESHOW.step(\'next\', true)', SLIDESHOW.settings.timer * 1000);
		};

		img.src	= SLIDESHOW.images[SLIDESHOW.position];
	}
};

var IMAGEfx = {

	effectList: [
		'ybars',
		'xbars',
		'glide',
		'windowblinds',
		'staircase',
		'zoom'
	],

	effect: function(params)
	{
		var settings	= $.extend({}, {
			effect	: 'glide',
			duration	: 1,
			obj		: $('#innerimage')[0],
			zindex	: 10,
			pieces	: 12,
			slideshow	: false
		}, params);

		if (DEBUG)
			$('#debug').html('1. ' + SLIDESHOW.effectPosition + '<br />2. ' + IMAGEfx.effectList[SLIDESHOW.effectPosition] + '<br />3. ' + settings.effect);

		settings.width	= parseInt(settings.obj.width);
		settings.height	= parseInt(settings.obj.height);
		settings.src	= settings.obj.src;

		$('#innerimage_animate').remove();

		switch (settings.effect)
		{
			// this should only be used for pages with text
			case 'cross':
				var filter = $(settings.obj).attr('rel');
				filter = (filter == undefined || filter == '') ? '2left2right' : filter;

				if (DEBUG)
					$('#debug').html('effect filter: ' + filter);

				switch (filter)
				{
					case '4left':
						$('#innertext').css(
						{
							'left':	'0px',
							'width': 	'914px'
						});

						$('#innercontents').prepend(
							'<div id="innerimage_animate">' +
							'<div id="innerimage_left" style="width: 924px; height: 365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
							'<div id="innerimage_right" style="width: 0px; height: 365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
							'</div>'
						);

						var leftpos		= -924;
						var rightpos	= 0;
					break;

					case '4right':
						$('#innertext').css(
						{
							'left':	'0px',
							'width': 	'914px'
						});

						$('#innercontents').prepend(
							'<div id="innerimage_animate">' +
							'<div id="innerimage_left" style="width: 0px; height: 365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
							'<div id="innerimage_right" style="width: 924px; height: 365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
							'</div>'
						);

						var leftpos		= 0;
						var rightpos	= -924;
					break;

					case '3left':
						$('#innertext').css(
						{
							'left':	'0px',
							'width': 	'683px'
						});

						$('#innercontents').prepend(
							'<div id="innerimage_animate">' +
							'<div id="innerimage_left" style="width: 693px; height: 365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
							'<div id="innerimage_right" style="width: 231px; height: 365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
							'</div>'
						);

						var leftpos		= -693;
						var rightpos	= 0;
					break;

					case '3right':
						$('#innertext').css(
						{
							'left':	'231px',
							'width': 	'683px'
						});

						$('#innercontents').prepend(
							'<div id="innerimage_animate">' +
							'<div id="innerimage_left" style="width: 231px; height: 365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
							'<div id="innerimage_right" style="width: 693px; height: 365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
							'</div>'
						);

						var leftpos		= 0;
						var rightpos	= -693;
					break;

					case '2left2right':
						$('#innercontents').prepend(
							'<div id="innerimage_animate">' +
							'<div id="innerimage_left" style="width: 462px; height: 365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
							'<div id="innerimage_right" style="width: 462px; height: 365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
							'</div>'
						);

						var leftpos = rightpos = 693;
					break;
				}

				if (settings.slideshow != true)
					$(settings.obj).remove();

				$('#innerimage').remove();

				$('#innerimage_left').animate({'left': leftpos}, settings.duration * 1000, function(){});
				$('#innerimage_right').animate({'right': rightpos}, settings.duration * 1000, function()
				{
					SCROLLER.init('#innertext');
				});

			break;

			// this should only be used for pages with text
			case 'slide':
				$('#innercontents').prepend(
					'<div id="innerimage_animate">' +
					'<div id="innerimage_left" style="top:0;left:0;width:462px;height:365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
					'<div id="innerimage_right" style="top:0;right:0;width:462px;height:365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
					'</div>'
				);

				if (settings.slideshow != true)
					$(settings.obj).remove();

				$('#innertext').css({
					'display':	'block',
					'margin':	'auto',
					'width':	500 + 'px'
				});

				$('#innerimage_left, #innerimage_right').animate({'width': 215}, settings.duration * 1000, function(){});
			break;

			case 'glide':
				$('#innercontents').prepend(
					'<div id="innerimage_animate">' +
					'<div id="innerimage_left" style="top:0;left:0;width:462px;height:365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
					'<div id="innerimage_right" style="top:0;right:0x;width:462px;height:365px;z-index:' + settings.zindex + '!important;background-image: url(' + settings.src + ')!important">&nbsp;</div>' +
					'</div>'
				);

				$('#innerimage_left').animate({'opacity': 0.65, 'left': -500},  settings.duration * 1000, function()
				{
					$(this).remove();
				});

				$('#innerimage_right').animate({'opacity': 0.65, 'right': -500},  settings.duration * 1000, function()
				{
					$(this).remove();
				});

			break;

			case 'xbars':
			case 'ybars':
				var toggleClass	= '';
				var bgOffset	= yPos = xPos = 0;
				var barHeight	= (settings.effect == 'xbars') ? Math.round(settings.height / settings.pieces): settings.height;
				var barWidth	= (settings.effect == 'xbars') ? settings.width : Math.round(settings.width / settings.pieces);
				var animateOdd	= (settings.effect == 'xbars') ? {'left': barWidth - (barWidth * 2), 'opacity': 0.65 } : {'top': barHeight - (barHeight * 2), 'opacity': 0.65 };
				var animateEven	= (settings.effect == 'xbars') ? {'left': barWidth, 'opacity': 0.65 } : {'top': barHeight, 'opacity': 0.65 };
				var pieces		= '';

				for (i = settings.pieces; i > 0; i--)
				{
					bgOffset 	= (settings.effect == 'xbars') ? barHeight * i : barWidth * i;
					yPos		= (settings.effect == 'xbars') ? settings.height - bgOffset : 0;
					xPos		= (settings.effect == 'xbars') ? 0 : settings.width - bgOffset;

					pieces +=	'<div style="' +
							'z-index: ' + settings.zindex + '; ' +
							'width: ' + barWidth + 'px; ' +
							'height: ' + barHeight + 'px; ' +
							'top: ' + yPos + 'px; ' +
							'left: ' + xPos + 'px; ' +
							'background: transparent url(' + settings.src + ') ' + ((settings.effect == 'xbars') ? '0px ' + bgOffset + 'px' : bgOffset + 'px 0px') + ';border:0px solid red' +
							'" class="' + ((i % 2 == 0) ? 'odd' : 'even') + '">&nbsp;</div>'
				}

				$('#innercontents').prepend('<div id="innerimage_animate">' + pieces + '</div>');

				$('.odd').animate(animateOdd, settings.duration * 1000, function()
				{
					$(this).remove();
				});

				$('.even').animate(animateEven, settings.duration * 1000, function()
				{
					$(this).remove();
				});

			break;

			case 'staircase':
				var bgOffset	= yPos = xPos = 0;
				var barHeight	= settings.height;
				var barWidth	= Math.round(settings.width / settings.pieces);
				var animateAll	= { 'top': barHeight, 'opacity': 0.65 };
				var bar		= bars = '';

				for (i = settings.pieces; i > 0; i--)
				{
					bgOffset 	= barWidth * i;
					xPos		= settings.width - bgOffset;

					bar =	'<div style="' +
							'position: absolute; ' +
							'z-index: ' + settings.zindex + '; ' +
							'width: ' + barWidth + 'px; ' +
							'height: 365px; ' +
							'top: 0px; ' +
							'left: ' + xPos + 'px; ' +
							'background: transparent url(' + settings.src + ') ' + bgOffset + 'px 0px;" ' +
							'id="bar' + i + '">&nbsp;</div>'

					bars += "\n" + bar;

					$('#innercontents').prepend('<div id="innerimage_animate">' + bar + '</div>');

					$('#bar' + i).animate(animateAll, settings.duration * 1000 - (i * 50), function() { });
				}

			break;

			case 'roller':
				var rHeight		= 75;
				var rPosition	= Math.floor((settings.height - rHeight));
				var rollerCanvas = document.createElement('canvas');

				if (rollerCanvas.getContext)
				{
					var context = rollerCanvas.getContext('2d');

					rollerCanvas.id			= 'roller';
					rollerCanvas.style.position	= 'absolute';
					rollerCanvas.style.top		= settings.height + 'px';
					rollerCanvas.style.left		= '0px';
					rollerCanvas.style.height	= settings.height + 'px';
					rollerCanvas.style.width	= settings.width + 'px';
					rollerCanvas.height		= settings.height;
					rollerCanvas.width		= settings.width;
					rollerCanvas.style.zIndex	= settings.zindex;

					$('#innercontents').append('<div id="innerimage_animate">' + rollerCanvas + '</div>');

					context.save();

					context.translate(0, settings.height - 1);
					context.scale(1, -1);
					context.drawImage($('#innerimage')[0], 0, 0, settings.width, settings.height);

					context.restore();

					var gradient = context.createLinearGradient(0, 0, 0, settings.height);

					gradient.addColorStop(0, 'rgba(255, 255, 255, 0)');
					gradient.addColorStop(1, 'rgba(0, 0, 0, 1)');

					context.fillStyle = gradient;

					if (navigator.appVersion.indexOf('WebKit') != -1)
						context.fill();
					else
						context.fillRect(0, 0, settings.width, settings.height * 2);
				}

				$('#roller').animate({
					'top':			'-' + rHeight
				}, settings.duration * 1000, function() { $('#roller').remove() });

				if (settings.slideshow)
				{
					$('#innerimage').css({'top': settings.height + 'px'});

					$('#innerimage,#rollerimage').animate({
						'top':	0
					}, settings.duration * 1000);
				}

				var rIteration	= 0;
				var rIterations	= Math.round((settings.duration * 1000) / 15);
				var rTimeout	= setInterval(function()
				{
					if (++rIteration == rIterations)
						clearInterval(rTimeout);

					$('#roller').css({
						'backgroundPosition': '0px ' + Math.round((rHeight * 0.60) - (settings.height / rIterations) * rIteration) + 'px'
					});
				}, 15);
			break;

			case 'zoom':
				var arrayTop 	= new Array(0, settings.height, Math.round(settings.height / 2));
				var arrayLeft	= new Array(0, settings.width, Math.round(settings.width / 2));
				var randomTop	= Math.round(Math.random() * 1 + 1);
				var randomLeft	= Math.round(Math.random() * 1 + 1);

				$('#innercontents').prepend('<div id="innerimage_animate"><div><img id="innerimage" style="width: ' + settings.width + 'px; height: ' + settings.height + 'px;" src="' + settings.src + '"></div></div>');

				if (settings.slideshow != true)
					$(settings.obj).remove();

				$('#innerimage').animate({
					'height':	0,
					'width':	0,
					'top':	arrayTop[randomTop],
					'left':	arrayLeft[randomLeft]
				}, settings.duration * 1000, function() { $('#innerimage').remove() });
			break;

			case 'windowblinds':
				var bars		= '';
				var bgOffset	= yPos = 0;
				var barHeight	= Math.floor(settings.height / settings.pieces);
				var overFlow	= settings.height - Math.ceil(settings.pieces * barHeight);
				var overFlowAdd	= Math.ceil(overFlow / settings.pieces);
				for (i = settings.pieces; i > 0; i--)
				{
					if(overFlow > 0)
					{
						sbarHeight = barHeight + overFlowAdd;
						overFlow -= overFlowAdd;
					}
					else
					{
						sbarHeight = barHeight;
					}

					bgOffset 	+= sbarHeight;
					yPos= settings.height - bgOffset;

					bars +=	'<div class="bar" style="' +
							'z-index: ' + settings.zindex + '; ' +
							'width: ' + settings.width + 'px; ' +
							'height: ' + sbarHeight + 'px; ' +
							'top: ' + yPos + 'px; ' +
							'left: 0px; ' +
							'background: transparent url(' + settings.src + ') 0px ' + bgOffset + 'px' +
							'">&nbsp;</div>'
				}

				$('#innercontents').prepend(bars);

				if (settings.slideshow != true)
					$(settings.obj).remove();

				$('#innercontents .bar').animate({
					'height': 0
				}, settings.duration * 1000, function()
				{
					$(this).remove();
				});
			break;
		}
	},

	fadeText: function(duration)
	{
		var x	= Math.floor(parseInt($('#innercontents').width()) * Math.random());
		var y	= Math.floor(parseInt($('#innercontents').height()) * Math.random());

		$('#innercontents .header').slice(0, 1).css({'position': 'absolute', 'top': y, 'left': x}).fadeIn(duration);
	},

	fadeIn: function()
	{
		$('#innercontents').prepend('<div id="innerimage_right" style="z-index: 10; background-image: url(' + $('#innerimage').attr('src') + ')">&nbsp;</div>');
		$('#innertext').css({'display': 'block'});
		$('#innerimage_right').fadeOut(500);
	}
};

var SCROLLER = {
	init: function(obj)
	{
		SCROLLER.slice = 0;

		$('#innertext').fadeIn(function()
		{
			if ($.browser.msie && $.browser.version < 7)
			{
				$(obj).css({'overflow': 'auto'});

				return;
			}

			if ($(obj)[0].offsetHeight - 5 > $(obj).parent()[0].offsetHeight)
			{
				if ($(obj).parent('#up, #down').length == 0)
				{
					$(obj).parent().prepend(
						'<a href="#" id="up">&nbsp;</a>' +
						'<a href="#" id="down">&nbsp;</a>'
					);

					objLeft 	= parseInt($(obj).css('left'));
					objWidth	= parseInt($(obj).width());
					leftPosition	= (objLeft == 0) ? objWidth - 14 : (objLeft + objWidth) - 4;

					$('#up,#down').css({'left': leftPosition + 'px'});

					$('#up').bind('click', function() { SCROLLER.move('up', '#innertext');return false });
					$('#down').bind('click', function() { SCROLLER.move('down', '#innertext');return false });
				 }
			}
		});
	},

	move: function(direction, obj)
	{
		var position	= $(obj).css('top').replace(/[^0-9]/g, '');

		var parent_size	= $(obj).parent()[0].offsetHeight - 25;
		var child_size	= $(obj)[0].offsetHeight;

		var slices		= Math.floor((child_size - 25) / parent_size);
		//var slice		= Math.ceil(position / parent_size);

		switch (direction)
		{
			case 'up':
				if (SCROLLER.slice != 0)
				{
					SCROLLER.slice--;

					nposition	= SCROLLER.slice * parent_size;
					nposition	= (nposition < 0) ? 0 : '-' + nposition;

					$(obj).animate({'top': nposition});

					$('#down').fadeIn();

					if (SCROLLER.slice == 0)
					{
						$('#up').fadeOut();
					}
				}
			break;

			case 'down':
				if (SCROLLER.slice < slices)
				{
					SCROLLER.slice++;

					nposition	= SCROLLER.slice * parent_size;
					nposition	= (nposition > (child_size - parent_size)) ? '-' + (child_size - (parent_size + 25)) : '-' + nposition;

					$(obj).animate({'top': nposition});

					$('#up').fadeIn();

					if (SCROLLER.slice >= slices)
					{
						$('#down').fadeOut();
					}
				}
			break;

			case 'top':
				$(obj).animate({'top': 0});
			break;

			case 'bottom':
				$(obj).animate({'top': '-' + (parenth - h)});
			break;
		}


		if (DEBUG)
		{
			$('#debug').show().html(
				'child_size: ' + child_size +
				'<br />parent size: ' + parent_size +
				'<br />top: ' + position +
				'<br />slices: ' + slices +
				'<br />slice: ' + SCROLLER.slice +
				'<br />nposition: ' + nposition
			);
		}
	}
};

var CALENDAR = {

	showEvent: function(id)
	{
		$('.event').hide(function(){});

		if($('#event' + id).css('display') == 'none')
		{
			$('#event' + id).show(function()
			{
				SCROLLER.init('#innertext');
			});
		}
		else
		{
			$('#event' + id).hide(function()
			{
				SCROLLER.init('#innertext');
			});
		}
	}

};

var FORM = {

	generic_submit: function()
	{
		$.post($('#url').attr('value'),
		{
			to: $('#to').attr('value'),
			message: escape($('#message').attr('value')),
			subject: escape($('#subject').attr('value')),
			from: escape($('#from').attr('value')),
			email: $('#email').attr('value'),
			phone: $('#phone').attr('value')
		},
			function(reply)
			{
				$('#generic_form').hide();
				$('#' + reply).show();
			}
		);
	},

	generic_restart: function()
	{
		/*$('#from').attr('value', '');
		$('#email').attr('value', '');
		$('#to').attr('value', '');
		$('#message').attr('value', '');
		$('#subject').attr('value', '');
		$('#phone').attr('value', '');*/

		$('.generic_alert').hide();
		$('#generic_form').show();
	},

	newsletter_submit: function(str)
	{
		if (str)
		{
			$.post($('#url').attr('value'),
			{
				email: $('#email').attr('value'),
				name: escape($('#name').attr('value')),
				action: str
			},
				function(reply)
				{
					$('#newsletter_form').hide();
					$('#' + reply).show();
				}
			);
		}
	},

	newsletter_restart: function()
	{
		/*$('#name').attr('value', '');
		$('#email').attr('value', '');*/

		$('.newsletter_alert').hide();
		$('#newsletter_form').show();
	}
};

var GALLERY = {

	thumb_w: 	0,
	thumb_h: 	0,
	image_w: 	0,
	image_h: 	0,
	is_open: 	0,
	image_l:	0,
	image_t:	0,
	use_txt:	true,

	sizes: function()
	{
		/*
		GALLERY.max_i_w = $(window).width();
		GALLERY.max_i_h = $(window).height() - GALLERY.image_t;

		if(GALLERY.max_i_h > GALLERY.image_h)
			GALLERY.max_i_h = GALLERY.image_h;

		GALLERY.animate_l = 0;
		*/

		GALLERY.image_l = GALLERY.image_w - (GALLERY.image_w * 2);
		GALLERY.max_i_h = 365;
	},

	view: function(id)
	{
		if($('#clone' + id).length == 0)
		{
			$('#debug').show().html('no clone, creating new clone');

			$('#t' + id).clone().prependTo('#innercontents');
			$('#t' + id).attr('id', 'clone' + id);

			GALLERY.thumb_w = $('#t' + id).width();
			GALLERY.thumb_h = $('#t' + id).height();

			if(id != GALLERY.is_open)
			{
				if($('#clone' + GALLERY.is_open).length != 0)
				{
					$('#debug').show().html('found previous clone, closing it.');
					GALLERY.close(GALLERY.is_open);
				}
			}

			GALLERY.open(id);
		}
		else
		{
			$('#debug').show().html('clone present, closing it');
			GALLERY.close(GALLERY.is_open);
		}
	},

	open: function(id)
	{
		var max_i_h = 0; //None global var for maximum image height.
		GALLERY.is_open = id;

		$('#clone' + id).attr('src', $('#i' + id).attr('src'));

		GALLERY.image_w = $('#clone' + id).width();
		GALLERY.image_h = $('#clone' + id).height();

		GALLERY.sizes();

		$('#clone' + id).css(
		{
			'top': 	GALLERY.image_t,
			'left': 	GALLERY.image_l,
			'z-index': 	14,
			'height': 	GALLERY.max_i_h,
			'position':	'absolute'
		});

		if(GALLERY.use_txt)
		{
			$('#innercontents').prepend('<div id="gallerytext">' + $('#i' + id).attr('alt') + '<a target="_blank" href="' + $('#i' + id).attr('src') + '"><br /><br />Visa orginalstorlek</a> - <a href="#" onclick="GALLERY.close(' + id + ');">St&auml;ng</a></div>')
			$('#gallerytext').css(
			{
				'width': (924 - $('#clone' + id).width()),
				'top': 0,
				'left': $('#clone' + id).width()
			});
		}

		$('#gallerytext').show();
		$('#up').hide();
		$('#down').hide();

		$('#clone' + id).animate(
		{
			'left': 0
		},function()
		{

		});
	},

	close: function(id)
	{
		$('#up').show();
		$('#down').show();
		$('#gallerytext').remove();

		$('#clone' + id).animate(
		{
			'left': GALLERY.image_l
		},
		function()
		{
			$('#clone' + id).remove();
		});
	}
};
