document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;



var dragObject  = null;
var sliderContentObject = null;
var mouseOffset = null;
var barOriginOffset = null;
var sliderOriginOffset = null;
var slideFactor = null;

var minLeft = null;
var maxRight = null;
var maxContentRight = null;

var sliderPositions = null;
var activeColumn = null;
var activeButton = null;
var activeButtonNormalClass= null;

var activeColumnBackground = new Image();
activeColumnBackground.src = "../common/images/metalife_trinity/osnova_active_column.gif";

function getMouseOffset(target, ev){
	ev = ev || window.event;

	var docPos    = getPosition(target);
	var mousePos  = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e){
	var left = 0;
	var top  = 0;

	while (e.offsetParent){
		left += e.offsetLeft;
		top  += e.offsetTop;
		e     = e.offsetParent;
	}

	left += e.offsetLeft;
	top  += e.offsetTop;

	return {x:left, y:top};
}

function mouseMove(ev){
	ev           = ev || window.event;
	var mousePos = mouseCoords(ev);
 	
	if(dragObject)
		{
		if (intervalID)
			{  clearInterval(intervalID); }
		var dragLeft = null;
		if (dragObject.style.left == "") 
			{
			dragLeft = 0; 	
			}
		else 
			{
			dragLeft = parseFloat(dragObject.style.left); 
			}
		var dist = mousePos.x - mouseOffset.x - barOriginOffset.x - dragLeft;
		slide(dist);
		return false;			
		}

	return false;
	}

function mouseUp(){
	dragObject = null;
	
}

function makeDraggable(item){
	if(!item) return;
	item.onmousedown = function(ev){
		dragObject  = this;
		mouseOffset = getMouseOffset(this, ev);
		
		
		return false;
	}
}


function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}


var floatLeftPosition=0;
var sliderFloatLeftPosition=0;
function slide (dist)
	{
	
	if(dragObject)
		{		
		dragObject.style.position = 'relative';
		sliderContentObject.style.position = 'relative';
		var dragLeft = null;
		var contentLeft = null;
		if (dragObject.style.left == "") 
			{
			dragLeft = 0; 
			contentLeft = 0;
			}
		else 
			{
			dragLeft = parseFloat(dragObject.style.left); 
			contentLeft = parseFloat(sliderContentObject.style.left);
			}
		
		if (dist < 0 && dragLeft + dist < 5)
			{
			dragObject.style.left     = 0 + "px";
			sliderContentObject.style.left = 0 + "px";
			floatLeftPosition = 0;
			sliderFloatLeftPosition=0;
			return false;
			}
		else if (dist > 0 && maxRight - (barOriginOffset.x + dragLeft + dist) < 5)
			{
			dragObject.style.left     = maxRight - barOriginOffset.x + "px";
			sliderContentObject.style.left = - maxContentRight+ "px";
			floatLeftPosition = - maxContentRight;
			sliderFloatLeftPosition= maxRight - barOriginOffset.x;
			return false;
			}
		else if (dragLeft + dist >= 0 && dragLeft + dist +barOriginOffset.x < maxRight)
			{
			sliderFloatLeftPosition += dist;
			dragObject.style.left     = Math.floor(sliderFloatLeftPosition)+"px";// dragLeft + dist + "px";
			var tmp = floatLeftPosition;
			floatLeftPosition -= dist*slideFactor;
			sliderContentObject.style.left = Math.floor(floatLeftPosition)+"px";
			//sliderContentObject.style.left = contentLeft - dist*slideFactor + "px";
			//document.getElementById('Log').innerHTML+= "old_slider_pos:"+dragLeft+" dist:"+dist+" old_content_pos:"+ tmp +" dist*factor:"+(dist*slideFactor)+" factor:"+slideFactor+"<br />";
			//document.getElementById('Log').innerHTML+="slider_pos:"+dragObject.style.left+" content_pos:"+sliderContentObject.style.left+"<br />";
			return true;
			}		
		return false;
		}
	
		
	}

	
function move_slider (dist)
	{
	dragObject = document.getElementById("slider_bar");
	var docPos    = getPosition(dragObject);
	targetPosition = docPos.x + dist;
	interval = dist;
	step = interval/2;
	slide_animated();
	
	//slide(dist);
	//dragObject = null;
	return false;
	}
	
function slide_to (suite,animate)
	{
	if (activeButton == null)
		{
		activeButton = document.getElementById("explorer_button");
		activeButtonNormalClass = "normalExplorerButton";
		}
	if(suite == 'explorer')
		{
		var dragLeft= null;
		dragObject = document.getElementById("slider_bar");
		if (dragObject.style.left == "") 
			{
			dragLeft = 0; 			
			}
		else 
			{
			dragLeft = parseFloat(dragObject.style.left);
			dragObject = null;
			}
		var dist = sliderPositions.explorer - dragLeft;
		//document.getElementById('Log').innerHTML += "dist: "+dist+"<br />";
		if (dist < 0.5 && dist > -0.5) {dist = 0;}
		//document.getElementById('Log').innerHTML += "round dist: "+dist+"<br />";
		
		if (animate == true)
			{
			move_slider(dist);
			dragObject = null;
			}
		else 
			{
			dragObject = document.getElementById("slider_bar");
			slide(dist);
			dragObject = null;
			}
		activeColumn.className = "nonActiveColumn";
		activeColumn = document.getElementById("first_column");
		activeColumn.className = "activeColumn";
		
		activeButton.className = activeButtonNormalClass;
		activeButton = document.getElementById("explorer_button");
		activeButton.className = "activeExplorerButton";
		activeButtonNormalClass = "normalExplorerButton";
		
		
		}
	else if (suite == 'predictor')
		{
		var dragLeft= null;
		dragObject = document.getElementById("slider_bar");
		if (dragObject.style.left == "") 
			{
			dragLeft = 0; 
			
			}
		else 
			{
			dragLeft = parseFloat(dragObject.style.left);
			}
		var dist = sliderPositions.predictor - dragLeft;
		//document.getElementById('Log').innerHTML += "slide_to:"+sliderPositions.predictor+" c_pos:"+ dragLeft+ " dist: "+dist+"<br />";
		if (dist < 0.5 && dist > -0.5) {dist = 0;}
		//document.getElementById('Log').innerHTML += "round dist: "+dist+"<br />";
		
		if (animate == true)
			{
			move_slider(dist);
			dragObject = null;
			}
		else 
			{
			dragObject = document.getElementById("slider_bar");
			slide(dist);
			dragObject = null;
			}
		activeColumn.className = "nonActiveColumn";
		activeColumn = document.getElementById("second_column");
		activeColumn.className = "activeColumn";
		
		activeButton.className = activeButtonNormalClass;
		activeButton = document.getElementById("predictor_button");
		activeButton.className = "activePredictorButton";
		activeButtonNormalClass = "normalPredictorButton";
		}
	else if (suite == 'analyzer')
		{
		var dragLeft= null;
		dragObject = document.getElementById("slider_bar");
		if (dragObject.style.left == "") 
			{
			dragLeft = 0; 
			
			}
		else 
			{
			dragLeft = parseFloat(dragObject.style.left);
			}
		var dist = sliderPositions.analyzer - dragLeft;
		//document.getElementById('Log').innerHTML += "dist: "+dist+"<br />";
		if (dist < 0.5 && dist > -0.5) {dist = 0;}
		//document.getElementById('Log').innerHTML += "round dist: "+dist+"<br />";
		
		if (animate == true)
			{
			move_slider(dist);
			dragObject = null;
			}
		else 
			{
			dragObject = document.getElementById("slider_bar");
			slide(dist);
			dragObject = null;
			}
		activeColumn.className = "nonActiveColumn";
		activeColumn = document.getElementById("third_column");
		activeColumn.className = "activeColumn";		
		
		activeButton.className = activeButtonNormalClass;
		activeButton = document.getElementById("analyzer_button");
		activeButton.className = "activeAnalyzerButton";
		activeButtonNormalClass = "normalAnalyzerButton";
		}
	else 
		{
		//alert('error!');
		}
	}

function jump_slider (ev)
	{

	ev = ev || window.event;
	var slider_bar = document.getElementById("slider_bar");
	dragObject  = slider_bar;
	var docPos    = getPosition(slider_bar);
	var mousePos  = mouseCoords(ev);
	
	//interval = mousePos.x - docPos.x - (slider_bar.clientWidth/2);
	if ( ( mousePos.x - docPos.x) <=	slider_bar.clientWidth &&  (mousePos.x - docPos.x) >= 0 )
		return;
	targetPosition =  mousePos.x - (slider_bar.clientWidth/2);
	//step = interval/2;
	if (intervalID)
		{  clearInterval(intervalID); }
	slide_animated();
	
	
	
	}

var targetPosition=null;
var interval=null;
var step = null;
var intervalID=null;
function slide_animated()
	{
	var res = false;
	
	var docPos    = getPosition(document.getElementById("slider_bar"));
	interval = targetPosition - docPos.x;
	step = interval/2;
	
	//document.getElementById("Log").innerHTML += "interval:"+interval+" step:"+step+"<br />";
	if (interval >= -1 && interval <= 1)
		{
		var oldDragObject = dragObject;
		dragObject = document.getElementById("slider_bar");
		
		res = slide(interval);
		dragObject = oldDragObject;
		//dragObject = document.getElementById("slider_bar");
		intervalID = null;
		if (dragObject) 
			{
			mouseOffset = new Object();
			mouseOffset.x = dragObject.clientWidth/2;
			mouseOffset.y = 0;
			}
		return;
		}	
	 else 
		{
		//interval -= step;
		var oldDragObject = dragObject;
		dragObject = document.getElementById("slider_bar");
		res = slide(step);
		
		dragObject = oldDragObject;
		if (res == false)
			{
			interval = 0;
			}		
		}
	intervalID = setTimeout(slide_animated,1); 
	}

	

	
function createSlider (explorer_position,predictor_position,analyzer_position)
	{
	var slider_bar = document.getElementById("slider_bar");
	var slider_content = document.getElementById("slider_content");
	var slider_inner_trail = document.getElementById("slider_bar_inner_trail");
	var slider = document.getElementById("slider_content_holder");
	var slider_left_arrow = document.getElementById("slider_left_arrow");
	var slider_right_arrow = document.getElementById("slider_right_arrow");
	
	mouseOffset = new Object();
	mouseOffset.x = 0;
	mouseOffset.y = 0;
		
	slider_inner_trail.onmousedown = jump_slider;
	slider_inner_trail.onmouseup= mouseUp;
	
	
	makeDraggable(slider_bar);
	sliderContentObject = slider_content;
	barOriginOffset = getPosition(slider_bar);
	sliderOriginOffset 	=  getPosition(slider_inner_trail);	
	
	maxContentRight = slider_content.clientWidth - slider.clientWidth;
	minLeft = sliderOriginOffset.x - 1;	
	maxRight = sliderOriginOffset.x + slider_inner_trail.clientWidth - slider_bar.clientWidth ;
	
	slideFactor = Math.floor(10000*maxContentRight / (slider_inner_trail.clientWidth - slider_bar.clientWidth))/10000;
	
	sliderPositions = new Object();
	sliderPositions.explorer = explorer_position;//0;
	sliderPositions.predictor = predictor_position;//429;
	sliderPositions.analyzer = analyzer_position;//718;
	
	activeColumn = document.getElementById("first_column");
	
	return true;		
	}
	

function onload_handler()
	{
//	window.onmouseout = away;
	var url = window.location.href;
	if (url.lastIndexOf("=") >= 0) 
		{
		var suite = url.substring(url.lastIndexOf("=")+1,url.length);
		slide_to(suite,false);			
		}
	else 
		{
		slide_to("explorer",false);		
		}
	}

function setButtonClass(element,newClass)
	{
	if (element.className.lastIndexOf("active") >= 0)
		{ return; }
	element.className = newClass;
	}


