var MuteState=true;
var isDraggingSlider=false;
var mediaElement;
var VolumeSlider;
var RatioSliderVolume=1/52;
var VideoCurrent;
var compt;
var xamlFragmentToolTip;
var PlayState;

if (!window.spotlightplayer)
	window.spotlightplayer = {};

spotlightplayer.Scene = function() 
{
}

spotlightplayer.Scene.prototype =
{
	handleLoad: function(control, userContext, rootElement) 
	{
	    var source;
	    var wpfeControl = rootElement.getHost();
	    
	     //download tooltip
        var downloadertooltip = wpfeControl.createObject("downloader");
        downloadertooltip.addEventListener("completed", Silverlight.createDelegate(this, this.DownloadCompletedToolTip));
        downloadertooltip.open("GET", server+"silverlight/xaml/Tooltip.xaml");
        downloadertooltip.send();
	    
	    mediaElement = rootElement.findName("mediaElement");
	    mediaElement.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.MouseEnterPlayer));
	    mediaElement.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.MouseLeavePlayer));
	    mediaElement.addEventListener("MediaOpened", Silverlight.createDelegate(this, this.onMediaOpened));
	    
	    source=video_url;
        source=source.replace(url_asx,url_mms);
        source=source.replace(extension_asx,extension_asf);
	    
	    mediaElement.Source=source;
	    
	    var ObjXaml = rootElement.findName("Canvas_ControlPanel");
	    ObjXaml.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.MouseEnterControlPlayer));
	    ObjXaml.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.MouseLeaveControlPlayer));
	    
	    
        ObjXaml=rootElement.findName("ControlPanel_play");
        ObjXaml.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.CPplayClick));
        ObjXaml.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.ToolTipMouseEnter));
        ObjXaml.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.ToolTipMouseLeave));
        ObjXaml.addEventListener("MouseMove", Silverlight.createDelegate(this, this.ToolTipPlayMouseMove));
	    
	    ObjXaml=rootElement.findName("MuteButton");
        ObjXaml.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.muteClick));
        ObjXaml.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.ToolTipMouseEnter));
        ObjXaml.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.ToolTipMouseLeave));
        ObjXaml.addEventListener("MouseMove", Silverlight.createDelegate(this, this.ToolTipMuteMouseMove));        

        
        VolumeSlider= rootElement.findname("VolumeSlider");
		VolumeSlider.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.SliderVolumeClickUp));
		VolumeSlider.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.SliderVolumeClickDown));
		VolumeSlider.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.ToolTipMouseEnter));
        VolumeSlider.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.ToolTipMouseLeave));
		VolumeSlider.addEventListener("MouseMove", Silverlight.createDelegate(this, this.SliderVolumeMouseMove));
		
		ObjXaml= rootElement.findname("Path_Volume");
		ObjXaml.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.ToolTipMouseEnter));
        ObjXaml.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.ToolTipMouseLeave));
        ObjXaml.addEventListener("MouseMove", Silverlight.createDelegate(this, this.ToolTipMouseMove));

		
		
        VideoCurrent=rootElement.findname("VideoCurrent");
        
        ObjXaml=rootElement.findName("VideoWatchNow");
        ObjXaml.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.WatchNowClick));
        ObjXaml.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.WatchNowMouseEnter));
        ObjXaml.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.WatchNowMouseLeave));
        ObjXaml.Text=Text_watch_now;
        
        
	},
	
	CPplayClick: function(sender, eventArgs)
    {
        if (PlayState == true)
        {
            PlayState = false;
            mediaElement.Pause();
            var pauseIcon = sender.findName("ControlPanel_playStop1");
            pauseIcon.opacity = 0;
            pauseIcon = sender.findName("ControlPanel_playStop2");
            pauseIcon.opacity = 0;
            var playIcon = sender.findName("ControlPanel_play1");
            playIcon.opacity = 1;
            clearInterval(TimerVideo);            
        }
        else 
        {
            PlayState = true;
            mediaElement.Play();
            var pauseIcon = sender.findName("ControlPanel_playStop1");
            pauseIcon.opacity = 1;
            pauseIcon = sender.findName("ControlPanel_playStop2");
            pauseIcon.opacity = 1;
            var playIcon = sender.findName("ControlPanel_play1");
            playIcon.opacity = 0;
            TimerVideo=setInterval("ShowCurrentDuration()", 10);
        }
    },
    
    ToolTipPlayMouseMove: function(sender, eventArgs)
	{
	    var ObjCanvas = sender.findName("ControlPanel_play1");
	    
	    if (ObjCanvas.Opacity==1)
            Show_ToolTip(sender,Array_Text[ObjCanvas.Name],eventArgs.getPosition(null).x,eventArgs.getPosition(null).y,"white",1,300,"Black");
        else
            Show_ToolTip(sender,Array_Text["ControlPanel_playStop1"],eventArgs.getPosition(null).x,eventArgs.getPosition(null).y,"white",1,300,"Black");
	},
	
	DownloadCompletedToolTip: function(sender, eventArgs)
    {
        var wpfeControl = sender.getHost();
        xamlFragmentToolTip = wpfeControl.content.createFromXamlDownloader(sender, "");
    },
	
	WatchNowClick: function(sender, eventArgs)
	{
	    location.href=player_url;
	},
	
	WatchNowMouseEnter: function(sender, eventArgs)
	{
	    sender.textDecorations = "Underline";
	},
	
	WatchNowMouseLeave: function(sender, eventArgs)
	{
	    sender.textDecorations = "None";
	},
	
	onMediaOpened: function(sender, eventArgs)
	{
	    
	    //video duration
        var videoDuration=sender.findname("VideoDuration");
       
        var datetime = new Date(0, 0, 0, 0, 0, mediaElement.naturalDuration.Seconds)
        var hours = datetime.getHours();
        var minutes = datetime.getMinutes();
        var seconds = datetime.getSeconds();        
        
        if (seconds < 10) {
            seconds = "0" + seconds;
        }
        
        if (minutes < 10) {
            minutes = "0" + minutes;
        }
        
              
        //a optimiser
        var durationString;
        if (hours > 0) {
            durationString = hours.toString() + ":" + minutes + "'" + seconds;
            videoDuration.text = durationString.toString();
        }
        else {
            durationString = minutes + ":" + seconds;
            videoDuration.text = durationString.toString();
        }
        
        mediaElement.IsMuted=1;
        var muteIcon2 = sender.findName("MuteButton2");
        var muteIcon3 = sender.findName("MuteButton3");
        
        muteIcon2.opacity = 0;
        muteIcon3.opacity = 0;
        
        VolumeSlider["Canvas.Left"]=(1-mediaElement.Volume)/RatioSliderVolume;
        
        PlayState=true;
        
        var pauseIcon = sender.findName("ControlPanel_playStop1");
        pauseIcon.opacity = 1;
        pauseIcon = sender.findName("ControlPanel_playStop2");
        pauseIcon.opacity = 1;
        var playIcon = sender.findName("ControlPanel_play1");
        playIcon.opacity = 0;
        
        TimerVideo=setInterval("ShowCurrentDuration()", 10);
	},
	
	MouseEnterPlayer: function(sender, eventArgs)
	{
	    var ObjXaml = sender.findName("Canvas_ControlPanel");
	    ObjXaml.Opacity=1;
	},
	
	MouseLeavePlayer: function(sender, eventArgs)
	{
	    var ObjXaml = sender.findName("Canvas_ControlPanel");
	    ObjXaml.Opacity=0;
	},
	
	MouseEnterControlPlayer: function(sender, eventArgs)
	{
	    sender.Opacity=1;
	},
	
	MouseLeaveControlPlayer: function(sender, eventArgs)
	{
	    sender.Opacity=0;
	},
	
	muteClick: function(sender, eventArgs)
    {
        var muteIcon2 = sender.findName("MuteButton2");
        var muteIcon3 = sender.findName("MuteButton3");
        if (MuteState==false)
        {
            MuteState=true;
            mediaElement.IsMuted=1;
            muteIcon2.opacity = 0;
            muteIcon3.opacity = 0;
        } else {
             MuteState=false;
            mediaElement.IsMuted=0;
            muteIcon2.opacity = 1;
            muteIcon3.opacity = 1;
        }    
    },
    
    SliderVolumeClickUp: function(sender, eventArgs)
    {    
        //draganddrop
        isDraggingSlider=false;    
        sender.releaseMouseCapture(); 
    },
    
    SliderVolumeClickDown: function(sender, mouseEventArgs)
    {
    
        var muteIcon2 = sender.findName("MuteButton2");
        var muteIcon3 = sender.findName("MuteButton3");
        if (MuteState==true)
        {
            MuteState=false;
            mediaElement.IsMuted=0;
            muteIcon2.opacity = 1;
            muteIcon3.opacity = 1;
        }
    
        //draganddrop
        isDraggingSlider=true;  
        compt=0;  
        sender.captureMouse();
        SliderMouseVolumePosition(mouseEventArgs.getPosition(null).x,mouseEventArgs.getPosition(null).y,sender);
    },
    
    SliderVolumeMouseMove: function(sender, mouseEventArgs)
    {
        if (isDraggingSlider)
        {
            SliderMouseVolumePosition(mouseEventArgs.getPosition(null).x,mouseEventArgs.getPosition(null).y,sender);                
        }
    },
    
    ToolTipMouseMove: function(sender, eventArgs)
	{		        
        Show_ToolTip(sender,Array_Text[sender.Name],eventArgs.getPosition(null).x,eventArgs.getPosition(null).y,"white",1,300,"Black");
	},
    
    ToolTipMouseEnter: function(sender, eventArgs)
	{
        Load_ToolTip(sender);
	},
	
	ToolTipMouseLeave: function(sender, eventArgs)
	{
	    Release_ToolTip(sender);
	},
	
	ToolTipMuteMouseMove: function(sender, eventArgs)
	{
	    var ObjCanvas = sender.findName("MuteButton3");
	    
	    if (ObjCanvas.Opacity==1)
            Show_ToolTip(sender,Array_Text[ObjCanvas.Name],eventArgs.getPosition(null).x,eventArgs.getPosition(null).y,"white",1,300,"Black");
        else
            Show_ToolTip(sender,Array_Text["MuteButton"],eventArgs.getPosition(null).x,eventArgs.getPosition(null).y,"white",1,300,"Black");
	}
	
	
}

function SliderMouseVolumePosition(mousePosX,mousePosY,sender)
{

    var Width_Canvas=Canvas_Width(sender);
    
    if (compt>0)
    {
        var MousePosition=VolumeSlider["Canvas.Left"]+(mousePosX-X_prev);
        
        if (MousePosition<0)
            MousePosition=0;
        else if (MousePosition>52)
            MousePosition=52;    

        VolumeSlider["Canvas.Left"]=MousePosition;
    
        mediaElement.Volume=(RatioSliderVolume*MousePosition);
        Show_ToolTip(sender,String(Math.round(mediaElement.Volume*10)),mousePosX,mousePosY,"white",1,300,"Black");         
    }
    X_prev=mousePosX;
    compt++;
}

function Canvas_Width(sender)
{
    var ok=1;
    var object=sender;
    var Width_Canvas=object["Canvas.Left"];
    while(ok)
    {
        object=object.GetParent();
        if (object==null)
            ok=0;
        else
        {
            Width_Canvas+=object["Canvas.Left"];
        }
    }
    //window.status=Width_Canvas;
    return Width_Canvas;
}

function ShowCurrentDuration()
{
    var datetime = new Date(0, 0, 0, 0, 0, mediaElement.Position.Seconds)
    var hours = datetime.getHours();
    var minutes = datetime.getMinutes();
    var seconds = datetime.getSeconds();
    
    var totalseconds = hours*3600 + minutes*60 + seconds;
    
    if (seconds < 10) {
        seconds = "0" + seconds;
    }
    
    if (minutes < 10) {
        minutes = "0" + minutes;
    }
    
    //a optimiser
    var durationString;
    if (hours > 0) {
        durationString = hours.toString() + ":" + minutes + "'" + seconds;
        VideoCurrent.text = durationString.toString();
    }
    else {
        durationString = minutes + ":" + seconds;
        VideoCurrent.text = durationString.toString();
    }
 }
