﻿var timelineMouseDownPosition = 0;
var timelineMouseDownValue = -1;

var videoThumbCenter;
var videoThumbWidth;

var scalingFactor = 14.95; //8525 / 580; //7502 / 580;
var timelineValue;

var sliderX;
var posX;
var oldX = 0;
var calcs = 0;
var velocityX = 0;
var maxCalcs = 300;
var friction = .93;
var intRunning = false;

function TimelineControlHandle_MouseDown(sender, args)
{
	main.findName("loadEllipses").Visibility = "Collapsed";
	sender.findName("introSlideTimer").Stop();

	if (intRunning) {
		clearInterval(moveItemsInt);
		intRunning = false;
		calcs = 0;
		velocityX = 0;
	}
	
	var slider = sender.findName("TimelineControlThumbs");	
	sender.findName("TimelineControlNormal").Visibility = "Collapsed";
	sender.findName("TimelineControlOver").Visibility = "Visible";
	sender.findName("TimelineControlHandle").captureMouse();
	timelineMouseDownValue = sender.findName("TimelineControlThumbs")["Canvas.Left"];
    timelineMouseDownPosition = args.getPosition(null).x;
}

function TimelineControlHandle_MouseUp(sender)
{
	sender.findName("TimelineControlHandle").releaseMouseCapture();
	timelineMouseDownValue = -1;	
	sender.findName("TimelineControlNormal").Visibility = "Visible";
	sender.findName("TimelineControlOver").Visibility = "Collapsed";
	
	sliderX = sender.findName("TimelineControlThumbs")["Canvas.Left"];
	moveItemsInt = setInterval("moveItems()",12);
	intRunning = true;
}

function TimelineControlHandle_MouseMove(sender, args)
{

	var slider = sender.findName("TimelineControlThumbs");
    if (timelineMouseDownValue != -1) {
	    oldX = posX; 
		posX = args.getPosition(null).x;

		if (Math.abs(posX - oldX) < 3)
		{
		velocityX = 0;
		}
		else {
   	    velocityX = (posX - oldX) / 2; 
   	    }

		newValue = timelineMouseDownValue + (args.getPosition(null).x - timelineMouseDownPosition);    
        timelineThumb_SetValue(slider, newValue);
    }
}

function timelineThumb_SetValue(sender, timelineValue) 
{
    if (timelineValue > sender.findName("LayoutRoot").Width - sender.findName("TimelineControlThumbs").Width)
    {
        timelineValue = (sender.findName("LayoutRoot").Width - sender.findName("TimelineControlThumbs").Width) -3;
    }
    
    if (timelineValue <= 0) 
    {
        timelineValue = 0;
    }

    sender.findName("TimelineControlThumbs")["Canvas.Left"] = timelineValue;
    var scaledBackgroundLocation = Math.ceil(timelineValue * scalingFactor);
    sender.findName("backgroundValue")["Value"] = -scaledBackgroundLocation;
    sender.findName("logosValue")["Value"] = -scaledBackgroundLocation; 
    sender.findName("photosValue")["Value"] = -scaledBackgroundLocation;
    sender.findName("moveBackground").Begin();
    sender.findName("moveLogos").Begin();
    sender.findName("movePhotos").Begin();
}

function moveItems() {
	moveSlider();

}

function moveSlider(){
	sliderX += velocityX;

	if (calcs >= maxCalcs){
		clearInterval(moveItemsInt);
		intRunning = false;
		calcs = 0;
		velocityX = 0;
	}
	else {
		calcs += 1;
	}

	main.findName("TimelineControlThumbs")["Canvas.Left"] = sliderX;

	if (main.findName("TimelineControlThumbs")["Canvas.Left"] > (main.findName("LayoutRoot").Width - main.findName("TimelineControlThumbs").Width))
	{
		velocityX *= -1;
	}
	
	else if (main.findName("TimelineControlThumbs")["Canvas.Left"] < 0)
	{
		velocityX *= -1;
	}
	
	timelineThumb_SetValue(main, main.findName("TimelineControlThumbs")["Canvas.Left"]) ;

	velocityX *= friction;

}
