//Globals:
var isPlaying 		= false;
var posIsDragging 	= false;
var slidersize 		= 234;
var posOffset 		= 8;
var timeSpanVal 	= "";
var volIsDragging 	= false;


if (!window.vidPlayer)
	vidPlayer = {};

vidPlayer.Page = function() 
{
}

vidPlayer.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) 
	{
		// default from MS, but i prefer to put my events in the XAML
	}
}

function createSilverlight(source) {
	
			var w = 320;
			var h = 280;
			var scene = new vidPlayer.Page();
			var vidsource = "vidPlayer/page_xaml.php?streamSrc="+source;
			//var vidsource = "vidPlayer/Page.xaml";
			
			Silverlight.createObjectEx({
				source: vidsource,
				parentElement: document.getElementById("testimonialsBig"),
				id: "SilverlightControl",
				properties: {
					width: w,
					height: h,
					version: "2.0"
				},
				events: {
					onLoad: Silverlight.createDelegate(scene, scene.handleLoad),
					onError: function(sender, args) {
						var errorDiv = document.getElementById("errorLocation");
						if (errorDiv != null) {
							var errorText = args.errorType + "- " + args.errorMessage;
									
							if (args.ErrorType == "ParserError") {
								errorText += "<br>File: " + args.xamlFile;
								errorText += ", line " + args.lineNumber;
								errorText += " character " + args.charPosition;
							}
							else if (args.ErrorType == "RuntimeError") {
								errorText += "<br>line " + args.lineNumber;
								errorText += " character " +  args.charPosition;
							}
							errorDiv.innerHTML = errorText;
						}	
					}
				}
			});
		}


		if (!window.Silverlight) 
			Silverlight = {};

		Silverlight.createDelegate = function(instance, method) {
			return function() {
				return method.apply(instance, arguments);
			}
		}




function button_MouseLeftButtonDown(sender,args) {
    sender.captureMouse();
}


function button_MouseLeftButtonUp(sender,args) {
    sender.releaseMouseCapture();
	
	//alert(sender.Name);
        
	//Used to change active / mouse over state on Play / Pause buttons
	if (sender.Name == "activeBtn") {
		
		isPlaying = true;
	
		sender.opacity = 0;
		sender.IsHitTestVisible = false;
		sender.findName("Video").play();
		sender.findName('screenshotImg').opacity = 0;
		
		sender.findName('playbtn').opacity = 0;
		sender.findName('playbtn').IsHitTestVisible = false;
		sender.findName('stopbtn').opacity = 1;
		sender.findName('stopbtn').IsHitTestVisible = true;
		
		sender.findName('positionTick').begin();		

	}
	
	
    if (sender.Name == "stopbtn") {
		
		isPlaying = false;
	
		sender.findName("Video").pause();
		
		sender.opacity = 0;
		sender.IsHitTestVisible = false;
		sender.findName('playbtn').opacity = 1;
		sender.findName('playbtn').IsHitTestVisible = true;

	}
	
	if (sender.Name == "playbtn") {
		
		isPlaying = true;

		sender.findName("Video").play();
		sender.findName('screenshotImg').opacity = 0;
		sender.findName("activeBtn").IsHitTestVisible = false;
		sender.findName("activeBtn").opacity = 0;
		
		sender.opacity = 0;
		sender.IsHitTestVisible = false;
		sender.findName('stopbtn').opacity = 1;
		sender.findName('stopbtn').IsHitTestVisible = true;
		
		sender.findName('positionTick').begin();

	}
}

//position slider functions


function posDragDown(sender, args) {
	posIsDragging = true;
}

function posTick(sender,args) {
		
	if(isPlaying == true && posIsDragging == false) {
			
		var media = sender.findName('Video'); 
		var mediaDuration = media.NaturalDuration.seconds;
		var mediaPos = media.position.seconds;
				
		 var posRatio = mediaPos/mediaDuration;
		 				 
		 var posVal = posRatio*slidersize;
		 		 
		 sender.findName('posSlider')["Canvas.Left"] = posVal-posOffset;
		 
		 sender.findName('positionTick').begin();
		 
		 //sender.findName('output').Text = isPlaying.toString();
	}

}

/*
function pad(int) {
	
		if(int<10) {
			int = "0"+int;	
		}
		
		return int;
}*/


function posDragger(sender, args) {
	   if(posIsDragging == true) {
            var position = args.GetPosition(sender).X;
			
			var media = sender.findName('Video'); 
			var mediaDuration = media.NaturalDuration.seconds;

			if(position > 0 && position < slidersize && isPlaying == true) {
			  sender.findName('posSlider')["Canvas.Left"] = position-posOffset;
			  //sender.findName('posSlider')["Canvas.Left"] = position;
			  var posRatio = position/slidersize;
			 
			  var posVal = posRatio*mediaDuration;			 
			 
			  timeSpanVal = posVal;
			 
			 //sender.findName('output').Text =  posVal.toString();
			
			 
			}
         }
}


// vol slider functions


function volDragDown(sender,args) {
     volIsDragging = true;
}

function volDragger(sender, args) {
	
        if(volIsDragging == true) {
            var position = args.GetPosition(sender).X;
			  
			if(position > 0 && position < 230) {
			  sender.findName('slider')["Canvas.Left"] = position-22.5;
			  var posRatio = position/slidersize;
			  sender.findName('Video').Volume = posRatio;
			}
         }
		
}


function dragUp(sender, args) {
	volIsDragging = false;
	posIsDragging = false;
	if(timeSpanVal != "") {
		var position = sender.findName('Video').position;
		position.seconds = timeSpanVal;
		sender.findName('Video').position = position;
		timeSpanVal = "";
		sender.findName('positionTick').begin();
	}
}


function mediaComplete(sender,args) {
	sender.findName("activeBtn").IsHitTestVisible = true;
	sender.findName("activeBtn").opacity = 1;
	sender.findName('screenshotImg').opacity = 1;
	
	sender.findName('playbtn').opacity = 1;
	sender.findName('playbtn').IsHitTestVisible = true;
	sender.findName('stopbtn').opacity = 0;
	sender.findName('stopbtn').IsHitTestVisible = false;
}
