FN = new function(){
var latestModuleCategories = new Array('Gnarles Barkley "Run"', 'Robyn "Konichiwa Bitches"');
var latestModuleData = new Array();
var latestModuleDataCounter = 0;

this.init = function(){
FN.loadSingleItems();
FN.getUploadsModule();
FN.getUgcPicks();
}

this.getUgcPicks = function(){
var videoId = $j(".ugc-picks").attr("id");

if(videoId!=undefined){
$j.get("/ontv/fn-mtv/ajax/picks.jhtml", {videoId:videoId}, function(data){
$j("#"+videoId).append(data);
FN.loadSingleItems();
});
}
}

// single items
this.loadSingleItems = function(){
jQuery.each($j(".ugc"), function() {
FN.loadSingleItem(this);
});
}

this.loadSingleItem = function(obj){
var li = $j(obj);
var ucid = li.attr("id");

var feed = "/feeds/content/0" + ucid;
MTV.Flux.DAAPI.sendRequest(feed, FN.buildSingleItem, {li:li});
}

this.buildSingleItem = function(response, paramsObj){
var li = paramsObj.li;

var title = $j("<div/>").addClass("title2");
var titleLink = $j("<a/>").attr("href", response.DetailUrl);

titleLink.append($j("<img/>").attr("src", response.Thumbnails.Medium).addClass("thumb"));

if(response.Categories!=null){
var category = "";
for(var i=0; i<response.Categories.length; i++){
if(response.Categories[i].Id==19302) category = "<strong>Review</strong>";
if(response.Categories[i].Id==19303) category = "<strong>Dance</strong>";
if(response.Categories[i].Id==19304) category = "<strong>Karaoke</strong>";
if(response.Categories[i].Id==19305) category = "<strong>Lyrics</strong>";	
}

titleLink.append(category);
}

var icon = "";
switch(response.Alias){
case "Video":
icon = $j("<span/>").addClass("icon icon-play").append("Video: ");
break;
default: break;
}

if(icon!=="") titleLink.append(icon);
titleLink.append(response.Title);

title.append(titleLink);
li.append(title);
li.append($j("<p/>").addClass("deck").append(response.Creator.Title));

li.children("span.dummy").remove();	
}

this.getUploadsModule = function(){
if($j("#fn-uploads").length >0){
var type= $j("#fn-uploads").attr("class");
var feeds = new Array();
if(type=="fn-latest"){
feeds.push({url:"/feeds/videos/-/18404/?max-results=8&sort=ratingThumbUpDown", title:"Top Rated"});
feeds.push({url:"/feeds/videos/-/18404/?max-results=8&sort=numberOfViews", title:"Most Viewed"});
feeds.push({url:"/feeds/videos/-/18404/?max-results=8", title:"Newest"});
FN.UploadsModule.init(feeds, 4, 2);
}
if(type=="fn-categories"){
feeds.push({url:"/feeds/videos/-/18404/?max-results=8&sort=ratingThumbUpDown", title:"Top Rated"});
feeds.push({url:"/feeds/videos/-/18404/?max-results=8&sort=numberOfViews", title:"Most Viewed"});
feeds.push({url:"/feeds/videos/-/18404/?max-results=8", title:"Newest"});
FN.UploadsModule.init(feeds, 2, 4);
}
}
}
}

FN.UploadsModule = new function(){
var feeds = new Array();
var rows = "";
var columns = "";

var responses = new Array();
var responseCounter = 0;

this.type = "";

this.init = function(f, c, r){
feeds = f;
rows = r;
columns = c;

for(var i=0; i<feeds.length; i++){
MTV.Flux.DAAPI.sendRequest(feeds[i].url, FN.UploadsModule.loadData, {position:i});
}
}

this.clear = function(){
feeds = new Array();
rows = "";
columns = "";
}

this.loadData = function(response, paramsObj){
responses[paramsObj.position] = response;
responseCounter++;

if(responseCounter == feeds.length){
FN.UploadsModule.build();
}
}

this.build = function(){
var mdlClass = (columns==4) ? "mdl fn-uploads-lg" : "mdl";
var mdl = $j("<div/>").addClass(mdlClass);
mdl.append($j("<h2/>").addClass("h-sub group").append("<span>Fan Uploads</span>"));
mdl.append(FN.UploadsModule.buildNav());

for(var i=0; i<responses.length; i++){
var first = (i==0) ? true : false;
mdl.append(FN.UploadsModule.buildPage(responses[i], first));
}

$j("#fn-uploads").append(mdl);

FN.UploadsModule.clear();
}

this.buildNav = function(){
var ul = $j("<ul/>").addClass("mdl-nav group");

for(var x=0; x<feeds.length; x++){
var li = $j("<li/>");
if(x==0) li.addClass("active");

var a = $j("<a/>").attr("href", "#").append(feeds[x].title);
a.click(function(){
MTV.UI.MdlTab.open(this);
return false;
});

li.append(a);
ul.append(li);
}
return ul;
}

this.buildPage = function(response, first){
var items = response.Items;
var itemCounter = 0;

if(items.length > 0){
var page = $j("<div/>");
if(!first) page.addClass("hide");

for(var r=1; r<=rows; r++){
if(itemCounter < items.length){	
var olClass = "lst lst-photos";
if(columns==2) olClass += " lst-photos-two";
else if(columns==3) olClass += " lst-photos-three";
else if(columns==4) olClass += " lst-photos-four";
else if(columns==6) olClass += " lst-photos-six";

var list = $j("<ol/>").addClass(olClass);

for(var c=1; c<=columns; c++){
var last = (c==columns) ? true : false;
if(itemCounter < items.length){
list.append(FN.UploadsModule.buildItem(items[itemCounter],last));
itemCounter++;
}
}

page.append(list);
}
}

return page;
}
}

this.buildItem = function(Entry, last){	
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(last) li.addClass("last");
li.append(title);
li.append($j("<p/>").addClass("deck").append(Entry.Creator.Title));

var date = FN.Utils.formatDate(Entry.DateCreated);
li.append($j("<p/>").append(date));

return li;
}

}

FN.Utils = new function(){
this.formatDate = function(date){
var m = date.getMonth() + 1;
var d = date.getDate();
var y = date.getFullYear();

var formattedDate = m + "/" + d + "/" + y;
return formattedDate;
}
}

FN.MusicVideos = new function(){
this.init = function(){
var feed = "/feeds/categories/videos/?max-results=100";
MTV.Flux.DAAPI.sendRequest(feed, FN.MusicVideos.handleCategories);
}

this.handleCategories = function(response){
var items = response.Items;

for(var i=0; i < items.length; i++){
var id = "#category" + items[i].Id;
var text = "&#187; " + items[i].NumberOfElements + " Fan Uploads";
var a = $j("<a/>").attr("href", MTV.Community.host+"/Content/Video/VideoResults.aspx?category="+items[i].Id).append(text);
var p = $j("<p/>").addClass("relnk").append(a);
$j(id).append(p);
}
}
}

MTV.Flux.DAAPI.initArray.push(FN.init);
