if(alertLoading == true){
	alert("ag.js loaded without errors!");
}
///////////////////////////////////////////////////////////////////
//	Global Variables
///////////////////////////////////////////////////////////////////

// strings of sections for .address
var currentPath = "";
var categorySlug = "";
var lightboxPath = "";
var imageName = "";
var categoryPath = "";

var slidesTargetX = 0;

// objects (not Strings!!!)
var currentSlide;

// the id of the currently active Image in an open slide
var loadCount = 0;
var currentLoadedImageID = 0;
var currentFocusImageID = 0;
var oldFocusImageID = 0;

// loading wheel animation
var loadingInterval;
var loadingXpos = 0;

var lightboxOpen = false;
var loadingWheels = new Array();
var teaserImgHeight;
var moving = false;
var moveDirection = "left";
var moveWhenLoaded = false;
var addressChange = false;

var browserNaviEnabled = false;

var infoEnabled = true;

var pdfImageString = '';
var options = { path: '/', expires: 1 };

// For address
var baseURL = $.address.baseURL();

// video
var muted = false;

// dragging
var dragging = false;
var mouseDownOrigX = 0;
var mouseMoveX = 0;
var lastScrollContainerX = 0;
var scrollContainerOrigX = 0;
var easeOutInterval;
var easeSpeed = 0;
var mouseDistX = 0;
var overflowing = false;
///////////////////////////////////////////////////////////////////
//	Cookie
///////////////////////////////////////////////////////////////////
function setPDFCookie(s){
	setCookie(s);
	pdfImageString = getCookie();
	if(pdfImageString == null){
		alert('You need to have cookies enabled in order to use the PDF function!')
	}
}
function setCookie(s){
	$.cookie(COOKIE_NAME, s, options);
}
function getCookie(){
	return $.cookie(COOKIE_NAME);
}
function deleteCookie(){
	$.cookie(COOKIE_NAME, null, options);
}
pdfImageString = getCookie();
pdfImageString == null ? pdfImageString = '' : 0;
//deleteCookie();

///////////////////////////////////////////////////////////////////
//	Loading Wheel
///////////////////////////////////////////////////////////////////

function addLoadingWheel(wheel){
	removeLoadingWheel(wheel);
	wheel.show();
	loadingWheels.push(wheel);
	loadingInterval = setInterval(loadingLoop, 20);
}
function loadingLoop(){
	for(var i=0; i<loadingWheels.length; i++){
		var current = loadingWheels[i];
		var currentIMG = current.find('img');
		loadingXpos -= currentIMG.width() / 18;
		if(loadingXpos <= -currentIMG.width()){
			loadingXpos = 0;
		}
		currentIMG.css('margin-left', loadingXpos + "px");
	}
}
function removeLoadingWheel(wheel){
	wheel.hide();
	for(var i=0; i<loadingWheels.length; i++){
		if(loadingWheels[i].attr('id') == wheel.attr('id')){
			loadingWheels.splice(i, 1);
		}
	}
	if(loadingWheels.length == 0){
		clearInterval(loadingInterval);
	}
}

///////////////////////////////////////////////////////////////////
//	Init Function (called from header.php)
///////////////////////////////////////////////////////////////////
function initScript(){
	// fading images in
	//adjustPDFPageItem();
	$('[title]').removeAttr('title');
	setTimeout(showMenu, 600);
	$('body').prepend('<div id="slides-invisible"></div>')
	// fading images in
	addSlidesNavigation();
	addMenuNavigation();
	addLightboxNavigation();
	addImgLoadHandlers();
	$(window).resize(resizeHandler);
	fit();
	addBrowserNavi();
	$('.teaser img').css('opacity', '0');
	$(".slide img").one("load",function(){
		$(this).animate({opacity:1},200);
	}).each(function(){
		if(this.complete || (jQuery.browser.msie && parseInt(jQuery.browser.version) == 6)) {
			$(this).trigger("load");
		}
	});
	addSwitchHandlers();
	deactivateImageDefaults();
	
	var appleMobile = false;
	if(navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/iPad/i)) {
		 appleMobile = true;
	}
	if(appleMobile == true){
		//addIScroll();
	}
	addSearch();
}
function addSearch(){
	setSearchDefault();
	//$('.search_item .searchinput').css('opacity', '0');
	$('.search_item .searchinput').focus(function(e){
		$(this).attr('value', '');
		setSearchText('_');
		fitSlides();
		$('#searchreplace').css('opacity', '1');
	});
	$('.search_item .searchinput').blur(function(e){
		$(this).attr('value', 'Type to search...');
		if($('#searchreplace').text() == "_" || $('#slides-wrapper .slide').length < 1){
			setSearchDefault();
			if(categorySlug != ""){
				showCategory();
			}
		}
		$('#searchreplace').css('opacity', '.5');
	});
	$('.search_item .searchinput').keyup(function(e){
		e.preventDefault();
		filterByString($(this).attr('value'));
		setSearchText($(this).attr('value') + '_');
		adjustBrowserNavi();
	});
}
function setSearchDefault(){
	setSearchText('Search_');
	$('#searchreplace').css('opacity', '.5');
}
function filterByString(s){
	$('#slides').fadeIn(1);
	hideInfo();
	var parts = s.toLowerCase().split(' ');
	$('.slide').each(function(){
		var containsSearchString = true;
		for(var i=0; i<parts.length; i++){
			if($(this).text().toLowerCase().indexOf(parts[i]) == -1){
				containsSearchString = false;
			}
		}
		if(containsSearchString == true){
			$('#slides-wrapper').append($(this));
		} else {
			$('#slides-invisible').append($(this));
		}
	});
}
function setSearchText(t){
	$('#searchreplace').text(t);
	Cufon.replace('#searchreplace');
}
function deactivateImageDefaults(){
	$('img').click(function(e){
		e.preventDefault();
	});
	$('img').mousedown(function(e){
		e.preventDefault();
	});
	$('#bigImages img').mousedown(function(e){
		e.preventDefault();
	})
	$('#bigImages img').click(function(e){
		e.preventDefault();
	})
}
function addSwitchHandlers(){
	$('.sideswitch a').click(function(e){
		//e.preventDefault();
	})
}
function showMenu(){
	$('#menu').css('display', 'block');
	$('#menu').css('opacity', '0');
	$('#menu').animate({
		opacity: 1
	}, 1200, 'easeInOutQuint', function(){
		initAddress();
	});
}
///////////////////////////////////////////////////////////////////
//	browser functions
///////////////////////////////////////////////////////////////////
function addBrowserNavi(){
	/*$('#browser').mousewheel(function(event, delta){
		if(browserNaviEnabled == true){
			var scrollDelta = Math.floor(delta * 10);
			slidesTargetX = $('#slides-wrapper').position().left + scrollDelta;
			slidesTargetX > 0 ? slidesTargetX = 0 : 0;
			var farest = -($('#slides-wrapper .slide:last').position().left + $('#slides-wrapper .slide:last').width() + 25) + $(window).width();
			var farest = -($('#slides-wrapper .slide:last').position().left) + 25;
			slidesTargetX < farest ? slidesTargetX = farest : 0;
			$('#slides-wrapper').css('left', slidesTargetX + 'px');
			adjustBrowserNavi();
		}
	});*/
}
function showCategory(){
	setSearchDefault();
	infoEnabled = false;
	$('#slides').fadeOut(200, function(){
		if(categorySlug == 'pdf-selection'){
			showPDFSelection();
		} else {
			$('#pdf-instructions').remove();
		}
		
		$('.slide').each(function(){
			if($(this).hasClass(categorySlug)){
				$('#slides-wrapper').append($(this));
			} else {
				$('#slides-invisible').append($(this));
			}
		});
		if($('.'+categorySlug).find('.teaser').length == 0){
			if(categorySlug == 'pdf-selection'){
				showNoImagesText('Please select images from the categories to download them as PDF.');
			} else {
				showNoImagesText('No images in this category yet...');
			}
		} else {
			$('.no-images').remove();
		}
		$('#slides-wrapper').css('left', '0px')
		
		$('#slides').fadeIn(500, fit);
		fit();
		slidesTargetX = 0;
		adjustBrowserNavi();
	});
}
function showNoImagesText(t){
	$('.no-images').remove();
	$('#slides').prepend('<span class="no-images">'+t+'</span>');
	$('.no-images').css('margin-left', '27px');
}
///////////////////////////////////////////////////////////////////
//	jquery address
///////////////////////////////////////////////////////////////////
function initAddress(){
	addAddressLinks();
	reactToAddress($.address.path());
	$.address.change(function(event) {
		reactToAddress(event.value);
	});
}
function addAddressLinks(){
	$('#menu a').click(function(e){
		e.preventDefault();
		$.address.value($(this).attr('href').split(baseURL)[1]);
	});
}
function showPDFSelection(){
	var titles = new Array();
	var links = new Array();
	var i = 0;
	var items = pdfImageString.split(',');
	refreshPDFInstructions(items.length-1);
	$('.pdf-selection').remove();
	for(var i=0; i<items.length-1; i++){
		links.push(items[i].split(':')[0]);
		titles.push(items[i].split(':')[1]);
	}
	for(var i=0; i<links.length; i++){
		$('#slides-invisible').append('<div class="slide pdf-selection"><div class="imgWrapper"><span class="teaser" href="#"><a href="#" class="remove-from-pdf"></a><img src="'+uploadBaseURL+links[i]+'" alt="'+titles[i]+'" /></span></div><p class="imglinks"></p></div>');
	}
	$('.pdf-selection .remove-from-pdf').mouseenter(function(){
		$(this).parent().find('img:first').animate({
			opacity: '0.4'
		}, 200);
	});
	$('.pdf-selection .remove-from-pdf').mouseleave(function(){
		$(this).parent().find('img:first').animate({
			opacity: '1'
		}, 200);
	});
	$('.pdf-selection .remove-from-pdf').click(function(e){
		e.preventDefault();
		var currentImageLink = $(this).parent().find('img:first').attr('src').replace(uploadBaseURL, '');
		var currentTitle = $(this).parent().find('img:first').attr('alt');
		var currentImageString = currentImageLink + ":" + currentTitle + ",";
		pdfImageString = pdfImageString.replace(currentImageString, '');
		setPDFCookie(pdfImageString);
		items = pdfImageString.split(',');
		refreshPDFInstructions(items.length-1);
		$(this).parent().find('img').animate({
			width: 0,
			opacity: 0
		}, 200, function(){
			$(this).parent().parent().parent().remove();
		});
	})
	Cufon.replace('.captionTitle');
}
function refreshPDFInstructions(amount){
	$('#pdf-instructions').remove();
	var preNumber = 'There are';
	var postNumber = 'images';
	if(amount < 2){
		preNumber = 'There is';
		postNumber = 'image';
	}
	$('#slides').append('<span class="caption" id="pdf-instructions"><span class="captionTitle"><a href="http://www.alexandergnaedinger.de/pdf/" id="pdf-download">Download PDF</a></span><span class="anzahl">'+ preNumber + ' ' + amount + ' '+ postNumber +' in your PDF. Clicking on an image removes it from the selection.</span></span>')
	$('#pdf-instructions').css({
		'position': 'absolute',
		'left': '25px',
		'margin-top': '0px',
		'top': teaserImgHeight + 5 + 'px'
	});
	Cufon.refresh();
	if(amount == 0){
		$('#pdf-instructions').hide();
		showNoImagesText('Please select images from the categories to download them as PDF...');
	} else {
		$('.no-images').remove();
	}
}
function reactToAddress(_path){
	hideInfo();
	// do something depending on the event.value property, e.g.
	currentPath = _path;
	if(currentPath.split('/').length <= 2){
		$.address.title('Alexander Gnädinger');
	} else {
		var title = currentPath.split('/').join(' | ');
		title = title.substr(0, title.lastIndexOf('|'));
		//$.address.title('Alexander Gnädinger ' + title);
	}
	if(currentPath.indexOf('/pdf-selection') != -1){
		//showPDFSelection();
		categoryPath = _path;
		categorySlug = 'pdf-selection';
		showCategory();
	} else if(currentPath.indexOf("/category/") != -1){
		categoryPath = _path;
		categorySlug = _path.split("/")[2];
		adjustMenuHover(categorySlug, true);
		if(lightboxOpen == true){
			closeLightbox();
		} else {
			showCategory();
		}
	} else if(_path.indexOf("/lightbox/") != -1) {
		lightboxPath = _path.substr(0, _path.lastIndexOf("/")+1);
		loadCount = 0;
		currentLoadedImageID = 0;
		if(lightboxOpen != true){
			openLightbox('easeInOutQuint');
		} else {
			switchLightbox();
		}
	} else if(_path != "/"){
		var slug = _path.split("/").join("");
		adjustMenuHover(slug, true);
		loadInfo(slug);
		
	} else {
		if(lightboxOpen != true){
			var slug = 'news';
			loadInfo(slug);
		}
		closeLightbox();
	}
}
function hideInfo(){
	if($("#info").css('display') == 'block'){
		$("#info").fadeOut(200);
	}
}
function loadInfo(slug){
	infoEnabled = true;
	$("#info").load(rootURL + "/" + slug + " #pageEntry", function(response, status, xhr) {
		if (status == "error") {
			//alert("Sorry but there was an error: " + xhr.status + " " + xhr.statusText);
		}
		if(infoEnabled == true){
			$('#slides').fadeOut(400);
			$('#info').css('display', 'block');
			$('#info').fadeOut(0);
			if(slug != 'news'){
				$('#info').css('left', $('.currentMenuItem').offset().left + 'px');
			} else {
				$('#info').css('left', '25px');
			}
			$('#info').css('top', $('.page_item:last').offset().top + 50 + 'px');
			$('#info').fadeIn(400);
			deactivateImageDefaults();
		}
	});
}
///////////////////////////////////////////////////////////////////
//	Menu Functions
///////////////////////////////////////////////////////////////////
function addMenuNavigation(){
	$('#menu li a').mouseenter(function(){
		adjustMenuHover($(this).attr('href').split(baseURL)[1], false);
	});
	$('#menu').mouseleave(function(){
		adjustMenuHover(currentPath, false);
	});
}
function adjustMenuHover(text, setCurrentItem){
	var targetOpacity;
	var speed;
	$('#menu li a').each(function(){
		var href = $(this).attr('href').split(baseURL)[1];
		if(href.indexOf(text) != -1 || text == ""){
			targetOpacity = 1;
			speed = 100;
			if(setCurrentItem == true){
				$(this).parent().addClass('currentMenuItem');
			}
		} else {
			targetOpacity = 0.5;
			speed = 300;
			if(setCurrentItem == true){
				$(this).parent().removeClass('currentMenuItem');
			}
		}
		$(this).stop(true).animate({
			opacity: targetOpacity
		}, speed);
	});
}
///////////////////////////////////////////////////////////////////
//	Image Loading Effect
///////////////////////////////////////////////////////////////////
function addImgLoadHandlers(){
	var loadCount = 0;
	$(".teaser img").one("load",function(){
		//do something
		$('.slide').animate({
			opacity: 1
		}, 1000, 'easeInOutQuint');
		loadCount ++;
	}).each(function(){
		if(this.complete || (jQuery.browser.msie && parseInt(jQuery.browser.version) == 6)) 
			$(this).trigger("load");
	});
}
///////////////////////////////////////////////////////////////////
//	Fitting
///////////////////////////////////////////////////////////////////
function resizeHandler(){
	fit();
	$('#slides-wrapper').css('left', '0px');
}
function fit(){
	$('#lightbox').css('display', 'block');
	$('#page').width($(window).width() * 2);
	$('#browser').width($(window).width());
	$('#lightbox').width($(window).width());
	$('#lightbox').height($(window).height());
	$('.hotArea').height($(window).height() - 85);
	$('#bigImagesHolder').width(($(window).width() - $('#bigImagesHolder').position().left - 100) + 'px');
	$('#bigImagesHolder').height(($(window).height() - $('#bigImagesHolder').position().top - 85) + 'px');
	if(lightboxOpen == true){
		$('#page').css('left', -$(window).width() + 'px');
		fitImages();
		if($('.bigImage').length > 0 && moving == false){
			$('#bigImages').css('left', -$('.bigImage').eq(currentFocusImageID).position().left + 'px');
		}
	} else {
		$('#page').css('left', '0px');
	}
	fitSlides();
	adjustBrowserNavi();
}
function fitSlides(){
	teaserImgHeight = $(window).height() - $('#top').height() - 120;
	$('#slides').height(teaserImgHeight + 60);
	$('#slides').height(teaserImgHeight + 75);
	if(teaserImgHeight > 500){
		teaserImgHeight = 500;
	} else if(teaserImgHeight < 200){
		teaserImgHeight = 200;
	}
	$('.slide img').height(teaserImgHeight);
	$('#pdf-instructions').css('top', teaserImgHeight + 5 + 'px');
	$('.teaser img').css('width','auto');
}
function fitImages(){
	var i=0;
	$('.bigImage img').each(function(){
		setExactFit($(this), $('#bigImagesHolder'));
	});
	$('#html5Video,#flashVideo').each(function(){
		var videoWidth = $(this).parent().width()+2;
		var videoHeight = $(this).parent().height()+2;
		/*videoWidth > 640 ? videoWidth = 640 : 0;
		videoHeight > 360 ? videoHeight = 360 : 0;*/
		$(this).width(videoWidth);
		$(this).height(videoHeight);
		$(this).css('left', ($(this).parent().width() / 2 - $(this).width() / 2 - 1) + 'px');
		$(this).css('top', ($(this).parent().height() / 2 - $(this).height() / 2 - 1) + 'px');
		$(this).parent().find('img').css('opacity', '0');
	});
	if($('.bigImage').length > 0){
		$('#bigImages').width($('.bigImage:last').position().left + $('.bigImage:last').width());
	}
	adjustHotAreas();
}
function adjustHotAreas(){
	if(currentSlide != undefined && currentSlide.find('.imglinks a').length > 0){
		$('.hotArea').show();
	} else {
		$('.hotArea').hide();
	}
}
function setExactFit(image, container){
	var crop = false;
	containerRatio = container.width() / container.height();
	imageRatio = image.attr('width') / image.attr('height');
	
	var firstRatio;
	var secondRatio;
	
	if(crop == "false"){
		firstRatio = containerRatio;
		secondRatio = imageRatio;
	} else {
		firstRatio = imageRatio;
		secondRatio = containerRatio;
	}
	//
	/*if (firstRatio > secondRatio) {
		image.css('width', container.width());
		image.css('height', 'auto');
	} else {
		image.css('height', container.height());
		image.css('width', 'auto');
	}*/
	image.css('height', container.height());
	image.css('width', 'auto');
	//image.css('top', (container.height() / 2 - image.height() / 2) + 'px')
}
///////////////////////////////////////////////////////////////////
//	Slides Navigation
///////////////////////////////////////////////////////////////////
function addSlidesNavigation(){
	$('.slide').mouseenter(function(){
		adjustSlidesHover($(this).attr('id'));
	});
	$('#top').mouseenter(function(){
		adjustSlidesHover("");
	});
	$('#slides .next').click(function(e){
		moveToNextSlides();
		e.preventDefault();
	})
	$('#slides .prev').click(function(e){
		moveToPreviousSlides();
		e.preventDefault();
	})
	$('a.teaser').click(function(e){
		mouseClickX = e.pageX;
		e.preventDefault();
	});
	$('a.teaser').mouseup(function(){
		if(dragging == false){
			$.address.value($(this).attr('href').split(baseURL)[1])
		}
	});
};
function addIScroll(){
	$('#slides-wrapper').mousedown(function(e){
		e.preventDefault();
		mouseDownOrigX = e.pageX;
		startDragOfScrollContainer();
	});
	$(document).mouseup(function(e){
		setTimeout(stopDragging, 2);
	});
	$('#bigImagesHolder').mousedown(function(e){
		e.preventDefault();
		mouseDownOrigX = e.pageX;
		startDragOfScrollContainer();
	});
}
function easeOutLoop(){
	easeSpeed += (0 - easeSpeed) / 4;
	if(lightboxOpen != true){
		scrollEaseOut($('#slides-wrapper'), -$('#slides-wrapper .slide:last').position().left + 30);
	} else {
		scrollEaseOut($('#bigImages'), -($('.bigImage:last').position().left));
		getCurrentFocusImageIdByPosition();
	}
}
function scrollEaseOut(scrollContainer, leftMax){
	scrollContainer.css('left', (scrollContainer.position().left + easeSpeed) + 'px');
	if(Math.abs(easeSpeed) < 4 && overflowing == false){
		endEaseOut();
	} else if(Math.abs(scrollContainer.position().left) < 2){
		endEaseOut();
	}
	var rightMax = 0;
	if(scrollContainer.position().left > rightMax){
		overflowing = true;
		var newX = scrollContainer.position().left;
		newX += (rightMax - newX) / 3;
		scrollContainer.css('left', newX + 'px');
	} else if(scrollContainer.position().left < leftMax){
		overflowing = true;
		var newX = scrollContainer.position().left;
		newX += (leftMax - newX) / 3;
		scrollContainer.css('left', newX + 'px');
	} else {
		overflowing = false;
	}
}
function endEaseOut(){
	clearInterval(easeOutInterval);
	if(lightboxOpen != true){
		slidesTargetX = $('#slides-wrapper').position().left;
		Math.abs(slidesTargetX) < 2 ? slidesTargetX = 0 : 0;
		adjustBrowserNavi();
	} else {
		if(currentFocusImageID != oldFocusImageID){
			setCaption(currentFocusImageID);
			clearVideo();
			//checkForVideo();
		}
	}
}
function startDragOfScrollContainer(){
	if(lightboxOpen != true){
		startDragging($('#slides-wrapper'));
	} else {
		startDragging($('#bigImages'));
		oldFocusImageID = currentFocusImageID;
	}
}
function startDragging(scrollContainer){
	scrollContainerOrigX = scrollContainer.position().left;
	try {clearInterval(easeOutInterval);}catch(e){};
	$(document).mousemove(function(e){
		mouseMoveX = e.pageX;
		mouseDistX = mouseDownOrigX - mouseMoveX;
		scrollContainer.css('left', (scrollContainerOrigX - mouseDistX) + 'px');
		if(lightboxOpen == true){
			getCurrentFocusImageIdByPosition();
		}
		if(Math.abs(mouseDistX) > 5 && dragging != true){
			getEaseSpeedInterval = setInterval(getEaseSpeedLoop, 30);
			dragging = true;
		}
	});
}
function getEaseSpeedLoop(){
	if(lightboxOpen != true){
		getEaseSpeed($('#slides-wrapper'));
	} else {
		getEaseSpeed($('#bigImages'));
	}
}
function getEaseSpeed(scrollContainer){
	var scrollContainerDistX = scrollContainer.position().left - lastScrollContainerX;
	if(Math.abs(scrollContainerDistX) > 5){
		easeSpeed = scrollContainerDistX;
		easeSpeed *= 2;
		lastScrollContainerX = scrollContainer.position().left;
	}
}
function stopDragging(){
	if(dragging == true){
		clearInterval(getEaseSpeedInterval)
		easeOutInterval = setInterval(easeOutLoop, 30);
	}
	dragging = false;
	$(document).unbind('mousemove');
}
function moveToNextSlides(){
	slidesTargetX = 0;
	$('#slides-wrapper .slide').each(function(){
		if($(this).offset().left < $(window).width() && $(this).offset().left + $(this).width() > $(window).width()){
			slidesTargetX = -$(this).position().left + 25;
		}
	})
	$('#slides-wrapper').stop(true).animate({
		left: slidesTargetX + 'px'
	}, 400, 'easeInOutQuint', function(){
		adjustBrowserNavi();
	})
}
function moveToPreviousSlides(){
	slidesTargetX = 0;
	$('#slides-wrapper .slide').each(function(){
		if($(this).offset().left < -$(window).width() && $(this).offset().left + $(this).width() > -$(window).width()){
			slidesTargetX = -$(this).position().left + 25;
		}
	})
	$('#slides-wrapper').stop(true).animate({
		left: slidesTargetX + 'px'
	}, 400, 'easeInOutQuint', function(){
		adjustBrowserNavi();
	})
}
function adjustBrowserNavi(){
	if(slidesTargetX < 0){
		$('#slides .prev').show();
	} else {
		$('#slides .prev').hide();
	}
	if($('#slides-wrapper .slide').length > 0 && $('#slides-wrapper .slide:last').position().left + $('#slides-wrapper .slide:last').width() > $(window).width()){
		$('#slides .next').show();
		browserNaviEnabled = true;
	} else {
		$('#slides .next').hide();
		browserNaviEnabled = false;
	}
	$('#slides .prev').height(teaserImgHeight);
	$('#slides .next').height(teaserImgHeight);
}
function adjustSlidesHover(slideID){
	var targetOpacity;
	var speed;
	$('#slides-wrapper .slide').each(function(){
		if(slideID == ""){
			targetOpacity = 1;
			speed = 200;
		} else if($(this).attr('id') == slideID){
			targetOpacity = 1;
			speed = 1;
		} else {
			targetOpacity = 0.5;
			speed = 200;
		}
		if($(this).offset().left + $(this).width() > 0 && $(this).offset().left <= $(window).width()){
			$(this).stop(true).animate({
				opacity: targetOpacity
			}, speed);
		}
	})
}
///////////////////////////////////////////////////////////////////
//	Lightbox functions
///////////////////////////////////////////////////////////////////
function openLightbox(easing){
	$('video').remove();
	addLoadingWheel($('#lightboxLoadingWheel'));
	$('a.next').hide();
	// vorbereiten
	currentLoadedImageID = 0;
	currentFocusImageID = 0;
	$('.bigImage').remove();
	$('#bigImages').css('left', '0px');
	findCurrentSlide();
	loadImage(0);
	setCaption(currentFocusImageID);
	// einfaden
	lightboxOpen = true;
	$('#browser').css('overflow', 'hidden');
	$('#page').animate({
		left: (-$('#browser').width()) + 'px'
	}, 400, easing, function(){
		$('#browser').css('opacity', '0');
		//checkForVideo();
	});
};
function switchLightbox(){
	lightboxOpen = false;
	if(moveDirection == "left"){
		$('#page').stop(true).animate({
			left: -$('#page').width() + 'px'
		}, 400, 'easeInQuint', function(){
			$('#page').css('left', '0px');
			openLightbox('easeOutQuint');
		});
	} else {
		$('#page').stop(true).animate({
			left: '0px'
		}, 400, 'easeInQuint', function(){
			$('#page').css('left', -$('#page').width() + 'px');
			openLightbox('easeOutQuint');
		});
	}
}
function closeLightbox(){
	$('#browser').css('opacity', '1');
	lightboxOpen = false;
	if($('.currentSlide').length > 0){
		$('#browser').scrollTo({top:0, left:0});
	}
	$('#page').stop(true).animate({
		left: '0px'
	}, 400, 'easeInOutQuint', function(){
		$('#browser').css('overflow', 'auto');
		clearVideo();
	});
}
function addLightboxNavigation(){
	$('.hotArea .prev').click(function(e){
		e.preventDefault();
		moveToPreviousImage();
	});
	$('.hotArea .next').click(function(e){
		e.preventDefault();
		moveToNextImage();
	});
	$('#lightboxClose').click(function(e){
		e.preventDefault();
		if(categorySlug == ""){
			$.address.value("/");
		} else {
			$.address.value("/category/"+categorySlug+"/");
		}
		
	})
	$('#lightbox').mousewheel(function(event, delta){
		var scrollDelta = Math.floor(delta * 10);
		var newPos = $('#bigImages').position().left + scrollDelta;
		newPos > 0 ? newPos = 0 : 0;
		newPos < -$('.bigImage:last').position().left ? newPos = -$('.bigImage:last').position().left : 0;
		$('#bigImages').css('left', newPos + 'px');
		oldFocusImageID = currentFocusImageID;
		getCurrentFocusImageIdByPosition();
		if(currentFocusImageID != oldFocusImageID){
			setCaption(currentFocusImageID);
		}
	});
	$('body').keydown(function(e) {
		if(lightboxOpen == true){
			if(e.keyCode == "39"){
				moveToNextImage();
			} else if(e.keyCode == "37"){
				if(addressChange != true){
					moveToPreviousImage();
				}
			} else if(e.keyCode == "91"){
				addressChange = true;
			}
		}
	});
	$('body').keyup(function(e){
		if(e.keyCode == "91"){
			addressChange = false;
		}
	});
	$('#pdfButton').mouseenter(function(e){
		e.preventDefault();
		higlightPDFImage();
	})
	$('#pdfButton').mouseleave(function(e){
		e.preventDefault();
		unhiglightPDFImage();
	})
	$('#pdfButton').click(function(e){
		e.preventDefault();
		if(currentSlide.find('.imglinks a').eq(currentFocusImageID).attr('href').indexOf('.mov') != -1){
			playVideo($('.bigImage').eq(currentFocusImageID))
		} else {
			toggleCurrentImagePDF();
		}
	})
	$('#soundButton').click(function(e){
		e.preventDefault();
		toggleVideoVolume();
	})
}
function getCurrentFocusImageIdByPosition(){
	var i=0;
	$('.bigImage').each(function(){
		if(Math.abs($(this).offset().left - $('#bigImagesHolder').offset().left) < 100){
			currentFocusImageID = i;
		}
		i ++;
	});
}
function loadNextImage(){
	if(loadCount < currentSlide.find('.imglinks a').length-1){
		loadCount ++;
		loadImage(loadCount);
	}
}
function loadImage(_id){
	var isVideo = 'false';
	isVideo = currentSlide.find('.imglinks a').eq(_id).attr('href').indexOf('.mov') != -1 ? 'true' : 'false';
	moveWhenLoaded = false;
	var image = new Image();
	$(image).load(function(){
		if($(this).attr('alt') == lightboxPath){
			currentLoadedImageID ++;
			$('#bigImages').append('<div class="bigImage"></div>');
			$('.bigImage:last').addClass('video_' + isVideo);
			$('.bigImage:last').append($(this));
			if(isVideo == 'true'){
				var videoLink = currentSlide.find('.imglinks a').eq(_id).attr('href');
				$('.bigImage:last').append('<a class="videoPlayButton" href="'+videoLink+'">Play Video</a>');
				$('.videoPlayButton:last').click(function(e){
					e.preventDefault();
					playVideo($(this).parent());
				})
			}
			$(this).css('opacity', '0');
			//$(this).addClass("bigImage");
			$(this).mouseup(function(e){
				e.preventDefault();
				if(dragging == false){
					currentFocusImageID = parseInt($(this).attr('id').split('-')[1]);
					moveToImageById(currentFocusImageID);
					setCaption(currentFocusImageID);
				}
			})
			fitImages();
			$(this).animate({
				opacity: 1
			}, 400, function(){
				loadNextImage();
			});
			if(currentFocusImageID < currentLoadedImageID-1 || currentSlide.find('.imglinks a').length < 2){
				removeLoadingWheel($('#lightboxLoadingWheel'));
				$('a.next').show();
			}
			if(moveWhenLoaded == true){
				moveToNextImage();
			}
		}
		deactivateImageDefaults();
	}).attr({
		alt: lightboxPath,
		src: currentSlide.find('.imglinks a').eq(_id).attr('href').replace('.mov', '.jpg'),
		id: "bigImage-" + _id
	});
};
function moveToPreviousImage(){
	currentFocusImageID --;
	if(currentFocusImageID >= 0){
		moveToImageById(currentFocusImageID);
		setCaption(currentFocusImageID);
	} else {
		findPreviousSlide();
	}
}
function moveToNextImage(){
	if(currentFocusImageID+1 < currentLoadedImageID){
		currentFocusImageID ++;
		moveToImageById(currentFocusImageID);
		setCaption(currentFocusImageID);
	} else if(currentFocusImageID >= currentSlide.find('.imglinks a').length-1) {
		findNextSlide();
	} else {
		addLoadingWheel($('#lightboxLoadingWheel'));
		$('a.next').hide();
		moveWhenLoaded = true;
	}
}
function moveToImageById(_id){
	if($('.bigImage').length > 0){
		moving = true;
		// move the bigImages to the new position
		$('#bigImages').animate({
			left: -$('.bigImage').eq(_id).position().left + "px"
		}, 500, 'easeInOutQuint', function(){
			clearVideo();
			//checkForVideo();
			moving = false;
		});
	} else {
		$('#bigImages').css('left', '0px');
	}
}
function setCaption(_id){
	$('#lightboxCaption').text(currentSlide.find('.captionTitle:first').text());
	$.address.title('Alexander Gnädinger | ' + $('#lightboxCaption').text());
	var preNumber = "";
	var postNumber = "&nbsp;&nbsp;Add image to PDF";
	var leer = '&nbsp;';
	if(pdfImageString.indexOf(currentSlide.find('.imglinks a').eq(_id).attr('href').replace(uploadBaseURL, '')) != -1){
		preNumber = "";
		postNumber = "&nbsp;&nbsp;Remove image from PDF";
	}
	$('#index').html(addZero(_id+1) + " / " + addZero(currentSlide.find('.imglinks a').length));
	if(currentSlide.find('.imglinks a').eq(_id).attr('href').indexOf('.mov') != -1){
		$('#pdfButton').html('&nbsp;&nbsp;Click to play Video');
	} else {
		$('#pdfButton').html(postNumber);
	}
	
	Cufon.refresh();
}
///////////////////////////////////////////////////////////////////
//	Create PDF
///////////////////////////////////////////////////////////////////
function toggleCurrentImagePDF(){
	var currentImageLink = currentSlide.find('.imglinks a').eq(currentFocusImageID).attr('href').replace(uploadBaseURL, '');
	var currentImageString = currentImageLink + ":" + currentSlide.find('.captionTitle:first').text() + ",";
	if(pdfImageString.indexOf(currentImageLink) === -1){
		pdfImageString += currentImageString;
	} else {
		pdfImageString = pdfImageString.replace(currentImageString, '');
	}
	setPDFCookie(pdfImageString);
	//deleteCookie();
	//adjustPDFPageItem();
	unhiglightPDFImage();
	setCaption(currentFocusImageID);
}
function higlightPDFImage(){
	if($('.bigImage').length > 0){
		$('.bigImage img').eq(currentFocusImageID).css('outline', '1px solid');
		$('.bigImage').eq(currentFocusImageID).css('overflow', 'visible');
	}
}
function unhiglightPDFImage(){
	$('.bigImage img').css('outline', '0px none');
	$('.bigImage').css('overflow', 'hidden');
}
function adjustPDFPageItem(){
	if(pdfImageString.indexOf('.jpg') != -1){
		$('#pdf_page_item').show();
	} else {
		$('#pdf_page_item').hide();
	}
}
function addZero(n){
	var number = n;
	number < 10 ? number = "0"+number : 0;
	return number;
}
function findCurrentSlide(){
	var i = 0;
	$('.slide').has('a.teaser').each(function(){
		if($(this).find('a.teaser').attr('href').split(baseURL)[1] == lightboxPath){
			currentSlideID = i;
			currentSlide = $(this);
			return false;
		}
		i++;
	});
	$('.slide').removeClass('currentSlide');
	$('.slide').has('.teaser').eq(currentSlideID).addClass('currentSlide');
}
function findNextSlide(){
	var addressValue = "/category/"+categorySlug+"/";
	var afterCurrent = false;
	var i = 0;
	$('.slide:has(a.teaser)').each(function(){
		if($(this).hasClass(categorySlug)){
			var currentLink = $(this).find('.teaser').attr('href').replace(baseURL, '');
			if(currentLink == $.address.value()){
				afterCurrent = true;
			} else if(afterCurrent == true){
				addressValue = currentLink;
				return false;
			};
		}
		i ++;
	});
	moveDirection = "left";
	$.address.value(addressValue);
}
function findPreviousSlide(){
	var addressValue = "/category/"+categorySlug+"/";
	var afterCurrent = false;
	var lastLink = "";
	var i = 0;
	$('.slide:has(a.teaser)').each(function(){
		if($(this).hasClass(categorySlug)){
			var currentLink = $(this).find('.teaser').attr('href').replace(baseURL, '');
			if(currentLink == $.address.value()){
				addressValue = lastLink;
				return false;
			};
			lastLink = currentLink;
		}
		i ++;
	});
	moveDirection = "right";
	$.address.value(addressValue);
}
///////////////////////////////////////////////////////////////////
//	Create Video
///////////////////////////////////////////////////////////////////
function playVideo(bigImage){
	//console.log('playVideo');
	if(canPlayMP4()){
		loadHTML5Video(bigImage);
	} else {
		loadFlashVideo(bigImage);
	}
	$('#pdfButton').css('display', 'none');
	$('#soundButton').css('display', 'block');
	$('#soundButton').html('Loading Video...');
	Cufon.refresh();
	$('.videoPlayButton:last').hide();
}
function canPlayMP4() {
    var v = document.createElement('video');
    return !!(v.canPlayType && v.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, ''));
}
function loadHTML5Video(bigImage){
	var img = bigImage.find('img:first');
	var videoSrc = img.attr('src').replace('.jpg', '.mov');
	var videoWidth = img.width();
	var videoHeight = img.height();
	/*var videoWidth = 640;
	var videoHeight = 360;*/
	
	var video = document.createElement('video');
		video.type = 'video/mp4';
		video.src = videoSrc;
		video.controls = false;
		video.id = 'html5Video';
		video.autoplay = false;
		video.width = videoWidth;
		video.height = videoHeight;
	
	bigImage.append(video);
	$('#html5Video').css('cursor', 'pointer');
	fc(function() {
		video.play();
	});
	$('#html5Video').click(function(e){
		e.preventDefault();
		if(video.paused){
			document.getElementById('html5Video').play();
		} else {
			document.getElementById('html5Video').pause();
		}
	})
	video.addEventListener('canplay',function(e) {
		computeStart();
	}, true);
	video.addEventListener('ended',function(e) {
		video.play();
	}, true);
}
function toggleVideoVolume(){
	var video = document.getElementById('html5Video');
	if(muted == false){
		muted = true;
		video != null ? video.muted = true : 0;
		$('#soundButton').html('Sound is off');
		Cufon.replace('#soundButton');
	} else {
		muted = false;
		video != null ? video.muted = false : 0;
		$('#soundButton').html('Sound is on');
		Cufon.replace('#soundButton');
	}
	$('#flashVideo').length > 0 ? sendToNonverBlaster('toggleSound') : 0;
	
}
function clearVideo(){
	muted = false;
	$('#html5Video,#flashVideo').each(function(){
		$(this).parent().find('img').css('opacity', '1');
		$(this).remove();
	});
	$('.videoPlayButton').show();
	
	$('#pdfButton').css('display', 'block');
	$('#soundButton').css('display', 'none');
}
function loadFlashVideo(bigImage){
	var img = bigImage.find('img:first');
	var videoSrc = img.attr('src').replace('.jpg', '.mov');
	var videoWidth = img.width();
	var videoHeight = img.height();
	var videoWidth = 640;
	var videoHeight = 360;
	
	var flashvars = {};
		flashvars.mediaURL = videoSrc;
		flashvars.teaserURL = "";
		flashvars.allowSmoothing = "true";
		flashvars.autoPlay = "true";
		flashvars.buffer = "6";
		flashvars.showTimecode = "false";
		flashvars.loop = "true";
		flashvars.controlColor = "0xffffff";
		flashvars.controlBackColor = "0x000000";
		flashvars.scaleIfFullScreen = "true";
		flashvars.showScalingButton = "false";
		flashvars.defaultVolume = "100";
		flashvars.crop = "false";
		// this variable controls what should happen if the playing video is clicked:
		//		- "http://www.somedomain.com/": The specified domain is opened in the same window
		//		- "togglePlay": The Video plays / pauses
		//		- "" or "disabled": nothing happens
		flashvars.onClick = "togglePlay";
		flashvars.controlsEnabled = "true";

	var params = {};
		params.menu = "false";
		params.allowScriptAccess = "always";
		params.wmode = "transparent";
		params.allowFullScreen = 'true';

	var attributes = {};
		attributes.id = "flashVideo";
	bigImage.append('<div id="flashVideo"></div>');
	swfobject.embedSWF(stylesheetURL + '/swf/NonverBlaster.swf', 'flashVideo', videoWidth, videoHeight, "9", stylesheetURL + '/swf/expressinstall.swf', flashvars, params, attributes);
	registerForJavaScriptCommunication("flashVideo");
}
function computeStart(){
	$('#soundButton').html('Sound is on');
	Cufon.replace('#soundButton');
	fitImages();
}
//fake click
function fc(fn) {
	var $a = $('<a href="#" id="fakeClick"></a>');
	$a.bind("click", function(e) {
		e.preventDefault();
		fn();
	});
	$("body").append($a);
	var evt, el = $("#fakeClick").get(0);
	if (document.createEvent) {
		evt = document.createEvent("MouseEvents");
		if (evt.initMouseEvent) {
			evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
			el.dispatchEvent(evt);
		}
	}
	$(el).remove();
}
