﻿var integrationVideoLoaded = false;
var customizaitonVideoLoaded = false;
var dataownershipVideoLoaded = false;


function pluginLoaded(sender, e)
{
	switch (sender.get_id())
	{
		case "integration_video": integrationVideoLoaded = true;
			break;

		case "customization_video": customizaitonVideoLoaded = true;
			break;

		case "dataownership_video": dataownershipVideoLoaded = true;
			break;
	}	
}

function isWMPInstalled()
{
	var wmpInstalled = false;
	wmpObj = false;
	if (navigator.plugins && navigator.plugins.length)
	{
		for (var i = 0; i < navigator.plugins.length; i++)
		{
			var plugin = navigator.plugins[i];
			if (plugin.name.indexOf("Windows Media Player") > -1)
			{
				wmpInstalled = true;
			}
		}
	} else
	{
		execScript('on error resume next: wmpObj = IsObject(CreateObject("MediaPlayer.MediaPlayer.1"))', 'VBScript');
		wmpInstalled = wmpObj;
	}
	return wmpInstalled;
}

function SlStateChange(sender, args) {
    if (sender.get_currentState() == "Playing" && t.control.isPaused) {
        sender.pause();
    }
}

function SlChapterEnd(sender, args) {
    sender.Finished = true;
    sender.pause();
}

function AddEvent(obj, eventName, eventHandler) {
    if (addEventListener) {
        obj.addEventListener(eventName, eventHandler, false)
    } else {
        obj.attachEvent("on" + eventName, eventHandler)
    }
}

function GetDurationInSeconds(durationString) {
    var durationInSeconds = 0;
    durationInSeconds += parseInt(durationString.substring(0, durationString.indexOf(':'))) * 60;
    durationInSeconds += parseInt(durationString.substring(durationString.indexOf(':') + 1));
    return durationInSeconds;
}


function MsSearch()
{
	PauseForExternal();

	window.open("http://search.microsoft.com/results.aspx?mkt=en-US&setlang=en-US&q=" + $get('tbSearchBox').value);
	return false;
}

function PauseForExternal()
{
		t.control.pause();
}

function pageLoad()
{
	t.isDisplayingCaseStudy = false;

	t.marker.m = $get('marker');

	t.clock.reset();
	t.clock.update();

	t.control.icon = $get('iconPauseBtn');
	t.control.label = $get('labelPauseBtn');

	$addHandler($get('clickHandler'), 'mousedown', t.marker.mouseDownHandler);
	$addHandler($get('clickHandler'), 'mouseup', t.marker.mouseUpHandler);
	$addHandler($get('clickHandler'), 'mouseout', t.marker.mouseOutHandler);
	$addHandler($get('clickHandler'), 'mousemove', t.marker.mouseMoveHandler);
	$addHandler($get('pauseBtn'), 'click', t.control.togglePause);

	t.menu.ManageMenuItem('btnHome', 219000);
	t.menu.ManageMenuItem('btnIntegration', 203500);
	t.menu.ManageMenuItem('btnCustomization', 144000);
	t.menu.ManageMenuItem('btnDataOwnership', 75500);
	t.menu.ManageMenuItem('integration_btn_next', 168500);
	t.menu.ManageMenuItem('integration_movie_btn_next', 144000);
	t.menu.ManageMenuItem('customization_btn_next', 112750);
	t.menu.ManageMenuItem('customization_movie_btn_next', 75500);
	t.menu.ManageMenuItem('dataownership_btn_next', 50250);
	t.menu.ManageMenuItem('dataownership_movie_btn_next', 11500);

	// create and register animations
	t.winManager.AddAnimation(new Animation('home_dialog_entry', $get('home_dialog_container'), 219000, 218500, new Tweener(-581, 0)));
	t.winManager.AddAnimation(new Animation('home_dialog_middle', $get('home_dialog_container'), 218500, 204500, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('home_dialog_exit', $get('home_dialog_container'), 204500, 204000, new Tweener(0, -581)));
	t.winManager.AddAnimation(new Animation('home_dialog_end', $get('home_dialog_container'), 204000, 0, new Tweener(-581, -581)));

	t.winManager.AddAnimation(new Animation('home_subheader_start', $get('home_subheader'), 219000, 218500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('home_subheader_start', $get('home_subheader'), 218500, 218000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('home_subheader_start', $get('home_subheader'), 218000, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('home_copy_start', $get('home_copy'), 219000, 218000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('home_copy_start', $get('home_copy'), 218000, 217500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('home_copy_start', $get('home_copy'), 217500, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('character1_start', $get('character1'), 219000, 214000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('character1_entry', $get('character1'), 214000, 213250, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('character1_middle', $get('character1'), 213250, 204500, new Fader(10, 10)));
	t.winManager.AddAnimation(new Animation('character1_exit', $get('character1'), 204500, 204000, new Fader(10, 0)));
	t.winManager.AddAnimation(new Animation('character1_end', $get('character1'), 204000, 0, new Fader(0, 0)));

	t.winManager.AddAnimation(new Animation('character2_start', $get('character2'), 219000, 213000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('character2_entry', $get('character2'), 213000, 212500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('character2_middle', $get('character2'), 212500, 204500, new Fader(10, 10)));
	t.winManager.AddAnimation(new Animation('character2_exit', $get('character2'), 204500, 204000, new Fader(10, 0)));
	t.winManager.AddAnimation(new Animation('character2_end', $get('character2'), 204000, 0, new Fader(0, 0)));

	t.winManager.AddAnimation(new Animation('integration_dialog_start', $get('integration_dialog_container'), 219000, 203000, new Tweener(-560, -560)));
	t.winManager.AddAnimation(new Animation('integration_dialog_entry', $get('integration_dialog_container'), 203000, 202500, new Tweener(-560, 0)));
	t.winManager.AddAnimation(new Animation('integration_dialog_middle', $get('integration_dialog_container'), 202500, 168500, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('integration_dialog_exit', $get('integration_dialog_container'), 168500, 168000, new Tweener(0, -560)));
	t.winManager.AddAnimation(new Animation('integration_dialog_end', $get('integration_dialog_container'), 168000, 0, new Tweener(-560, -560)));

	t.winManager.AddAnimation(new Animation('integration_btn_pre', $get('btnIntegration'), 219000, 203000, new StyleSwitch(false)));
	t.winManager.AddAnimation(new Animation('integration_btn_active', $get('btnIntegration'), 203000, 142500, new StyleSwitch(true)));
	t.winManager.AddAnimation(new Animation('integration_btn_post', $get('btnIntegration'), 142500, 0, new StyleSwitch(false)));

	t.winManager.AddAnimation(new Animation('integration_subheader_start', $get('integration_subheader'), 219000, 202000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('integration_subheader_entry', $get('integration_subheader'), 202000, 201500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('integration_subheader_end', $get('integration_subheader'), 201500, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('integration_bullet1_start', $get('integration_bullet1'), 219000, 201500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('integration_bullet1_entry', $get('integration_bullet1'), 201500, 201000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('integration_bullet1_end', $get('integration_bullet1'), 201000, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('integration_bullet2_start', $get('integration_bullet2'), 219000, 201000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('integration_bullet2_entry', $get('integration_bullet2'), 201000, 200500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('integration_bullet2_end', $get('integration_bullet2'), 200500, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('integration_bullet3_start', $get('integration_bullet3'), 219000, 200500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('integration_bullet3_entry', $get('integration_bullet3'), 200500, 200000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('integration_bullet3_end', $get('integration_bullet3'), 200000, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('integration_movie_start', $get('integration_movie_container'), 219000, 167000, new Tweener(-1200, -1200)));
	t.winManager.AddAnimation(new Animation('integration_movie_entry', $get('integration_movie_container'), 167000, 166500, new Tweener(-1200, 0)));
	t.winManager.AddAnimation(new Animation('integration_movie_middle', $get('integration_movie_container'), 166500, 143000, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('integration_movie_exit', $get('integration_movie_container'), 143000, 142500, new Tweener(0, -1200)));
	t.winManager.AddAnimation(new Animation('integration_movie_end', $get('integration_movie_container'), 142500, 0, new Tweener(-1200, -1200)));

	t.winManager.AddAnimation(new Animation('integration_movie_video_pre', $get('integration_video'), 219000, 166500, new PlayerController(PLAYER_STOP, 'MS_DYN_CRM.wmv')));
	t.winManager.AddAnimation(new Animation('integration_movie_video_play', $get('integration_video'), 166500, 143000, new PlayerController(PLAYER_START, 'MS_DYN_CRM.wmv')));
	t.winManager.AddAnimation(new Animation('integration_movie_video_post', $get('integration_video'), 143000, 0, new PlayerController(PLAYER_STOP, 'MS_DYN_CRM.wmv')));

	t.winManager.AddAnimation(new Animation('integration_movie_subheader_start', $get('integration_movie_subheader'), 219000, 166500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('integration_movie_subheader_entry', $get('integration_movie_subheader'), 166500, 166000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('integration_movie_subheader_end', $get('integration_movie_subheader'), 166000, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('customization_dialog_start', $get('customization_dialog_container'), 219000, 141500, new Tweener(-560, -560)));
	t.winManager.AddAnimation(new Animation('customization_dialog_entry', $get('customization_dialog_container'), 141500, 141000, new Tweener(-560, 0)));
	t.winManager.AddAnimation(new Animation('customization_dialog_middle', $get('customization_dialog_container'), 141000, 111000, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('customization_dialog_exit', $get('customization_dialog_container'), 111000, 110500, new Tweener(0, -560)));
	t.winManager.AddAnimation(new Animation('customization_dialog_end', $get('customization_dialog_container'), 110500, 0, new Tweener(-560, -560)));

	t.winManager.AddAnimation(new Animation('customization_btn_pre', $get('btnCustomization'), 219000, 141500, new StyleSwitch(false)));
	t.winManager.AddAnimation(new Animation('customization_btn_active', $get('btnCustomization'), 141500, 72000, new StyleSwitch(true)));
	t.winManager.AddAnimation(new Animation('customization_btn_post', $get('btnCustomization'), 72000, 0, new StyleSwitch(false)));

	t.winManager.AddAnimation(new Animation('customization_bullet1_start', $get('customization_bullet1'), 219000, 141000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('customization_bullet1_entry', $get('customization_bullet1'), 141000, 140500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('customization_bullet1_end', $get('customization_bullet1'), 140500, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('customization_bullet2_start', $get('customization_bullet2'), 219000, 140500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('customization_bullet2_entry', $get('customization_bullet2'), 140500, 140000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('customization_bullet2_end', $get('customization_bullet2'), 140000, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('customization_bullet3_start', $get('customization_bullet3'), 219000, 140000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('customization_bullet3_entry', $get('customization_bullet3'), 140000, 139500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('customization_bullet3_end', $get('customization_bullet3'), 139500, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('customization_movie_start', $get('customization_movie_container'), 219000, 109500, new Tweener(-1200, -1200)));
	t.winManager.AddAnimation(new Animation('customization_movie_entry', $get('customization_movie_container'), 109500, 109000, new Tweener(-1200, 0)));
	t.winManager.AddAnimation(new Animation('customization_movie_middle', $get('customization_movie_container'), 109000, 72500, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('customization_movie_exit', $get('customization_movie_container'), 72500, 72000, new Tweener(0, -1200)));
	t.winManager.AddAnimation(new Animation('customization_movie_end', $get('customization_movie_container'), 72000, 0, new Tweener(-1200, -1200)));

	t.winManager.AddAnimation(new Animation('customization_movie_subheader_start', $get('customization_movie_subheader'), 219000, 109000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('customization_movie_subheader_entry', $get('customization_movie_subheader'), 109000, 108500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('customization_movie_subheader_middle', $get('customization_movie_subheader'), 108500, 89500, new Fader(10, 10)));
	t.winManager.AddAnimation(new Animation('customization_movie_subheader_transition_start', $get('customization_movie_subheader'), 89500, 89000, new Fader(10, 0)));
	t.winManager.AddAnimation(new Animation('customization_movie_subheader_transition_end', $get('customization_movie_subheader'), 89000, 88500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('customization_movie_subheader_end', $get('customization_movie_subheader'), 88500, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('customization_movie_video_start', $get('customization_video'), 219000, 109000, new PlayerController(PLAYER_STOP, 'MS_DYN_CRM.wmv')));
	t.winManager.AddAnimation(new Animation('customization_movie_video_entry', $get('customization_video'), 109000, 72500, new PlayerController(PLAYER_START, 'MS_DYN_CRM.wmv')));
	t.winManager.AddAnimation(new Animation('customization_movie_video_end', $get('customization_video'), 72500, 0, new PlayerController(PLAYER_STOP, 'MS_DYN_CRM.wmv')));

	t.winManager.AddAnimation(new Animation('dataownership_dialog_start', $get('dataownership_dialog_container'), 219000, 71000, new Tweener(-560, -560)));
	t.winManager.AddAnimation(new Animation('dataownership_dialog_entry', $get('dataownership_dialog_container'), 71000, 70500, new Tweener(-560, 0)));
	t.winManager.AddAnimation(new Animation('dataownership_dialog_middle', $get('dataownership_dialog_container'), 70500, 46500, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('dataownership_dialog_exit', $get('dataownership_dialog_container'), 46500, 46000, new Tweener(0, -560)));
	t.winManager.AddAnimation(new Animation('dataownership_dialog_end', $get('dataownership_dialog_container'), 46000, 0, new Tweener(-560, -560)));

	t.winManager.AddAnimation(new Animation('dataownership_btn_pre', $get('btnDataOwnership'), 219000, 71000, new StyleSwitch(false)));
	t.winManager.AddAnimation(new Animation('dataownership_btn_active', $get('btnDataOwnership'), 71000, 5000, new StyleSwitch(true)));
	t.winManager.AddAnimation(new Animation('dataownership_btn_post', $get('btnDataOwnership'), 5000, 0, new StyleSwitch(false)));

	t.winManager.AddAnimation(new Animation('dataownership_subheader_start', $get('dataownership_subheader'), 219000, 70500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('dataownership_subheader_entry', $get('dataownership_subheader'), 70500, 70000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('dataownership_subheader_end', $get('dataownership_subheader'), 70000, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('dataownership_bullet1_start', $get('dataownership_bullet1'), 219000, 70000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('dataownership_bullet1_entry', $get('dataownership_bullet1'), 70000, 69500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('dataownership_bullet1_end', $get('dataownership_bullet1'), 69500, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('dataownership_bullet2_start', $get('dataownership_bullet2'), 219000, 69500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('dataownership_bullet2_entry', $get('dataownership_bullet2'), 69500, 69000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('dataownershipn_bullet2_end', $get('dataownership_bullet2'), 69000, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('dataownership_bullet3_start', $get('dataownership_bullet3'), 219000, 69000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('dataownership_bullet3_entry', $get('dataownership_bullet3'), 69000, 68500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('dataownership_bullet3_end', $get('dataownership_bullet3'), 68500, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('dataownership_movie_start', $get('dataownership_movie_container'), 219000, 45000, new Tweener(-1200, -1200)));
	t.winManager.AddAnimation(new Animation('dataownership_movie_entry', $get('dataownership_movie_container'), 45000, 44500, new Tweener(-1200, 0)));
	t.winManager.AddAnimation(new Animation('dataownership_movie_middle', $get('dataownership_movie_container'), 44500, 5500, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('dataownership_movie_exit', $get('dataownership_movie_container'), 5500, 5000, new Tweener(0, -1200)));
	t.winManager.AddAnimation(new Animation('dataownership_movie_end', $get('dataownership_movie_container'), 5000, 0, new Tweener(-1200, -1200)));

	t.winManager.AddAnimation(new Animation('dataownership_movie_subheader_start', $get('dataownership_movie_subheader'), 219000, 44500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('dataownership_movie_subheader_entry', $get('dataownership_movie_subheader'), 44500, 43000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('dataownership_movie_subheader_transition_start', $get('dataownership_movie_subheader'), 27000, 26500, new Fader(10, 0)));
	t.winManager.AddAnimation(new Animation('dataownership_movie_subheader_transition_end', $get('dataownership_movie_subheader'), 26500, 26000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('dataownership_movie_subheader_end', $get('dataownership_movie_subheader'), 26000, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('dataownership_movie_video_start', $get('dataownership_video'), 219000, 44500, new PlayerController(PLAYER_STOP, 'MS_DYN_CRM.wmv')));
	t.winManager.AddAnimation(new Animation('dataownership_movie_video_entry', $get('dataownership_video'), 44500, 5500, new PlayerController(PLAYER_START, 'MS_DYN_CRM.wmv')));
	t.winManager.AddAnimation(new Animation('dataownership_movie_video_end', $get('dataownership_video'), 5500, 0, new PlayerController(PLAYER_STOP, 'MS_DYN_CRM.wmv')));

	t.winManager.AddAnimation(new Animation('thankyou_dialog_start', $get('thankyou_dialog_container'), 219000, 4500, new Tweener(-565, -565)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_entry', $get('thankyou_dialog_container'), 4500, 4000, new Tweener(-565, 0)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_end', $get('thankyou_dialog_container'), 4000, 0, new Tweener(0, 0)));

	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet1_start', $get('thankyou_bullet1'), 219000, 4000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet1_entry', $get('thankyou_bullet1'), 3500, 3000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet1_end', $get('thankyou_bullet1'), 3000, 0, new Fader(10, 10)));

	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet2_start', $get('thankyou_bullet2'), 219000, 3000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet2_entry', $get('thankyou_bullet2'), 2500, 2000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet2_end', $get('thankyou_bullet2'), 2000, 0, new Fader(10, 10)));
	

	t.util.disableSelection($get('timelineContainer'));
	t.clock.start();

}


if (typeof t == "undefined") var t = {};
if (typeof t.timeline == "undefined") t.timeline = {};
if (typeof t.clock == "undefined") t.clock = {};
if (typeof t.marker == "undefined") t.marker = {};
if (typeof t.control == "undefined") t.control = {};
if (typeof t.winManager == "undefined") t.winManager = {};
if (typeof t.util == "undefined") t.util = {};

function Animation(name, element, startTime, endTime, animator)
{
	this.Name = name;
	this.VisualElement = element;
	this.StartTime = startTime;
	this.EndTime = endTime;
	this.Animator = animator;

	this.Animate = function(currentTime)
	{
		this.Animator.Animate(this.VisualElement, this.StartTime, this.EndTime, currentTime);
	}
}

function StyleSwitch(isSelected)
{
	this.Animate = function(visualElement, startTime, endTime, currentTime)
	{
		if (isSelected)
			visualElement.className = "selected";
		else
			visualElement.className = "";
	}
}

function Fader(startOpacity, endOpacity)
{
	this.StartOpacity = startOpacity;
	this.EndOpacity = endOpacity;

	this.Animate = function(visualElement, startTime, endTime, currentTime)
	{
		var newOpacity
		if (this.StartOpacity == this.EndOpacity)
		{
			newOpacity = this.StartOpacity;
		}
		else
		{
			// calculate percent elapsed time
			var elapsedTimePercentage = (startTime - currentTime) / (startTime - endTime);

			// calculate new opacity
			newOpacity = ((this.EndOpacity - this.StartOpacity) * elapsedTimePercentage) + this.StartOpacity;
		}

		// set opacity
		visualElement.style.filter = 'alpha(opacity=' + newOpacity * 10 + ')';
		visualElement.style.opacity = newOpacity / 10;
	}
}

function Tweener(startPos, endPos)
{
	this.StartPos = startPos;
	this.EndPos = endPos;

	this.Animate = function(visualElement, startTime, endTime, currentTime)
	{
		var newPosX;

		if (this.EndPos == this.StartPos)
		{
			newPosX = this.StartPos;
		}
		else
		{
			// calculate percent elapsed time
			var elapsedTimePercentage = (startTime - currentTime) / (startTime - endTime);

			// calculate new x pos
			var newPosX = ((this.EndPos - this.StartPos) * elapsedTimePercentage) + this.StartPos;
		}

		// set new position
		visualElement.style.left = newPosX + 'px';
	}
}

var PLAYER_STOP = 0;
var PLAYER_START = 1;

function PlayerController(playerOperation, movie)
{
	this.PlayerOperation = playerOperation;
	this.Movie = movie;
	this.Playing = false;
	this.Paused = false;

	this.Animate = function(visualElement, startTime, endTime, currentTime) {
	    if (visualElement == null) { return; }
	    if (visualElement.type == "application/x-silverlight") {
	        this.AnimateSilverlight(visualElement, startTime, endTime, currentTime);
	    }
	    else {
	        this.AnimateWMP(visualElement, startTime, endTime, currentTime);
	    }
	},

	this.AnimateWMP = function(visualElement, startTime, endTime, currentTime) {
	    if (!visualElement.controls)
	        return;

	    switch (this.PlayerOperation) {
	        case PLAYER_STOP:
	            visualElement.controls.stop();
	            if (IsFirefox) {
	                visualElement.height = "0";
	                visualElement.width = "0";
	            }
	            break;
	        case PLAYER_START:
	            switch (visualElement.playState) {
	                case 9:     // transitioning
	                case 7:     // waiting
	                case 6:     // buffering
	                case 3:     // playing
	                    if (t.control.isPaused || t.isDisplayingCaseStudy) {
	                        visualElement.controls.pause();
	                    }
	                    if (t.winManager.EventType == EVENT_DRAG_STOP) {
	                        // get elapsed time
	                        var elapsedTime = startTime - currentTime;

	                        if (IsFirefox || IsSafari) {
	                            visualElement.height = "236";
	                            visualElement.width = "416";
	                        }

	                        // set new position
	                        visualElement.controls.currentPosition = Math.ceil(elapsedTime / 1000)
	                        visualElement.controls.play();
	                    }
	                    break;
	                case 2:     // paused
	                    if (!t.isDisplayingCaseStudy) {
	                        visualElement.controls.play();
	                    }
	                    break;
	                case 10:    // ready
	                case 1:     // stopped
	                    // calculate elapsed time
	                    var elapsedTime = startTime - currentTime;

	                    if (IsFirefox || IsSafari) {
	                        visualElement.height = "236";
	                        visualElement.width = "416";
	                    }

	                    // start movie at appropriate position
	                    visualElement.controls.currentPosition = Math.ceil(elapsedTime / 1000)
	                    visualElement.controls.play();

	                    var durationInSeconds = GetDurationInSeconds(visualElement.currentMedia.durationString);
	                    if (elapsedTime / 1000 < durationInSeconds - 5 || durationInSeconds == 0) {
	                        // track video play
	                        if (visualElement.id == "integration_video")
	                            tracking.track("FY09_CRMOL_OnPremise_Integration_Video");
	                        else if (visualElement.id == "customization_video")
	                            tracking.track("FY09_CRMOL_OnPremise_Customization_Video");
	                        else if (visualElement.id == "dataownership_video")
	                            tracking.track("FY09_CRMOL_OnPremise_DataOwnership_Video");
	                    }
	                    break;
	            }
	            break;
	    }
	},

	this.AnimateSilverlight = function(visualElement, startTime, endTime, currentTime) {
	    var _player = $find(visualElement.id);
	    if (visualElement.id == "integration_video" && integrationVideoLoaded == false) { return; }
	    if (visualElement.id == "customization_video" && customizaitonVideoLoaded == false) { return; }
	    if (visualElement.id == "dataownership_video" && dataownershipVideoLoaded == false) { return; }

	    switch (this.PlayerOperation) {
	        case PLAYER_STOP:
	            _player.Finished = false;
	            var state = _player.get_currentState();
	            if (state != "Closed" && state != "Opening") {
	                _player.stop();
	            }
	            if (IsFirefox) {
	                _player.height = "0px";
	                _player.width = "0px";
	            }
	            break;
	        case PLAYER_START:


	            switch (_player.get_currentState()) {
	                //case 9:     // transitioning                    
	                //case 7:     // waiting                    
	                case "Buffering":     // buffering
	                case "Playing":     // playing
	                    if (t.control.isPaused || t.isDisplayingCaseStudy) {
	                        _player.pause();
	                    }
	                    if (t.winManager.EventType == EVENT_DRAG_STOP) {
	                        // get elapsed time
	                        var elapsedTime = startTime - currentTime;

	                        if (IsFirefox || IsSafari) {
	                            _player.height = "236px";
	                            _player.width = "416px";
	                        }

	                        // set new position
	                        _player.Finished = false;
	                        _player.set_position(Math.ceil(elapsedTime / 1000))
	                        _player.play();
	                    }
	                    break;
	                case "Paused":     // paused
	                    if (t.winManager.EventType == EVENT_DRAG_STOP) { _player.Finished = false; }
	                    if (!t.isDisplayingCaseStudy && !_player.Finished) {
	                        if (t.winManager.EventType == EVENT_DRAG_STOP) {
	                            var elapsedTime = startTime - currentTime;
	                            _player.set_position(Math.ceil(elapsedTime / 1000))
	                        }
	                        _player.play();
	                    }
	                    break;
	                //case 10:    // ready                   
	                case "Stopped":     // stopped
	                    // calculate elapsed time
	                    var elapsedTime = startTime - currentTime;

	                    if (IsFirefox || IsSafari) {
	                        _player.height = "236px";
	                        _player.width = "416px";
	                    }

	                    // start movie at appropriate position
	                    _player.set_position(Math.ceil(elapsedTime / 1000))
	                    _player.Finished = false;
	                    _player.play();

	                    // track video play
	                    if (visualElement.id == "integration_video")
	                        tracking.track("FY09_CRMOL_OnPremise_Integration_Video");
	                    else if (visualElement.id == "customization_video")
	                        tracking.track("FY09_CRMOL_OnPremise_Customization_Video");
	                    else if (visualElement.id == "dataownership_video")
	                        tracking.track("FY09_CRMOL_OnPremise_DataOwnership_Video");
	                    break;
	            }
	            break;
	    }
	}
}

t.timeline = {
	/* set the timelines width and current x position for calculation purposes */
	x: 220,
	w: 742
}

t.clock = {
	mins: Object,
	tens: Object,
	ones: Object,
	/* totalTime for 5 mins = 300000 */
	totalTime: 219000,
	interval: 125,
	currTime: t.clock.totalTime,
	clockId: Number,
	start: function()
	{
		// start timer and create setInterval
		t.clock.clockId = setInterval("t.clock.timer()", t.clock.interval);
	},
	stop: function()
	{
		// stop timer and clear setInterval
		clearInterval(t.clock.clockId);
	},
	timer: function()
	{
		// subtract from current time and update clock display and marker position
		t.clock.set(t.clock.currTime - t.clock.interval);
		t.clock.update();
		t.marker.update();
		t.winManager.update();
		t.winManager.EventType = EVENT_TIMER;
	},
	set: function(time)
	{
		// set the curr
		t.clock.currTime = time;
	},
	reset: function()
	{
		// reset the current time to the total time
		t.clock.set(t.clock.totalTime);
	},
	update: function()
	{
		// calculate minutes and seconds
		var ct = t.clock.currTime;
		var min = Math.floor((ct / 1000) / 60);
		//var min = Math.Round(ct/60000);
		var sec = Math.ceil((ct / 1000) % 60);
		if (sec == 60) { sec = 0; min += 1; }
		var tens = Math.floor(sec / 10);
		var ones = sec % 10;

		t.clock.mins = min;
		t.clock.ones = ones;
		t.clock.tens = tens;

		t.clock.setDisplay(min, tens, ones);
		if (ct <= 0)
		{
			// if the current time reaches 0 then stop the clock and set the display to 0:00
			t.clock.stop();
			t.clock.currTime = 0;
			t.clock.setDisplay(0, 0, 0);
			return;
		}
	},
	setDisplay: function(min, tens, ones)
	{
		// sets the clocks display readout
		//t.clock.mins.innerHTML = min;
		//t.clock.tens.innerHTML = tens;
		//t.clock.ones.innerHTML = ones;
	},
	moveTime: function(x)
	{
		// adjust the current time in relation to the marker position
		t.clock.currTime = t.clock.totalTime - Math.floor((t.clock.totalTime * x) / (t.timeline.w - (t.marker.w / 2)));
	}
}

t.marker = {
	w: 46,
	y: 22,
	m: Object,
	isMouseDown: false,
	mouseDownHandler: function(e)
	{
		if (t.isDisplayingCaseStudy)
			return;

		t.winManager.EventType = EVENT_DRAG_START;
		t.clock.stop();
		t.marker.isMouseDown = true;
		t.clock.moveTime(e.offsetX);
		t.marker.moveMarker(e.offsetX);
	},
	mouseUpHandler: function(e)
	{
		if (t.isDisplayingCaseStudy)
			return;

		t.winManager.EventType = EVENT_DRAG_STOP;
		t.control.play();
		t.marker.isMouseDown = false;
	},
	mouseOutHandler: function(e)
	{
		if (t.isDisplayingCaseStudy)
			return;

		if (t.marker.isMouseDown)
		{
			t.winManager.EventType = EVENT_DRAG_STOP;
			t.control.play();
			t.marker.isMouseDown = false;
		}

	},
	mouseMoveHandler: function(e)
	{
		if (t.marker.isMouseDown)
		{
			t.winManager.EventType = EVENT_DRAG;
			t.marker.moveMarker(e.offsetX);
			t.clock.moveTime(e.offsetX);
			t.clock.update();
			t.winManager.update();
		}
	},
	moveMarker: function(eX)
	{
		var x = t.marker.keepInBounds(Math.ceil(t.marker.setX(eX)));
		/*t.util.clear();
		t.util.trace("x: " + x);
		t.util.trace("c: " + t.clock.currTime);
		t.util.trace(t.clock.mins + ":" + t.clock.tens + t.clock.ones);*/
		Sys.UI.DomElement.setLocation(t.marker.m, x, t.marker.y);
	},
	setX: function(x)
	{
		/* adjustment calculation to account for the x position
		of the timeline and the width of the marker */
		var newX = x + t.timeline.x;
		newX -= (t.marker.w / 2);
		return newX;
	},
	keepInBounds: function(x)
	{
		/* make sure marker stays within the timeline bounds*/
		if (x < t.timeline.x)
			return t.timeline.x;
		else if (x > (t.timeline.w + t.timeline.x - t.marker.w))
			return t.timeline.w + t.timeline.x - t.marker.w;
		else
			return x;
	},
	update: function()
	{
		var revTime = t.clock.totalTime - t.clock.currTime;
		var x = (revTime * (t.timeline.w - (t.marker.w / 2))) / t.clock.totalTime;
		t.marker.moveMarker(x);
	}
}

t.control = {
    icon: {},
	label: {},
	iconPause: "images/pause.jpg",
	iconPlay: "images/play.jpg",
	iconReplay: " images/timeline-replayBtn.gif", /* this asset doesn't exhist, just a placeholder */
	isPaused: false,
	togglePause: function()
	{
		if (t.clock.currTime <= 0)
			return;

		if (t.isDisplayingCaseStudy)
			return;

		//alert(t.control.isPaused);
		if (t.control.isPaused)
			t.control.play();
		else
			t.control.pause();
	},
	play: function()
	{
		t.control.label.innerHTML = "PAUSE";
		t.control.icon.src = t.control.iconPause;
		t.control.isPaused = false;
		t.clock.start();
	},
	pause: function()
	{
		t.control.label.innerHTML = "PLAY";
		t.control.icon.src = t.control.iconPlay;
		t.control.isPaused = true;
		t.clock.stop();
		t.winManager.update();
	},
	reset: function()
	{
		t.clock.reset();
		t.clock.update();
		t.control.pause();
	},
	endState: function()
	{
	}
}

/*
* need to create an array of time that can be associated with the
* state manager to control when a modal window should show itself
*/
var EVENT_TIMER = 0;
var EVENT_DRAG_START = 1;
var EVENT_DRAG = 2;
var EVENT_DRAG_STOP = 3;

t.winManager = new Object()
t.winManager.Animations = new Array();
t.winManager.EventType = EVENT_TIMER;

t.winManager.AddAnimation = function(animation)
{
	t.winManager.Animations.push(animation);
}

t.winManager.update = function()
{
	var currTime = t.clock.currTime;

	$get('customization_movie_subheader').style.backgroundImage = currTime <= 89000 ? "url('images/customization_video_subhead2.gif')" : "url('images/customization_video_subhead1.gif')";
	$get('dataownership_movie_subheader').style.backgroundImage = currTime <= 26500 ? "url('images/dataownership_video_subhead2.gif')" : "url('images/dataownership_video_subhead1.gif')";

	var uBound = t.winManager.Animations.length;
	for (i = 0; i < uBound; i++)
	{
		var animation = t.winManager.Animations[i];
		var startTime = animation.StartTime;
		var endTime = animation.EndTime;
		if (startTime >= currTime && endTime <= currTime)
		{
			animation.Animate(currTime);
		}
	}
}

t.menu = new Object()

t.menu.ManageMenuItem = function(menuItem, newTime)
{
	$addHandler($get(menuItem), 'click', t.menu.HandleMenuItemClick);
	$addHandler($get(menuItem), 'click', t.util.setButtonActive);
	$get(menuItem).NewTime = newTime;
}

t.menu.HandleMenuItemClick = function(e)
{
	if (t.isDisplayingCaseStudy)
		return;

	t.clock.stop();
	t.marker.moveMarker(t.menu.CalculateMarkerPos(this.NewTime));
	t.clock.moveTime(t.menu.CalculateMarkerPos(this.NewTime));
	t.clock.update();
	t.winManager.update();
	t.control.play();

}

t.menu.CalculateMarkerPos = function(newTime)
{
	var totalTime = t.clock.totalTime;
	var elapsedTimePercentage = (totalTime - newTime) / totalTime;
	return elapsedTimePercentage * t.timeline.w;
}

var OPERATION_LOAD_CS = 0;
var OPERATION_CLOSE_CS = 1;

t.CaseStudyManager = new Object()
t.CaseStudyManager.Button = null;
t.CaseStudyManager.CloseButton = null;
t.CaseStudyManager.Operation = null;
t.CaseStudyManager.Timer = 0;
t.CaseStudyManager.ElapsedTime = 0;
t.CaseStudyManager.Interval = 50;

t.CaseStudyManager.AddButton = function(buttonItem, dialogItem, startPos, endPos)
{
	var btn = buttonItem;
	btn.Dialog = dialogItem;
	btn.StartPos = startPos;
	btn.EndPos = endPos;
	$addHandler(btn, 'click', this.ManageButtonClick);

	btn.Animation1 = new Animation('dialog_exit', dialogItem, 0, 500, new Tweener(startPos, endPos));
	btn.Animation2 = new Animation('cs_entry', $get('casestudies_dialog_container'), 500, 1000, new Fader(0, 10));
}

t.CaseStudyManager.AddCloseButton = function(buttonItem)
{
	t.CaseStudyManager.CloseButton = buttonItem;
	$addHandler(buttonItem, 'click', this.ManageCloseButtonClick);
}

t.CaseStudyManager.ManageButtonClick = function(e)
{
	t.clock.stop();
	t.isDisplayingCaseStudy = true;
	t.winManager.update();
	t.util.hideVideo();
	$get('casestudies_dialog_container').style.left = "90px";
	t.CaseStudyManager.ElapsedTime = 0;
	t.CaseStudyManager.Operation = OPERATION_LOAD_CS;
	t.CaseStudyManager.Button = this;
	t.CaseStudyManager.CloseButton.Animation1 = new Animation('cs_exit', $get('casestudies_dialog_container'), 0, 500, new Fader(10, 0))
	t.CaseStudyManager.CloseButton.Animation2 = new Animation('dialog_entry', t.CaseStudyManager.Button.Dialog, 500, 1000, new Tweener(t.CaseStudyManager.Button.EndPos, t.CaseStudyManager.Button.StartPos))
	t.CaseStudyManager.Timer = setInterval("t.CaseStudyManager.OnTimer()", t.CaseStudyManager.Interval);
}

t.CaseStudyManager.ManageCloseButtonClick = function(e)
{
	t.CaseStudyManager.ElapsedTime = 0;
	t.CaseStudyManager.Operation = OPERATION_CLOSE_CS;
	t.CaseStudyManager.Button = this;
	t.CaseStudyManager.Timer = setInterval("t.CaseStudyManager.OnTimer()", t.CaseStudyManager.Interval);
}

t.CaseStudyManager.OnTimer = function()
{
	this.ElapsedTime += t.CaseStudyManager.Interval;
	if (this.ElapsedTime <= t.CaseStudyManager.Button.Animation1.EndTime)
	{
		t.CaseStudyManager.Button.Animation1.Animate(this.ElapsedTime);
	}
	else
	{
		t.CaseStudyManager.Button.Animation2.Animate(this.ElapsedTime);
	}

	if (this.ElapsedTime >= t.CaseStudyManager.Button.Animation2.EndTime)
	{
		clearInterval(this.Timer);
		if (t.CaseStudyManager.Operation == OPERATION_CLOSE_CS)
		{
			t.isDisplayingCaseStudy = false;
			$get('casestudies_dialog_container').style.left = "-1000px";
			t.control.play();
			t.util.showVideo();
		}
	}
}

t.util = {
	Version: "1.0.0",
	disableSelection: function(target)
	{
		if (typeof target.onselectstart != "undefined")
		{
			/* handle IE */
			target.onselectstart = function() { return false; };
		}
		else if (typeof target.style.MozUserSelect != "undefined")
		{
			/* handle Firefox */
			target.style.MozUserSelect = "none";
		}
		else
		{
			/* handle other browsers */
			target.onmousedown = function() { return false; };
		}
		target.style.cursor = "default"
	},
	trace: function(e)
	{
		/* trace out to a div with id "helper" */
		$get('helper').innerHTML += e + "<br />";
	},
	clear: function()
	{
		/* clear the div with id "helper" */
		$get('helper').innerHTML = "";
	},
	hideVideo: function()
	{
		if (IsFirefox || IsSafari)
		{
			$get('integration_video').height = "0";
			$get('integration_video').width = "0";
			$get('customization_video').height = "0";
			$get('customization_video').width = "0";
			$get('dataownership_video').height = "0";
			$get('dataownership_video').width = "0";
		}

	},
	showVideo: function()
	{
		if (IsFirefox || IsSafari)
		{
			$get('integration_video').height = "236";
			$get('integration_video').width = "416";
			$get('customization_video').height = "236";
			$get('customization_video').width = "416";
			$get('dataownership_video').height = "236";
			$get('dataownership_video').width = "416";
		}
	},
	setButtonActive: function(e)
	{
		$get("btnHome").className = "";
		$get("btnIntegration").className = "";
		$get("btnCustomization").className = "";
		$get("btnDataOwnership").className = "";

		$get(e.target.id).className = "selected";
	}
}
