// 
//  crown-ent.js
//  Crown Entertainment JavaScript
//  
//  Created by Victor Nguyen on 2009-08-19.
//  Copyright 2009 igloo digital. All rights reserved.
// 

// Entertainment-specific functionality
Crown.Ent = {
	
	init: function () {
		Crown.Ent.Tabs.init();
		Crown.Ent.VideoPlayer.init();
	},
	
	Tabs: {
		
		HOLDER_ID: 'ent_landing_feat_tabs',
		REPLACE_ID: 'ent_landing_feat_content',
		LOADING_ID: 'ent_landing_feat_loading',
		AJAX_URL: '/ajax/ent-category/',
		
		ActiveRequest: null,
		
		init: function () {
			$('#' + Crown.Ent.Tabs.LOADING_ID).hide();
			
			var all_links = $('#' + Crown.Ent.Tabs.HOLDER_ID).find('a');
			
			all_links.click(function(){
				var link = $(this);
				var param = link.attr('rel');
				if (Crown.Common.isEmpty(param)) { return true; }
				if (Crown.Ent.Tabs.ActiveRequest) { Crown.Ent.Tabs.ActiveRequest.abort(); }
				$('#' + Crown.Ent.Tabs.LOADING_ID).show();
				Crown.Ent.Tabs._loadFeatureContent(param, all_links, link);
				return false;
			});
			
			// if ent landing page ... if the URL has an anchor link, activate appropriate tab
			if ($('#' + Crown.Ent.Tabs.HOLDER_ID).length > 0) { Crown.Ent.Tabs._goToAnchorTab(); }
	
		},
		
		_loadFeatureContent: function (param, all_links, link) {
			Crown.Ent.Tabs.ActiveRequest = $.ajax({
			  url: Crown.Ent.Tabs.AJAX_URL + param,
			  success: function(html){
					Crown.Common.Browser._resetActiveClass(all_links, link);
			    $('#' + Crown.Ent.Tabs.REPLACE_ID).replaceWith(html);
					$('#' + Crown.Ent.Tabs.LOADING_ID).hide();
					Crown.Ent.VideoPlayer.init();
			  }
			});
		},
		
		_resetActiveClass: function (list, el) {
			list.removeClass('active');
			el.addClass('active');
		},
		
		_goToAnchorTab: function () {
			var anchor = window.location.href.split('#')[1];
			if (!anchor) { return false; }
			var active_id = 'ent-tab-' + anchor;
			var active_tab = $('#' + active_id);
			active_tab.click();
			$(document).scrollTo(active_tab, 500, {axis:'y', offset:-68});
		}
		
	},
	
	
	VideoPlayer: {
		
		SWF_PATH: '/library/flash/ent/videoplayer.swf',
		BUTTON_CLASS: 'btn_ent_play_video',
		NOFLASH_HTML: '<div class="ent_noflash">To view video, please download and install the free <a href="http://www.adobe.com/go/getflashplayer" target="_blank">Adobe Flash Player</a></div>',
		
		FLV_PATH: '',
		
		Embedded: false,
		
		init: function () {
			Crown.Ent.VideoPlayer.Embedded = false;
			
			$('.' + Crown.Ent.VideoPlayer.BUTTON_CLASS).click(function(){
				Crown.Ent.VideoPlayer._scrollIntoView(Crown.Ent.VideoPlayer._getHolderId($(this)));
				if (Crown.Ent.VideoPlayer.Embedded == true) { return false; }
				Crown.Ent.VideoPlayer._embed(Crown.Ent.VideoPlayer._getHolderId($(this)), Crown.Ent.VideoPlayer._getVars($(this)));
				return false;
			});
			
		},
		
		_getHolderId: function (link) {
			var holder_id = link.attr('href').split('#').slice(1);
			if (Crown.Common.isEmpty(holder_id)) {
				return null;
			} else {
				return holder_id;
			}
		},
		
		_getVars: function (link) {
			return link.attr('rel');
		},
		
		_disableParentLink: function (holder_id) {
			var direct_parent = $('#' + holder_id).parent('a');
			if (!(direct_parent.val() == null)) {
				direct_parent.click(function(){ return false; });
			}
		},
		
		_embed: function (holder_id, video_var) {
			
			if ((Crown.Common.isEmpty(holder_id)) || (Crown.Common.isEmpty(video_var))) { return false; }
			
			var flashvars = {
				'path': Crown.Ent.VideoPlayer.FLV_PATH,
				'flv': video_var
			};

			var params = {
				allowScriptAccess: "always",
				wmode: 'opaque',
				allowFullScreen: 'true'
			};

			var attributes = {
								
			};
			
			swfobject.embedSWF(Crown.Ent.VideoPlayer.SWF_PATH, holder_id, "576", "324", Crown.Common.Flash.MIN_VERSION, Crown.Common.Flash.EXPRESSINSTALL_PATH,  flashvars, params, attributes, Crown.Ent.VideoPlayer._embedCallBack);
		
			Crown.Ent.VideoPlayer.Embedded = true;
		},
		
		_scrollIntoView: function (holder_id) {
			$(document).scrollTo($('#' + holder_id), 500, {axis:'y', offset:-58});
		},
		
		_embedCallBack: function (e) {
			if ((e.success == false) && (Crown.Ent.VideoPlayer.Embedded == false)) {
				$('.' + Crown.Ent.VideoPlayer.BUTTON_CLASS).after(Crown.Ent.VideoPlayer.NOFLASH_HTML);
			} else {
				Crown.Ent.VideoPlayer._disableParentLink(e.id);
			}
		}
		
	}
	
};


// on domready
$(document).ready(function(){
	Crown.Ent.init();
});