// GLOBAL VARS
/*
 * KEY for video channels...
 * 
 * 527 : ?
 * 
 * 540 : All Videos
 * 546 : All Drills
 * 544 : Control Signature
 * 
 * 541 : Control Videos
 * 548 : Control Reward
 * 549 : Control Feature
 * 
 * 557 : Sparq Videos //Old
 * 559 : Sparq Videos
 * 
 * 602 : Accuracy Videos
 * 599 : Accuracy Signature Videos
 * 604 : Accuracy Pro Insight Videos
 * 
 * 542 : All Control Elite Videos
 * 543 : Control Elite
 * 545 : Control Signature Elite
 * 547 : Control Elite Drills
 * 647 : Control Pro insights
 * 
 * 601 : All Accuracy Elite Videos
 * 600 : Accuracy Signature Elite
 * 605 : Accuracy Pro Insight Elite
 * 
 * 723 : All Speed Elite Videos
 * XXX : Speed Signature Elite
 * XXX : Speed Pro Insight Elite 
 * 
 */

/*var isEliteUser = false;
var filtersJSON = {
	//"test": {
	//	"publicIds": [601]
	//},
	"control": {
		"publicIds": [541, 544, 549], // 647 removed
		"eliteIds": [543, 545]
	},
	"accuracy": {
		"publicIds": [602],
		"eliteIds": [601]
	},
	"training": {
		"publicIds": [540, 602, 723], // 647 removed
		"eliteIds": [542, 601]
	},
	"signature": {
		"publicIds": [544, 599],
		"eliteIds": [545, 600]
	},
	"insidethepro": {
		"publicIds": [604, 544, 725], // 647 removed
		"eliteIds": [605, 545, 726]
	},
	"sparq": {
		"publicIds": [559]
	},
	"speed": {
		"publicIds": [723]
	},
	"allvideos": {
		"publicIds": [540, 602, 723], // 647 removed
		"eliteIds": [542, 601]
	}
};*/
var finalVideosJSON;
var duplicateVideos = "";
var pageToShow = 1;
	
JQ(function() {
	nikefootball.training.allvideos.init();	

	// add the extra markup needed by the Button Factory Selects on the fly
	//JQ('.fctSel').wrap('<div class="fctSelDiv"></div');
	//JQ('.fctSelDiv').wrap('<div class="fctSelDivWrap"></div');
	
	if (nikefootball.GLOBAL_VARIABLES.user != null) {
		isEliteUser = nikefootball.GLOBAL_VARIABLES.user.isEliteCodeUser;
	}
	var filterName = JQ("div#allvideoscontainer").attr("class");	
	if (filterName == "" || filterName == "training") {
		filterName = "training";
	} else {
		JQ("#allvideosfilter").find("div.highlighted span.desc").html(JQ("#allvideosfilter").find("div.options a[rel='" + filterName + "'] span.desc").html());
	}

	// Get videos based on query string parameter filterName and optionally display video based on vidGuid
	//publicIds = filtersJSON[filterName]["publicIds"]; // odapter ID 287
	//eliteIds = filtersJSON[filterName]["eliteIds"];
	//nikefootball.training.allvideos.getChannels(publicIds, eliteIds, nikefootball.GLOBAL_VARIABLES.locale, vidGuid);
	nikefootball.training.allvideos.setUpDropdown();
	
	// Use cufon
	var cufonDataRhode = [
		{selector: 'div#allvideosfilter .filterinner .label'},
		{selector: 'div#allvideosfilter .dropdown .highlighted'},
		{selector: 'div#allvideosfilter .dropdown .optionsinner	a', options: {hover: !JQ.browser.msie}}
	];
	
	nikefootball.training.cufonise(cufonDataRhode, 'Rhode-MediumCondensed', 'HelveticaNeueLTProBoldCondensed');
	
});

nikefootball.training.allvideos = {

	init: function() {

		// Load all training vids first
		finalVideosJSON = videosJSON["training"];
		nikefootball.training.allvideos.displayVideos();

	},

	
	// Make ajax calls to Odaptor to get public channels and elite channels - optional: show video overlay based on guid
/*	getChannels : function(channelIds, eliteChannelIds, locale, guid) {
		nikefootball.training.services.getVideos({
			channelId: channelIds,
			locale: locale.replace(/__/,"_"),
			callback: function(data) {
				nikefootball.training.allvideos.parseVideos(data, false);
				if (eliteChannelIds != undefined) {
					nikefootball.training.services.getVideos({
						channelId: eliteChannelIds,
						locale: locale.replace(/__/,"_"),
						callback: function(data) {
							nikefootball.training.allvideos.parseVideos(data, true);
							nikefootball.training.allvideos.displayVideos();
							if (typeof(guid) != "undefined" && guid != "") {
								nikefootball.global.OverlayController.show({overlayName: 'overlayvideo', guid: guid})
							}
						}
					});
				}
				else {
					nikefootball.training.allvideos.displayVideos();
				}
			}
		});
	},
	
	// Process video json objects returned from Odaptor channels - merge them all into one array and add "elite = true" node if it comes from an elite channel
	parseVideos : function(videos, isEliteChannel) {
		if (videos.data[0].items != undefined) {
			for(i=0;i<videos.data.length;i++){
				var currentChannel = videos.data[i].items;
				if (isEliteChannel == true) {
					for(j=0;j<currentChannel.length;j++){
						currentChannel[j].elite = true;
					}
				}
				if (typeof(finalVideosJSON) == "undefined" || finalVideosJSON == "") {
					finalVideosJSON = currentChannel;
				}
				else {
					finalVideosJSON = JQ.merge( finalVideosJSON, currentChannel );
				}
			}
		}
	},
*/	
	// String together HTML to write to page
	displayVideos : function(){
		
		var strHTML = '';
		var dataObj = finalVideosJSON;
		pageToShow = 1;
		//console.log(finalVideosJSON);
		//console.log(finalVideosJSON.length);
		if(dataObj){
			var curItem = 1;
			var allItems = 0;
			for(j=0;j<dataObj.length;j++){
				if(duplicateVideos.indexOf(dataObj[j].guid) == -1){
					if(curItem == 1){ strHTML += '<ul class="videos">'; }
					
					if (dataObj[j].elite == true && isEliteUser == false) {	
							strHTML += '<li title="' + dataObj[j].title + '" class="elite">';
							//strHTML += '	<a href="javascript:nikefootball.global.OverlayController.show({overlayName: \'overlayvideo\', guid: \'' + dataObj[j].guid +'\'})">';
							strHTML += '    <img src="' + dataObj[j].thumb + '" alt="">';
							if(dataObj[j].title.length > 31){
								strHTML += '    <span class="videolabel">' + dataObj[j].title.substring(0,28) + '...</span>';
							} else {
								strHTML += '    <span class="videolabel">' + dataObj[j].title + '</span>';	
							}
							strHTML += '    <span class="desaturation">&nbsp;</span>';
							strHTML += '    <span class="icon lockedicon">&nbsp;</span>';
							//strHTML += '	</a>';
							strHTML += '</li>';
					}
					else {
						strHTML += '<li title="' + dataObj[j].title + '">';
						strHTML += '    <a href="javascript:nikefootball.global.OverlayController.show({overlayName: \'overlayvideo\', guid: \'' + dataObj[j].guid +'\'})">';
						strHTML += '    <img src="' + dataObj[j].thumb + '" alt="">';
						if(dataObj[j].title.length > 31){
							strHTML += '    <span class="videolabel">' + dataObj[j].title.substring(0,28) + '...</span>';
						} else {
							strHTML += '    <span class="videolabel">' + dataObj[j].title + '</span>';
						}
						strHTML += '    <span class="icon playicon">&nbsp;</span>';
						strHTML += '    </a>';
						strHTML += '</li>';
					}
					curItem++;
					allItems++;
					if(curItem == 4){ strHTML += '</ul>'; curItem = 1; }
				}
				duplicateVideos += dataObj[j].guid + "|";
			}
			JQ("#allvideosfilter").find("div.highlighted span.count").html(allItems);
			if(allItems > 12){
				JQ("div#allvideoscontainerinner").animate({marginTop: 0});
				nikefootball.training.allvideos.setUpPagination(allItems);
			} else {
				JQ("div#allvideoscontainerinner").animate({marginTop: 0});
				pageToShow = 1;
				JQ("div#allvideospagination").html("");
			}
			JQ("div#allvideoscontainerinner").css("display","block");
			duplicateVideos = "";
		}
		else {
			JQ("div#allvideospagination").html("");
			strHTML = "<p class='noVideos'>" + noVideosMsg + "</p>";
			JQ("#allvideosfilter").find("div.highlighted span.count").html("0");
		}
		JQ("div#allvideoscontainerinner").html(strHTML);
		if (JQ.browser.msie && JQ.browser.version<7) { 
			JQ('body').ie6pngfixes(); //IE6 fix
		}

		
		var cufonDataHelvetica = [
			{selector: 'div#allvideoscontainerinner ul.videos li span.videolabel'},
			{selector: '#allvideoscontainerinner p.noVideos'}
		];
		nikefootball.training.cufonise(cufonDataHelvetica, 'HelveticaNeueCondensed', 'HelveticaNeueLTProMediumCondensed');
		
		var cufonDataRhode = [
			{selector: '#allvideosfilter div.highlighted span.count'}
		];
		
		nikefootball.training.cufonise(cufonDataRhode, 'Rhode-MediumCondensed', 'HelveticaNeueLTProBoldCondensed');

	},
	
	setUpPagination: function(maxItems){
	
		var strHTML = '<div class="nav-container">';
		strHTML += '<div class="nav-buttons"><span class="lft">&nbsp;</span><span class="rht">&nbsp;</span></div>';
		strHTML += '<div class="nav-items">';
		
		var totalPages = Math.ceil(maxItems/12);
		for(i=1;i<=totalPages;i++){
			if(i == pageToShow){
				strHTML += '<span class="selected">' + i + '</span>';
			} else {
				strHTML += '<span>' + i + '</span>';
			}
			if(i < totalPages){
				strHTML += ' . ';
			}
		}
		strHTML += '</div></div>';
		
		JQ("div#allvideospagination").html(strHTML);
		
		// Use cufon
		var cufonDataRhode = [
			{selector: 'div#allvideospagination div.nav-items'}
		];
		
		nikefootball.training.cufonise(cufonDataRhode, 'Rhode-MediumCondensed', 'HelveticaNeueLTProBoldCondensed');
		
		JQ("div.nav-buttons span.lft").mouseover(function(evt){
			JQ(this).parent().addClass("o-left");
		}).mouseout(function(evt){
			JQ(this).parent().removeClass("o-left");
		}).click(function(evt){
			nikefootball.training.allvideos.updatePagination("prev",totalPages);
		}).mousedown(function(evt){
			JQ(this).parent().addClass("d-left");
		}).mouseup(function(evt){
			JQ(this).parent().removeClass("d-left");
		});
		JQ("div.nav-buttons span.rht").mouseover(function(evt){
			JQ(this).parent().addClass("o-right");
		}).mouseout(function(evt){
			JQ(this).parent().removeClass("o-right");
		}).click(function(evt){
			nikefootball.training.allvideos.updatePagination("next",totalPages);
		}).mousedown(function(evt){
			JQ(this).parent().addClass("d-right");
		}).mouseup(function(evt){
			JQ(this).parent().removeClass("d-right");
		});
	
	},
	
	updatePagination: function(dir,totalPages){
		
		var scrollShift = 672;
		var toScrollTo = 0;
		
		if(dir != null){
			switch(dir){
				case "prev":
					if((pageToShow - 1) != 0){ pageToShow = (pageToShow - 1); }
					break;
				case "next":
					if((pageToShow + 1) <= totalPages){	pageToShow = (pageToShow + 1); }
					break;
				default:
			}
		}
		
		JQ("div#allvideospagination div.nav-items span").each(function(index){
			JQ(this).removeClass("selected");
			if((index+1) == pageToShow){
				JQ(this).addClass("selected");
			}
		});
		
		if(pageToShow == 1){
			toScrollTo = 0;
		} else {
			toScrollTo = parseInt(scrollShift*(pageToShow-1));
		}
		
		// Use cufon
		var cufonDataRhode = [
			{selector: 'div#allvideospagination div.nav-items'}
		];
		
		nikefootball.training.cufonise(cufonDataRhode, 'Rhode-MediumCondensed', 'HelveticaNeueLTProBoldCondensed');
		
		JQ("#allvideoscontainerinner").animate({marginTop: -toScrollTo});
	},
	
	setUpDropdown: function(){
		
		JQ("#allvideosfilter").find("div.options").hide();
		
		var loader = JQ("#allvideosfilter").find("div.highlighted span.count img");
		
		JQ("#allvideosfilter").find("div.highlighted").click(function(evt){
			JQ("#allvideosfilter").find("div.options").toggle();
			evt.stopPropagation();
			JQ("body").click(function(){
				JQ("#allvideosfilter").find("div.options").hide();
				JQ("body").unbind("click");
			});
		});
		
		JQ("#allvideosfilter").find("div.options a").click(function(){
			JQ("#allvideosfilter").find("div.options").hide();
			if(JQ(this).find("span.desc cufontext").length > 0){
				JQ("#allvideosfilter").find("div.highlighted span.desc").html(JQ(this).find("span.desc cufontext").text());
			} else {
				JQ("#allvideosfilter").find("div.highlighted span.desc").html(JQ(this).find("span.desc").text());
			}
			
			JQ("#allvideosfilter").find("div.highlighted span.count").html(loader);
			// Refresh cufon
			var cufonDataRhode = [
				{selector: 'div#allvideosfilter .dropdown .highlighted'}
			];
			nikefootball.training.cufonise(cufonDataRhode, 'Rhode-MediumCondensed', 'HelveticaNeueLTProBoldCondensed');
			
			finalVideosJSON = "";
			var filterName = JQ(this).attr("rel");
			
			JQ("div#allvideoscontainerinner").fadeOut(function() {
				JQ("div#allvideoscontainerinner").empty();
				//publicIds = filtersJSON[filterName]["publicIds"]; // odapter ID 287
				//eliteIds = filtersJSON[filterName]["eliteIds"];
				//nikefootball.training.allvideos.getChannels(publicIds, eliteIds, nikefootball.GLOBAL_VARIABLES.locale)
				
				finalVideosJSON = videosJSON[filterName];
				nikefootball.training.allvideos.displayVideos();
			});
			return false;
		});
		
	}
}

