
function addToPlayList(playListId, mediaId) {
    if(typeof(mediaId) == "undefined"){
        mediaId = 0;
    }
    var swf = swfobject.getObjectById('player')
	swf.addToPlayList(playListId, mediaId);
	var addtoplaylistNotice = document.getElementById("addtoplaylistNotice");
	if(addtoplaylistNotice){
	    addtoplaylistNotice.style.display = 'block';
	    
	    setTimeout("document.getElementById(\"addtoplaylistNotice\").style.display='none';",5000);
	    
	}
	
}

Viostream.ChangeView = function(t){
    /// <summary> Called by a click on the menu-view-options images - changes the video card style </summary>
    try
    {
        var MediaWrappers = $("#ulMediaItemWrapper, #ulMediaTopFiveWrapper, #ulMediaMostRecentWrapper, #ulMediaMostPopularWrapper");
        var aListView = $gE("aListView");
        var aGridView = $gE("aGridView");
        
        ///Change class on buttons
        aListView.className = ("List" == t) ? "toggle-list current" : "toggle-list";
        aGridView.className = ("Grid" == t) ? "toggle-grid current" : "toggle-grid";
        
        ///Change class on UL wrapper element
        MediaWrappers.each(function(){ this.className = ("List" == t) ? "video-gallery-list sort-by-featured" : "video-gallery-grid sort-by-featured"; });
    }
    catch(e)
    {
        notify("ChangeView(type) " + e.message, true);
    }
};


// Play now functionality
Viostream.PlayNow = function(mediaId){
        $.ajax({
            url : Viostream.WSUrl + "MediaGet", 
            success : function(o){
                if(!Viostream.AjaxObject.DisplayErrors(o,"MediaGet")){
                    var mb = new Viostream.MediaBase( $(o).find("MediaBase")[0] );
                    mb.PlayNow();
                }           
            },
            data : { mediaId : mediaId }
        });
}

Viostream.doSort = function(mode){
    try{
        $.history.load(Viostream.CurrentCategory + "," + Viostream.CurrentPageIndex + "," + mode + "," + Viostream.MediaType);
    } catch(e) {
        Viostream.LoadCategoryFromGuid(Viostream.firstCategoryId, 0, mode);
    }
}

// Need to change a few functions to handle the different views
Viostream.SwitchLayout = function(mode, o) {
    // mode == 0 - All items
    // mode == 1 - Category/Search
    var contentPage = $("#content-container-page");
    var allItems = $(".AllItems");
    var videoMenuArea = $(".videoMenuArea");
    var curMode = allItems.length > 0 ? 0 : 1;
    var r = 0;
    if (curMode != mode) {
        Viostream.ChangeView("Grid");

        if (mode == 0) {
            videoMenuArea.remove();

            var oTypes = { TopFive: "TODAY'S TOP 5", MostRecent: "MOST RECENT", MostPopular: "MOST POPULAR" };

            var divVideoMenu = $cE("div");
            divVideoMenu.className = "video-menu AllItems";

            for (var aType in oTypes) {

                var divC = $cE("div");
                divC.className = "clear";
                divVideoMenu.appendChild(divC);

                var divSection = $cE("div");
                divSection.className = "section-heading";
                divSection.innerHTML = oTypes[aType];
                divC.appendChild(divSection);

                var ulWrapper = $cE("ul");
                ulWrapper.className = "video-gallery-grid sort-by-featured";
                ulWrapper.id = "ulMedia" + aType + "Wrapper";
                divC.appendChild(ulWrapper);
                var mbData = $(o).find(aType);
                r = Viostream.redrawMedia(mbData, ulWrapper);

                if (aType == "TopFive") {
                    var addWrap = $cE("div");
                    addWrap.innerHTML = Viostream.AdvertisingString;
                    divC.appendChild(addWrap);
                }
            }

            $(".nav .current").removeClass("current");
            $(".AllLink").parent("li").addClass("current");
            contentPage.append(divVideoMenu);

        } else {
			$(".AllLink").parent("li").removeClass("current");
            allItems.remove();
            $(".nav").find("a[href*=" + Viostream.CurrentCategory + "]").parent("li").addClass("current");
            var divVideoMenu = $cE("div");
            divVideoMenu.className = "video-menu videoMenuArea";

            Viostream.PreLoad(function() {
                Viostream.History.SetValues({ "AlphabetSortLink": "AlphabetSortLink", "DateAddedSortLink": "DateAddedSortLink", "ViewsSortLink": "ViewsSortLink" });
            });

            // menu controls
            var divMenuControls = $cE("div");
            divMenuControls.className = "menu-controls";
            divMenuControls.innerHTML = "<p>Sort results: </p><ul class=\"menu-sort-options\" id=\"ulSortOptions\">"
							          + "<li><a " + (Viostream.SortOrder == "DateAdded" ? "class=\"current\"" : "") + " id=\"" + Viostream.History.DateAddedSortLink + "\" href=\"javascript:void(0);\">Most Recent</a></li>"
							          + "<li><a " + (Viostream.SortOrder == "Views" ? "class=\"current\"" : "") + " id=\"" + Viostream.History.ViewsSortLink + "\" href=\"javascript:void(0);\" >Most Popular</a></li>"
                                      + "<li><a " + (Viostream.SortOrder == "Alphabetical" ? "class=\"current\"" : "") + " id=\"" + Viostream.History.AlphabetSortLink + "\" href=\"javascript:void(0);\" >Alphabetical</a></li></ul>"
            divVideoMenu.appendChild(divMenuControls);

            var divMsg = $cE("div");
            divMsg.id = "messageBox";
            divVideoMenu.appendChild(divMsg);

            var ulMediaWrapper = $cE("ul");
            ulMediaWrapper.className = "video-gallery-grid sort-by-featured";
            ulMediaWrapper.id = "ulMediaItemWrapper";
            divVideoMenu.appendChild(ulMediaWrapper);
            // add the media items to the media wrapper
            r = Viostream.redrawMedia(o, ulMediaWrapper);


            var divPg2 = $cE("div");
            divPg2.className = "pagination-controls";
            divVideoMenu.appendChild(divPg2);

            contentPage[0].appendChild(divVideoMenu);

            $("#" + Viostream.History.AlphabetSortLink).bind("click", { sort: "Alphabetical" }, Viostream.History.SortClick);
            $("#" + Viostream.History.DateAddedSortLink).bind("click", { sort: "DateAdded" }, Viostream.History.SortClick);
            $("#" + Viostream.History.ViewsSortLink).bind("click", { sort: "Views" }, Viostream.History.SortClick);
            
        }
    } else {
       /* $("a.current").removeClass("current");*/
        if (mode == 1) { // no screen change and we're still loading a category/search
            var ulMediaWrapper = $gE("ulMediaItemWrapper");
            if (ulMediaWrapper)
                r = Viostream.redrawMedia(o, ulMediaWrapper);
        }
    }
    return r;
}

Viostream.Search = function(SearchWord, SortOrder, MediaFilter ){
    /// <summary> Performs the search </summary>
    
    if(typeof(SortOrder) == "undefined") SortOrder = this.SortOrder;
    if(typeof(MediaFilter) == "undefined") MediaFilter = this.MediaType;
    
    // change the current variables so that we can sort and filter the search results
    this.CurrentCategory = "searchterm";
    this.CurrentPageIndex = SearchWord;
    this.SortOrder = SortOrder;
    this.MediaType = MediaFilter;
    
    var SearchHandleSuccess = function(o){
        /// <summary> AJAX search response </summary>
        if(!Viostream.AjaxObject.DisplayErrors(o,"Search")){
            if(Viostream.SwitchLayout(1,o) == 0){
                notify("Search result doesn't return any data");
            }else{
                $("div.pagination-controls").empty().hide(); // search does not paginate
            }
        }
        Viostream.hideLoader();
        setClueTips();
    };
    
    Viostream.showLoader();
    $.ajax({
        url : Viostream.WSUrl + "MediaSearch",
        data: { searchWord: SearchWord, pageIndex: 0},
        success : SearchHandleSuccess
    });
    
};

Viostream.Category.CompleteLoad = function(oXML, categoryId, title){
    /// <summary> Draws all category info on the page </summary>

	var ItemInfo = $(oXML).find("ItemInfo");

	var recordCount = parseInt(ItemInfo.find("TotalRows").text());
	var pageIndex = parseInt(ItemInfo.find("PageCurrent").text());
	var pageSize = parseInt(ItemInfo.find("PageSize").text());

	var totalPages = parseInt(ItemInfo.find("PageCount").text());

    //Viostream.redrawMedia redraws all media elements from responseXML object - returns number of items found/drawn
    if(Viostream.SwitchLayout(1, oXML)==0){
        $("#messageBox").html("There are currently no media files in "+ title +"").show();
    }
    setClueTips();
    ///Pagination
    Viostream.Paginate(recordCount, pageSize, totalPages, pageIndex, categoryId);
    ///todo: better way to detirmine child gategory
    $(".navContainer").removeClass("out");
    $(".nav li").removeClass("out");
    var lis = $(".nav .current").parents("li");
          
    if(lis.length > 1)
    {
       lis.addClass("out");
       $(".navContainer").addClass("out");
    }
};


// Load All items page
Viostream.LoadAllItems = function(mediaId) {
    $.history._curHash = location.hash;
    Viostream.showLoader();
    $.ajax({
        url: Viostream.WSUrl + "AllItemsData",
        type: "GET",
        success: function(o) {
            if (!Viostream.AjaxObject.DisplayErrors(o, "AllItemsData")) {
                Viostream.SwitchLayout(0, o)
                setClueTips();
            }
            Viostream.hideLoader();
            $(".navContainer").removeClass("out");
            $(".nav li").removeClass("out");
        }
    });
}

function setClueTips() {
    $("h3.video-title a").cluetip({ local: true, arrows: true, cluezIndex: 1000, width: 360, leftOffset: 0 });
}

function abbreviateString(txt,words)
{
    var aWords = txt.split(/\s+/);
    if (aWords.length > words){
        aWords.length = words;
        return aWords.join(' ')+"...";
    }
    
    return txt;  
}

Viostream.AdvertisingString = "<div id=\"advertising-468-60\"><img src=\"images/content/ad_sample_468x60.gif\" /></div>";

Viostream.ChangeView = function(t) {
    /// <summary> Called by a click on the menu-view-options images - changes the video card style </summary>
    try {
        var ulMediaItemWrapper = $(".video-gallery-list, .video-gallery-grid");
        var aListView = $gE("aListView");
        var aGridView = $gE("aGridView");

        ///Change class on buttons
        aListView.className = ("List" == t) ? "toggle-list current" : "toggle-list";
        aGridView.className = ("Grid" == t) ? "toggle-grid current" : "toggle-grid";

        ///Change class on UL wrapper element
        ulMediaItemWrapper.each(function() {
            this.className = ("List" == t) ? "video-gallery-list sort-by-featured" : "video-gallery-grid sort-by-featured";
        });

    }
    catch (e) {
        notify("ChangeView(type) " + e.message, true);
    }
};

$(document).ready(function() {

	$(".playlist-add").click(function(e) {
		e.preventDefault();
		Viostream.PlayList.AddByMediaId($(this).attr("rel"));
	});
	$(".play-now").click(function(e) {
		e.preventDefault();
		Viostream.PlayNow($(this).attr("rel"));
	});

	var search_text = $(".search-txt");
	search_text.val("Enter search words");
	search_text.focus(function() {
		if (search_text.val() == "Enter search words")
			search_text.val("");
	}).blur(function() {
		if (search_text.val() == "")
			search_text.val("Enter search words");
	});

	$(".nav li").mouseover(function() {
		if ($("ul", this).length > 0) {
			$(this).addClass("over");
			if ($(".menu-controls").length > 0)
				$(".navContainer").addClass("move");
		}
	}
   ).mouseout(function() {
   	$(this).removeClass("over");
   	$(".navContainer").removeClass("move");
   });

	Viostream.OnLoad(function() {
		Viostream.VideoInfo.Init({ "Title": "h2NPTitleSpan", "Description": "pNPDescriptionSpan", "DateAdded": "ddNPDateAddedSpan" });
	});
	setTimeout(function() { setClueTips(); }, 500);

});
Viostream.BackToArticle = function(t) {
	if (top && t.href)
		top.window.location = t.href;
	return false;
}
