﻿var Video = {
	//---------------------------------------------------------------------------------------------------------------
	active_tab_id: 2,
	history_tab_id: 2,
	active_video_id: 0,
	watchTimer: null,
	watchTimerTotal: null,
	watchUuid: "",
	
	//---------------------------------------------------------------------------------------------------------------
	showTab: function(id, site_anchor)
	{
		if(isNaN(id))
			return;
			
		var active_tab = $("tab_" + this.active_tab_id);
		active_tab.className = "";
		var active_tabs = $("tabcontent_" + this.active_tab_id);
		active_tabs.style.display = "none";
		
		var tab = $("tab_" + id);
		tab.className = "tab-selected";
		var tabs = $("tabcontent_" + id);
		tabs.style.display = "block";
		this.active_tab_id = id;
		
		SWFAddress.setValue(tab.title + "?t=" + id);
						
		if(String(site_anchor).length > 0)
			if($(site_anchor) != null)
				$(site_anchor).scrollIntoView(true);
		
		return false;
	},
		
	//---------------------------------------------------------------------------------------------------------------
	handleTabHistory: function(event) 
	{	
		var tab_id = 0;
		var site_anchor = "";
	
		for(var i = 0; i < event.parameterNames.length; i++)
		{		
			if(event.parameterNames[i] == "t")
			{
				if(event.parameters["t"] != null && event.parameters["t"] != Video.active_tab_id)
				{
					tab_id = event.parameters["t"];
				}
			}	
			if(event.parameterNames[i] == "a")
				if(event.parameters["a"] != null)
					site_anchor = event.parameters["a"];
		}
		if(tab_id > 0)
		{
			Video.showTab(tab_id, site_anchor);
			return;
		}
		
		if(event.path == "/" && Video.active_tab_id != Video.history_tab_id)
		{
			Video.showTab(this.history_tab_id);
		}
	},
	
	//---------------------------------------------------------------------------------------------------------------
	initVideoDetails: function(video_id, video_length) 
	{	
		var html5player = document.getElementById("html5_player");
		if(html5player != "undefined" && html5player != null && ((navigator.userAgent.indexOf('iPhone') != -1) || (navigator.userAgent.indexOf('iPad') != -1)))
		{
			html5player.onclick = function() {
				if (html5player.paused) {
					html5player.play();
				} else {
					html5player.pause();
				}
			};	
		}
		if(html5player != "undefined" && html5player != null)
		{
			this.watchUuid = uuid.v1();
			this.watchTimer = jQuery.timer(function(){
				//watched, unique_id, video_id, frontend_user_id, frontend_user_group_ids, abo_group_id, platform
				VideoUsage.markVideoWatched(1, Video.watchUuid, video_id, 0, "", 0, 2);
				Video.watchTimer.stop();
			});
			this.watchTimer.set({time: 10000, autostart: false});
			
			this.watchTimerTotal = jQuery.timer(function(){
				//watched, unique_id, video_id, frontend_user_id, frontend_user_group_ids, abo_group_id, platform
				VideoUsage.markVideoWatched(2, Video.watchUuid, video_id, 0, "", 0, 2);
				Video.watchTimerTotal.stop();
			});
			this.watchTimerTotal.set({time: video_length * 1000 * 0.6 - 10000, autostart: false});
			
			
			jQuery(html5player).bind("play", this.onHTML5VideoPlay);
		}
				
		if (isMobileBrowser(navigator.userAgent||navigator.vendor||window.opera) || (navigator.userAgent.indexOf('iPhone') != -1) || (navigator.userAgent.indexOf('iPad') != -1)
			|| (navigator.userAgent.indexOf('Android') != -1) || (navigator.userAgent.indexOf('Tablet') != -1) || (navigator.userAgent.indexOf('Playbook') != -1)
			|| (navigator.userAgent.indexOf('TouchPad') != -1)) {
			if(ipad_available)
				this.showMediumVideoPlayer(true);
			else
				showFlashPlayer();
		}
		else
			showFlashPlayer();
	},
	
	//---------------------------------------------------------------------------------------------------------------
	loadProductTOC: function(product_id)
	{
		if(isNaN(product_id))
			return;
		
		var product_toc = $("product_toc_" + product_id);
		if(product_toc.className.length == 0)
			return;
			
		var params = new Object();
		params.product_id = product_id;
		
		new Ajax.Request("custom/modules/product/product_ajax.cfc?method=renderProductDetailTOC", {
			method: 'post',
			parameters : params,
			onSuccess: function(transport) {
				var obj = transport.responseText.evalJSON();
				
				var product_toc = $("product_toc_" + obj.ID);
				product_toc.className = "";
			
				if(obj.UPDATE == true)
					product_toc.innerHTML = obj.HTML;
			}
		});
	},
		
	//---------------------------------------------------------------------------------------------------------------
	updateVideoControls: function(title, prevId, nextId, currentId, description)
	{
		this.active_video_id = currentId;
		
		$("video-title").innerHTML = title;
		$("video-description").innerHTML = description;
		$("video-prev-button").removeClassName("disabled");
		$("video-next-button").removeClassName("disabled");	
		
		if(prevId == "0")
			$("video-prev-button").addClassName("disabled");
		if(nextId == "0")
			$("video-next-button").addClassName("disabled");
			
		$("video-prev-button").writeAttribute("href", "videos-" + prevId + ".htm?autoPlay=1");
		$("video-next-button").writeAttribute("href", "videos-" + nextId + ".htm?autoPlay=1");
		
		if(prevId != "0")
			$("video-row-" + prevId).removeClassName("active");	
		if(nextId != "0")
			$("video-row-" + nextId).removeClassName("active");	
		if(currentId != "0")
			$("video-row-" + currentId).addClassName("active");	
			
		//update url
		SWFAddress.setValue("?video_id=" + currentId);
	},
	
	//---------------------------------------------------------------------------------------------------------------
	switchPlayerSize: function()
	{
		var size = 0;
		if($("player_container").hasClassName("video-detail-big-player") || $("player_container").hasClassName("video-detail-medium-player"))
		{
			this.showSmallVideoPlayer();	
			size = 0;
		}
		else
		{
			this.showBigVideoPlayer();
			size = 1;
		}
		
		//document.getElementById("content_main").focus();
		
		var params = new Object();
		params.size = size;
		
		new Ajax.Request("custom/modules/video/video_ajax.cfc?method=saveVideoSize", {
			method: 'post',
			parameters : params,
			onSuccess: function(transport) {
			}
		});
	},
	
	//---------------------------------------------------------------------------------------------------------------
	showBigVideoPlayer: function()
	{
		//check viewport size
		if(jQuery(window).width() < 1100)
		{
			this.showMediumVideoPlayer(false);
			return;	
		}
		
		jQuery("#player_container").addClass("video-detail-big-player");
		jQuery("#video_infos").addClass("video-infos-big");	
		
		jQuery(".product-teaser .truncate_ellipsis").remove();
		jQuery(".product-teaser").append(jQuery(".product-teaser .truncate_more").html());
		jQuery(".product-teaser .truncate_more").remove();
		jQuery(".product-teaser .clearboth").remove();
	},
	
	//---------------------------------------------------------------------------------------------------------------
	showSmallVideoPlayer: function()
	{
		jQuery("#player_container").removeClass("video-detail-big-player");
		jQuery("#player_container").removeClass("video-detail-medium-player");
		jQuery("#video_infos").removeClass("video-infos-big");
				
		jQuery(".product-teaser").jTruncate({
			length:300,
			minTrail:80,
			moreText:"[ + ]",
			lessText:"[ - ]"
		});
	},
	
	//---------------------------------------------------------------------------------------------------------------
	showMediumVideoPlayer: function(show_html5)
	{
		jQuery("#player_container").addClass("video-detail-medium-player");
		jQuery("#video_infos").addClass("video-infos-big");	
		jQuery("#video_infos").addClass("video-infos-medium");	
		
		jQuery(".product-teaser .truncate_ellipsis").remove();
		jQuery(".product-teaser").append(jQuery(".product-teaser .truncate_more").html());
		jQuery(".product-teaser .truncate_more").remove();
		jQuery(".product-teaser .clearboth").remove();
				
		if(show_html5 != "undefined" && show_html5 != null && show_html5 == true)
		{
			jQuery("#player_container").addClass("video-detail-html5-player");	
			$("html5_player").show();
			
			this.addSecureToken("html5_player");
		}	
	},
	
	//---------------------------------------------------------------------------------------------------------------
	addSecureToken: function(id) {
		new Ajax.Request("custom/modules/cdn/cdn.cfc?method=getSecureTokenJSON", {
			method: 'get',
			onSuccess: function(transport) {
				var token = transport.responseText.evalJSON();
				var src = jQuery("#" + id).attr("src");
				jQuery("#" + id).attr("src", src + "?" + token);	
			}
		});
	},
	
	//---------------------------------------------------------------------------------------------------------------
	showEmbed: function()
	{
		if(isNaN(this.active_video_id) || this.active_video_id == 0)
			return;
		
		var embed_div = $("embed-video");
		
		if(embed_div.visible())
		{
			embed_div.hide();
			return;
		}
		
		embed_div.innerHTML = '<div class="ajax-loading">&nbsp;</div>';
		embed_div.show();
			
		var params = new Object();
		params.video_id = this.active_video_id;
		
		new Ajax.Request("custom/modules/video/video_ajax.cfc?method=renderEmbedVideo", {
			method: 'post',
			parameters : params,
			onSuccess: function(transport) {
				embed_div.innerHTML = transport.responseText.evalJSON();
				
				jQuery(".option").click(function(evt) {
					jQuery(".option").removeClass("active");
					jQuery(this).addClass("active");
					
					var area = jQuery("#embed-area");
					var text = area.text();				
					var size = jQuery(this).text().split("x");
					var width = size[0];
					var height = size[1];
					
					text = text.replace(/width="[0-9]*"/g, 'width="' + width + '"');
					text = text.replace(/height="[0-9]*"/g, 'height="' + height + '"');
					area.text(text);
				});
				
				jQuery("#embed-area").click(function(evt) {
					var text_area = document.getElementById("embed-area");
					text_area.focus();
					text_area.select();
				});
			}
		});
	},
	
	//---------------------------------------------------------------------------------------------------------------
	showHTML5VideoPlayer: function(player_id, adjust_height)
	{		
		if(jQuery("#html5_" + player_id).length)
		{
			jQuery("#html5_" + player_id).show();
			if(adjust_height)
				jQuery("#parent_" + player_id).css("height", Number(Number(jQuery("#parent_" + player_id).css("height").replace("px", "")) - 27) + "px");
				
			this.addSecureToken("html5_" + player_id);
		}
	},
	
	//---------------------------------------------------------------------------------------------------------------
	closeEmbed: function()
	{
		$("embed-video").hide();
		
		return false;
	},
	
	//---------------------------------------------------------------------------------------------------------------
	nextVideo: function()
	{
		if($("html5_player") != "undefined" && $("html5_player") != null && $("html5_player").visible())
			return true;
		
		if(jQuery("#video-next-button").hasClass("disabled"))
			return false;
			
		document.getElementById("videoplayer").nextVideo();
		
		return false;
	},
	
	//---------------------------------------------------------------------------------------------------------------
	prevVideo: function()
	{
		if($("html5_player") != "undefined" && $("html5_player") != null && $("html5_player").visible())
			return true;
			
		if(jQuery("#video-prev-button").hasClass("disabled"))
			return false;
			
		document.getElementById("videoplayer").prevVideo();
		
		return false;
	},
	
	//---------------------------------------------------------------------------------------------------------------
	openVideoUrl: function(id, evt)
	{
		if(isNaN(id) || id == 0)
			return;
			
		window.location = "videos-" + id + ".htm";
	},
	
	//---------------------------------------------------------------------------------------------------------------
	onHTML5VideoPlay: function()
	{
		Video.watchTimer.play();
		Video.watchTimerTotal.play();
	},
	
	//---------------------------------------------------------------------------------------------------------------
	playVideoId: function(id)
	{
		if(isNaN(id) || id == 0)
			return;
			
		if($("videoplayer") == "undefined")
			return true;
			
		if(typeof document.getElementById("videoplayer").playVideoById == "undefined")
			return true;
			
		jQuery(".toc_list").find("li").removeClass("active");
		jQuery(".video-carousel").find("li").removeClass("active");
		if(jQuery("#carousel_video_" + id).length)
			jQuery("#carousel_video_" + id).addClass("active");
		goToTop();
			
		return !document.getElementById("videoplayer").playVideoById(id);
	},
	
	//---------------------------------------------------------------------------------------------------------------
	updateViewCounter: function()
	{	
		var params = new Object();
		params.video_id = this.active_video_id;
		
		new Ajax.Request("custom/modules/video/video_ajax.cfc?method=updateVideoViewCounter", {
			method: 'post',
			parameters : params,
			onSuccess: function(transport) {

			}
		});
	}
}


