// JavaScript Document
var scrollers = new Array();
var scroller_buttons = new Array();
var vertical_growers = new Array();
var current_scroller = null;
var scroller_in_process = false;

function scrollermove(e)
{
	if(scroller_in_process) return false;
	scroller_in_process = true;
	var tx = 0;
	var ty = 0;
	var plane = get_current_scroller_pane();
	var plane_slider = null;
	var mx = 0;
	var my = 0;
	var slider_width = 0;
	var slider_height = 0;
	var viewer_width = 0;
	var viewer_height = 0;
	var indent_left = 0;
	var indent_down = 0;
	var percentage_left = 0;
	var percentage_down = 0;
	var as = new Array();
	
	if (typeof(event) != 'undefined' && event.clientX) {
		if(document.body)
		{
			tx = event.clientX + document.body.scrollLeft;
			ty = event.clientY + document.body.scrollTop;
		}
	} else {  
		tx = e.pageX;
		ty = e.pageY;
	}  
	if(current_scroller)
	{
		if(plane)
		{
			plane_slider = get_scroller_pane_slider(plane);
			if(plane_slider)
			{
				if(tx > current_scroller.maxRight) tx = current_scroller.maxRight;
				if(tx < current_scroller.maxLeft) tx = current_scroller.maxLeft;
				if(ty > current_scroller.maxBottom) ty = current_scroller.maxBottom;
				if(ty < current_scroller.maxTop) ty = current_scroller.maxTop;
				
				indent_left = tx - current_scroller.maxLeft;
				indent_down = ty - current_scroller.maxTop;
				percentage_left = 0;
				if((current_scroller.maxRight - current_scroller.maxLeft) != 0)
				{
					percentage_left = indent_left / (current_scroller.maxRight - current_scroller.maxLeft);
				}
				percentage_down = 0;
				if((current_scroller.maxBottom-current_scroller.maxTop) != 0)
				{
					percentage_down = indent_down / (current_scroller.maxBottom - current_scroller.maxTop);
				}
				//alert(indent_down+'/'+current_scroller.maxBottom+'-'+current_scroller.maxTop);
				as = plane_slider.getElementsByTagName('a');
				if(as.length > 0)
				{
					slider_width = as.length * (as[0].offsetWidth+10);
				}
				else slider_width = plane_slider.offsetWidth;
				slider_height = plane_slider.offsetHeight;
				viewer_width = plane.offsetWidth;
				viewer_height = plane.offsetHeight;
				//alert(slider_height+','+viewer_height);
				plane_slider.style.position = 'relative';
				mx = Math.ceil((slider_width-viewer_width) * percentage_left);
				my = Math.ceil((slider_height-viewer_height) * percentage_down);
				if(mx < 0) mx = 0;
				if(my < 0) my = 0;
				//alert(mx+','+my);
				plane_slider.style.left = (-1 * mx) + 'px';
				plane_slider.style.top = (-1 * my) + 'px';
				//alert(my);
				current_scroller.style.position = 'absolute';
				current_scroller.style.left = tx+'px';
				current_scroller.style.top = ty+'px';
				//plane_slider.style.backgroundColor = '#FFFFFF';
				//alert(tx);
				//alert(plane_slider.style.top);
			}
			else alert('no slider found!');
		}
		else alert('no plane found!');
	}
	scroller_in_process = false;
}

function heckno()
{
	return false;	
}

function scrollerdown()
{
	current_scroller = this;
	//this.style.border = 'solid 1px #000000';	
	return false;
}

function scrollerup()
{
	var plane = get_current_scroller_pane();
	if(current_scroller)
	{
		//current_scroller.style.border = '';	
		current_scroller = null;
		if(plane)
		{
			//plane.style.backgroundColor = '';	
		}
	}
	return false;
}

function cancelscrollerclick()
{
	return false;	
}

function set_scrollers()
{
	var divs = document.getElementsByTagName('div');
	var as = document.getElementsByTagName('a');
	var vg = null;
	var vgh = new Array();
	var vgp = null;
	var vgph = new Array();
	var svg = null;
	var svgh = new Array();
	var hgrow = 0;
	var subdivs = new Array();
	var current_location = document.location.href;
	
	for(var dc=0; dc<divs.length; dc++)
	{
		if(divs[dc])
		{
			if(divs[dc].id && divs[dc].id.indexOf('scroller-') > -1)
			{
				scrollers[scrollers.length] = divs[dc];	
			}
			else if(divs[dc].className == 'vertical_grow')
			{
				vg = divs[dc];
				vgp = get_scroller_parent(vg);
				if(vgp) vgp = get_scroller_parent(vgp);
				if(vgp)
				{
					vgh = get_scroller_element_position(vg);
					vgph = get_scroller_element_position(vgp);
					hgrow = vgh[1]-vgph[1];	//the distance consumed inside the parent
					hgrow = vgp.offsetHeight - hgrow; //the remaining distance
					vg.style.height = hgrow+'px';
					subdivs = vg.getElementsByTagName('div');
					for(var sdc=0; sdc<subdivs.length; sdc++)
					{
						if(subdivs[sdc] && subdivs[sdc].className && subdivs[sdc].className.toLowerCase() == 'thumbs')
						{
							svg = subdivs[sdc];
							svgh = get_scroller_element_position(svg);
							hgrow = svgh[1]-vgh[1];	//the distance consumed inside the parent
							hgrow = vg.offsetHeight - hgrow - 5; //the remaining distance
							svg.style.height = hgrow+'px';
						}
					}
					//vg.style.border = 'solid 1px #000000';
					//alert(vg.style.height);
				}
			}
		}
	}
	//alert(current_location);
	for(var ac=0; ac<as.length; ac++)
	{
		if(as[ac] && as[ac].href)
		{
			if(as[ac].href == current_location)
			{
				if(as[ac].className) as[ac].className = as[ac].className+'_over';
				else as[ac].className = 'over';
			}
			//else as[ac].innerHTML += as[ac].href;
		}
	}
	mount_scroller_buttons();	
}//eo set_scrollers

function mount_scroller_buttons()
{
	var s = null;
	var sp = null;
	var spb = null;
	var spbe = null;
	var sppos = new Array();
	var maxLeft = 0;
	var maxRight = 0;
	var maxTop = 0;
	var maxBottom = 0;
	var IE6 = (navigator.appVersion.indexOf("MSIE 6.")==-1) ? false : true;
	var IE7 = (navigator.appVersion.indexOf("MSIE 7.")==-1) ? false : true;
	for(var sc=0; sc<scrollers.length; sc++)
	{
		s = scrollers[sc];
		sp = get_scroller_parent(s);
		if(sp)
		{
			sppos = get_scroller_element_position(sp);
			if(sp.className.toLowerCase().indexOf('horizontal') > -1) {
				sppos[1] += sp.offsetHeight - 11;
				if(IE7) sppos[1] -= 3;
				maxLeft = sppos[0];
				maxRight = sppos[0] + sp.offsetWidth - 63;
				maxTop = sppos[1];
				//if(document.body) maxTop -= 3;
				maxBottom = sppos[1];
				spb = create_horizontal_scroller_button(s.id);
				
			}
			else {
				sppos[0] -= 0;
				sppos[1] += 0;
				maxLeft = sppos[0];
				maxRight = sppos[0];
				maxTop = sppos[1];
				maxBottom = sppos[1] + sp.offsetHeight - 63;
				spb = create_vertical_scroller_button(s.id);
			}
			
			//spb = create_scroller_button(s.id);
  			spb.style.left = sppos[0]+'px';
			spb.style.top = sppos[1]+'px';
			spb.maxLeft = maxLeft;
			spb.maxRight = maxRight;
			spb.maxTop = maxTop;
			spb.maxBottom = maxBottom;
			spb.onmousedown = scrollerdown;
			spb.onclick = cancelscrollerclick;
			spb.onmouseup = scrollerup;
			spb.ondragstart = heckno;
			scroller_buttons[sc] = spb;
		}
	}
}//end of mount_scroller_buttons

function get_scroller_parent(scroller)
{
	var scroller_parent = null;
	if(scroller)
	{
		scroller_parent = scroller.parentNode;
		while(scroller_parent && scroller_parent.nodeName.toLowerCase().indexOf('div') == -1)
		{
			scroller_parent = scroller_parent.parentNode;	
		}
	}
	return scroller_parent;
}//end of scroller_parent

function get_current_scroller_pane()
{
	var plane = null;
	if(current_scroller)
	{
		for(var sc = 0; sc<scrollers.length; sc++)
		{
			if(scroller_buttons[sc] && scroller_buttons[sc] == current_scroller)
			{
				plane = scrollers[sc];
			}
		}
	}
	return plane;
}

function get_scroller_pane_slider(pane)
{
	var slider = null;
	var subdivs = new Array();
	if(pane)
	{
		subdivs = pane.getElementsByTagName('div');
		for(var sdc=0; sdc<subdivs.length; sdc++)
		{
			if(subdivs[sdc] && subdivs[sdc].className && subdivs[sdc].className.toLowerCase() == 'thumb_pane')
			{
				slider = subdivs[sdc];
			}
		}	
	}
	return slider;
}

function get_scroller_element_position(element)
{
	var spos = new Array();
	spos[0] = 0;
	spos[1] = 0;
	while(element)
	{
		if(element.offsetLeft) spos[0] += element.offsetLeft;
		if(element.offsetTop) spos[1] += element.offsetTop;
		element = element.offsetParent;
	}
	return spos;
}

function create_scroller_button(scroller_id)
{
	var newdiv = document.createElement('div');
  	var divIdName = 'button-'+scroller_id;
  	newdiv.setAttribute('id',divIdName);
  	newdiv.innerHTML = '<div class="slider_button"><a href=""></a></div>';
	newdiv.style.position = 'absolute';
	newdiv.zIndex = 1000;
	document.body.appendChild(newdiv);
	return newdiv;
}//end of create_scroller_button

function create_horizontal_scroller_button(scroller_id)
{
	var newdiv = document.createElement('div');
  	var divIdName = 'button-'+scroller_id;
  	newdiv.setAttribute('id',divIdName);
  	newdiv.innerHTML = '<div class="horizontal_slider_button" style="height:13px;overflow:hidden;"><a href=""></a></div>';
	newdiv.style.position = 'absolute';
	newdiv.zIndex = 1000;
	document.body.appendChild(newdiv);
	return newdiv;
}//end of create_horizontal_scroller_button

function create_vertical_scroller_button(scroller_id)
{
	var newdiv = document.createElement('div');
  	var divIdName = 'button-'+scroller_id;
  	newdiv.setAttribute('id',divIdName);
  	newdiv.innerHTML = '<div class="vertical_slider_button"><a href=""></a></div>';
	newdiv.style.position = 'absolute';
	newdiv.zIndex = 1000;
	document.body.appendChild(newdiv);
	return newdiv;
}//end of create_vertical_scroller_button

if(document.documentElement)
{
	document.documentElement.onmouseup = scrollerup;
}
else if(document.body)
{
	document.body.onmouseup = scrollerup;
}
document.onmousemove = scrollermove;
