/* Author: Mathias Volz

*/
$(document).ready(function() 
{
	var canDetectOrientation = false;
	if(Modernizr.mq("only screen and (orientation:landscape)") || Modernizr.mq("only screen and (orientation:portrait)")) canDetectOrientation = true;
	
	if(!canDetectOrientation) $('body').attr("orient", "landscape");
	
	var isPortrait = 1;
	var isSmallScreen = false;
	var currentPage = -1;
	var currentSlide = 0;
	var frameSizes = new Array();
	
	var projectSlides = new Array();
	
	var wobProjects = new Array();
	wobProjects[0] = {title:'Screenbeispiele', img:'01'};
	projectSlides[0] = {title:'Websites & Online Campaigns', projects:wobProjects, note:'Work done with agencies like Aperto AG, DDB Tribal, MEC GmbH, Plantage... My part: Programming and Animation.'};
	
	var geProjects = new Array();
	geProjects[0] = {title:'BMW X3', img:'02'};
	geProjects[1] = {title:'BMW Kinetic App', img:'03'};
	geProjects[2] = {title:'Nintendo Wii Game and touchable table for a museum', img:'04'};
	projectSlides[1] = {title:'Games & Experiments', projects:geProjects, note:'Experimental interaction with a computer, via webcam or a motion sensitive controller (e.g. Wii) is my special field of interest.'};
	
	var mdProjects = new Array();
	mdProjects[0] = {title:'Bosch SmartCool iPad App', img:'05'};
	projectSlides[2] = {title:'Mobile Development', projects:mdProjects, note:'Apps for Smartphones and tablets' };
	
	var webappProjects = new Array();
	webappProjects[0] =  {title:'Neonauten (Neon)', img:'06'};
	webappProjects[1] =  {title:'SalonConnect (Procter&Gamble)', img:'07'};
	webappProjects[2] =  {title:'Energy Brainpool', img:'08'};
	projectSlides[3] = {title:'Web Applications', projects:webappProjects, note:'Advanced visualisation tools for idea generation, brainstorming and decision making' };
	
	
	var pages = new Array();
	pages[0] = {title:'Home', top:'200%', left:'0%'};
	pages[1] = {title:'About', top:'300%', left:'200%'};
	pages[2] = {title:'Projects', top:'0%', left:'100%', slides:projectSlides};
	pages[3] = {title:'Tools', top:'300%', left:'200%'};
	pages[4] = {title:'Contact', top:'300%', left:'200%'};
	
	function init()
	{
		
		/*checkOrientationMode();
		updateFrameSizes();
		checkScreenType();
		
		createNav();
		
		*/
		checkScreenType();
		if(!isSmallScreen) $('#qrImage').css("display", "block");
		createNav();
		
		updatePagePositions();
		showPage(0, 0);
		
		addEventHandlers();
	}
	
	function updatePagePositions()
	{
		for(var p=0; p < pages.length; p++){
			
			var pagePos = getPagesPosition(p);
			setPos($('#page'+p), pagePos["left"], pagePos["top"]); 
		}
	}
	
	
	function addEventHandlers()
	{
		$(window).bind("resize", onResized);
	}
	
	function createNav()
	{
		
		for(var p=0; p < pages.length; p++)
		{
			var page = pages[p];
			var pageLink = $(document.createElement('div'));
			pageLink.attr("id", ""+p);
			pageLink.text(page['title']);
			pageLink.bind("mousedown", onPageLinkDown);
			$('#nav').append(pageLink);	
		}
	}
	
	function onPageLinkDown(e)
	{
		var pageIndex = $(e.currentTarget).attr("id"); 
		showPage( pageIndex );
	}
	
	function showPage(pageNb, animationDuration)
	{
		
		if(pageNb != currentPage)
		{
			
			if(animationDuration == null) animationDuration = 600;
					
			var newPagePos = getPagesPosition(pageNb);
			$('#canvas').stop();
			$('#canvas').animate({top:"-"+(newPagePos["top"]), left:"-"+(newPagePos["left"])}, animationDuration);
			currentPage = pageNb;	
		}
			
	}
	
	function onResized()
	{
		
		
	
		if(navigator.userAgent.indexOf("Android") > 0){
			setTimeout(checkScreenType,400);
			setTimeout(checkOrientationMode,400);
			setTimeout(refreshSlideHeight,400);
		}
		else {
			checkScreenType();
			checkOrientationMode();
			refreshSlideHeight();
		}
		
	}
	
	function refreshSlideHeight(){
		//$('.slides li').css("height", $(document).height()+"px");
	}
	
	
	
	function getPagesPosition(p)
	{
		var topPos = pages[p]["top"];
		var leftPos = pages[p]["left"];
		
		if(isSmallScreen)
		{
			if(isPortrait)
			{
				topPos = (p*100)+"%";
				leftPos = "0%";
			}
			else 
			{
				topPos = "0%";
				leftPos = (p*100)+"%";		
			}
		}
		
		return {top:topPos, left:leftPos};	
	}
	
	
	
	function setPos(element, x, y, animationDuration)
	{
		if(animationDuration == null){
			element.css("top", y);
			element.css("left", x);
		}
	}
	
	
	function checkOrientationMode()
	{
		if((window.orientation == 0) || (window.orientation == 180) || (window.orientation == -180))
			isPortrait = true;
		else isPortrait = false;
		
		if($(document).width() < $(document).height()) isPortrait = true;
		else isPortrait = false;
		
		if(!canDetectOrientation){
		//if(true){
			
			var orientationStr = "landscape";
			if( isPortrait ) orientationStr = "portrait";
	
			$('body').attr("orient", orientationStr);
		}
	}
	
	function checkScreenType()
	{
		if(($(window).width() < 800) && ($(window).height() < 800)){
			isSmallScreen = true;
		}
		else if(window.devicePixelRatio > 1.5)
		{
			isSmallScreen = true;
		}	
		
	}
	
	
	function onStart(){
		refreshSlideHeight()	
	}
	
	
	$('.flexslider').flexslider({
				 animation: "slide",
        		animationDuration: 500,
        		slideshowSpeed: 5000,
        		controlsNav:false,
				directionNav:false,
				slideshow: false,
				start: onStart,
				/*before:onBefore,
				after:onAfter,
				end:onEnd,
				setup:onSetup,*/
				animationLoop:true	
				});
	refreshSlideHeight();
	
	init();
	
	onResized();
 });
