var intervalTimer;
var intervalDelay = 5000;
var intervalAnimationTime = 1000;
var currentSlide;
var intervalPaused = false;
var animationInProgress = false;
var curserBlocked = false;

$().ready(function() {
	currentSlide = $('.slideshow_frontpage:first-child');
	currentSlide.show();

	intervalTimer = window.setInterval(function() {
			var nextSlide = currentSlide.next();
			if (typeof nextSlide.get(0) != 'undefined') {
				if (!intervalPaused) {
					slideIn(nextSlide);
				}
			} else if ($('.slideshow_frontpage:first-child').get(0) != currentSlide.get(0)) {
				if (!intervalPaused) {
					slideIn($('.slideshow_frontpage:first-child'));
				}
			}
	}, intervalDelay);

	$('.article_frontpage a').hover(function() {
			curserBlocked = true;
			$('#curser').hide();
	}, function() {
			curserBlocked = false;
	});

	$(document).mousemove(function(ev) {
		var pos1 = $('.outer_wrapper').position();
			if (jQuery.browser.safari) {
				pos1.left = ($('body').width() - $('.outer_wrapper').width() - parseInt($('.outer_wrapper').css('paddingLeft')) - parseInt($('.outer_wrapper').css('paddingRight'))) / 2;
			}
		var pos2 = $('.content_area1').position();
		var slideHeight = $('.content_area1').height();
		var slideWidth = $('.content_area1').width();
		var pos = { 'left': pos1.left + pos2.left, 'top': pos1.top + pos2.top };

		if (ev.pageX > pos.left && ev.pageX < pos.left + slideWidth && ev.pageY > pos.top && ev.pageY < pos.top + slideHeight) {
			intervalPaused = true;
			if (!curserBlocked && !animationInProgress) {
				$('#curser').show();
			}

			if (ev.pageX - pos.left < slideWidth / 2) {
				$("#curser").css({
					'left': (ev.pageX + 1) + 'px',
					'top': ev.pageY - ($('#curser').height() / 2) + 'px'
				}).removeClass('curser_right').addClass('curser_left');
			} else {
				$("#curser").css({
					'left': (ev.pageX - 1 - $('#curser').width()) + 'px',
					'top': ev.pageY - ($('#curser').height() / 2) + 'px'
				}).removeClass('curser_left').addClass('curser_right');
			}
		} else {
			if (intervalPaused) {
				intervalPaused = false;
				$('#curser').hide();
			}
		}
	});

	$('.content_area1, #curser').click(function(ev) {
		if (!curserBlocked && !animationInProgress) {
			var pos1 = $('.outer_wrapper').position();
			if (jQuery.browser.safari) {
				pos1.left = ($('body').width() - $('.outer_wrapper').width() - parseInt($('.outer_wrapper').css('paddingLeft')) - parseInt($('.outer_wrapper').css('paddingRight'))) / 2;
			}
			var pos2 = $('.content_area1').position();
			var slideWidth = $('.content_area1').width();
			var pos = { 'left': pos1.left + pos2.left, 'top': pos1.top + pos2.top };

			if (ev.pageX - pos.left < slideWidth / 2) {
				var prevSlide = currentSlide.prev();
				if (typeof prevSlide.get(0) != 'undefined') {
					slideIn(prevSlide, 'right');
				} else if ($('.slideshow_frontpage:last-child').get(0) != currentSlide.get(0)) {
					slideIn($('.slideshow_frontpage:last-child'), 'right');
				}

			} else {

				var nextSlide = currentSlide.next();
				if (typeof nextSlide.get(0) != 'undefined') {
					slideIn(nextSlide);
				} else if ($('.slideshow_frontpage:first-child').get(0) != currentSlide.get(0)) {
					slideIn($('.slideshow_frontpage:first-child'));
				}
			}
			ev.stopPropagation();
		}
	});
});

function slideIn(obj, direction) {
	if (!animationInProgress) {
		animationInProgress = true;
		$('#curser').hide();
		var oldSlide = currentSlide;
		currentSlide = obj;
		var oldSlideOptions;
		var oldParams;
		var slideOptions;
		var params;

		if (direction == 'right') {
			oldSlideOptions = {
				'right': 'auto',
				'left': '0px'
			};
			oldParams = {
				'left': '920px'
			};
			slideOptions = {
				'left':'auto',
				'right': '920px'
			};
			params = {
				'right': '0px'
			};
		} else {
			oldSlideOptions = {
				'left': 'auto',
				'right': '0px'
			};
			oldParams = {
				'right': '920px'
			};
			slideOptions = {
				'right':'auto',
				'left': '920px'
			};
			params = {
				'left': '0px'
			};
		}

		oldSlide.css(oldSlideOptions);
		oldSlide.animate(oldParams, intervalAnimationTime, 'swing', function() {
			oldSlide.hide();
		});

		obj.css(slideOptions);
		obj.show().animate(params, intervalAnimationTime, 'swing', function() {
			animationInProgress = false;
		});
	}
}