var $activeKey = 'start';
var $count = new Array();
$count['start'] = 0;
$count['galery'] = 0;
$count['bio'] = 0;
$count['links'] = 0;
$count['contact'] = 0;
var $max = new Array();
$max['start'] = 0;
$max['galery'] = 4;
$max['bio'] = 4;
$max['links'] = 2;
$max['contact'] = 0;
var $range = 340;

jQuery(function($){

	//borrowed from jQuery easing plugin
	//http://gsgd.co.uk/sandbox/jquery.easing.php
	$.easing.elasout = function(x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	};
	
	// This one is important, many browsers don't reset scroll on refreshes
	// Reset all scrollable panes to (0,0)
	$('div.pane').scrollTo( 0 );
	
	// Reset the screen to (0,0)
	$.scrollTo( 0 );
	
	var $paneTarget = $('#pane-target');
	
	/*$('#nav a').click(function(){
		$(this).toggleClass("active"); 
	});*/
	
	$('#start').click(function(){
		setActive($(this));
		$('#arrows').hide();
		$('p.address').hide();
		$paneTarget.stop().scrollTo({top:0,left:0}, 500);
	});
	$('#galery').click(function(){
		$range = 440;
		setActive($(this));
		$('p.address').hide();
		$paneTarget.stop().scrollTo({top:0,left:1600}, 500, {
			onAfter:function(){
				$('#arrows').show();
				$('#footer a').attr('href', '#galery');

			}
		});
	});
	$('#bio').click(function(){
		$range = 340;
		setActive($(this));
		$('p.address').hide();
		$paneTarget.stop().scrollTo({top:0,left:4800}, 500, {
			onAfter:function(){
				$('#arrows').show();
			}
		});
	});
	$('#links').click(function(){
		setActive($(this));
		$('p.address').hide();
		$paneTarget.stop().scrollTo({top:0,left:8000}, 500);
		$('#arrows').hide();
	});
	
	$('#contact').click(function(){
		setActive($(this));
		$('#arrows').hide();
		$('p.address').show();
		$paneTarget.stop().scrollTo({top:0,left:9600}, 500, {
			onAfter:function(){
				$('textarea#message').focus();
			}
		});
		
	});
	
	$('a#rwd').click(function(){
		if($activeKey == 'galery'){
			$range = ($count[$activeKey] <= 2)? 710 : 440;
		}
		$paneTarget.stop().scrollTo({top:'0', left:'-='+$range}, 500 );
		$count[$activeKey]--;
		
		if($count[$activeKey] < $max[$activeKey]){
			$('span#fwd').hide();
			$('a#fwd').show();
		} else {
			$('span#fwd').show();
			$('a#fwd').hide();
		}
		
		if($count[$activeKey] > 0){
			$('a#rwd').show();
			$('span#rwd').hide();
		} else {
			$('a#rwd').hide();
			$('span#rwd').show();
		}
	});
	
	$('a#fwd').click(function(){
		if($activeKey == 'galery'){
			$range = ($count[$activeKey] <= 1)? 710 : 440;
		}
		$paneTarget.stop().scrollTo({top:'0', left:'+='+$range}, 500 );
		$count[$activeKey]++;
		
		if($count[$activeKey] > 0){
			$('a#rwd').show();
			$('span#rwd').hide();
		} else {
			$('a#rwd').hide();
			$('span#rwd').show();
		}
		if($count[$activeKey] < $max[$activeKey]){
			$('a#fwd').show();
			$('span#fwd').hide();
		} else {
			$('a#fwd').hide();
			$('span#fwd').show();
		}
	});
	
	if(window.location.hash != ''){
		$(window.location.hash).click();
	}
});

function setActive($navItem){
	$activeKey = $navItem.attr('id');
	$count[$activeKey] = 0;
	$('a#fwd').show();
	$('span#rwd').show();
	$('span#fwd').hide();
	$('a#rwd').hide();
	$('#nav a').removeClass("active");
	$('#nav a').addClass("inactive");
	$navItem.removeClass("inactive");
	$navItem.addClass("active");
	$navItem.blur();
}

function emailCheck(emailStr) {
	var checkTLD=1;
	var knownDomsPat=/^(aero|arpa|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {alert("Die E-Mail-Adresse ist nicht korrekt (prüfen Sie bitte die @ und .'s)");return false;}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {alert("Der Benutzername enthält ungültige Zeichen.");return false;}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {alert("Der Domainname enthält ungültige Zeichen.");return false;}
	}
	if (user.match(userPat)==null) {alert("Der Benutzername ist ungültig.");return false;}
	var IPArray=domain.match(ipDomainPat);
		if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {alert("Die IP-Adresse ist ungültig.");return false;}
		}
		return true;
	}
 	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {alert("Der Domainname ist ungültig.");return false;}
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {alert("Die Adresse muss mit einer bekannten Domain oder einem zweistelligen Ländercode enden.");return false;}
	if (len<2) {alert("Die Adresse enthält keinen Hostnamen.");return false;}
return true;
}
