var dur = 1; // fade/appear duration

window.onload = function() {
	new Insertion.After('content', '<div id="loader" style="display: none;" />');
	// Start preloading site elements. Run this asynchronously so we don't stall other startup items.
	setTimeout(function(){
		PageLoader.initialize(pArr);
	},1);
	applyPageLinks();
}

function handlePageClick(evt){
	var target = (evt.srcElement || evt.target);
	var path = target.pathname;
	PageTransition.initiate(path);
	return false;
}

function applyPageLinks() { 
	var links = $$('a');
	for (var i = 0; i < links.length; i++){
		links[i].onclick = handlePageClick.bindAsEventListener(this);
	}
}

var PageTransition = {
	initiate:function(url) {
		new Effect.Fade('content',{duration:dur, afterFinish: function() { PageTransition.updatePage(url) } })
	},
	updatePage:function(url) {
		if (PageLoader.pages.get(url) == undefined) {
			PageLoader.load(url);
		}
		this.movePage(url);
	},
	movePage:function(url) {
		var rNumber = getRandom(0,1);
		switch (rNumber) {
		  case 0:
			moveLeft(url);
			break;
		  case 1:
			moveRight(url);
			break;
		}
		this.displayPage(url)
	},
	displayPage:function(url) {
		new Effect.Appear('loader',{duration: .5, delay: 2})
		this.url = url
		new PeriodicalExecuter(function(pe) {
		  var page = url
		  var content = PageLoader.pages.get(page);
		  if (content != undefined) {
			Element.update('content', content);
			new Effect.Fade('loader', {duration: .5, delay: .5, afterFinish: function() { new Effect.Appear('content',{duration:dur}); }})
		    pe.stop();
		  }
		}, 2);
		
	}
}

var PageLoader = {
	pages: new Hash(),
	initialize:function(preloadPages){
		for (var i = 0; i < preloadPages.length; i++){
			this.load(preloadPages[i]);
		}
	},
	load:function(page){// window.status = "loading " + page;
		new Ajax.Request(page,{method:'POST',parameters:{backgroundPosts:true}, onComplete: this.onComplete.bind(this,page)});
	},
	onComplete:function(page,request){
		this.pages.set(page, request.responseText);
	}
}

var getRandom = function( min, max ) {
        if( min > max ) {
                return( -1 );
        }
        if( min == max ) {
                return( min );
        }
 
        return( min + parseInt( Math.random() * ( max-min+1 ) ) );
}

var moveRight = function(contentPageURL) {
	var which = $('horizontal');
	var offset = $(which).positionedOffset();
	var mLayer = $(which);
	var fieldWidth = $('h1').getWidth();
	var m = fieldWidth;
	var w = mLayer.getWidth();
	centerContent(mLayer,offset);
	new Effect.MoveBy(mLayer, 0, m, {duration: 2, afterFinish: function() { $(mLayer).relativize; mLayer.style.left= "50%"; mLayer.style.marginLeft = "-150em"; }});
}

var moveLeft = function(contentPageURL) {
	var which = $('horizontal');	
	var offset = $(which).positionedOffset()
	var mLayer = $(which);
	var fieldWidth = $('h1').getWidth();
	var m = 0-fieldWidth;
	var w = 3*fieldWidth;
	centerContent(mLayer,offset);
	new Effect.MoveBy(mLayer, 0, m, {duration: 2, afterFinish: function() { $(mLayer).relativize; mLayer.style.left= "50%"; mLayer.style.marginLeft = "-150em"; }});
}

var centerContent = function(mLayer,offset) {
	var test = $(mLayer).positionedOffset()
	$(mLayer).setStyle({
		left: test[0]+'px',
		marginLeft: '0px'
	})
}

 function ExternOpen(url) {
      wohin = url.href;
      var fenster2=window.open(wohin,"_blank","height=400,width=600,top=40,left=60,resizable=yes,status=yes,toolbar=yes,directories=yes,menubar=yes,location=yes,scrollbars=yes");
      fenster2.focus();
      return false;}


