/*************************************************************************************************/
/**	Portland
/*************************************************************************************************/
var Portland = function()
{
	/* Constants */
	var MY_CONST = "";
	this.MY_CONST2 = "";
	
	/* Locals */
	var _me;
	
	/* Globals */
	return {
		/*---------------------------------------------------------------------------------------*/
		/*	init (TODO: document)
		/*---------------------------------------------------------------------------------------*/
		init: function()
		{
			_me = this;
	
			// Initialize home page.
			if (typeof(HomePlayerURL) != 'undefined')
			{
				Portland.Home.init(HomePlayerURL);
			}
			
			// Initialize channels page.
			if (typeof(ChannelsParams) != 'undefined')
			{
				Portland.Channels.init(ChannelsParams);
			}
			
			Utils.defaultText();
		}
	}; // Return
}(); // Portland

$(function() {
	Portland.init();
})

/*************************************************************************************************/
/**	Portland.Home
/*************************************************************************************************/
Portland.Home = function()
{
	/* Locals */
	var _me;
	var _playerURL;
	var _qualityButtonLow;
	var _qualityButtonMed;
	var _qualityButtonHigh;

	/* Globals */
	return {
		/*---------------------------------------------------------------------------------------*/
		/*	init (TODO: document)
		/*---------------------------------------------------------------------------------------*/
		init: function(playerURL)
		{
			_me = this;
			_playerURL = playerURL;
			
			// Initialize buttons.
			_qualityButtonLow = $('#btnQuality_low');
			_qualityButtonHigh = $('#btnQuality_high');
				
			_qualityButtonLow.click(function() {
				_me.showSwfViewer("low", _qualityButtonLow);
			});
			_qualityButtonHigh.click(function() {
				_me.showSwfViewer("high", _qualityButtonHigh);
			});

			// Set 'high' as the default player quality.
			
			_me.showSwfViewer('high', _qualityButtonHigh);
		},
		
		/*---------------------------------------------------------------------------------------*/
		/*	ShowSwfViewer (TODO: document)
		/*---------------------------------------------------------------------------------------*/
		showSwfViewer: function(quality, el)
		{
			/*if (!SWFObject)
			{
				return function() {setTimeout(function(){showSwfViewer(quality, el)},5)};
			}*/
			// UnSelect currently selected quality button.
			var selectedEl = $(".rayvHost-top .selected");
			selectedEl.removeClass("selected");
            
            // Select button.
			$(el).parent().addClass("selected");
			
			// Checks if Rayv class exists and player isn't installed, when setting on high.
			if (typeof(Rayv) != "undefined" && !Rayv.IsInstalled() && quality == "high")
			{
				$(".video-wrap").addClass("video-wrap-install");
				_me.embedRayvViewer();
			}
			else
			{
				$(".video-wrap").removeClass("video-wrap-install");
	            
				var so = null;
				
				switch (quality)
				{
					case "high":
						_me.embedRayvViewer();
						break;
						
					case "low":
						so = new SWFObject(_playerURL, "rayv_viewer","586", "391" , "8", "#000000");
						so.addVariable ("ConnectionName", "rtmpt://rayvtech.fc.llnwd.net/rayvtech/_definst_"); 
						so.addVariable ("StreamName", "tbdemo"); //hdtest //Tbdemo
						so.addParam("allowFullScreen", "true");

						so.write("rayvHost");
						break;
						
				}
			}
		},
	    
		/*---------------------------------------------------------------------------------------*/
		/*	embedRayvViewer
		    - Embeds the Rayv Viewer, checking first if the JS library exists.
		/*---------------------------------------------------------------------------------------*/
		embedRayvViewer: function()
		{
			if (!Rayv)
			{
				document.getElementById("rayvHost").innerHTML =
					'<div style="color: #FFF; margin: 10px; font-weight: bold;">rayv.js library is not loaded properly.</span>';
			}
			else
			{
				var affiliate = "Trailblazers";
				var channelID = "tbdemo";
				var initParams="Affiliate=" + affiliate+ "&ChannelID=" + channelID +"&allowDetach=1";

				Rayv.Embed("rayvHost", {
					"Affiliate":		affiliate,
					"ChannelID":		channelID,
					"InitParams": 		initParams + "&allowDVR=true"				
					});
			}
		}
	} // Return
}(); // Portland.Home

/*************************************************************************************************/
/**	Portland.Channels
/*************************************************************************************************/
Portland.Channels = function()
{
	/* Locals */
	var _me;
	
	var _playerURL;
	var _medStreamName;
	var _medConnectionName;
	var _rayvChannelKey;
	var _qualityButtonMed;
	var _qualityButtonHigh;
	
	/* Globals */
	return {
		/*---------------------------------------------------------------------------------------*/
		/*	init (TODO: document)
		/*---------------------------------------------------------------------------------------*/
		init: function(params)
		{
			_me = this;
			
			_playerURL = params.playerURL;
			_coverImageURL = params.coverImageURL;
			_medStreamName = params.medStreamName;
			_medConnectionName = params.medConnectionName;
			_rayvChannelKey = params.rayvChannelKey;

			// Initialize buttons.
			_qualityButtonMed = $("#btnQuality_med");
			_qualityButtonHigh = $("#btnQuality_high");
			
			_qualityButtonMed.click(function() {
				_me.showSwfViewer("med", _qualityButtonMed, 0);
			});			
			_qualityButtonHigh.click(function() {
				_me.showSwfViewer("high", _qualityButtonHigh, 1);
			});
			
			// Set 'high' as the default player quality.
			_me.showSwfViewer("high", _qualityButtonHigh, 1);
		},
		
		/*---------------------------------------------------------------------------------------*/
		/*	ShowSwfViewer (TODO: document)
		/*---------------------------------------------------------------------------------------*/
		showSwfViewer: function(quality, el)
		{
			var selectedEl = jQuery(".rayvHost-top .selected");
			selectedEl.removeClass("selected");
			jQuery(el).parent().addClass("selected");
			
			jQuery(".video-wrap").removeClass("video-wrap-install");
			
			if (document.getElementById("rayvHost") == null) return;
			
			document.getElementById("rayvHost").innerHTML ="<div class='no-flash'>This page contains video that requires JavaScript and a recent version of Adobe's Flash Player.<a href='http://www.macromedia.com/go/getflashplayer'>Download the latest Adobe Flash Player</a>now to view this content.</div>";
			
			var so = null;
			
			switch (quality)
			{
				case "high":
					_me.embedRayvViewer();
					break;
				
				case "med":
					so = new SWFObject(_playerURL, "rayv_viewer","586", "391" , "8", "#000000");
					so.addVariable ("StreamName", _medStreamName);
					so.addVariable ("ConnectionName", _medConnectionName); 
					so.addVariable ("Vod", "False"); 
					so.addParam("allowFullScreen", "true");
					so.write("rayvHost");
					
					break;
			}
		},
		/*---------------------------------------------------------------------------------------*/
		/*	embedRayvViewer
		    - Embeds the Rayv Viewer, checking first if the JS library exists.
		/*---------------------------------------------------------------------------------------*/
		embedRayvViewer: function()
		{
			if (!Rayv)
			{
				document.getElementById("rayvHost").innerHTML =
					"rayv.js library is not loaded properly.";
			}
			else
			{
				var affiliate = "Trailblazers";
				var initParams="Affiliate=" + affiliate+ "&ChannelID=" +_rayvChannelKey +"&allowDetach=1";

				Rayv.Embed("rayvHost", {
					"Affiliate":	affiliate,
					"ChannelID":	_rayvChannelKey,
					"InitParams": 	initParams + "&allowDVR=true"
					});
			}
		}
	}; // Return
}(); // Portland.Channels

/*************************************************************************************************/
/**	Utils
/** This class contains utility functions.
/*************************************************************************************************/
var Utils = function()
{
	/* Globals */
	return {
			defaultText: function()
			{
				var textboxes = $(".defaultText");
				textboxes.focus(function(srcc)
				{
					if ($(this).val() == $(this)[0].title)
					{
						$(this).removeClass("defaultTextActive");
						$(this).val("");
					}
				});
		    
				textboxes.blur(function()
				{
					if ($(this).val() == "")
					{
						$(this).addClass("defaultTextActive");
						$(this).val($(this)[0].title);
					}
				});
		    
			textboxes.focus();
			textboxes.blur();
			}
	};
}(); // Utils