﻿if (!window.GS)
    window.GS = {};

    
VideoPlayer = function(control, target, source, width, height)
{
    this.target = target; 
    
    videoPlayer = target.findName("PlayerContent");
    var mediaElement = target.findName("MediaElement");
    var videoControls = target.findName("VideoControls");        
    
    var buttonRewind = target.findName("ButtonRewind");            
    var buttonPlayPause = target.findName("ButtonPlayPause");        
    var buttonFullscreen = target.findName("ButtonFullscreen");            
    
    videoPlayer.Width = width;
    videoPlayer.Height = height;
    
    mediaElement.Source = source;
    mediaElement["Canvas.Top"] = 0;
    mediaElement["Canvas.Left"] = 0;        
    mediaElement.Width = width;
    mediaElement.Height = height-30;
    
    videoControls["Canvas.Top"] = height - 30;
    videoControls["Canvas.Left"] = 0;
    videoControls.Width = width;    
    
    videoPlayer.getHost().content.onfullScreenChange = this.onFullScreenChanged;
    mediaElement.addEventListener("CurrentStateChanged", createDelegate(this, this.onCurrentStateChanged));
    
    buttonPlayPause.addEventListener("MouseLeftButtonDown", createDelegate(this, this.onPlayPauseDown));
    buttonRewind.addEventListener("MouseLeftButtonDown", createDelegate(this, this.onRewindDown));
    buttonFullscreen.addEventListener("MouseLeftButtonDown", createDelegate(this, this.onFullscreenDown));

   
    
    
}

VideoPlayer.prototype = 
{
    videoPlayer : Object,
    
    onPlayPauseDown: function(sender, eventArgs)
    {
        var mediaElement = videoPlayer.findName("MediaElement");
        if (mediaElement.CurrentState == "Playing")
        {
            mediaElement.pause();
        } else
        {
            mediaElement.play();
        }
    },
    
    onRewindDown: function(sender, eventArgs)
    {
        var mediaElement = videoPlayer.findName("MediaElement");
        var state = mediaElement.CurrentState;
        
        mediaElement.stop();
        
        if (state == "Playing")
        {
            mediaElement.play();
        }
    },
    
    onFullscreenDown: function(sender, eventArgs)
    {
        var silverlightPlugin = sender.getHost();
        silverlightPlugin.content.fullScreen = !silverlightPlugin.content.fullScreen;                  
        
    },
    
    onCurrentStateChanged: function(sender, eventArgs)    
    {
        var statusDisplay = videoPlayer.findName("StatusDisplay");    
        var mediaElement = videoPlayer.findName("MediaElement");
        var state = mediaElement.CurrentState;
        
        statusDisplay.Text = mediaElement.CurrentState;
    },
    
    
    
    onFullScreenChanged: function(sender, eventArgs)
    {      
    
        var silverlightPlugin = sender.getHost();
        var videoControls = videoPlayer.findName("VideoControls");
        
        var mediaElement = videoPlayer.findName("MediaElement");
        
        videoPlayer.Width = silverlightPlugin.content.actualWidth;
        videoPlayer.Height = silverlightPlugin.content.actualHeight-30;
        mediaElement.width = silverlightPlugin.content.actualWidth;
        mediaElement.height = silverlightPlugin.content.actualHeight-30;
     
        videoControls["Canvas.Top"] = silverlightPlugin.content.actualHeight-30;
        videoControls.Width = silverlightPlugin.content.actualWidth;
        
        
    }
}

function createDelegate(instance, method) {
	return function() {
		return method.apply(instance, arguments);
	}
}