var adoptionVideoLoaded = false;
var deploymentVideoLoaded = false;
var roiVideoLoaded = false;

function pluginLoaded(sender, e) {
    switch (sender.get_id()) {
        case "adoption_video": adoptionVideoLoaded = true;
            break;

        case "deployment_video": deploymentVideoLoaded = true;
            break;

        case "roi_video": roiVideoLoaded = 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 MsSearch()
{
    PauseForExternal();
    
    window.open("http://search.microsoft.com/results.aspx?mkt=en-US&setlang=en-US&q=" + $get('tbSearchBox').value);
    return false;
}

function PauseForExternal()
{
    if(!t.isDisplayingCaseStudy)
	    t.control.pause();
}

function pageLoad()
{
    
    t.isDisplayingCaseStudy = false;
    
    // fire tracking for pageload
	tracking.track('atlasTag1');
    
	t.marker.m = $get('marker');
	t.clock.mins = $get('mins');
	t.clock.tens = $get('tens');
	t.clock.ones = $get('ones');
	t.clock.reset();
	t.clock.update();
	
	t.control.icon = $get('iconPauseBtn');
	t.control.label = $get('labelPauseBtn');
	
	t.CaseStudyManager.AddCloseButton($get('cs_btn_close'));
	t.CaseStudyManager.AddButton($get('adoption_case_btn'), $get('adoption_dialog_container'), 0, -505);
	t.CaseStudyManager.AddButton($get('adoption_movie_btn_case'), $get('adoption_movie_container'), 0, -505);
	t.CaseStudyManager.AddButton($get('deployment_btn_case'), $get('deployment_container'), 0, -505);
	t.CaseStudyManager.AddButton($get('deployment_movie_btn_case'), $get('deployment_movie_container'), 0, -505);
	t.CaseStudyManager.AddButton($get('roi_btn_case'), $get('roi_container'), 0, -505);
	t.CaseStudyManager.AddButton($get('roi_movie_btn_case'), $get('roi_movie_container'), 0, -505);
	
	$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);
	
	// create and register menu items
	t.menu.ManageMenuItem('btnHome', 180000);
	t.menu.ManageMenuItem('btnAdoption', 163500);
	t.menu.ManageMenuItem('btnDeployment', 131750);
	t.menu.ManageMenuItem('btnROI', 62375);
	t.menu.ManageMenuItem('home_btn_next', 164000);
	t.menu.ManageMenuItem('adoption_btn_next', 150500);
	t.menu.ManageMenuItem('adoption_movie_btn_next', 132250);
	t.menu.ManageMenuItem('deployment_btn_next', 107500);
	t.menu.ManageMenuItem('deployment_movie_btn_next', 63000);
	t.menu.ManageMenuItem('roi_btn_next', 45000);
	t.menu.ManageMenuItem('roi_movie_btn_next', 10000);
	
	// create and register animations
	t.winManager.AddAnimation(new Animation('home_dialog_entry', $get('home_dialog_conatiner'), 180000, 179250, new Tweener(-471, 0)));
	t.winManager.AddAnimation(new Animation('home_dialog_middle', $get('home_dialog_conatiner'), 179250, 164000, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('home_dialog_exit', $get('home_dialog_conatiner'), 164000, 163250, new Tweener(0, -471)));
	t.winManager.AddAnimation(new Animation('home_dialog_end', $get('home_dialog_conatiner'), 163250, 0, new Tweener(-471, -471)));
	
	t.winManager.AddAnimation(new Animation('home_subheader_start', $get('home_subheader'), 180000, 179250, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('home_subheader_start', $get('home_subheader'), 179250, 178500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('home_subheader_start', $get('home_subheader'), 178500, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('home_copy_start', $get('home_copy'), 180000, 178500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('home_copy_start', $get('home_copy'), 178500, 177750, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('home_copy_start', $get('home_copy'), 177750, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('home_thumb_entry', $get('home_thumb'), 180000, 177750, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('home_thumb_entry', $get('home_thumb'), 177750, 177000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('home_thumb_entry', $get('home_thumb'), 177000, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('home_caption_entry', $get('home_caption'), 180000, 177750, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('home_caption_entry', $get('home_caption'), 177750, 177000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('home_caption_entry', $get('home_caption'), 177000, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('character1_start', $get('character1'), 180000, 175000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('character1_entry', $get('character1'), 175000, 174500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('character1_middle', $get('character1'), 174500, 163500, new Fader(10, 10)));
	t.winManager.AddAnimation(new Animation('character1_exit', $get('character1'), 163500, 163000, new Fader(10, 0)));
	t.winManager.AddAnimation(new Animation('character1_end', $get('character1'), 163000, 0, new Fader(0, 0)));
	
	t.winManager.AddAnimation(new Animation('character2_start', $get('character2'), 180000, 174000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('character2_entry', $get('character2'), 174000, 173500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('character2_middle', $get('character2'), 173500, 163500, new Fader(10, 10)));
	t.winManager.AddAnimation(new Animation('character2_exit', $get('character2'), 163500, 163000, new Fader(10, 0)));
	t.winManager.AddAnimation(new Animation('character2_end', $get('character2'), 163000, 0, new Fader(0, 0)));
	
	t.winManager.AddAnimation(new Animation('adoption_dialog_start', $get('adoption_dialog_container'), 180000, 163000, new Tweener(-506, -506)));
	t.winManager.AddAnimation(new Animation('adoption_dialog_entry', $get('adoption_dialog_container'), 163000, 162250, new Tweener(-506, 0)));
	t.winManager.AddAnimation(new Animation('adoption_dialog_middle', $get('adoption_dialog_container'), 162250, 150000, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('adoption_dialog_exit', $get('adoption_dialog_container'), 150000, 149500, new Tweener(0, -506)));
	t.winManager.AddAnimation(new Animation('adoption_dialog_end', $get('adoption_dialog_container'), 149500, 0, new Tweener(-506, -506)));
	
	t.winManager.AddAnimation(new Animation('adoption_subheader_start', $get('adoption_subheader'), 180000, 162250, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('adoption_subheader_entry', $get('adoption_subheader'), 162250, 161750, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('adoption_subheader_end', $get('adoption_subheader'), 161500, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('adoption_bullet1_start', $get('adoption_bullet1'), 180000, 161750, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('adoption_bullet1_entry', $get('adoption_bullet1'), 161750, 161250, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('adoption_bullet1_end', $get('adoption_bullet1'), 161250, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('adoption_bullet2_start', $get('adoption_bullet2'), 180000, 161250, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('adoption_bullet2_entry', $get('adoption_bullet2'), 161250, 160750, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('adoption_bullet2_end', $get('adoption_bullet2'), 160750, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('adoption_bullet3_start', $get('adoption_bullet3'), 180000, 160750, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('adoption_bullet3_entry', $get('adoption_bullet3'), 160750, 160250, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('adoption_bullet3_end', $get('adoption_bullet3'), 160250, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('adoption_movie_start', $get('adoption_movie_container'), 180000, 149500, new Tweener(-506, -506)));
	t.winManager.AddAnimation(new Animation('adoption_movie_entry', $get('adoption_movie_container'), 149500, 149000, new Tweener(-506, 0)));
	t.winManager.AddAnimation(new Animation('adoption_movie_middle', $get('adoption_movie_container'), 149000, 131000, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('adoption_movie_exit', $get('adoption_movie_container'), 131000, 130500, new Tweener(0, -506)));
	t.winManager.AddAnimation(new Animation('adoption_movie_end', $get('adoption_movie_container'), 130500, 0, new Tweener(-506, -506)));
	
	t.winManager.AddAnimation(new Animation('adoption_movie_video_pre', $get('adoption_video'), 180000, 149000, new PlayerController(PLAYER_STOP, 'adoption.wvx')));
	t.winManager.AddAnimation(new Animation('adoption_movie_video_play', $get('adoption_video'), 149000, 131500, new PlayerController(PLAYER_START, 'adoption.wvx')));
	t.winManager.AddAnimation(new Animation('adoption_movie_video_post', $get('adoption_video'), 131500, 0, new PlayerController(PLAYER_STOP, 'adoption.wvx')));
	
	t.winManager.AddAnimation(new Animation('adoption_movie_subheader_start', $get('adoption_movie_subheader'), 180000, 149000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('adoption_movie_subheader_entry', $get('adoption_movie_subheader'), 149000, 148500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('adoption_movie_subheader_end', $get('adoption_movie_subheader'), 148500, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('adoption_movie_view_start', $get('adoption_movie_view'), 180000, 148500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('adoption_movie_view_entry', $get('adoption_movie_view'), 148500, 148000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('adoption_movie_view_end', $get('adoption_movie_view'), 148000, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('deployment_dialog_start', $get('deployment_container'), 180000, 130500, new Tweener(-506, -506)));
	t.winManager.AddAnimation(new Animation('deployment_dialog_entry', $get('deployment_container'), 130500, 130000, new Tweener(-506, 0)));
	t.winManager.AddAnimation(new Animation('deployment_dialog_middle', $get('deployment_container'), 130000, 109000, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('deployment_dialog_exit', $get('deployment_container'), 109000, 108500, new Tweener(0, -506)));
	t.winManager.AddAnimation(new Animation('deployment_dialog_end', $get('deployment_container'), 108500, 0, new Tweener(-506, -506)));
	
	t.winManager.AddAnimation(new Animation('deployment_bullet1_start', $get('deployment_bullet1'), 180000, 130000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('deployment_bullet1_entry', $get('deployment_bullet1'), 130000, 129500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('deployment_bullet1_end', $get('deployment_bullet1'), 129500, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('deployment_bullet2_start', $get('deployment_bullet2'), 180000, 129500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('deployment_bullet2_entry', $get('deployment_bullet2'), 129500, 129000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('deployment_bullet2_end', $get('deployment_bullet2'), 129000, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('deployment_bullet3_start', $get('deployment_bullet3'), 180000, 129000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('deployment_bullet3_entry', $get('deployment_bullet3'), 129000, 128500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('deployment_bullet3_end', $get('deployment_bullet3'), 128500, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('deployment_movie_start', $get('deployment_movie_container'), 180000, 105500, new Tweener(-506, -506)));
	t.winManager.AddAnimation(new Animation('deployment_movie_entry', $get('deployment_movie_container'), 105500, 105000, new Tweener(-506, 0)));
	t.winManager.AddAnimation(new Animation('deployment_movie_middle', $get('deployment_movie_container'), 105000, 60000, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('deployment_movie_exit', $get('deployment_movie_container'), 60000, 59500, new Tweener(0, -506)));
	t.winManager.AddAnimation(new Animation('deployment_movie_end', $get('deployment_movie_container'), 59500, 0, new Tweener(-506, -506)));
	
	t.winManager.AddAnimation(new Animation('deployment_movie_subheader_start', $get('deployment_movie_subheader'), 180000, 105000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('deployment_movie_subheader_entry', $get('deployment_movie_subheader'), 105000, 104500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('deployment_movie_subheader_middle', $get('deployment_movie_subheader'), 104500, 87000, new Fader(10, 10)));
	t.winManager.AddAnimation(new Animation('deployment_movie_subheader_transition_start', $get('deployment_movie_subheader'), 87000, 86500, new Fader(10, 0)));
	t.winManager.AddAnimation(new Animation('deployment_movie_subheader_transition_end', $get('deployment_movie_subheader'), 86500, 86000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('deployment_movie_subheader_end', $get('deployment_movie_subheader'), 86000, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('deployment_movie_view_start', $get('deployment_movie_view'), 180000, 104500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('deployment_movie_view_entry', $get('deployment_movie_view'), 104500, 104000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('deployment_movie_view_end', $get('deployment_movie_view'), 104000, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('deployment_movie_video_start', $get('deployment_video'), 180000, 105000, new PlayerController(PLAYER_STOP, 'deploy.wvx')));
	t.winManager.AddAnimation(new Animation('deployment_movie_video_entry', $get('deployment_video'), 105000, 60000, new PlayerController(PLAYER_START, 'deploy.wvx')));
	t.winManager.AddAnimation(new Animation('deployment_movie_video_end', $get('deployment_video'), 60000, 0, new PlayerController(PLAYER_STOP, 'deployment.wvx')));
	
	t.winManager.AddAnimation(new Animation('roi_dialog_start', $get('roi_container'), 180000, 59500, new Tweener(-505, -505)));
	t.winManager.AddAnimation(new Animation('roi_dialog_entry', $get('roi_container'), 59500, 59000, new Tweener(-505, 0)));
	t.winManager.AddAnimation(new Animation('roi_dialog_middle', $get('roi_container'), 59000, 42000, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('roi_dialog_exit', $get('roi_container'), 42000, 41500, new Tweener(0, -505)));
	t.winManager.AddAnimation(new Animation('roi_dialog_end', $get('roi_container'), 41500, 0, new Tweener(-505, -505)));
	
	t.winManager.AddAnimation(new Animation('roi_subheader_start', $get('roi_subheader'), 180000, 59000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('roi_subheader_entry', $get('roi_subheader'), 59000, 58500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('roi_subheader_end', $get('roi_subheader'), 58500, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('roi_bullet1_start', $get('roi_bullet1'), 180000, 58500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('roi_bullet1_entry', $get('roi_bullet1'), 58500, 58000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('roi_bullet1_end', $get('roi_bullet1'), 58000, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('roi_bullet2_start', $get('roi_bullet2'), 180000, 58000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('roi_bullet2_entry', $get('roi_bullet2'), 58000, 57500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('roin_bullet2_end', $get('roi_bullet2'), 57500, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('roi_bullet3_start', $get('roi_bullet3'), 180000, 57500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('roi_bullet3_entry', $get('roi_bullet3'), 57500, 57000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('roi_bullet3_end', $get('roi_bullet3'), 57000, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('roi_movie_start', $get('roi_movie_container'), 180000, 41500, new Tweener(-506, -506)));
	t.winManager.AddAnimation(new Animation('roi_movie_entry', $get('roi_movie_container'), 41500, 41000, new Tweener(-506, 0)));
	t.winManager.AddAnimation(new Animation('roi_movie_middle', $get('roi_movie_container'), 41000, 6000, new Tweener(0, 0)));
	t.winManager.AddAnimation(new Animation('roi_movie_exit', $get('roi_movie_container'), 6000, 5500, new Tweener(0, -506)));
	t.winManager.AddAnimation(new Animation('roi_movie_end', $get('roi_movie_container'), 5500, 0, new Tweener(-506, -506)));
	
	t.winManager.AddAnimation(new Animation('roi_movie_subheader_start', $get('roi_movie_subheader'), 180000, 41000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('roi_movie_subheader_entry', $get('roi_movie_subheader'), 41000, 40500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('roi_movie_subheader_end', $get('roi_movie_subheader'), 40500, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('roi_movie_view_start', $get('roi_movie_view'), 180000, 40500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('roi_movie_view_entry', $get('roi_movie_view'), 40500, 40000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('roi_movie_view_end', $get('roi_movie_view'), 40000, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('roi_movie_video_start', $get('roi_video'), 180000, 41000, new PlayerController(PLAYER_STOP, 'roi.wvx')));
	t.winManager.AddAnimation(new Animation('roi_movie_video_entry', $get('roi_video'), 41000, 6500, new PlayerController(PLAYER_START, 'roi.wvx')));
	t.winManager.AddAnimation(new Animation('roi_movie_video_end', $get('roi_video'), 6500, 0, new PlayerController(PLAYER_STOP, 'roi.wvx')));
	
	t.winManager.AddAnimation(new Animation('thankyou_dialog_start', $get('thankyou_dialog_container'), 180000, 5500, new Tweener(-506, -506)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_entry', $get('thankyou_dialog_container'), 5500, 5000, new Tweener(-506, 0)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_end', $get('thankyou_dialog_container'), 5000, 0, new Tweener(0, 0)));
	
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet1_start', $get('thankyou_dialog_bullet1'), 180000, 5000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet1_entry', $get('thankyou_dialog_bullet1'), 5000, 4500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet1_end', $get('thankyou_dialog_bullet1'), 4500, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet2_start', $get('thankyou_dialog_bullet2'), 180000, 4500, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet2_entry', $get('thankyou_dialog_bullet2'), 4500, 4000, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet2_end', $get('thankyou_dialog_bullet2'), 4000, 0, new Fader(10, 10)));
	
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet3_start', $get('thankyou_dialog_bullet3'), 180000, 4000, new Fader(0, 0)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet3_entry', $get('thankyou_dialog_bullet3'), 4000, 3500, new Fader(0, 10)));
	t.winManager.AddAnimation(new Animation('thankyou_dialog_bullet3_end', $get('thankyou_dialog_bullet3'), 3500, 0, new Fader(10, 10)));
	
	
	t.util.disableSelection($get('timelineContainer'));
	t.clock.start();
	
//	if(!HasWMP)
//	{
//	    t.control.pause();
//	}
}

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 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 = "239";
                                    visualElement.width = "320";
                                }
                    	        
	                            // 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 = "239";
                                visualElement.width = "320";
                            }
                	        
	                        // start movie at appropriate position 
                            visualElement.controls.currentPosition = Math.ceil(elapsedTime / 1000)
                            visualElement.controls.play();
                        break; 
                    }
                break;
        }
    }

    this.AnimateSilverlight = function(visualElement, startTime, endTime, currentTime) {
        var _player = $find(visualElement.id);
        if (visualElement.id == "adoption_video" && adoptionVideoLoaded == false) { return; }
        if (visualElement.id == "deployment_video" && deploymentVideoLoaded == false) { return; }
        if (visualElement.id == "roi_video" && roiVideoLoaded == 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 = "239px";
                                _player.width = "320px";
                            }

                            // 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 = "239px";
                            _player.width = "320px";
                        }

                        // start movie at appropriate position
                        _player.Finished = false;
                        _player.set_position(Math.ceil(elapsedTime / 1000))
                        _player.play();
                }
                break;
        }
    }
}


t.timeline={
	/* set the timelines width and current x position for calculation purposes */
	x : 130,
	w : 830
}
t.clock={
	mins : Object,
	tens : Object,
	ones : Object,
	/* totalTime for 5 mins = 300000 */
	totalTime : 180000,
	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.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 : 40,
	y : 35,
	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);
		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/timeline-pauseBtn.gif",
    iconPlay: "images/timeline-playBtn.gif",
    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('deployment_movie_subheader').style.backgroundImage = currTime <= 86500 ? "url('images/deploy_subhead2.gif')" : "url('images/deploy_movie_subhead.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);
        $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('adoption_video').height = "0";
                $get('adoption_video').width = "0";
                $get('deployment_video').height = "0";
                $get('deployment_video').width = "0";
                $get('roi_video').height = "0";
                $get('roi_video').width = "0";
            }
	    
	},
	showVideo : function()
	{
	    if(IsFirefox || IsSafari)
            {
                $get('adoption_video').height = "239";
                $get('adoption_video').width = "320";
                $get('deployment_video').height = "239";
                $get('deployment_video').width = "320";
                $get('roi_video').height = "239";
                $get('roi_video').width = "320";
            }
	}
}
