var slider = new Object();

window.onresize = function(){
	dimensionSlider();
}

/* Slider functions */
function prepareSlider(){
	//object to
	slider.enabled = document.getElementById("scroller")!=null;
	if(!slider.enabled)
		return false;
	slider.timeout = 5;//ms between incs
	slider.currentSegment = 0;//current page index
	slider.targetSegment = 0;//current target
	slider.increment = 250; //scroll amount per
	slider.targetScrollPosition = 0;//the destination scroll units
	slider.currentMovement = null;//if null no sliding underway
	slider.cancel = cancelMove; //cancels the current movement if any
	slider.sliderElement = document.getElementById("slider");
	slider.scrollerElement = document.getElementById("scroller");
	slider.segments = childrenOfType(slider.sliderElement,"DIV");
	slider.buttonIds = null; //the list of buttons used to get the index
	slider.buttons = new Array();

	assignTabEvents();
	dimensionSlider();
}

/* Methods for sliderMovement object */
function cancelMove(){
	if(slider.currentMovement!=null){
		cancelTimeout(slider.currentMovement);
		slider.currentMovement = null;
	}
}

function sliderMove(){
	var done = false;
	if(slider.currentSegment==slider.targetSegment){
		done = true;
	}else if(slider.currentSegment < slider.targetSegment){
		if(slider.scrollerElement.scrollLeft >= slider.targetScrollPosition){
			done = true;
		}else if(slider.targetScrollPosition - slider.scrollerElement.scrollLeft < slider.increment){
			done = true;
		}else{
			slider.scrollerElement.scrollLeft += slider.increment;
		}
	}else if(slider.scrollerElement.scrollLeft <= slider.targetScrollPosition){
			done = true;
	}else if(slider.scrollerElement.scrollLeft - slider.targetScrollPosition < slider.increment){
			done = true;
	}else{
		slider.scrollerElement.scrollLeft -= slider.increment;
	}
	
	
	//either done or recursively continue
	if(done){
		slider.currentSegment=slider.targetSegment;
		slider.scrollerElement.scrollLeft = slider.targetScrollPosition;
	}else{
		slider.currentMovement = setTimeout("sliderMove()",slider.timeout);
	}
}

/* Functions */
function childrenOfType(o, tag){
	//global
	var children = new Array(0);
	
	var j=0;
	for(var i=0;i<o.childNodes.length;i++)
		if(o.childNodes[i].tagName==tag)
			children[j++] = o.childNodes[i];

	return children;
}

function dimensionSlider(){
	if(!slider.enabled)
		return false;

	var w = slider.scrollerElement.offsetWidth;
	slider.sliderElement.style.width = slider.segments.length * (w+1) + "px";
	
	for(i=0;i<slider.segments.length;i++){
		slider.segments[i].style.width=w+"px";
		slider.segments[i].style.display="inline";
		slider.segments[i].style.borderColor = "red";
		slider.segments[i].style.borderWidth = "0px";
		slider.segments[i].style.borderWidthRight = "1px";
	}

	scrollToSegment(slider.currentSegment);
	
}

function assignTabEvents(){
	var ul = document.createElement("ul");
	var li;
	var a;
	for(var i=0;i<slider.segments.length;i++){
			li = document.createElement("li");
			a = document.createElement("a");
			a.onclick = function(){
				scrollToSegment(indexFromButton(this));
				return false;
			}
			ul.appendChild(li);
			li.appendChild(a);
			
			a.appendChild(document.createTextNode(i+1));
			slider.buttons[slider.buttons.length]=a;
	}
	document.getElementById("gallery_navbar").appendChild(ul);
}

function indexFromButton(btn){
	for(var i=0;i<slider.buttons.length;i++)
		if(slider.buttons[i] == btn)
			return i;
	return 0;
}

function scrollToSegment(segmentIndex){
	slider.buttons[slider.targetSegment].className="";
	slider.cancel;//stop the slider
	slider.targetSegment = segmentIndex;//current target
	slider.targetScrollPosition = segmentIndex * slider.scrollerElement.offsetWidth;
	slider.buttons[segmentIndex].className="active";
	slider.currentMovement = setTimeout("sliderMove()",1);
}
/*
window.onload = function () {
		prepareSlider();	
		assignExpanders(); 
	}
*/
