Counter = {
	actualPage:1,
	allPages:1,
	setPages: function(page){
		this.allPages = parseInt(page);
	},
	setActualPage: function(page){
		this.actualPage = parseInt(page);
	},	
	next: function(){
		if(this.actualPage<this.allPages)
			this.actualPage++;
	},
	prev: function(){
		if(this.actualPage>1)
			this.actualPage--;
	},
	start: function(){
		this.actualPage = 1;
	},
	end: function(){
		this.actualPage = this.allPages;
	},
	getActualPage: function(){
		return this.actualPage;
	},
	getAllPages: function(){
		return this.allPages;
	},
	getNext: function(){
		return (this.actualPage+1);
	},
	getPrev: function(){
		return (this.actualPage-1);
	}
};

CounterDisplay = {
	htmlDiv:"page_counter",

	paint: function(){
		this.tempPaint(Counter.getActualPage());
	},
	
	tempPaint: function(page){
		var elm = document.getElementById(this.htmlDiv);
		elm.innerHTML = "Side "+page+" af "+Counter.getAllPages();
	}
}

NavArrows = {
	nextId: "next",
	prevId: "prev",
	endId: "next_end",
	startId: "prev_start",
	mouseActive: false,
	loadPage: 0,
	
	repaint: function(){
		var page = Counter.getActualPage();
		var pages = Counter.getAllPages();
		var show = "";
		
		if(page<=1)
			show = "hidden";
		else
			show = "visible";
		document.getElementById(this.prevId).style.visibility = show;
		document.getElementById(this.startId).style.visibility = show;
		
		if(page>=pages)
			show = "hidden";
		else
			show = "visible";
		document.getElementById(this.nextId).style.visibility = show;
		document.getElementById(this.endId).style.visibility = show;
	},
	
	updateLink: function(){
		var elm = document.getElementById(this.prevId);
		elm.href = "?"+URLHandler.replaceValue("page",Counter.getPrev());
		elm = document.getElementById(this.startId);
		elm.href = "?"+URLHandler.replaceValue("page",1);
		
		elm = document.getElementById(this.nextId);
		elm.href = "?"+URLHandler.replaceValue("page",Counter.getNext());
		elm = document.getElementById(this.endId);
		elm.href = "?"+URLHandler.replaceValue("page",Counter.getAllPages());
		
		URLHandler.replaceValue("page",Counter.getActualPage());
	},
	
	push: function(direction){
		this.mouseActive = true;
		this.loadPage = Counter.getActualPage();
		if(direction>0)
			this.fireNext();
		else
			this.firePrev();
	},
	
	fireNext: function(){
		if(this.loadPage < Counter.getAllPages())
			this.loadPage++;
		CounterDisplay.tempPaint(this.loadPage);
		window.setTimeout(function(){if(NavArrows.mouseActive)
										NavArrows.fireNext()},300);
	},
	
	firePrev: function(){
		if(this.loadPage > 1)
			this.loadPage--;
		CounterDisplay.tempPaint(this.loadPage);
		window.setTimeout(function(){if(NavArrows.mouseActive)
										NavArrows.firePrev()},300);
	},
	
	pull: function(){
		if(this.mouseActive){
			this.mouseActive = false;
			if(!PageNavigator.isLocked()){
				if(this.loadPage != Counter.getActualPage())
					PageNavigator.changePage("?"+URLHandler.replaceValue("page",this.loadPage));
			}
			else
				window.setTimeout(function(){NavArrows.pull();});	
		}
	}
};

Order = {
	divId: "sort_results_img",
	linkId: "sort_results_link_",
	row: "price",
	sort: "",
	
	setSort: function(sort){
		this.sort = sort;
	},
	
	repaint: function(){
		if(this.sort !== "" && this.lastSort != this.sort){
			var elm = document.getElementById(this.divId);
			elm.style.backgroundImage = "url('design/images/malerier/kontrollere/sort_"+this.sort+".gif')";
			this.lastSort = this.sort;
			this.sort = "";
		}
	},
	updateLink: function(){
		var elm = document.getElementById(this.linkId+"up");
		elm.href = "?"+URLHandler.replaceValue("order_"+this.row,"ASC");
		elm = document.getElementById(this.linkId+"down");
		elm.href = "?"+URLHandler.replaceValue("order_"+this.row,"DESC");
	},
	
	disable: function(){
		var elm = document.getElementById(this.divId);
		elm.style.backgroundImage = "url('design/images/malerier/kontrollere/sort_none.gif')";	
	}
};

Scale = {
	level: 1,
	last_level:0,
	elm_id: "plusminus_img_",
	elm_link: "plusminus_link_",
	zoomIn: function(){
			this.level--;
	},
	zoomOut: function(){
			this.level++;
	},
	setZoomLevel: function(level){
		this.last_level = this.level;
		this.level = level;
	},
	getZoomLevel: function(){
		return this.level;
	},
	getOut: function(){
		return (this.level+1);
	},
	getIn: function(){
		return (this.level-1);
	},
	repaint: function(){
		if(this.last_level != this.level){
			var elm = document.getElementById(this.elm_id+this.last_level);	
			elm.src = elm.src.replace(/_mark\.gif/gi,".gif");
			elm = document.getElementById(this.elm_id+this.level);
			elm.src = elm.src.replace(/(_mark)?\.gif/gi,"_mark.gif");
		}
	},
	updateLink: function(){		
		var elm = document.getElementById(this.elm_link+"0");
		elm.href = "?"+URLHandler.replaceValue("zoom",0);
		elm = document.getElementById(this.elm_link+"1");
		elm.href = "?"+URLHandler.replaceValue("zoom",1);
		elm = document.getElementById(this.elm_link+"2");
		elm.href = "?"+URLHandler.replaceValue("zoom",2);
	}
};

Slider = {
	slider: "",
	moveRight: 500,
	moveLeft: 0,
	endImg: 3,
	tick: 0,
	pos: 0,
	startpos: 0,
	loadPos: 0,
	bg: "",
	handler: "",
	img: "",
	
	init: function(bg,handler,img){
		this.bg = bg;
		this.img = img;
		this.handler = handler;
		this.slider = new YAHOO.widget.Slider.getHorizSlider(this.bg,this.handler,this.moveLeft,(this.moveRight-60));
		this.slider.subscribe("change",function(){Slider.changePage();});
		this.slider.subscribe("slideEnd",function(){Slider.loadPage();});
		this.slider.animate = false;
		this.repaint();
	},
	
	repaint: function(){
		if(Counter.getAllPages()>1){
			document.getElementById(this.bg).style.visibility = 'visible';
			var width = (this.moveRight+this.moveLeft)/Counter.getAllPages();
			if(width<=0)
				alert("Too many pages...!!!");
			if(this.tick != width)
				this.modify(width);
			else
				this.update();
			this.startpos = this.slider.getValue();
		}
		else
			document.getElementById(this.bg).style.visibility = 'hidden';
	},
	
	changePage: function(value){
		if(this.startpos != this.slider.getValue()){
			var value = this.slider.getValue()+(this.tick/2);
			var page = parseInt(((value)/this.tick)+1);
			if(this.slider.thumb.rightConstraint <= this.slider.getValue())
				page = Counter.getAllPages();
			if(this.pos != page && page<= Counter.getAllPages() && page > 0){
				this.pos = page;
				CounterDisplay.tempPaint(page);
			}
		}
	},
	
	loadPage: function(){
		if(this.pos!=this.loadPos && this.startpos != this.slider.getValue()){
				PageNavigator.changePage("?"+URLHandler.replaceValue("page",this.pos));
				this.loadPos = this.pos;
		}
	},
	
	modify: function(width){
		this.tick = width;
		var imageWidth = Math.floor(width-(2*this.endImg));
		if(imageWidth < ((2*this.endImg)+3))
			imageWidth = ((2*this.endImg)+3);
		document.getElementById(this.img).style.width = imageWidth+"px";
		this.slider.thumb.setXConstraint(this.moveLeft,(this.moveRight-imageWidth));
		this.update();
	},
	
	update: function(){
		this.loadPos = Counter.getActualPage();
		var value = Math.round(this.tick*(Counter.getActualPage()-1));
		this.slider.setValue(value);
	}
}

Links = {
	
	url: "",
	
	update: function(){
		this.url = URLHandler.getQuery();
		this.updateAgentLink();
	},
	
	updateAgentLink: function(){
		var elm = document.getElementById("agent_link");
		elm.href = elm.href.substring(0,(elm.href.indexOf("query=")+6))+(this.url).replace(/\&/gi,'--');
	}
}
