﻿if (!window.hvdemo1)
	window.hvdemo1 = {};

var _control;
var _parentCanvas;

hvdemo1.Page = function() 
{
}

hvdemo1.Page.prototype =
{
	handleLoad: function(control, userContext, rootElement) 
	{
		 this.control = control;
		 _control = this.control;
		 _parentCanvas = this.control.content.findName("parentCanvas");
		
	 	_downLoader = control.createObject("downloader");
		
		_downLoader.addEventListener("downloadProgressChanged", "DownloadProgressChanged");
		_downLoader.addEventListener("completed", "DownloadCompleted");
		
		_downLoader.open("GET","App.zip");
        _downLoader.send();
        
		
		this.control.content.findName("borderFlash").Begin();
		this.control.content.findName("LoadingProgressBar").Begin();
	}
}

var _downLoader;
var _position = 0;
var _maxSlide = 8;
var _maxWidth = 799.50;
var _isStarted = false;
var _isPaused = true;

        
var _slideTitles = ['The Challenge', 'The Solution', 'Sample Scenario','Discharge Summary', 'Allergy Warning','Visiting Pediatrician', 'Medical History', 'Benefits to Hospitals'];
        

var _progressBarStartWidth = 0.0;
var _progressBarEndWidth;
var _slide;
var _slides = new Array(_maxSlide);
var _nextSlide;
var _nextSlideText;
var _audioClip;

	
function PlayButtonMouseUp(sender, mouseEventArgs)
{
	sender.findName("PlayButtonUp").Begin();		
}
      
function PlayButtonMouseDown(sender, mouseEventArgs)
{
	sender.findName("PlayButtonDown").Begin();	
    
	if (_isPaused)
    {
        _isPaused = false;
        sender.findName("Play").visibility = "collapsed";
        sender.findName("Pause").visibility = "visible";
        
        if (_isStarted)
        {
            //_position = _position - 1; //ensures Moveslide will play current paused slide first
            _control.content.findName("AudioClip").Play();
    	    _control.content.findName("sbTimer").Begin();
        }
        else //startShow
        {
            sender.findName("LoadingProgressBar").Stop();
            _isStarted = true;
            sender.findName("showLoading").visibility = "collapsed";            
            _position = 1;
            StartShow(sender);
        }
    }
    else
    {
        _isPaused = true;
        sender.findName("Play").visibility = "visible";
        sender.findName("Pause").visibility = "collapsed";
    	_control.content.findName("AudioClip").Pause();
    	_control.content.findName("sbTimer").Pause();
    	
    }
}

function PlayButtonMouseLeave(sender, eventArgs)
{
	sender.findName("PlayMouseOut").Begin();
}

function PlayButtonMouseEnter(sender, mouseEventArgs)
{
    sender.findName("PlayMouseOver").Begin();
    sender.Cursor = "Hand";
}

function PreviousButtonMouseDown(sender, mouseEventArgs)
{
	sender.findName("PreviousButtonDown").Begin();
    if (_position > 1)
    {
    	sender.findName("AudioClip").Stop();
        MoveSlide(false);
    }
    if (_isPaused)
    {
        sender.findName("AudioClip").Stop();
    }
}

function PreviousButtonMouseUp(sender, mouseEventArgs)
{
	sender.findName("PreviousButtonDown").Stop();
}

function PreviousButtonMouseLeave(sender, eventArgs)
{
	sender.findName("PreviousButtonOver").Stop();
}

function PreviousButtonMouseEnter(sender, mouseEventArgs)
{
	sender.findName("PreviousButtonOver").Begin();
	sender.Cursor = "Hand";
}

function NextButtonMouseEnter(sender, mouseEventArgs)
{
	sender.findName("NextButtonOver").Begin();
	sender.Cursor = "Hand";
}

function NextButtonMouseLeave(sender, eventArgs)
{
	sender.findName("NextButtonOver").Stop();
}

function NextButtonMouseDown(sender, mouseEventArgs)
{
    sender.findName("sbTimer").Stop();
	sender.findName("NextButtonDown").Begin();
	
    if (_position < _maxSlide)
    {
        sender.findName("AudioClip").Stop();               
        if(!_isStarted)
	    {
	        _isStarted = true;
        }
        else //it's not the first clip so adjust progress button to match the progress bar
        {
            _control.content.findName("ProgressButton")["Canvas.Left"] = _control.content.findName("progressRect")["Canvas.Left"] + _progressBarEndWidth - (_control.content.findName("ProgressButton").width /2);
        }
        MoveSlide(true);
    }
}

function NextButtonMouseUp(sender, mouseEventArgs)
{
	sender.findName("NextButtonDown").Stop();            
}


function sbTimerCompleted(sender, eventArgs)
{
    var progButton = sender.findName("ProgressButton");
	var audioClip = sender.findName("AudioClip");
		
	var percent = audioClip.position.seconds / audioClip.naturalDuration.seconds;

	var progressBarCurrentWidth = _progressBarStartWidth + Math.floor(percent * (_progressBarEndWidth - _progressBarStartWidth));
    
    sender.findName("ProgressButton")["Canvas.Left"] = sender.findName("progressRect")["Canvas.Left"] + progressBarCurrentWidth - (sender.findName("ProgressButton").width /2);
	sender.findName("progressRect").width = progressBarCurrentWidth;
	
        
	//restart the "timer" storyboard
	sender.Begin();
        
}

function AudioClipMediaOpened(sender, eventArgs)
{
    if(!_isPaused)
    {
        sender.findName("AudioClip").Play();
	    sender.findName("sbTimer").Begin();
    }
}

function AudioClipMediaEnded(sender, eventArgs)
{
	sender.findName("sbTimer").Stop();
	if (_position < _maxSlide)
	{
		sender.findName("AudioClip").Stop();
		
		if(!_isPaused) //in automode so move to next Slide
		{ 
            MoveSlide(true);
        }
	}
}

function DownloadCompleted(sender, args)
{            
	sender.findName("SlideNumber").SetFontSource(sender);
	sender.findName("SlideTitle").SetFontSource(sender);
	sender.findName("Copyright").SetFontSource(sender);
	sender.findName("loadingText").SetFontSource(sender);
	sender.findName("Disclaimer").SetFontSource(sender);
	sender.findName("NextSlide").SetFontSource(sender);

	
	sender.findName("Copyright").FontFamily = "Segoe UI";
	sender.findName("SlideTitle").FontFamily = "Segoe UI";
	sender.findName("SlideNumber").FontFamily = "Segoe UI";
	//sender.findName("loadingText").FontFamily = "Segoe UI";
	sender.findName("Disclaimer").FontFamily = "Segoe UI";
	sender.findName("NextSlide").FontFamily = "Segoe UI";

	sender.findName("Copyright").Visibility = "visible";
	sender.findName("Disclaimer").Visibility = "visible";
	
	sender.findName("PlayerControlFade").Begin();
	sender.findName("AudioClip").SetSource(sender, "clip1.wma");
	
	var SlideCanvas = _parentCanvas.findName("SlideCanvas");
	
    for (var x = 0; x < _maxSlide; x++)
	{
	    var slideImage = _parentCanvas.findName("SlideImage" + (x+1));
	    var slideCanvas = _parentCanvas.findName("Slide" + (x+1));
	    
	    slideImage.setSource(sender, "slides/Slide" + (x+1) + ".jpg");
	    slideCanvas.visibility = "collapsed";
	    _slides[x] = slideCanvas;
	}		
}

function DownloadProgressChanged(sender, args)
{            
	var percentCompete = Math.floor(_downLoader.downloadProgress * 100);
	sender.findName("loadingText").Text = "Loading... " + percentCompete + "% completed";
    sender.findName("loadingProgress").width = 700.00 * _downLoader.downloadProgress;
}


function StartShow(control)
{
	_nextSlide = control.findName("NextSlide");
    _nextSlide.Visibility = "visible";
	
	_nextSlideText = control.findName("NextSlideText");
    _nextSlideText.Text = _slideTitles[_position];
    _nextSlide["Canvas.Left"] = 912 - _nextSlide.ActualWidth;

    control.findName("ProgressButton").Visibility = "Visible";
    control.findName("SlideTitle").Visibility = "Visible";
    control.findName("SlideNumber").Visibility = "Visible";
    control.findName("SlideCanvas").Visibility = "Visible";
    _slides[0].Visibility = "Visible";
    control.findName("SlideTitle").Text = _slideTitles[_position - 1];           
           
	_progressBarStartWidth = control.findName("progressRect").Width;
    _progressBarEndWidth = control.findName("progressRect").Width + (_maxWidth / _maxSlide);
    
    if(!_isPaused)
    {
        control.findName("AudioClip").SetSource(_downLoader, "clip1.wma");
        //control.findName("AudioClip").AutoPlay = true;        
        control.findName("AudioClip").Play();
    }
    else
    {
        //control.findName("progressRect").Width = _progressBarEndWidth;
        control.findName("ProgressButton")["Canvas.Left"] = control.findName("progressRect")["Canvas.Left"] + (control.findName("progressRect").width /2);
    }
}


function MoveSlide(isNext)
{
    if (_position == 0) //on the opening slide
    {
        _isStarted = true;
        _control.content.findName("showLoading").visibility = "collapsed";
        _position = 1;
        StartShow(_control.content);
    }
    else
    {  

        var progRect = _control.content.findName("progressRect");
        var aClip = _control.content.findName("AudioClip");
    
        var transOutXMLString = '<Storyboard xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="TransitionOut' + _position +  '"><DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="' + _slides[_position - 1].Name + '" Storyboard.TargetProperty="(UIElement.Opacity)"><SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/><SplineDoubleKeyFrame KeyTime="00:00:1" Value="0"/></DoubleAnimationUsingKeyFrames></Storyboard>';           
        var sbTransitionOut = _control.content.createFromXAML(transOutXMLString);

        sbTransitionOut.addEventListener("completed", Silverlight.createDelegate(this, function(sender, eventArgs){_control.content.root.Resources.Remove(sbTransitionOut);_slides[_position - 2].Visibility = "Collapsed";}));

    if (isNext)
    {
        _position++;
        progRect.Width = _position * (_maxWidth / _maxSlide) - (_maxWidth / _maxSlide);
        _progressBarStartWidth = progRect.Width;
        _progressBarEndWidth = progRect.Width + (_maxWidth / _maxSlide);                    
                
    }
    else
    {
        _position--;
        progRect.Width = _position * (_maxWidth / _maxSlide);
        _progressBarStartWidth = progRect.Width - (_maxWidth / _maxSlide);
        _progressBarEndWidth = progRect.Width;
    }
    
    if(_isPaused)
    {
        progRect.Width = _progressBarStartWidth;
        _control.content.findName("ProgressButton")["Canvas.Left"] = _control.content.findName("progressRect")["Canvas.Left"] + _progressBarStartWidth - (_control.content.findName("ProgressButton").width /2);
    }   
    
    
    var transInXMLString = '<Storyboard xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="TransitionIn' + _position +  '"><DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="' + _slides[_position - 1].Name + '" Storyboard.TargetProperty="(UIElement.Opacity)"><SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/><SplineDoubleKeyFrame KeyTime="00:00:1" Value="1"/></DoubleAnimationUsingKeyFrames></Storyboard>';
    var sbTransitionIn = _control.content.createFromXAML(transInXMLString);

    sbTransitionIn.addEventListener("completed", Silverlight.createDelegate(this, function(sender, eventArgs){_control.content.root.Resources.Remove(sbTransitionIn);_slides[_position - 1].Visibility = "Visible";aClip.SetSource(_downLoader, "clip" + (_position) + ".wma");if(!_isPaused){aClip.Play();}}));
          
    _slides[_position - 1].Visibility = "Visible";
    _control.content.root.Resources.Add(sbTransitionOut);
    _control.content.root.Resources.Add(sbTransitionIn);

    sbTransitionOut.Begin();
    sbTransitionIn.Begin();
            
    //update the slide # and Slide Title
    
    _control.content.findName("SlideTitle").Text = _slideTitles[_position - 1];

    if (_position < _maxSlide)
    {
        _control.content.findName("SlideNumber").Text = "0" + _position;
        _nextSlide.Visibility = "Visible";
        _control.content.findName("NextSlideText").Text = _slideTitles[_position];
        _nextSlide["Canvas.Left"] = 912 - _nextSlide.ActualWidth;
    }
    else
    {
        if(_position > 9)
        {
            _control.content.findName("SlideNumber").Text = "" + _maxSlide;
        }
        else
        {
            _control.content.findName("SlideNumber").Text = "0" + _position;
        }
        
        _nextSlide.Visibility = "collapsed";
    }
    
    }
}
