Preload = {
	
	div_id: "paintings_page_",
	root_div_id: "paintingView",
	view_div_id: "paintings",
	queue : [],
	max_threads : 2,
	threads : 0,
	
	saveCurrentPage: function(page){
		this.createLoadingPage(page);
		if(!this.isLoaded(this.div_id+page)){
			this.movePage(this.view_div_id,this.div_id+page);
			this.hideInputsOnPage(this.div_id+page,true);	
		}
	},
		
	shiftPage: function(page){
		this.movePage(this.div_id+page,this.view_div_id);
		this.hideInputsOnPage(this.view_div_id,false);
	},
	
	preLoadPage: function(page,url){
		if(!this.isLoaded(page) && this.threads < this.max_threads){
			this.threads++;
			this.createLoadingPage(page);
			var div = document.createElement("div");
			div.id = this.div_id+page;
			var index = this.queue.push(div);
			hide = function(){Preload.ajaxLoaded()};
			YAHOO.util.Connect.asyncGetRequest(url,div,'',hide);	
		}
	},
	
	createLoadingPage: function(page){
		if(!document.getElementById(this.div_id+page)){
			var div = document.createElement("div");
			div.id = this.div_id+page;
			div.style.display = "none";
			document.getElementById(this.root_div_id).appendChild(div);
		}
	},
	
	movePage: function(from,to){
		document.getElementById(to).innerHTML = document.getElementById(from).innerHTML;
	},
	
	isLoaded: function(page){
		if(document.getElementById(this.div_id+page))
			return document.getElementById(this.div_id+page).innerHTML != "";
		return false;
	},
	
	hideInputsOnPage: function(div,bool){
		if(typeof(div) == "string")
			div = document.getElementById(div);
		if(bool)
			div.innerHTML=div.innerHTML.replace(/id\=/g,"id_temp=");
		else
			div.innerHTML=div.innerHTML.replace(/id\_temp\=/g,"id=");
	},
	
	clearCache: function(){
		divs = document.getElementById(this.root_div_id).getElementsByTagName("div");
		for(a=0; a<divs.length; a++){
			if(divs[a].id != this.view_div_id)
				divs[a].innerHTML = "";
		}
	},
	
	ajaxLoaded: function(){
		this.threads--;
		q = Preload.queue;
		for(i=0; i<q.length; i++){
			div = q.shift();
			if(div.innerHTML != ""){
				Preload.hideInputsOnPage(div,true);
				document.getElementById(div.id).innerHTML = div.innerHTML;	
			}
			else
				q.push(div);
		}
		Preload.queue = q;
	}
}
