/**
 * Video Portal Initialisation Javascript
 * 
 * @author 				cajisebutu
 * @version				0.0.1
 */


//#UI INITIALISATION

$TORA.Requirement(["video"], true)(function() {
	var videoPkg = $TORA("video");
	videoPkg.whenPlayerLoaded("video-brightcove-player", function(player) {

		var self = arguments.callee;
		if (self.notFirstRun) return;
		else self.notFirstRun = true; 
		
		var container = document.getElementById("video-lineup"),
			playerContainer = document.getElementById("video-asset-player");
		if (container&&playerContainer) {
	
			var $c_ = $TORA("common"),
					$c_Type = $c_.type,
					$c_Dom = $c_.dom,
					addEventListener = $c_Dom.addEventListener,
					getElementsByClassName = $c_Dom.getElementsByClassName;
					
			//UTILITY FUNCTIONS
			
			function initMetaDataListeners(config) {
	
				var items = config.items,
					mainInfo = config.mainInfo,
					extendedInfo = config.extendedInfo,
					evManager = player.EVENT;
				
				for (var i=0,k;k=items[i];i++) {
					var fr = true;
					if(i!=0) { fr = false; }
					var bid = k.getElementsByTagName("dd")[3].innerHTML
					evManager.attachListener("onVideoPlay", createOnPlayHandler(k, config, bid, fr));
				}
			};
			
			function createOnPlayHandler(it, c, b, fr) {
				
				var item = it;
				var config = c;
				var bid = b;
				var firstRun = fr;
				var report = $TORA("PAGE").getProperty("pageReport");
				
				return function(media) {
					if (bid==media.id) {
						if(!firstRun) {
							report.run("omniture");
						} else { firstRun = false; }
						$TORA("PAGE").getProperty("adManager").reload();
						var mainInfo = config.mainInfo,
							extendedInfo = config.extendedInfo,
							title = mainInfo.getElementsByTagName("dd")[0],
							summary = mainInfo.getElementsByTagName("dd")[1],
							dateAdded = extendedInfo.getElementsByTagName("dd")[1],
							views = extendedInfo.getElementsByTagName("dd")[2], 
							duration = extendedInfo.getElementsByTagName("dd")[3];
						
						title.innerHTML = item.getElementsByTagName("h3")[0].getElementsByTagName("a")[0].innerHTML; 
						summary.innerHTML = item.getElementsByTagName("dd")[4].innerHTML;
						dateAdded.innerHTML = item.getElementsByTagName("dd")[0].innerHTML;
						views.innerHTML = item.getElementsByTagName("dd")[1].innerHTML;
						duration.innerHTML = item.getElementsByTagName("dd")[2].innerHTML;
					}
				};	
			}
			
			initMetaDataListeners({
				items : getElementsByClassName.call(container, "item"),
				mainInfo : getElementsByClassName.call(playerContainer, "main-info")[0],
				extendedInfo : getElementsByClassName.call(playerContainer, "other-info")[0]
			});
			
		}
	});
});
