﻿// JavaScript Document

var $yp = jQuery.noConflict();
var ytplayer;
var yp_animateSpeed = "fast";
var yp_timer;
var yp_interval = 125;
var originalHeight;
var originalWidth;
var yp_dragging = false;

$yp(document).ready(yp_READY);

function yp_READY(){
    var params = { allowScriptAccess: "always", wmode: "opaque" };
    var atts = { id: "ytPlayer" };
    swfobject.embedSWF("http://www.youtube.com/apiplayer?&enablejsapi=1&playerapiid=ytPlayer", "youtube_player_video", "100%", "100%", "9", "swf/expressInstall.swf", null, params, atts);
}

function yp_bind_events(){
	$yp("#youtube_player_controls").click(youtube_player_control_CLICK);
	$yp("#youtube_player_controls").mouseover(youtube_player_control_MOUSE_ENTER);
	$yp("#youtube_player_controls").mouseout(youtube_player_control_MOUSE_LEAVE);
	$yp(".youtube_player_control_resolution_item").live("click", youtube_player_control_resolution_item_CLICK);
	//$yp("#youtube_player_control_audio_slider_empty").click(youtube_player_control_audio_slider_empty_CLICK);
	
	$yp("#youtube_player_control_resolution_container").click(youtube_player_control_resolution_container_CLICK);
	
	$yp("#youtube_player_control_audio_slider_tab" ).draggable({axis: 'y'}, { containment: 'parent' });
	$yp("#youtube_player_control_audio_slider_tab" ).bind("drag", youtube_player_control_audio_slider_tab_DRAG);
	$yp("#youtube_player_control_audio_slider_tab" ).bind("dragstop", youtube_player_control_audio_slider_tab_DRAG_STOP);
	
	$yp("#youtube_player_control_video_slider_playhead" ).draggable({axis: 'x'}, { containment: 'parent' });
	$yp("#youtube_player_control_video_slider_playhead" ).bind("dragstart", youtube_player_control_video_slider_playhead_DRAG_START);
	$yp("#youtube_player_control_video_slider_playhead" ).bind("dragstop", youtube_player_control_video_slider_playhead_DRAG_STOP);
	
	$yp("#youtube_player_control_video_slider_container").click(youtube_player_control_video_slider_container_CLICK);
}

function youtube_player_control_resolution_container_CLICK(){
	$yp("#youtube_player_control_resolution_current").css({color: "#000000"});
}

function youtube_player_control_video_slider_container_CLICK(e){
	yp_dragging = false;
	if($yp("body, html").hasClass("stretch_full")){
		var currentPosition = e.pageX - this.offsetLeft;
	}else{
		var currentPosition = e.pageX - this.offsetLeft - 120;
	}
	var maxPosition = $yp("#youtube_player_control_video_slider_container").width();
	var percentPosition = currentPosition / maxPosition;
	
	var newPosition = Math.round(percentPosition * ytplayer.getDuration());
	
	ytplayer.seekTo(newPosition, true);
}

function youtube_player_control_video_slider_playhead_DRAG_START(){
	yp_dragging = true;
	$yp("#youtube_player_control_video_slider_playhead").css({opacity: .75});
}

function youtube_player_control_video_slider_playhead_DRAG_STOP(){
	yp_dragging = false;
	var currentPosition = $yp(this).position().left;
	var maxPosition = $yp("#youtube_player_control_video_slider_container").width();
	var percentPosition = currentPosition / maxPosition;
	
	var newPosition = Math.round(percentPosition * ytplayer.getDuration());
	
	ytplayer.seekTo(newPosition, true);
	$yp("#youtube_player_control_video_slider_playhead").css({opacity: 1});
}

function youtube_player_control_audio_slider_empty_CLICK(e){
	var newVolume = $yp("#youtube_player_video_container").height() - e.pageY + 43;
	$yp("#youtube_player_control_audio_slider_tab").css({top: 100 - newVolume});
	ytplayer.setVolume(newVolume);
	$yp("#youtube_player_control_audio_slider_full").height(newVolume).css({marginTop: -newVolume});
	$yp("#youtube_player_control_audio").trigger("click");
	$yp("#youtube_player_control_audio").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_audio_off.png");
}

function youtube_player_control_audio_slider_tab_DRAG(){
	var newVolume = 100 - $yp(this).position().top;
	ytplayer.setVolume(newVolume);
	$yp("#youtube_player_control_audio_slider_full").height(newVolume).css({marginTop: -newVolume});
}

function youtube_player_control_audio_slider_tab_DRAG_STOP(){
	$yp("#youtube_player_control_audio").trigger("click");
	$yp("#youtube_player_control_audio").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_audio_off.png");
}

function youtube_player_control_resolution_item_CLICK(){
	$yp("#youtube_player_control_resolution_container").slideToggle(yp_animateSpeed);
	var yp_currentRes = $yp(this).html();
	ytplayer.setPlaybackQuality(yp_currentRes);
	$yp("#youtube_player_control_resolution_current").html(yp_currentRes);
}

function yp_manip_dom(){
	$yp("#youtube_player_control_resolution_container, #youtube_player_overlay").css({opacity: .75});
	$yp("#youtube_player_control_resolution_current").css({opacity: .5});
	if($yp.browser.webkit){
		$yp("#youtube_player").css({left: 0});
	}
}

function onYouTubePlayerReady(playerId) {
	ytplayer = document.getElementById("ytPlayer");
	ytplayer.addEventListener("onStateChange", "ytplayer_onPlayerStateChange");
	ytplayer.addEventListener("onPlaybackQualityChange", "ytplayer_onPlaybackQualityChange");
	ytplayer.addEventListener("onError", "ytplayer_onError");
	ytplayer.cueVideoById($yp("#youtube_player_id").html());
	ytplayer.setVolume(50);
	yp_manip_dom();
	yp_bind_events();
}

function ytplayer_onError(errorCode){
	var errorMessage = "Unknown";
	switch(errorCode){
		case 100:
			errorMessage = "This video has been removed, or it has been marked as private.";
			break;
		case 101:
			errorMessage = "The video requested does not allow playback in embedded players.";
			break;
		case 150:
			errorMessage = "The video requested does not allow playback in embedded players.";
			break;
		default:
			//
			break;
	}
	$yp("#youtube_player_overlay").html("Error Code " + errorCode + "<br/>" + errorMessage);
}

function yp_updatePlayerInfo(){
	if(ytplayer && ytplayer.getDuration) {
		var currentTime = convertTime(ytplayer.getCurrentTime());
		$yp("#youtube_player_control_time_current").html(currentTime);
		
		var totalBar = $yp("#youtube_player_control_video_slider_container").width();
		var totalPercentLoaded = Math.round(ytplayer.getVideoBytesLoaded() / ytplayer.getVideoBytesTotal() * 100);
		var currentPlayPercent = Math.round(ytplayer.getCurrentTime() / ytplayer.getDuration() * 100);
		
		$yp("#youtube_player_control_video_slider_full").width(totalPercentLoaded * (totalBar / 100));
		$yp("#youtube_player_control_video_slider_time").width(currentPlayPercent * (totalBar / 100));
		
		var rawTime = $yp("#youtube_player_control_video_slider_time").width();
		
		if(rawTime <= 39){
			rawTime = 39;
		}
		
		if(!yp_dragging){
			$yp("#youtube_player_control_video_slider_playhead").css({left: rawTime});	
		}
		
		//if($yp("#youtube_player_control_time_current").html() == "00:00"){
			var durationTime = convertTime(ytplayer.getDuration());
			$yp("#youtube_player_control_time_duration").html(durationTime);
		//}
		
		if($yp("#youtube_player_control_resolution_container").html() == "<!---->"){
			var yp_qualityArray = ytplayer.getAvailableQualityLevels();
			var yp_qualityString = "";
			for(var i in yp_qualityArray){
				yp_qualityString += '<div class="youtube_player_control_resolution_item">' + yp_qualityArray[i] + '</div>';
			}
			$yp("#youtube_player_control_resolution_container").html(yp_qualityString);
		}
	}
}

function convertTime(secs){
	secVar0 = secs;
	minVar = Math.floor(secVar0 / 60);
	secVar = Math.round(secVar0 % 60);
	if(minVar.toString().length < 2){
		minVar = ("0" + minVar).toString();
	}
	if(secVar.toString().length < 2){
		secVar = ("0" + secVar).toString();
	}
	return minVar + ":" + secVar;
}

function ytplayer_onPlaybackQualityChange(){
	var yp_getPlaybackQuality = ytplayer.getPlaybackQuality();
	$yp("#youtube_player_control_resolution_current").html(yp_getPlaybackQuality);
	$yp("#youtube_player_control_resolution_current").css({textTransform: "uppercase"});
	yp_updatePlayerInfo();
}

function ytplayer_onPlayerStateChange(newState){
	var yp_state = "preloading...";
	switch(newState){
		case -1:
			yp_state = "unstarted";
			break;
		case 0:
			window.location = "/en-us/ATV-RANGER/Pages/Home.aspx";
			yp_updatePlayerInfo();
			var totalBar = $yp("#youtube_player_control_video_slider_container").width();
			$yp("#youtube_player_control_video_slider_time").width(totalBar);
			yp_state = "video complete. returning to homepage...";
			break;
		case 1:
			yp_setInterval = setInterval(yp_updatePlayerInfo, yp_interval);
			$yp("#youtube_player_control_play").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_play_on.png");
			var yp_currentRes = ytplayer.getPlaybackQuality(yp_currentRes);
			$yp("#youtube_player_control_resolution_current").html(yp_currentRes);
			yp_state = "playing";
			$yp("#youtube_player_control_resolution_current").css({opacity: 1, cursor: "pointer"});
			break;
		case 2:
			$yp("#youtube_player_control_play").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_play_off.png");
			clearInterval(yp_setInterval);
			yp_state = "paused";
			break;
		case 3:
			yp_state = "buffering";
			break;
		case 4:
			yp_state = "unknown";
			break;
		case 5:
			yp_state = "ready to play";
			$yp("#youtube_player_control_play").trigger("click");
			break;
		default:
			$yp("#youtube_player_control_play").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_play_off.png");
			clearInterval(yp_setInterval);
			yp_state = "unknown";
			break;
	}
	$yp("#youtube_player_overlay").html(yp_state);
}

function youtube_player_control_MOUSE_ENTER(event){
	switch(event.target.id){
		case "youtube_player_control_play":
			$yp("#youtube_player_control_play").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_play_on.png");
			break;
		case "youtube_player_control_audio":
			$yp("#youtube_player_control_audio").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_audio_on.png");
			break;
		case "youtube_player_control_fs":
			$yp("#youtube_player_control_fs").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_fs_on.png");
			break;
		case "youtube_player_control_resolution_current":
			if($yp("#youtube_player_control_resolution_container").children().length){
				$yp("#youtube_player_control_resolution_current").css({color: "#1c5aa9"});
			}
			break;
		case "youtube_player_control_video_slider_playhead":
			$yp("#youtube_player_control_video_slider_playhead").css({cursor: "e-resize"});
			break;
		default:
			//
			break;
	}
	return false;
}

function youtube_player_control_MOUSE_LEAVE(event){
	switch(event.target.id){
		case "youtube_player_control_play":
			if(ytplayer.getPlayerState() != 1){
				$yp("#youtube_player_control_play").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_play_off.png");
			}
			break;
		case "youtube_player_control_audio":
			if($yp("#youtube_player_control_audio_slider_container").is(":visible")){
				//
			}else{
				$yp("#youtube_player_control_audio").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_audio_off.png");
			}
			break;
		case "youtube_player_control_fs":
			if($yp("body, html").hasClass("stretch_full")){
				//
			}else{
				$yp("#youtube_player_control_fs").attr("src", "http://cdn.polarisindustries.com/ORV/MY2011/promos_feature/youtube_player_control_fs_off.png");
			}
			break;
		case "youtube_player_control_resolution_current":
			if($yp("#youtube_player_control_resolution_container").is(":hidden")){
				$yp("#youtube_player_control_resolution_current").css({color: "#000000"});
			}
			break;
		default:
			//
			break;
	}
	return false;
}

function youtube_player_control_CLICK(event){
	switch(event.target.id){
		case "youtube_player_control_play":
			if(ytplayer.getPlayerState() != 1){
				ytplayer.playVideo();
			}else{
				ytplayer.pauseVideo();
			}
			break;
		case "youtube_player_control_audio":
			$yp("#youtube_player_control_audio_slider_container").slideToggle(yp_animateSpeed);
			break;
		case "youtube_player_control_resolution_current":
			if($yp("#youtube_player_control_resolution_container").children().length){
				$yp("#youtube_player_control_resolution_container").slideToggle(yp_animateSpeed);
			}
			break;
		case "youtube_player_control_fs":
			ytplayer.pauseVideo();
			window.location = window.location = "/en-us/ATV-RANGER/Pages/Home.aspx";
			break;
		default:
			//
			break;
	}
}
