var page = 1;
var thumbCount = 0; 
var totalResults = 0;
var genre = "";
var feedURL = "date_thumbs.php";
var originalPageName = "";

//on DOM ready...
window.addEvent('domready', function() {
//	alert("domready");

	$('videoPlayer').setStyle('display', 'none');
	$('game').setStyle('display', 'none');
	$('dimBox').setStyle('display', 'none');
	
	$('dimBox').addEvent('click', function(event) {
		event.stop();
		hideGame();
	});
	
	$('closeBtn').setStyle('display', 'none');

	$('closeBtn').addEvent('click', function(event) {
		//prevent the page from changing
		event.stop();
		reactivateSlideShow();
	});
	
	$('closeGameBox').addEvent('click', function(event) {
		//prevent the page from changing
		event.stop();
		hideGame();
	});
	
	$('small_arrow_left').addEvent('click', function(event) {
		//prevent the page from changing
		event.stop();
		if(this.get("opacity") == 1) {
			page--;
			updateThumbs(page, genre);			
		}
	});
	
	 $('small_arrow_right').addEvent('click', function(event) {
		//prevent the page from changing
		event.stop();
		//alert(el.getStyle("opacity"));
		if(this.get("opacity") == 1) {
			page++;
			updateThumbs(page, genre);
		}
	});
	
	$('sort_by_date').addEvent('click', function(event) {
		//prevent the page from changing
		event.stop();
		//alert(el.getStyle("opacity"));
		feedURL = "date_thumbs.php";
		page = 1;
		genre = "";
		updateThumbs(1, "", true);
		
		$('genre_menu').getElements('option')[0].setProperty('selected', 'selected');
		$('sort_by_date').addClass("search_selected");
		$('sort_by_genre').removeClass("search_selected");
		//omniture
		s.events="event8";
		s.prop5="date";
		s.eVar5 = s.prop5;
		s.linkTrackVars="events,prop5,eVar5";
		s.linkTrackEvents="event8";
		s.tl(this, "o", "Search Click");
	});
	
	//determine how many thumbs to show
	var pageType = document.getElement('body').getProperty('id');
	if(pageType == "locked_page") {
		thumbCount = 8;
	} else {
		thumbCount = 14;
	}
	
	checkPagination(1,thumbCount);
	hijackThumbLinks();
	hijackExtraLinks();
	addGenreLinks();
	addGameLink();
	hijackFooterLinks();
	
});

function updateThumbs(page, genreFilter, isDate) {
//	alert("updateThumbs");
	//alert("page "+page+"   "+"genreFilter "+genreFilter)
	var startIndex = ((page - 1)*thumbCount)+1;

	var req = new Request.HTML({
		method: 'get',
		url: feedURL,
//		update: null,
		evalResponse: true,
		onRequest: function() {
			//disable arrows
			disableArrow($('small_arrow_right'));
			disableArrow($('small_arrow_left'));
			//disable genre drop down
			$('genre_menu').setProperty('disabled', 'disabled');
			/*alert('loading');*/
			//$('thumbHolder').set('html', '<h4 class="thumbs_loading">loading...</h4>');
			$('thumbHolder').set('html', '<p class="thumbs_loading"><img src="_media/preloader_ajax.gif" /></p>');
		},
		onFailure: function(xhr) { 
			//alert('fail!');
			
		},
		onComplete: function(response) { 
			/*alert(response)*/ 
		},
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) { 
			//alert('success!');
			//alert(responseHTML);
			$('thumbHolder').set('html', responseHTML);			
			checkPagination(startIndex,thumbCount);

			//re-enable genre menu
			$('genre_menu').setProperty('disabled', '');
			//hi jack the new thumb links
			hijackThumbLinks();
		}
	})
	
	var genreParam = "";
	
	if(genreFilter != "" && genreFilter != "all") {
		genreParam += "&genreFilter="+genreFilter;
		//set global genre variable
		//genre = genreFilter;
	} else {
		//set global genre variable
		//genre = "";
	}
	
	if(isDate) {
		req.send();
	} else {
		req.send("page="+page+"&startIndex="+startIndex+"&maxResults="+thumbCount+genreParam);	
	}
	
}

function hijackThumbLinks() {
	//alert('addLinks');
	if ($('thumbs_list')) {
		if(feedURL == "date_thumbs.php") {
			$('thumbs_list').getElements('a').addEvent('click', updateSlideshow);
		} else {
			$('thumbs_list').getElements('a').addEvent('click', selectVideo);
		}
	}
	
	//addGameLink();
}

function disableArrow(el) {
//	el.removeEvents('click');
	el.removeClass('arrow_enabled');
	el.setStyle("cursor","default");
	el.set("opacity", 0);
}

function enableArrow(el) {
//	el.removeEvents('click');
	el.addClass('arrow_enabled');
	el.setStyle("cursor","pointer");
	el.set("opacity", "1");
}

function checkPagination(index, count) {
	//alert('checkPagination '+index+" "+count)
	var videosPerDay = 15;
	if($('thumbs_list')) {
		totalResults = $('thumbs_list').getProperty('alt');
	} else {
		totalResults = 0;
	}
	if(genre == "") {
		totalResults = Math.ceil(totalResults/videosPerDay);
	}
	
//	alert("index "+index+" count "+count+" totalResults "+totalResults);
//	alert(count);
//	alert(totalResults);
	if((index+count) > totalResults) {
		disableArrow($('small_arrow_right'));
	} else {
		enableArrow($('small_arrow_right'));
	}
	if (index == 1){
		disableArrow($('small_arrow_left'));
	} else {
		enableArrow($('small_arrow_left'));
	}
}

function hijackFooterLinks() {
	$('footer').getElements('a').addEvent('click', function(event) {
		//prevent the page from changing
		event.stop();
		//open link in new window
		window.open(this.href);	
		var myParent = this.getParent();
		if(myParent.getProperty("id") == "footer_mtvmusic") {
			s.events="event9";
			s.linkTrackVars="events";
			s.linkTrackEvents="event9";
			s.tl(this, "o", "MTVMusic.com Click");
		} else if(myParent.getProperty("id") == "footer_att") {
			//alert("at&t")
			s.events="event13";
			s.linkTrackVars="events";
			s.linkTrackEvents="event13";
			s.tl(this, "o", "AT&T Site Link");
		} else if (this.getProperty("id") == "footer_att_logo") {
			//alert("at&t logo");
			s.events="event13";
			s.linkTrackVars="events";
			s.linkTrackEvents="event13";
			s.tl(this, "o", "AT&T Site Link");			
		}
	});
}

function hijackExtraLinks() {
	//alert('hijackExtraLinks');
	if($('extras')) {
		$('extras').getElements('a').addEvent('click', function(event) {
			//prevent the page from changing
			event.stop();
			//open link in new window
			var myParent = this.getParent();
			if(myParent.getProperty('id') == 'extras_share') {
				var width = 380;
				var height = 476;
				var xPos = Math.floor( (screen.width - width) / 2);
				var yPos = Math.floor( (screen.height - height) / 2);
				window.open(this.href, 'newwindow','menubar=1,resizable=1,scrollbars=1,width='+width+',height='+height+",top="+yPos+",left="+xPos);				
			} else if (myParent.getProperty("id") == "extras_play") {
				displayUnlockedGame();
			} else {
				window.open(this.href);			
			}
			
			//omniture
			if(myParent.getProperty('id') == 'extras_share') {
				s.events="event11";
				s.linkTrackVars="events";
				s.linkTrackEvents="event11";
				s.tl(this, "o", "Share Access Click");
			}
			if(myParent.getProperty("id") == "extras_packages") {
				s.events="event12";
				s.linkTrackVars="events";
				s.linkTrackEvents="event12";
				s.tl(this, "o", "Packages and Deals Clicks");
			}			
		});
	}

}

function addGenreLinks() {
	//alert("addGenreLinks");
	$('genre_menu').addEvent('change', function(event) {
		//alert("changed to:"+this.value);
		if(this.value != "") {
			feedURL = "genre_thumbs.php";
			page = 1;
			updateThumbs(page, this.value);
			genre = this.value;
			
			$('sort_by_date').removeClass("search_selected");
			$('sort_by_genre').addClass("search_selected");
			
			//omniture
			s.events="event8";
			s.prop5=this.value;
			s.eVar5 = s.prop5;
			s.linkTrackVars="events,prop5,eVar5";
			s.linkTrackEvents="event8";
			s.tl(this, "o", "Search Click");
		}
	});
}

//game stuff
function addGameLink() {
	//alert("addGameLink");
	$(document.body).getElements('a.play_locked').removeEvents('click');
	
	$(document.body).getElements('a.play_locked').addEvent('click', function(event) {
		//prevent the page from changing
		event.stop();
		displayGame();
	});
}

function displayGame() {
//	alert("displayGame");
	
	hideVideoPlayer();
	
	//if firefox 2, open game in a new window	
	if(Browser.Engine.gecko && Browser.Engine.version <= 18) {
		var width = 231;
		var height = 288;
		var xPos = Math.floor( (screen.width - width) / 2);
		var yPos = Math.floor( (screen.height - height) / 2);
		window.open("game_popup.php?gameType=locked", 'gamepopup','menubar=0,resizable=0,scrollbars=0,width='+width+',height='+height+",top="+yPos+",left="+xPos);
		return true;
	}
	
	//if IE6, hide the drop down box
	if(Browser.Engine.trident) {
		//alert(Browser.Engine.version);
		if(Browser.Engine.version < 5) {
			if($('genre_menu')) {
				$('genre_menu').setStyle('display','none');
			}
		}
	}
	
	$('dimBox').setStyle('display', 'block');
	$('game').setStyle('display', 'block');
	

	var genres = ["indierock","pophhrb", "country"];
	var selectedGenre = genres[Math.floor(genres.length*Math.random())];		
	//alert(selectedGenre);
		
	var params = {
			quality: "high",
			scale: "showall",
			salign: "",
			align: "middle",
			bgcolor: "#0f0f0f",
			allowFullScreen: 'false',
			allowscriptaccess:'always',
			wmode: "window"
		};
	
	var flashvars = {
		baseURL: "game/backend",
		genre: selectedGenre,
		accessURL: "_includes/unlock.php"
	};
		
	var attributes = {};

	swfobject.embedSWF("game/vaultQuiz_locked.swf", "flashGame", "250", "288", "9.0.124", "expressInstall.swf", flashvars, params, attributes);
		
	trackPlayGame();
}

function displayUnlockedGame() {
	//alert("displayUnlockedGame");
	
	hideVideoPlayer();
	
	//if firefox 2 on mac, open game in a new window
	if(Browser.Platform.mac) {
		if(Browser.Engine.version <= 18) {
			var width = 231;
			var height = 288;
			var xPos = Math.floor( (screen.width - width) / 2);
			var yPos = Math.floor( (screen.height - height) / 2);
			window.open("game_popup.php?gameType=unlocked", 'gamepopup','menubar=0,resizable=0,scrollbars=0,width='+width+',height='+height+",top="+yPos+",left="+xPos);
			return true;
		}
	}
	
	$('dimBox').setStyle('display', 'block');
	$('game').setStyle('display', 'block');

	if(Browser.Engine.trident) {
		//alert(Browser.Engine.version);
		if(Browser.Engine.version < 5) {
			if($('genre_menu')) {
				$('genre_menu').setStyle('display','none');
			}
		}
	}
	
	var genres = ["indierock","pophhrb", "country"];
	var selectedGenre = genres[Math.floor(genres.length*Math.random())];
		
	//alert(selectedGenre);
			
	var params = {
			quality: "high",
			scale: "noscale",
			salign: "",
			align: "middle",
			bgcolor: "#000000",
			allowFullScreen: 'false',
			allowscriptaccess:'always',
			wmode: "transparent"
		};

	var flashvars = {
		baseURL: "game/backend",
		genre: selectedGenre,
		accessURL: "_includes/unlock.php"
	};
		
	var attributes = {};
	
	swfobject.embedSWF("game/vaultQuiz_unlocked.swf", "flashGame", "250", "288", "9.0.124", "expressInstall.swf", flashvars, params, attributes);
		
	trackPlayGame();
}

function hideGame() {
	$('dimBox').setStyle('display', 'none');
	$('game').setStyle('display', 'none');
	//alert("hideVideoPlayer");
	var el = $("flashGame");

	if(el){
		var div = document.createElement("div");
		el.parentNode.insertBefore(div, el);

		//Remove the SWF
		swfobject.removeSWF("flashGame");

		//Give the new DIV the old element's ID
		div.setAttribute("id", "flashGame");

		$('game').setStyle('display', 'none');

		if(Browser.Engine.trident) {
			//alert(Browser.Engine.version);
			if(Browser.Engine.version < 5) {
				if($('genre_menu')) {
					$('genre_menu').setStyle('display','');
				}
			}
		}

		s.events="event19";
		s.pageName="AT&T Vault: Game End";
		s.eVar1 = s.pageName;
		s.t();

		//reset page name one game is closed
		s.events="";
		s.pageName = originalPageName;
		s.eVar1 = s.pageName;
	}
}

function trackPlayGame() {
	//alert("trackPlayGame");
	s.events="event6";
	s.linkTrackVars="events";
	s.linkTrackEvents="event6";
	s.tl(this, "o", "Game Click");
	
	s.events="event1";
	s.pageName="AT&T Vault: Game Start";
	s.eVar1 = s.pageName;
	s.server=""
	s.channel=""
	s.pageType=""
	s.prop1=""
	s.prop2=""
	s.prop3=""
	s.prop4=""
	s.prop5=""
	s.t();
}

function changeSelected(el) {
	if($('thumbs_list')) {
		$('thumbs_list').getElements('li').removeClass('selected');
		$(el).addClass("selected");
	}
}

//video player
function showVideoPlayer(videoURL) {
	//alert("showVideoPlayer "+videoURL);
	
	var params = {
		quality: "high",
		scale: "noscale",
		salign: "TL",
		align: "middle",
		wmode: "opaque",
		allowscriptaccess: "always",
		allowFullScreen: "true"
	};
	var flashvars = {
		configParams: "playMode%3Datt%26psp%3D0",
		autoPlay: true
	};
	var attributes = {};
	
	
	swfobject.embedSWF(videoURL, "mtv_player", "520", "319", "9.0.124", "expressInstall.swf", flashvars, params, attributes);
	
	//show close button & video player
	$('closeBtn').setStyle('display', 'block');
	$('videoPlayer').setStyle('display', 'block');
	
			
	//	alert("video start!");
}

function hideVideoPlayer() {
	//alert("hideVideoPlayer");
	var el = $("mtv_player");

	if(el){

      var div = document.createElement("div");
      el.parentNode.insertBefore(div, el);

      //Remove the SWF
      swfobject.removeSWF("mtv_player");
		
		//if FF2, remove destroy the div to kill the double video player from appearing
		if(el){
			if(Browser.Engine.gecko && Browser.Engine.version <= 18) {
					el.destroy();
			}
		}
	      //Give the new DIV the old element's ID
			//div.setProperty("id", "mtv_player");
			
		div.setAttribute("id", "mtv_player");
	
		//hide close button
		$('closeBtn').setStyle('display', 'none');
		$('videoPlayer').setStyle('display', 'none');
		
		$('slideshow').hideVideoPlayer();
	}
}

function selectVideo(event) {
	//alert("selectVideo");
	event.stop();
	
	hideVideoPlayer();

	var thumb = this.getParent("li");
	changeSelected(thumb);

	var params = this.href.split("?")[1].split("&");
	var day = params[0].replace("day=","");
	var videoID = params[1].replace("id=","");
	
	if($('slideshow')) {
		$('slideshow').selectVideo(day, videoID);		
	}
	
	//update slide show title
	setSlideShowTitle(this.getProperty('title'));
	
	//omniture
	s.events="event10";
	s.prop3=formatDate(new Date(String(thumb.getElements("span.fullDate").get('text'))));
	s.eVar3 = s.prop3;
	s.linkTrackVars="events,prop3,eVar3";
	s.linkTrackEvents="event10";
	s.tl(this, "o", "On The Rack Click");
}

//slideshow stuff
function updateSlideshow(event) {
	//alert('updateSlideshow');
	//prevent the page from changing
	event.stop();
	
	hideVideoPlayer();
	
	var thumb = this.getParent("li");
	changeSelected(thumb);
	//update slide show with new xml
	var params = this.href.split("?")[1];
	if(params != undefined) {
		var day = params.replace("day=","");		
	} else {
		var day = "";
	}

	var videoID = "";
	
	if($('slideshow')) {
		$('slideshow').selectVideo(day, videoID);		
	}

	//update slide show title
	setSlideShowTitle(this.getProperty('title'));
	
	//omniture
	s.events="event10";
	s.prop3=formatDate(new Date(String(thumb.getElements("span.fullDate").get('text'))));
	s.eVar3 = s.prop3;
	s.linkTrackVars="events,prop3,eVar3";
	s.linkTrackEvents="event10";
	s.tl(this, "o", "On The Rack Click");
}

function reactivateSlideShow() {
//	alert("reactivateSlideShow");
	hideVideoPlayer();
		
	if($('slideshow')) {
		$('slideshow').reactivate();
	}
	
	return false;
}

function setSlideShowTitle(thumbTitle) {
	//alert("setSlideShowTitle");
	//split up title for HTML formatting if it's a playlist of the day
	var titleSplit = thumbTitle.split(":");
	if(titleSplit.length > 1) {
		var titleSplit1 = titleSplit[0]+":&nbsp;";
		var titleSplit2 = "<span class=\"playlist_date\">"+titleSplit[1]+"</span>"; 
		//update title
		$('slideshow_indicator').getElements('h3').set('html', titleSplit1+titleSplit2);
	} else {
	//otherwise, use the relative day titles
		switch (thumbTitle) {
			case "Next Monday's Sneak Peek":
				var newTitle = "<span class=\"playlist_date\">Next Monday's</span> Sneak Peek";
			break;
			case "Tomorrow's Sneak Peek":
				var newTitle = "<span class=\"playlist_date\">Tomorrow's</span> Sneak Peek";
			break;
			case "Today's Unlocked Videos":
				var newTitle = "<span class=\"playlist_date\">Today's</span> Unlocked Videos";
			break;
		}
		$('slideshow_indicator').getElements('h3').set('html', newTitle);
	}
}

function formatDate(fullDate) {
	var year = fullDate.getFullYear();
	var month = fullDate.getMonth()+1;
	if(month < 10) {
		month = "0"+month;
	}
	var date = fullDate.getDate();	
	var formattedDate = year+"-"+month+"-"+date;
	
//	alert("formattedDate "+formattedDate);
	return formattedDate;
}
