


$j(document).ready(function(){
	MTV.init();
});

MTV = new function(){
	this.pageTitle = document.title;
	this.initArray = new Array();
	this.version = 'charlie';
	var hat;
	var theme;
	
	this.init = function(){
		document.body.onmousedown = mouseDown;
		MTV.Events.addLinkEvents();
		MTV.Voting.init();
		MTV.UI.initScrollingModules();

		for(var i=0; i<MTV.initArray.length; i++){
			MTV.initArray[i]();
		}
		
		return true;
	}

	this.resetPageTitle = function(){
		document.title = MTV.pageTitle;
	}
	
	this.hatTrick = function(hatNumber) {
		if(hat != undefined) hatNumber = hat;
		var total = 66;
		var bodyTag = document.getElementsByTagName('body')[0];
		var classList = bodyTag.className;
	
		if (classList.indexOf("hat") > -1) {	
			var tempClasses = new Array();
			var classes = classList.split(" ");
			var j = 0;
			for(i = 0; i < classes.length; i++) {
				if(classes[i].substr(0,3) != "hat") tempClasses[j++] = classes[i];
			}
			classList = tempClasses.join(" ");
		}
		if (!hatNumber) hatNumber = Math.floor(total*Math.random());
		var newHat = " " + hatNumber;
		bodyTag.className = classList + newHat + "";
	}

	this.setHat = function(h){
		hat = h;
	}
	this.getHat = function(){
		return hat;
	}
	
	this.setTheme = function(t){
		theme = t;
	}
	this.getTheme = function(){
		return theme;
	}
	
	mouseDown = function(e){
		if (MTV.UI.ModalWindow.isOpen) MTV.UI.ModalWindow.mouseDownBody(e);
		return true;
	}
}

MTV.Apps = new function(){}

MTV.Apps.TypeAhead = new function(){
	this.version;
}

MTV.Apps.Mamabar = new function(){
	this.configObj;
		
	this.init = function(){
		if(MTV.Apps.Mamabar.configObj != undefined){			
			var config = MTV.Apps.Mamabar.configObj;

			var attributes = "";			
			if(config.search!=undefined) attributes += " search=\"" + config.search + "\"";
			if(config.footer!=undefined) attributes += " footer=\"" + config.footer + "\"";
			if(config.theme!=undefined) attributes += " theme=\"" + config.theme + "\"";
			if(config.head!=undefined) attributes += MTV.Apps.Mamabar.makeLinksObject(config.head, "head");
			if(config.footerMidCol!=undefined) attributes += MTV.Apps.Mamabar.makeLinksObject(config.footerMidCol, "foot_midcol");
			if(config.footerRightCol!=undefined) attributes += MTV.Apps.Mamabar.makeLinksObject(config.footerRightCol, "foot_rightcol");
				
			var mamabar = "<scr" + "ipt type=\"text/javascript\" src=\"/widgets/scripts/mamma.jhtml\"" + attributes + "><\/scr"+"ipt>";
			document.write(mamabar);
		}
	}
	
	this.makeLinksObject = function(linksObj, name){
		var prop = " " + name + "=\"";
		prop += "{";
		if(linksObj.link instanceof Array){
			for (var i=0; i < linksObj.link.length; i++){
				prop += MTV.Apps.Mamabar.makeLink(linksObj.link[i]);
				if(i < linksObj.link.length-1) prop += ",";
			}
		}
		else {
			prop += MTV.Apps.Mamabar.makeLink(linksObj.link);
		}
		prop += "}\"";
		return prop;
	}
	
	this.makeLink = function(linkObj){
		var link = "";
		link += "'" + linkObj.content + "'";
		link += ":";
		link += "'" + linkObj.args + "'";
		return link;
	}
}




MTV.Constants = new function(){
	this.playerMediaHost = "http://media.mtvnservices.com";
}
var com_mtvi_mtv2flag;

MTV.Player = new function(){
	var navOverride;
	var franchiseLinksUrl;
	var tuneInPromo;
	
	this.init = function(){
		// handle nav
		if(navOverride != undefined){
			$j("#navlist-wrap").empty();
			$j("#searchmtv, #artistlist,").remove();
			var scriptUrl = "/videos/scripts/nav.jhtml?nav="+navOverride;
			$j.ajax({type: "GET", url: scriptUrl, dataType: "script", cache: true});
		}
		$j("#searchmtv, #artistlist, #navlist-wrap").css("visibility", "visible");
	}
	
	this.localFeedHandler = function(){
		if(MTVN.Player.feed.document.navOverride!=undefined) navOverride = MTVN.Player.feed.document.navOverride;
		if(MTVN.Player.feed.document.franchiseLinksUrl!=undefined) franchiseLinksUrl = MTVN.Player.feed.document.franchiseLinksUrl;
		if(MTVN.Player.feed.document.tuneInPromo!=undefined) tuneInPromo = MTVN.Player.feed.document.tuneInPromo;
		if(MTVN.Player.feed.document.hat!=undefined) MTV.setHat("h-" + MTVN.Player.feed.document.hat);		
		MTV.setTheme(MTVN.Player.feed.document.theme);
		
		// handle contentTypeName
		if(MTVN.Player.feed.document.contentTypeName != undefined){
			if(MTVN.Player.feed.document.contentTypeName.indexOf("MTV2") > -1) com_mtvi_mtv2flag = true;
		}
		
		if(MTVN.Player.feed.document.mamabar!=undefined) MTV.Apps.Mamabar.configObj = MTVN.Player.feed.document.mamabar;
	}
	
	this.localModulesHandler = function(){
		var container = $j("#customPromo");
		if(MTVN.Player.tvSeriesObj.urlAlias != undefined){	
			if(MTVN.Player.tvSeriesObj.urlAlias.indexOf("the_hills") > -1){
				$j.get("/videos/ajax/soundtrack_promo.jhtml", {}, function(data){
					container.empty().append(data);	
				});
			}
		}
		
		if(franchiseLinksUrl != undefined){
			var container = $j("#franchiseLinks");
			if(container.is("*")){
				// get custom franchise link url
				$j.get(franchiseLinksUrl, function(data){
					container.append(data);
				});
			}
		}
		
		if(tuneInPromo != undefined){
			var container = $j(".group-c");
			if(container.is("*")){
				// get custom franchise link url
				$j.get(tuneInPromo, function(data){
					container.prepend(data);
				});
			}
		}
		
	}	
}
MTV.Ads = new function(){
	this.moreAdditionalValues = "";
	this.zone = "";
	this.adPageVals = "";
	
	this.handleAdditionalValues = function(){
		var buffer = "";
		var additionalvals = adCall.additionalValues.split(";");
		for (var i=0; i < additionalvals.length; i++) {
			var pair = additionalvals[i];
			if(pair!=""){
				// adjust player values
				if(typeof MTV.Player!="undefined"){  
					if(pair.indexOf("content_id") >= 0 && MTV.Player.id!=undefined){
						pair = "content_id=" + MTV.Player.id;
					}	
				}
				
				buffer += pair + ";";
			}
		}

		// add key/value pairs to adCall.additionalValues
		buffer += MTV.Ads.moreAdditionalValues;

		adCall.additionalValues = buffer;
		
		MTV.Ads.handleAdPageVals();
		MTV.Ads.handleZone();
	}	
	
	this.handleAdPageVals = function(){
		if(MTV.Ads.adPageVals != "") adCall.adPageVals = MTV.Ads.adPageVals;		
	}
	
	this.handleZone = function(){
		if(MTV.Ads.zone != ""){
			var newZone = MTV.Ads.zone;
			if(adCall.zone.indexOf("mv") == 0) newZone = "mv/" + newZone
			newZone += ";";
			adCall.zone = newZone;
		}
	}
}
MTV.Reporting = new function(){
	this.dispatcherAttributes = "";
	
	this.handleDispatcherAttributes = function(){
		var attrs = MTV.Reporting.dispatcherAttributes.split(";");
		for (var i=0; i < attrs.length; i++) {
			
			if(attrs[i]!=""){
				var pair = attrs[i].split("=");	
				dispatcher.setAttribute(pair[0],pair[1]);
			}
		}
	}	
}
MTV.UI = new function(){
	this.iframes = new Array();
	
	this.initScrollingModules = function(){
		/* handle no max-height in IE 6 */
		if(jQuery.browser.msie && jQuery.browser.version.substr(0,1)=="6"){
			$j(".scroll-wrap").each(function(){
				var sw = $j(this);
				var olHeight = sw.children("ol:first").height();
				if(olHeight < 370) sw.height("100%");
			});
		}
	}
	
	this.initIframes = function(){
		var parent_doc = parent.document;
		
		for(var i=0; i < MTV.UI.iframes.length; i++){
			// update height
			var iframe = $j("#"+MTV.UI.iframes[i], parent_doc);
			poll_height = $j(".iframe-mdl").height();
			iframe.height(poll_height);
		}
	}
}

MTV.UI.Overlay = new function(){
	this.active = false;
	
	this.init = function(){
		$j("#container-outer").append('<div id="overlay"></div>');
		$j("#modalWindow").remove().appendTo("#container-outer");
		MTV.UI.Overlay.active = true;
	}
	
	this.open = function(){
		$j("#overlay").addClass("open");
		$j("#overlay").height(document.body.offsetHeight + "px");
	}
	
	this.close = function(){
		$j("#overlay").removeClass("open");
		$j("#overlay").height("0px");
	}
}

MTV.UI.ModalWindow = new function(){
	var modalWindowId = "modalWindow";
	var currentLocationId = "";
	this.ignoreMouseDownBody = false;
	this.isOpen = false;

	this.open = function(requestUrl, locationId, xhrFormat){
		currentLocationId = locationId;
		
		if(xhrFormat=="jquery"){
			$j.get(requestUrl, function(data){
				MTV.UI.Overlay.open();
				$j("#dialogContainer").empty().append(data);
				MTV.UI.ModalWindow.updateLocation();
			});
		}
		else{
			MTV.Utils.requestTaconite(requestUrl, '','','', MTV.UI.ModalWindow.updateLocation);
		}
		//this.isOpen = true;
	}

	this.updateLocation = function(){
		var mwElement = document.getElementById(modalWindowId);
		var mwLeft = 0;
		var mwTop = 0;
		var mwWidth = 446;

		//MTV.Utils.makeVisible(modalWindowId);
		MTV.Utils.show(modalWindowId);

		if(!currentLocationId){
			// defaults to centered position
			if(MTV.UI.Overlay.active){
				var bodyWidth = document.body.offsetWidth;
				mwLeft = Math.round(bodyWidth/2 - mwWidth/2);
			}
			else{
				mwLeft = 257; // centered for 446px-wide modal window
			}	
			mwTop = Math.round(((document.documentElement.clientHeight - mwElement.offsetHeight)/2) + document.documentElement.scrollTop) - 30; // 30 pixel cheat	
		}
		else{
			//positioning relative to an element
			var locElement = document.getElementById(currentLocationId);
			var locLeft = MTV.Utils.findPosX(locElement) - MTV.Utils.findPosX(document.getElementById("wrap"));	//left position relative to wrap instead of the window left
			var locTop = MTV.Utils.findPosY(locElement);

			if(locLeft < 320){ mwLeft = -20; }
			else if(locLeft > 320 && locLeft < 640){ mwLeft = 257; }
			else{ mwLeft = 533; }

			//mwTop = locTop - (mwElement.offsetHeight + 1);
			mwTop = locTop + 20;
		}

		mwElement.style.left = mwLeft + "px";
		mwElement.style.top = mwTop + "px";

		MTV.UI.ModalWindow.isOpen = true;
	}

	this.close = function(){
		//MTV.Utils.makeInvisible(modalWindowId);
		//MTV.Utils.hide(modalWindowId);
		var mwElement = document.getElementById(modalWindowId);
		mwElement.style.left = "-9999px";
		MTV.UI.Overlay.close();
		currentLocationId="";
		this.isOpen = false;
	}

	this.mouseDown = function(e){
		this.ignoreMouseDownBody = true;
		return true;
	}

	this.mouseDownBody = function(e){
		if (!this.ignoreMouseDownBody){
			this.close();
		}
		this.ignoreMouseDownBody = false;
		return true;
	}
}

MTV.UI.Tab = new function(){
	this.open = function(obj){
		var newActiveTabId = obj.parentNode.id;
		var newActivePageId = newActiveTabId.substring(0, newActiveTabId.indexOf("Tab"));

		var tab = document.getElementById(newActiveTabId);
		var tabList = tab.parentNode;
		var tabs = tabList.getElementsByTagName("li");

		// set new active tab
		for(var i=0; i < tabs.length; i++){
			var t = tabs[i];

			if(t.id == newActiveTabId){
				$j(t).addClass("active");
			}
			else{
				$j(t).removeClass("active");
			}
		}

		// set new active page
		var page = document.getElementById(newActivePageId);
		var pageList = page.parentNode;
		var pages = pageList.childNodes;

		for(var i=0; i < pages.length; i++){
			var p = pages[i];

			if(p.nodeName=="DIV" && p.className.indexOf('tab-content') >= 0){
				if(p.id == newActivePageId){
					$j(p).removeClass("hide");
				}
				else{
					$j(p).addClass("hide");
				}
			}
		}

	}
}

MTV.UI.MdlTab = new function(){
	this.open = function(obj){
		var currentTabNavItem = $j(obj).parent();
		var position = currentTabNavItem.prevAll().length;

		currentTabNavItem.addClass("active");
		currentTabNavItem.siblings().removeClass("active");

		var mdl = currentTabNavItem.parents(".mdl:first");

		var pages = (mdl.children("ol.lst").length >0) ? mdl.children("ol.lst") : mdl.children("div.tab-content");
		pages.addClass("hide");
		pages.eq(position).removeClass("hide");
	}
}

MTV.UI.RefreshPaginate = new function(){
	this.submit = function(form){
		var str = $j(form).text();
		var maxPages = parseInt(str.substring(str.indexOf("of")+3, str.length));
		var val = parseInt(form.page.value);
		var baseUrl = form.baseUrl.value;
		
		if(val > 0 && val <= maxPages){
			var connector = (baseUrl.indexOf("?") >=0) ? "&" : "?";
			var url = (val==1) ? baseUrl : baseUrl + connector + "page=" + val;
			window.location.href = url;
		}

		return false;
	}
}

MTV.UI.AjaxPaginate = new function(){
	this.page = function(obj, requestUrl, pageNum){
		var paginationDiv = $j(obj).parent();
		var container = paginationDiv.parent();
		var params = {};
		if(pageNum > 1) params.page = pageNum;
		
		$j.get(requestUrl, params, function(data){
			container.empty();
			container.append(data);
		});
		
	}
}

MTV.UI.Accordion = new function(){
	var howMany = "";

	this.init = function(){
		// remove text nodes
		$j("#accordion a.accord-link").each(function(){
			for(var i=0; i<this.childNodes.length; i++){
				if(this.childNodes[i].nodeType==3) this.removeChild(this.childNodes[i]);
			}
		});

		$j("#accordion > div.accord-slat").bind("mouseenter", function(){ MTV.UI.Accordion.activate(this); });
		howMany = $j("#accordion > div.accord-slat").length;
		MTV.UI.Accordion.positionContent($j("#accordion > div.accord-over"));
	}

	this.activate = function(obj){
		var active = $j(obj);
		$j("#accordion > div.accord-slat").removeClass("accord-over");
		active.addClass("accord-over");
		MTV.UI.Accordion.positionContent(active);
	}

	this.positionContent = function(active){
		var position = active.prevAll().length + 1;
		var gap = howMany - position;

		var content = active.children(".accord-content"); // the active content box
		var offsetLeft = MTV.UI.Accordion.getOffsetLeft(active.get(0), active.get(0).offsetLeft); // left side of active item
		var contentWidth = content.width() + 30;

		var newLeft = (offsetLeft+133) - contentWidth/2;
		var newRight = newLeft + contentWidth;

		if(newRight > 950){
			newLeft = 950 - contentWidth - (10*gap); // 10px for every item
		}
		else if(newLeft < 0){
			newLeft = 10*position;
		}

		content.css("left", newLeft);
	}

	this.getOffsetLeft = function(element, offsetLeft){
		if(element.offsetParent.className=="mdl mdl-main mdl-accordion"){
			return offsetLeft;
		}
		else{
			var parent = element.offsetParent;
			var val = element.offsetLeft + parent.offsetLeft;
			return MTV.UI.Accordion.getOffsetLeft(parent, val);
		}
	}
}
MTV.Content = new function(){}

MTV.Content.RSS = new function(){
	this.open = function(obj){
		var dataUrl = "/rss/xml/detail.jhtml?rssId=" + obj.id;
		MTV.UI.ModalWindow.open(dataUrl, obj.id);
	}
}
MTV.Voting = new function(){
	this.pc = "";

	this.init = function(){
		MTV.Voting.pc = new PlayerController("MTV.Voting.pc");
		MTV.Voting.pc.playerUrl = MTV.Voting.Player.playerUrl;
		MTV.Voting.pc.configUrl = MTV.Voting.Player.configUrl;

		var allDivs = document.getElementsByTagName("div");

		if (MTV.Voting.Player.active){
			$j("div.voting-player").each(function(i){
				var playerArgs = MTV.Voting.Player.playerArgs;
				var configParams = this.id;
				var vars = configParams.split(".");
				for (var j=0; j < vars.length; j++) {
					if (playerArgs.length > 0)
						playerArgs += "&";
					var pair = vars[j].split(":");
					playerArgs = playerArgs + pair[0] + "=" + pair[1];
				}
	
				playerArgs += "&o=1";
				
				// reset target id in order to allow multiple players with the same vid
				this.id = "votingPlayer" + i;
				var targetId = this.id;
				var embedId = targetId + "Embed";	
				
				MTV.Voting.pc.write(MTV.Voting.Player.configUrl, playerArgs, targetId, embedId, MTV.Voting.Player.width, MTV.Voting.Player.height, []);
			});
		}


		for (var i=0; i< allDivs.length; i++){
			switch(allDivs[i].className){
				case 'vote-btn':
					if (MTV.Voting.Button.active){
						var flashVars = "";
						var targetId = allDivs[i].id;
						var embedId = targetId + "Button";

						var vars = targetId.split(":"); //get pollId and value
						var pollId = vars[0];
						var value = vars[1];

						flashVars += "cogix=" + MTV.Voting.Button.cogix + "&amp;";
						flashVars += "pollid=" + pollId + "&amp;";
						flashVars += "answer" + "=" + value + "&amp;";
						flashVars += "validator=" + MTV.Voting.Button.validator + "&amp;";
						flashVars += "authClass=" + MTV.Voting.Button.authClass;

						var so = new SWFObject(MTV.Voting.Button.src, embedId, MTV.Voting.Button.width, MTV.Voting.Button.height, "9", "#000000");
						so.addParam("flashVars", flashVars);
						so.addParam("AllowScriptAccess", "sameDomain");
						so.addParam("wmode", "transparent");
						so.useExpressInstall('/sitewide/components/expressInstall/adobeExpressInstall.swf');
						so.write(targetId);
					}
					break;
				default: break;
			}
		}
	}
}

MTV.Voting.Player = new function(){
	this.active = false;
	this.playerUrl = "PLAYER_URL_NOT_SET";
	this.configUrl = "CONFIG_URL_NOT_SET";
	this.width = "240";
	this.height = "180";
}

MTV.Voting.Button = new function(){
	this.active = false;
	this.src = "/sitewide/components/buttons/vote/voteButton.swf";
	this.width = "75";
	this.height = "30";
	this.cogix = "polling-onair";
	this.validator= "timestamp|votes";
	this.authClass = "com.mtvnet.auth.dis.HashDigestInputStrategy1";
}

MTV.Events = new function(){
	this.addLinkEvents = function(){
		var allLinks = document.getElementsByTagName("a");

		for (var i=0; i< allLinks.length; i++){
			switch(allLinks[i].className){
				case 'rssLink':
					allLinks[i].onclick = function(){
						MTV.Content.RSS.open(this);
						return false;
					}
					break;
				default: break;
			}
		}

		$j('.user-send-message').each(function() {
			if(Flux.Context._isCommunityMember) {
				var user_display_name = Flux.Context._currentUserSettings.UserDisplayName;
				var community_landing = Flux.Context._communityLandingPage;
				var ucid = this.href.match(/\w+$/);
				this.href = community_landing + "profile/" + user_display_name + "/Messaging/Mail.aspx?recipient=" + ucid;
			}
			else {
				this.href = Flux.Context._signInUrl + "?returnPath=" + window.location.href;
			}
		});

	}

	// addEventSimple and removeEventSimple courtesy of quirksmode.org
	this.addEventSimple = function(obj,evt,fn) {
		if (obj.addEventListener)
			obj.addEventListener(evt,fn,false);
		else if (obj.attachEvent)
			obj.attachEvent('on'+evt,fn);
	}

	this.removeEventSimple = function(obj,evt,fn) {
		if (obj.removeEventListener)
			obj.removeEventListener(evt,fn,false);
		else if (obj.detachEvent)
			obj.detachEvent('on'+evt,fn);
	}
}
MTV.Community = new function(){
	this.host = 'http://community.mtv.com';
}

MTV.Community.Widgets = function(){
	this.errorLocation = '';
}







		
	


		
	
MTV.Flux = new function(){}

MTV.Flux.DAAPI = new function(){
	this.initArray = new Array();
	this.baseUrl = "http://daapi.flux.com/2.0/00001/JSON/D3FCFFFF0002D51D0002FFFFFCD3";

	this.init = function(){
		if(communityAccess){
			jQuery.each(MTV.Flux.DAAPI.initArray, function (i) {
				if(jQuery.isFunction(MTV.Flux.DAAPI.initArray[i])) MTV.Flux.DAAPI.initArray[i]();
			});
			
			MTV.Flux.DAAPI.Module.init();
		}
	}

	this.sendRequest = function(feed, callback, params) {
		var requestUrl = MTV.Flux.DAAPI.baseUrl + feed;
		Flux.Core.executeGetRequest(requestUrl, function(response){
			callback(Sys.Serialization.JavaScriptSerializer.deserialize(response), params);
		});
	}
}

MTV.Flux.DAAPI.Module = new function(){
	var config; 					// the current config - a regular js object
	var container; 					// the current container - a jquery object
	var responses = new Array();	// stores DAAPI responses for a module until all tabs are loaded
	var responseCounter = 0;

	this.configs = new Array(); 	// queue of module configs
	
	this.init = function(){
		if(MTV.Flux.DAAPI.Module.configs.length > 0){
			config = MTV.Flux.DAAPI.Module.configs.pop();
			MTV.Flux.DAAPI.Module.create();
		}
	}
	
	this.create = function(){
		if($j("#"+config.containerId).is("*")){
			container = $j("#"+config.containerId);
			
			if(config.moduleWrapper){
				var mdl = $j("<div/>").attr("class","mdl");
				container.append(mdl);
				container = mdl;
				if(config.moduleTitle != undefined){
					var title = $j("<div/>").attr("class", "h-wrap group");
					title.append($j("<h2/>").attr("class", "h-sub2 group").append($j("<span>" + config.moduleTitle + "</span>")));
					container.append(title);
				}
			}
			
			for(var i=0; i < config.tabs.length; i++){
				MTV.Flux.DAAPI.sendRequest(config.tabs[i].url, MTV.Flux.DAAPI.Module.loadData, {position:i});
			}
		}
		else{
			MTV.Flux.DAAPI.Module.finish();
		}
	}
	
	this.finish = function(){
		responses = new Array();
		responseCounter = 0;
		MTV.Flux.DAAPI.Module.init(); // start over for more module configs
	}
	
	/* ------------------ */
	
	this.loadData = function(response, paramsObj){
		responses[paramsObj.position] = response;
		responseCounter++;
		
		if(responseCounter == config.tabs.length){
			MTV.Flux.DAAPI.Module.build();
		}
	}
	
	this.build = function(){
		if(config.tabs.length > 1) container.append(MTV.Flux.DAAPI.Module.buildTabNav());

		for(var i=0; i<responses.length; i++){
			var isFirst = (i==0) ? true : false;
			container.append(MTV.Flux.DAAPI.Module.buildTab(responses[i], isFirst));
		}
		
		MTV.Flux.DAAPI.Module.finish();
	}
	
	this.buildTabNav = function(){
		var ul = $j("<ul/>").addClass("mdl-nav group");

		for(var x=0; x < config.tabs.length; x++){
			var li = $j("<li/>");
			if(x==0) li.addClass("active");

			var a = $j("<a/>").attr("href", "#").append(config.tabs[x].title);
			a.click(function(){
				MTV.UI.MdlTab.open(this);
				return false;
			});

			li.append(a);
			ul.append(li);
		}
		return ul;
	}
	
	this.buildTab = function(response, isFirst){
		var items = response.Items;
		var itemCounter = 0;
		
		if(items.length > 0){
			var tab = $j("<div/>").addClass("tab-content");
			if(!isFirst) tab.addClass("hide");

			for(var r=1; r <= config.rows; r++){
				if(itemCounter < items.length){				
					var olClass = "lst lst-photos";
					if(config.columns==2) olClass += " lst-photos-two";
					else if(config.columns==3) olClass += " lst-photos-three";
					else if(config.columns==4) olClass += " lst-photos-four";
					else if(config.columns==6) olClass += " lst-photos-six";
					
					var list = $j("<ol/>").addClass(olClass);
					
					for(var c=1; c <= config.columns; c++){
						var isLast = (c==config.columns) ? true : false;
						if(itemCounter < items.length){
							list.append(MTV.Flux.DAAPI.Module.buildItem(items[itemCounter],isLast));
							itemCounter++;
						}
					}
					
					tab.append(list);
				}
			}
			return tab;
		}
	}
	
	this.buildItem = function(Entry, isLast){		
		var title = $j("<div/>").addClass("title2");
		var titleLink = $j("<a/>").attr("href", Entry.DetailUrl);
		titleLink.append($j("<img/>").attr("src", Entry.Thumbnails.Medium).addClass("thumb"));
		
		var icon = "";
		switch(Entry.Alias){
			case "Video":
				icon = $j("<span/>").addClass("icon icon-play").append("Video: ");
				break;
			default: break;
		}

		if(icon!=="") titleLink.append(icon);
		titleLink.append(Entry.Title);
		title.append(titleLink);
		
		var li = $j("<li/>");		
		if(isLast) li.addClass("last");
		li.append(title);
		li.append($j("<p/>").addClass("deck").append(Entry.Creator.Title));

		var date = MTV.Flux.DAAPI.Utils.formatDate(Entry.DateCreated);
		li.append($j("<p/>").append($j("<span/>").addClass("posted").append("Posted " + date)));

		return li;
	}
}

MTV.Flux.DAAPI.Utils = new function(){
	this.formatDate = function(date){
		var m = date.getMonth() + 1;
		var d = date.getDate();
		var y = date.getFullYear().toString().substr(2,2);
	
		var formattedDate = m + "/" + d + "/" + y;
		
		return formattedDate;
	}
}
MTV.Utils = new function(){
	this.show = function(id){
		var element = document.getElementById(id);
		if (element!=null && element.className.indexOf('hide') >= 0){
			element.className = element.className.substring(0, element.className.indexOf('hide'));
		}
	}

	this.hide = function(id){
		var element = document.getElementById(id);
		if (element!=null){
			element.className = element.className + " hide";
		}
	}

	this.makeVisible = function(id){
		var element = document.getElementById(id);
		if (element!=null && element.className.indexOf('hidden') >= 0){
			element.className = element.className.substring(0, element.className.indexOf('hidden'));
		}
	}

	this.makeInvisible = function(id){
		var element = document.getElementById(id);
		if (element!=null){
			element.className = element.className + " hidden";
		}
	}

	this.findPosX = function(obj){
		var curleft = 0;
		if(obj.offsetParent)
			while(1){
				curleft += obj.offsetLeft;
				if(!obj.offsetParent)
					break;
				obj = obj.offsetParent;
			}
		else if(obj.x)
			curleft += obj.x;
		return curleft;
	}

	this.findPosY = function(obj){
		var curtop = 0;
		if(obj.offsetParent)
			while(1){
				curtop += obj.offsetTop;
				if(!obj.offsetParent)
					break;
				obj = obj.offsetParent;
			}
		else if(obj.y)
			curtop += obj.y;
		return curtop;
	}

	this.requestTaconite = function(url, formElements, async, preRequest, postRequest){
		var ar = new AjaxRequest(url);
		if (formElements != undefined){
			for (var i=0; i < formElements.length; i++){
				ar.addNamedFormElements(formElements[i]);
			}
		}

		if (async!=null && async!=''){ ar.setAsync(async); }
		if (preRequest!=null && preRequest!=''){ ar.setPreRequest(preRequest); }
		if (postRequest!=null && postRequest!=''){ ar.setPostRequest(postRequest); }

		ar.sendRequest();
	}

}

MTV.Utils.Cookies = new function(){
	this.create = function(name,value,days){
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}
	
	this.read = function(name){
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	
	this.erase = function(name){
		MTV.Utils.Cookies.create(name,"",-1);
	}
}


MTV.Utils.Clipboard = new function(){
	this.init = function(){
		var clipboard = $j('<div id="clipboard"></div>').css({position:"absolute", top:"0", left:"-999em"});
		$j("body").append(clipboard);
		
		var clipboardSwf = new SWFObject("/sitewide/components/setClipboard/setClipboard.swf","copyProxy", "2", "2", "8", "#cccccc");
		clipboardSwf.write("clipboard");
	}
	
	this.copy = function(obj){
		var copyProxy = document.getElementById("copyProxy");
		copyProxy.setClipboard(obj.value);
	}
}


$j(function()
{
	MTV.Navigation=new MtvNavigation();
});

function MtvNavigation()
{
  var self=this;
  this.init=function()
  {
    self.meta = {

    }          
    
    self.init_triggers();
    
  }                      
  
  this.init_triggers=function()
  {
    self.init_coda_link_tracking();
  }
  
  this.init_coda_link_tracking=function()
  {
    // override every link in nav menu
    $j('#navlist a').click(function(){
      
      // report click to CODA
      // http://confluence.mtvi.com/display/BUSTECH/CODA+Link+Events
      com.mtvi.reporting.Controller.sendLinkEvent({
        linkName : 'GLOBAL_NAV - ' + $j(this).text(),
        linkType : 'o'
      });
      
      // continue event
      return true;
    });
  }
  
  self.init();
}
// browser specific object extensions


// IE does not support the Array#indexOf method
// which is in the JavaScript 1.6 spec
if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
        return -1;
    }
}
// mimicks li:hover for IE, which doesn't support it
var hoverDebug = Array();
sfHover = function() {
	try
	{

		var sfEls = document.getElementById("nav").getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].onmouseover=function() {
				this.className+=" sfhover";
			}
			sfEls[i].onmouseout=function() {
				this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
			}
		}
	}
	catch(err)
	{
		hoverDebug[0] = err;
	}
}
//if (window.attachEvent) window.attachEvent("onload", sfHover);

// mimicks li:hover for IE, which doesn't support it
var hover2Debug = Array();
sfHover2 = function() {
	try
	{

		var sfEls = document.getElementById("boxOffice-menu").getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].onmouseover=function() {
				this.className+=" sfhover2";
			}
			sfEls[i].onmouseout=function() {
				this.className=this.className.replace(new RegExp(" sfhover2\\b"), "");
			}
		}
	}
	catch(err)
	{
		hover2Debug[0] = err;
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover2);

// for thumbnail view toggling
function vidExpand() {
	if(document.getElementById && document.createTextNode) {
		if(document.getElementById('vidclips')) {
			document.getElementById('vidclips').className='full';
			document.getElementById('linkExpand').className='hide';
			document.getElementById('linkCollapse').className='';
			document.getElementById('vid-toggle-bottom').className='vid-toggle';
			if (typeof tooltip.deactivate == "function") tooltip.deactivate(document.getElementById("vidclips"));
		}
	}
}

function vidCollapse() {
	if(document.getElementById && document.createTextNode) {
		if(document.getElementById('vidclips')) {
			document.getElementById('vidclips').className='simple';
			document.getElementById('linkCollapse').className='hide';
			document.getElementById('linkExpand').className='';
			document.getElementById('vid-toggle-bottom').className='hide';
			if (typeof tooltip.activate == "function") tooltip.activate(document.getElementById("vidclips"));
		}
	}
}


// for popups
function popupOpen(a){
	// close all popups first - so two cant be open at the same time
	var all = a.parentNode.parentNode.getElementsByTagName("div");
	for (var i=0; i<all.length; i++){
		if (all[i].className.indexOf(" open") > 0){
			all[i].className = all[i].className.substring(0, all[i].className.indexOf(" open"));
		}
	}
	
	var siblingDivs = a.parentNode.getElementsByTagName("div");
	for (var i=0; i<siblingDivs.length; i++){
		if (siblingDivs[i].className == "popup"){
			siblingDivs[i].className = siblingDivs[i].className + " open";
		}
	}
	//arcade iframe hazzard
	if (document.getElementById("game")) document.getElementById("game").className = document.getElementById("game").className + " hide";
}

function popupClose(a){
	var popup = a.parentNode.parentNode;
	var popupClass = popup.className;
	popup.className = popupClass.substring(0, popupClass.indexOf(" open"));
	//arcade iframe hazzard
	if (document.getElementById("game")) document.getElementById("game").className = document.getElementById("game").className.substring(0, document.getElementById("game").className.indexOf('hide'));
}

// for sidebar nav
function toggleSn(snid){
	if(document.getElementById(snid).className == 'active'){
		document.getElementById(snid).className = '';
	} else{
		document.getElementById(snid).className = 'active';
	}
}





// default search text

// event handler
function addEventToObject(obj,evt,func) {
	var oldhandler = obj[evt];
	obj[evt] = (typeof obj[evt] != 'function') ? func : function(){oldhandler();func();};
}

// lyrics box stuff
var Searchbox = {
	init : function()
		{
		var sBox = document.getElementById('search-lyrics');
		if (sBox)
			{
			addEventToObject(sBox,'onclick',Searchbox.click);
			addEventToObject(sBox,'onblur',Searchbox.blur);
			}	
		},
	click : function()
		{
		var sBox = document.getElementById('search-lyrics');
		if (sBox.value == 'Enter lyric, artist name or song title')
			{
			sBox.value = '';
			sBox.style.color = 'black';
			}
	  	},
	blur : function()
		{
		var sBox = document.getElementById('search-lyrics');
		if (sBox.value == '' || sBox.value == ' ') {sBox.value = 'Enter lyric, artist name or song title'; sBox.style.color = '#999999';}
		}
	};

// search box stuff
var Searchbar = {
	init : function()
		{
		var sBar = document.getElementById('searchmtv-text');
		if (sBar)
			{
			addEventToObject(sBar,'onclick',Searchbar.click);
			addEventToObject(sBar,'onblur',Searchbar.blur);
			}	
		},
	click : function()
		{
		var sBar = document.getElementById('searchmtv-text');
		if (sBar.value == 'Search')
			{
			sBar.value = '';
			}
	  	},
	blur : function()
		{
		var sBar = document.getElementById('searchmtv-text');
		if (sBar.value == '' || sBar.value == ' ') {sBar.value = 'Search';}
		}
	};

// add event onload
addEventToObject(window,'onload',Searchbox.init);
addEventToObject(window,'onload',Searchbar.init);
