function sort(sort,elm){
	Order.setSort(sort);
	Order.repaint();
	return loadPage(elm.href);
}

function zoom(level,url){
	Scale.setZoomLevel(level);
	Scale.repaint();
	return loadPage(url);
}

URLHandler = new URL();

PageNavigator = {
	locked: false,
	
	gotoStart: function(url){
		CounterDisplay.tempPaint(1);
		this.changePage(url);
	},
	gotoEnd: function(url){
		CounterDisplay.tempPaint(Counter.getAllPages());
		this.changePage(url);
	},
	
	changePage: function(url){
		if(!this.isLocked() && !PaintingAnimator.running){
			this.locked = true;
			var temp_url = new URL(url);
			page = parseInt(temp_url.getQueryValue("page"));
			if(page && Preload.isLoaded(page)){
				URLHandler.setURL(url);
				var before = function(){
					Preload.shiftPage(page);
					PageTool.pageLoaded();
				};
				var after = function(){
					PageTool.preload();	
				}
				before();
				after();
				//PaintingAnimator.execute(before,after);
			}
			else
				loadPage(url, true);
		}		
	},
	
	isLocked: function(){
		return this.locked;
	},
	
	unlock: function(){
		this.locked = false;
	},
	
	initialize: function(){
		var url = window.location.href;
		var pos = url.lastIndexOf("#");
		if(pos > 0){
			var query = url.substr((pos+1));
			window.location.replace("?"+query);
		}
	}
}
PageNavigator.initialize();

function loadPage(url, changingPageNumber){	
	if(!changingPageNumber)
		Preload.clearCache();
	
	URLHandler.setURL(url);
	Loading.paint(document.getElementById('paintings'),360);
	query = URLHandler.getQuery();
	YAHOO.util.Connect.asyncGetRequest('malerierInclude.php?'+query,'paintings','',function(){PageTool.pageLoaded();PageTool.preload();});
	return false;
}

PageTool = {
	
	pageLoaded: function(){
		window.location.href= "#"+URLHandler.getQuery();		
		Counter.setPages(document.getElementById("numberOfPages").value);
		Counter.setActualPage(document.getElementById("actual_page").value);
		CounterDisplay.paint();
		NavArrows.updateLink();
		NavArrows.repaint();
		if(Counter.getActualPage()>Counter.getAllPages() && Counter.getAllPages()>0){
			PageNavigator.gotoEnd(document.getElementById(NavArrows.endId).href);
		}
		else{
			PageTool.updatePage();
		}
		PageNavigator.unlock();
	},
	
	updatePage: function(){
		Scale.updateLink();
		Order.updateLink();
		InspirationForm.updateLink();
		Slider.repaint();
		Links.update();
	},
	
	preload: function(){
		Preload.saveCurrentPage(Counter.getActualPage());
		pages = [Counter.getNext(),(Counter.getNext()+1),Counter.getPrev()];
		for(c=0; c<pages.length;c++){
			url = "malerierInclude.php?"+URLHandler.replaceValue("page",pages[c]);
			if(pages[c]<=Counter.getAllPages() && pages[c] > 0)
				Preload.preLoadPage(pages[c],url);
		}
	}	
}

PaintingAnimator = {
	
	main_div: "paintingView",
	painting_div: "paintings",
	timeout: 100,
	steps: 10,
	position: 0,
	ani_div: "",
	running: false,
	
	execute: function(before,after){
		this.running = true;
		this.main_program = before;
		this.after_program = after;
		this.ani_div = this.createFigure();
		YAHOO.util.Dom.setStyle(this.main_div, 'overflow', "hidden");
		this.hide();
	},
	
	end: function(){
		this.ani_div.innerHTML = "";
		YAHOO.util.Dom.setStyle(this.ani_div.id, 'margin-top', "0%");
		YAHOO.util.Dom.setStyle(this.ani_div.id, 'margin-left', "0%");
		YAHOO.util.Dom.setStyle(this.ani_div.id, 'opacity', 1.0);
		YAHOO.util.Dom.setStyle(this.main_div, 'overflow', "visible");
		this.after_program();
		this.running = false;
	},
	
	hide: function(){
		this.position = this.steps;
		this.main_program();
		this.show();		
	},
	
	show: function(){
		var margin = Math.abs(parseInt(YAHOO.util.Dom.getStyle(this.ani_div.id, 'margin-top').replace(/(px)|\%/g,"")));
		var opc = parseFloat(YAHOO.util.Dom.getStyle(this.ani_div.id, 'opacity'));
		
		var pos = margin+2;
		if(pos >= 70)
			pos = 100;
			
		YAHOO.util.Dom.setStyle(this.ani_div.id, 'margin-top', -pos+"px");
		YAHOO.util.Dom.setStyle(this.ani_div.id, 'margin-left', pos+"px");
		
		opacity = new Number(opc - 0.15);
		if(opacity < 0.1)
			opacity = 0;
		YAHOO.util.Dom.setStyle(this.ani_div.id, 'opacity', opacity.toFixed(1));
		if(pos == 100 || opacity == 0)
			this.end()
		else
			setTimeout(function(){PaintingAnimator.show()},this.timeout);
	},
	
	createFigure: function(){
		var div = document.getElementById("animation_div");
		div.style.marginTop = "0px";
		txt = document.getElementById(this.painting_div).innerHTML;
		div.innerHTML=txt.replace(/id\=/g,"nothing_to_use=");
		return div;
	},
	
	main_program: function(){},
	after_program: function(){}
}
