if (!window.VideoPlayer)
	window.VideoPlayer = {};

VideoPlayer.Page = function() 
{
}

VideoPlayer.Page.prototype =
{
	handleLoad: function(control, userContext, rootElement) 
	{
		this.control = control;
		
		// Sample event hookup:	
		rootElement.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleMouseDown));
	},
	
	// Sample event handler
	handleMouseDown: function(sender, eventArgs) 
	{
		// The following line of code shows how to find an element by name and call a method on it.
		// this.control.content.findName("Timeline1").Begin();
	}
}

//global references
var main;
var plugin;

//movie variables
var durTime;
var durSecs;
var newPos=0;
var curPos;
var paused=false;
var isMouseDown=false;
var isVolMouseDown = false;
var statLeft;
var statRight;

function RootCanvasLoaded(sender, eventArgs){
    //test
    //alert(url);
    
    //set up global variables
    main=sender.findName("Page");
    plugin = sender.getHost();   
    plugin.content.onfullScreenChange = onFullScreenChanged;
    //alert(plugin.initParams);
    main.findName("VidElement").Source = plugin.initParams;
    //
    statLeft = main.findName("statusBarContainer")["Canvas.left"];
    statRight = statLeft + main.findName("statusBarContainer").Width;      
    
}

//------------------------------------------------
//event handler for when media element is opened

function onMediaOpen(sender, args){
    //set total duration in seconds
    durSecs = Math.round(sender.findName("VidElement").NaturalDuration.Seconds);
    durTime = new TimeObject(durSecs); 
    var timestring = durTime.getHours() + ":" + durTime.getMinutes() + ":" + durTime.getSeconds();
    main.findName("duration").Text = timestring;    
    //display time elapsed    
    intUpdate = setInterval("updatePos()", 10);
    //set volume
    sender.findName("VidElement").volume = "0.5";
    sender.findName("volumeStatusBarBlue").width = "30";
    sender.findName("btnVolumeSlider")["Canvas.Left"] = "30";
}


//------------------------------------------------
//event handler for media state change

function MediaStateChanged(sender, args){
    var media = sender.findName("VidElement");    
    if (media.CurrentState=="Paused"){
        //hide pause button
        main.findName("btnPause").Opacity = 0;
        main.findName("btnPlay").Opacity = 1;
        main.findName("btnPause").IsHitTestVisible = false;
        main.findName("btnPlay").IsHitTestVisible = true;        
    }else if (media.CurrentState=="Playing"){
        //hide play button
        main.findName("btnPause").Opacity = 1;
        main.findName("btnPlay").Opacity = 0;
        main.findName("btnPause").IsHitTestVisible = true;
        main.findName("btnPlay").IsHitTestVisible = false;
    }
}


//------------------------------------------------
//Various menu button handlers

function media_pause(sender, args) {
    sender.findName("VidElement").pause();
}

function media_begin(sender, args) {
    sender.findName("VidElement").play();
}

function toggle_fullScreen(sender, args)
{
 
}


//------------------------------------------------
//For user feedback on movie display progress

function updatePos(){

    if (isMouseDown==false){   
        var curSecs = newPos;        
        var curTime = new TimeObject(curSecs);
        //
        var timestring = curTime.getHours() + ":" + curTime.getMinutes() + ":" + curTime.getSeconds();
        main.findName("currentTime").Text = timestring;
        //
        main.findName("btnStatusSlider")["Canvas.Left"] = ((curSecs/durSecs)*main.findName("statusBarBgPath").width);
        main.findName("statusBarBlue").width = main.findName("btnStatusSlider")["Canvas.Left"]; 
        //
        newPos = main.findName("VidElement").Position.Seconds;
  
    }else if (isMouseDown==true){    
        
        //
        var cursorPos = main.findName("btnStatusSlider")["Canvas.Left"];    
        main.findName("statusBarBlue").width = main.findName("btnStatusSlider")["Canvas.Left"];
        //  
        var curTime = new TimeObject(durSecs * (cursorPos/main.findName("statusBarBgPath").width));
        var timestring = curTime.getHours() + ":" + curTime.getMinutes() + ":" + curTime.getSeconds();
        //
        main.findName("currentTime").Text = timestring;             
        main.findName("VidElement").Position = curTime.getHours() + ":" + curTime.getMinutes() + ":" + curTime.getSeconds();        
        //        
        newPos = durSecs * (cursorPos/main.findName("statusBarBgPath").width);            
        
    }
}


//------------------------------------------------
//For the seeking functionality

function onSliderMouseDown(sender, mouseEventArgs){
    isMouseDown = true;
    sender.captureMouse();    
    
}

function onSliderMouseUp(sender, mouseEventArgs){
    isMouseDown = false;
    sender.releaseMouseCapture();    
}

function onSliderMouseMove(sender, mouseEventArgs){
    
    if (isMouseDown == true){
        // Retrieve the current position of the mouse.
        var currX = mouseEventArgs.getPosition(null).x; 
        if (currX>statLeft && currX<statRight-10){                 
            // Reset the location of the object.
            sender["Canvas.Left"] = currX-statLeft;       
        }          
    }       
    
}

function mouseHover(sender, mouseEventArgs){
    sender.cursor = "hand";
}

//------------------------------------------------
//For the volume functionality

function onVolumeSliderMouseDown(sender, mouseEventArgs){
    isVolMouseDown = true;
    sender.captureMouse();    
    
}

function onVolumeSliderMouseUp(sender, mouseEventArgs){
    isVolMouseDown = false;
    sender.releaseMouseCapture();    
}

function onVolumeSliderMouseMove(sender, mouseEventArgs){
    var volleft = main.findName("volumeBarContainer")["Canvas.left"]
    var volright = main.findName("volumeBarContainer")["Canvas.left"] + main.findName("volumeBarContainer").width
    if (isVolMouseDown == true){
        // Retrieve the current position of the mouse.
        var currX = mouseEventArgs.getPosition(null).x; 
        if (currX>volleft && currX<volright){                 
            // Reset the location of the object.
            sender["Canvas.Left"] = currX-volleft;
            main.findName("volumeStatusBarBlue").width = sender["Canvas.Left"];
            main.findName("VidElement").volume = (main.findName("volumeStatusBarBlue").width/60);
        }          
    }       
    
}

//------------------------------------------------
//For converting seconds in to various time formats

function TimeObject(s){
    this.totalsecs = s;
}

TimeObject.prototype.getMinutes = function(){

var mins = Math.floor(this.totalsecs/60);
    if (mins<10){
        mins = "0" + mins;
    }
    return mins;  
}

TimeObject.prototype.getSeconds = function(){
    var secs = Math.round(this.totalsecs) % 60
    if (secs<10){
        secs = "0" + secs;
    }
    return secs;
}

TimeObject.prototype.getHours = function(){
    var hours = Math.floor((this.totalsecs/60)/60);
    return hours;
}

function toggle_fullScreen(sender, args)
{
    plugin.content.fullScreen = !plugin.content.fullScreen;     
}

//------------------------------------------------
//When video switches into full screen mode

function onFullScreenChanged(sender, args)
{        
 
    var silverlightPlugin = sender.getHost();
    var ControlPanel = sender.findName("ControlPanel");
    
    if (silverlightPlugin.content.fullScreen == true)
    {
      ControlPanel.opacity = 0;      
        sender.findName("blueborder").width = silverlightPlugin.content.actualWidth;
    }
    else 
    {
      ControlPanel.opacity = 1;
      sender.findName("blueborder").width = 575;
    }
    
    var mediaPlayer = sender.findName("VidElement");
    mediaPlayer.width = silverlightPlugin.content.actualWidth;
    mediaPlayer.height = silverlightPlugin.content.actualHeight;
}