﻿Sys.Application.add_load(pageLoad);
var prm = Sys.WebForms.PageRequestManager.getInstance();

if (prm != null) {
    prm.add_initializeRequest(InitializeRequestHandler);
    prm.add_endRequest(EndRequestHandler);
}
else {
    LoadPageRequestManager();
}

function LoadPageRequestManager() {
    prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);
}

function pageLoad() {
    if ($get("homeDiv") != null) {
        State();
    }
}

function wmpCreate() {
    var str = "";

    if (BrowserDetect.browser == "Explorer") {
        str = '<object id="iePlayer" type="application/x-ms-wmp" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" type="application/x-oleobject" width="0" height="0">';
        str += '<param name="volume" value="100" />';
        str += '<param name="uiMode" value="invisible">';
        str += '</object>';
    } else {
        str = '<embed id="iePlayer" type="application/x-mplayer2" pluginspage="http://microsoft.com/windows/mediaplayer/en/download/" designtimesp="5311" height="0" width="0" uimode="invisible"></embed>';
    }

    return str;
}

function getPageSizeWithScroll(){
    if (window.innerHeight && window.scrollMaxY) // Firefox 
    {
        pageWidth = window.innerWidth + window.scrollMaxX;
        pageHeight = window.innerHeight + window.scrollMaxY;
    }
    else if( document.body.scrollHeight > document.body.offsetHeight ) // all but Explorer Mac
    {
        pageWidth = document.body.scrollWidth;
        pageHeight = document.body.scrollHeight;
    }
    else // works in Explorer 6 Strict, Mozilla (not FF) and Safari
    { 
        pageWidth = document.body.offsetWidth + document.body.offsetLeft; 
        pageHeight = document.body.offsetHeight + document.body.offsetTop; 
    }    
    
    arrayPageSizeWithScroll = new Array(pageWidth,pageHeight);
    //alert( 'The height is ' + yWithScroll + ' and the width is ' + xWithScroll );
    return arrayPageSizeWithScroll; 
} 


function LogOut() {
    ClearCookies();
}

function InitializeRequestHandler(sender, args) {
    RemeberScroll();

    var loader = document.getElementById('divCursor');

    if (loader != null) {
        loader.style.display = "block";
    }

    // ensure the post back is an ajax request
    if (prm.get_isInAsyncPostBack()) {
        args.set_cancel(true);
        postBackElement = args.get_postBackElement();
    }
}

function IsAsyncPostBack() {
    return prm.get_isInAsyncPostBack();
}

function EndRequestHandler(sender, args) {
    State();

    var loader = document.getElementById('divCursor');

    if (loader != null) {
        loader.style.display = "none";
    }
}

function State() {
    if (GetCookie("contenttab") != null) {
        ContentTabSwitch(GetCookie("contenttab"));
    }
    else {
        ContentTabSwitch("recommended");
    }

    if (GetCookie("recommendedtab") != null) {
        Recommends(GetCookie("recommendedtab"));
    }
    else {
        Recommends("PopularArtists");
    }

    if (GetCookie("buddiestab") != null) {
        Buddies(GetCookie("buddiestab"));
    }
    else {
        Buddies('Buddies');
    }

    if (GetCookie("playliststab") != null) {
        Playlists(GetCookie("playliststab"));
    }
    else {
        Playlists('MyPlaylists');
    }

    if (GetCookie("favouritestab") != null) {
        Favourites(GetCookie("favouritestab"));
    }
    else {
        Favourites('Tracks');
    }

    if (GetCookie("metadatatab") != null) {
        MetaData(GetCookie("metadatatab"));
    }
    else {
        MetaData('reviews');
    }

    ReInstateScroll();
}


var popularArtistPos = 0;
var latestTracksPos = 0;
var popularTracksPos = 0;
var recommendsAlbumPos = 0;
var artistTrackListPos = 0;
var browseGenrePos = 0;
var browseArtistPos = 0;
var browseAlbumPos = 0;
var browseTrackListPos = 0;
var albumSearchAlbumsPos = 0;
var buddyListPos = 0;
var messageBoardPos = 0;

function RemeberScroll() {
    var popularArtists = $get('popularArtists');
    var LatestMedia = $get('LatestMedia');
    var popularTracks = $get('popularTracks');
    var recommendsAlbumsScroll = $get('albumsScroll');
    var artist_trackList = $get('artist_trackList');
    var browse_genreWrapper = $get('browse_genreWrapper');
    var browse_artistWrapper = $get('browse_artistWrapper');
    var browse_albumWrapper = $get('browse_albumWrapper');
    var browse_trackList = $get('browse_trackList');
    var artist_albumCovers = $get('artist_albumCovers');
    var buddysList = $get('buddysList');
    var messageBoard = $get('messageBoard');

    if (popularArtists != null) {
        SetCookie("popularArtistPos", popularArtists.scrollTop);
    }

    if (LatestMedia != null) {
        SetCookie("latestTracksPos", LatestMedia.scrollTop);
    }

    if (popularTracks != null) {
        SetCookie("popularTracksPos", popularTracks.scrollTop);
    }

    if (recommendsAlbumsScroll != null) {
        SetCookie("recommendsAlbumPos", recommendsAlbumsScroll.scrollTop);
    }

    if (artist_trackList != null) {
        SetCookie("artistTrackListPos", artist_trackList.scrollTop);
    }

    if (browse_genreWrapper != null) {
        SetCookie("browseGenrePos", browse_genreWrapper.scrollTop);
    }

    if (browse_artistWrapper != null) {
        SetCookie("browseArtistPos", browse_artistWrapper.scrollTop);
    }

    if (browse_albumWrapper != null) {
        SetCookie("browseAlbumPos", browse_albumWrapper.scrollTop);
    }

    if (browse_trackList != null) {
        SetCookie("browseTrackListPos", browse_trackList.scrollTop);
    }

    if (artist_albumCovers != null) {
        SetCookie("albumSearchAlbumsPos", artist_albumCovers.scrollTop);
    }

    if (buddysList != null) {
        SetCookie("buddyListPos", buddysList.scrollTop);
    }

    if (messageBoard != null) {
        SetCookie("messageBoardPos", messageBoard.scrollTop);
    }
}

function ReInstateScroll() {
    var popularArtists = $get('popularArtists');
    var LatestMedia = $get('LatestMedia');
    var popularTracks = $get('popularTracks');
    var recommendsAlbumsScroll = $get('albumsScroll');
    var artist_trackList = $get('artist_trackList');
    var browse_genreWrapper = $get('browse_genreWrapper');
    var browse_artistWrapper = $get('browse_artistWrapper');
    var browse_albumWrapper = $get('browse_albumWrapper');
    var browse_trackList = $get('browse_trackList');
    var artist_albumCovers = $get('artist_albumCovers');
    var buddysList = $get('buddysList');
    var messageBoard = $get('messageBoard');
    
    if (popularArtists != null) {
        popularArtists.scrollTop = GetCookie("popularArtistPos");
    }

    if (LatestMedia != null) {
        LatestMedia.scrollTop = GetCookie("latestTracksPos");
    }

    if (popularTracks != null) {
        popularTracks.scrollTop = GetCookie("popularTracksPos");
    }

    if (recommendsAlbumsScroll != null) {
        recommendsAlbumsScroll.scrollTop = GetCookie("recommendsAlbumPos");
    }

    if (artist_trackList != null) {
        artist_trackList.scrollTop = GetCookie("artistTrackListPos");
    }

    if (browse_genreWrapper != null) {
        browse_genreWrapper.scrollTop = GetCookie("browseGenrePos");
    }

    if (browse_artistWrapper != null) {
        browse_artistWrapper.scrollTop = GetCookie("browseArtistPos");
    }

    if (browse_albumWrapper != null) {
        browse_albumWrapper.scrollTop = GetCookie("browseAlbumPos");
    }

    if (browse_trackList != null) {
        browse_trackList.scrollTop = GetCookie("browseTrackListPos");
    }

    if (artist_albumCovers != null) {
        artist_albumCovers.scrollTop = GetCookie("albumSearchAlbumsPos");
    }

    if (buddysList != null) {
        buddysList.scrollTop = GetCookie("buddyListPos");
    }

    if (messageBoard != null) {
        messageBoard.scrollTop = SetCookie("messageBoardPos");
    }
}

function SwitchTab(type, selectedTab) {
    switch(type)
    {
        case 1:
            ContentTabSwitch(selectedTab, type);
            break;
        case 2:
            Recommends(selectedTab, type);
            break; 
        default:
            break;
    }
}

function StylePlaylistItem(obj, Style) {
    if (obj != null) {
        if (obj.className != "PlayingSong") {
            obj.className = Style;
        }
    }
}

function ContentTabSwitch(selectedTab, type) {
    switch(selectedTab)
    {
        case "recommended":
            ActiveTab("recommendedButtonTab");
            InactiveTab("browseButtonTab");
            InactiveTab("searchButtonTab");
            InactiveTab("chartButtonTab");
            InactiveTab("featuredButtonTab");

            ShowElement("recommendsTab");
            HideElement("browseTab");
            HideElement("trackSearchTab");
            HideElement("chartsTab");
            HideElement("featuredTab");
            break;
        case "AZBrowse":
            InactiveTab("recommendedButtonTab");
            ActiveTab("browseButtonTab");
            InactiveTab("searchButtonTab");
            InactiveTab("chartButtonTab");
            InactiveTab("featuredButtonTab");

            HideElement("recommendsTab");
            ShowElement("browseTab");
            HideElement("trackSearchTab");
            HideElement("chartsTab");
            HideElement("featuredTab");
            break;
        case "Search":
            InactiveTab("recommendedButtonTab");
            InactiveTab("browseButtonTab");
            ActiveTab("searchButtonTab");
            InactiveTab("chartButtonTab");
            InactiveTab("featuredButtonTab");

            HideElement("recommendsTab");
            HideElement("browseTab");
            ShowElement("trackSearchTab");
            HideElement("chartsTab");
            HideElement("featuredTab");
            break;
        case "Charts":
            InactiveTab("recommendedButtonTab");
            InactiveTab("browseButtonTab");
            InactiveTab("searchButtonTab");
            ActiveTab("chartButtonTab");
            InactiveTab("featuredButtonTab");

            HideElement("recommendsTab");
            HideElement("browseTab");
            HideElement("trackSearchTab");
            ShowElement("chartsTab");
            HideElement("featuredTab");
            break;
        case "Featured":
            InactiveTab("recommendedButtonTab");
            InactiveTab("browseButtonTab");
            InactiveTab("searchButtonTab");
            InactiveTab("chartButtonTab");
            ActiveTab("featuredButtonTab");

            HideElement("recommendsTab");
            HideElement("browseTab");
            HideElement("trackSearchTab");
            HideElement("chartsTab");
            ShowElement("featuredTab");
            break;
        default:
            break;
    }

    SetCookie("contenttab", selectedTab);
}

function Recommends(selectedTab, type) {
    switch (selectedTab) {
        case "PopularArtists":
            ShowElement("pnlRecommendsMedia");
            HideElement("pnlLatestTracks");
            HideElement("pnlPopularTracks");
            break;
        case "JustAdded":
            HideElement("pnlRecommendsMedia");
            ShowElement("pnlLatestTracks");
            HideElement("pnlPopularTracks");
            break;
        case "PopularTracks":
            HideElement("pnlRecommendsMedia");
            HideElement("pnlLatestTracks");
            ShowElement("pnlPopularTracks");
            break;
    }

    SetCookie("recommendedtab", selectedTab);
}

function Buddies(selectedTab) {
    switch (selectedTab) {
        case "Buddies":
            ActiveTab("btnShowBuddies");
            InactiveTab("btnShowFriendSearch");
            
            ShowElement("buddyListTab");
            HideElement("searchTab");
            break;
        case "Search":
            InactiveTab("btnShowBuddies");
            ActiveTab("btnShowFriendSearch");

            HideElement("buddyListTab");
            ShowElement("searchTab");
            break;
    }

    SetCookie("buddiestab", selectedTab);
}

function Playlists(selectedTab) {
    switch (selectedTab) {
        case "MyPlaylists":
            ActiveTab("btnMyPlaylists");
            InactiveTab("btnSharedPlaylists");

            ShowElement("myPlaylistTab");
            HideElement("sharedPlaylistTab");
            break;
        case "SharedPlaylists":
            InactiveTab("btnMyPlaylists");
            ActiveTab("btnSharedPlaylists");

            ShowElement("sharedPlaylistTab");
            HideElement("myPlaylistTab");
            break;
    }
    SetCookie("playliststab", selectedTab);
}

function MetaData(selectedTab) {
    switch (selectedTab) {
        case "bio":
            ActiveTab("bioTab");
            InactiveTab("reviewsTab");

            ShowElement("artistInfo");
            HideElement("reviews");
            break;
        case "reviews":
            InactiveTab("bioTab");
            ActiveTab("reviewsTab");

            HideElement("artistInfo");
            ShowElement("reviews");
            break;
    }
    SetCookie("metadatatab", selectedTab);
}

function Favourites(selectedTab) {
    switch (selectedTab) {
        case "Tracks":
            ActiveTab("btnTracks");
            InactiveTab("btnAlbums");

            ShowElement("tabFavouriteTracks");
            HideElement("tabFavouriteAlbums");

            ShowElementInline("trackHeader");
            HideElement("albumHeader");

            ShowElementInline("clearAllTrack");
            HideElement("clearAllAlbum");

            if ($get('numTracks') != null) {
                var numTracks = parseInt($get('numTracks').value);

                if (numTracks > 0) {
                    ShowElement("tdCreate");
                    ShowElement("tdUpdate");
                }
                else {
                    HideElement("tdCreate");
                    HideElement("tdUpdate");
                }
            }

            break;
        case "Albums":
            InactiveTab("btnTracks");
            ActiveTab("btnAlbums");

            HideElement("trackHeader");
            ShowElementInline("albumHeader");

            ShowElementInline("clearAllAlbum");
            HideElement("clearAllTrack");

            HideElement("tabFavouriteTracks");
            ShowElement("tabFavouriteAlbums");
            HideElement("tdCreate");
            HideElement("tdUpdate");
            break;
    }
    SetCookie("favouritestab", selectedTab);
}

function ActiveTab(id)
{
    var tab = document.getElementById(id);
    
    if(tab != null)
    {
        tab.className = "activetab";
    }
}

function InactiveTab(id)
{
    var tab = document.getElementById(id);
    
    if(tab != null)
    {
        tab.className = "inactivetab";
    }
}

function HideShowElement(id) {
    var elem = document.getElementById(id);

    if (elem != null) {
        if (elem.style.display == "block") {
            HideElement(id);
        }
        else {
            ShowElement(id);
        }
    }
}

function ShowElement(id) {
    var elem = document.getElementById(id);

    if (elem != null) {
        elem.style.display = "block";
    }
}

function ShowElementInline(id) {
    var elem = document.getElementById(id);

    if (elem != null) {
        elem.style.display = "inline";
    }
}

function HideElement(id) {
    var elem = document.getElementById(id);

    if (elem != null) {
        elem.style.display = "none";
    }
}

function DisplayLoginPrompt() {
    ShowElement('loginprompt');
    ShowElement('back');
}

function HideLoginPrompt() {
    
    HideElement('loginprompt');
    HideElement('back');
}

function ItemTransition(id)
{
    $(document).ready(function(){
        $(id).fadeTo("slow", 0.3);
            $(id).hover(function(){
            $(this).fadeTo("slow", 1.0);
            },function(){
            $(this).fadeTo("slow", 0.3);
        });
    });
}


function ValidateMandatoryField(sourceId, recipientId) {
    var source = $get(sourceId);

    if (source != null) {
        if (source.value == "") {
            var recipient = $get(recipientId);

            if (recipient != null) {
                recipient.innerText = "*";
            }
        }
    }
}


function ShowAccountMenu() {
    var back = document.getElementById('clientBack');
    var menu = document.getElementById('accountMenu');

    if (back != null) {
        back.style.display = "block";
    }

    if (menu != null) {
        menu.style.display = "block";
    }
}

function HideAccountMenu() {
    var back = document.getElementById('clientBack');
    var menu = document.getElementById('accountMenu');

    if (back != null) {
        back.style.display = "none";
    }

    if (menu != null) {
        menu.style.display = "none";
    }
}

function DisplayPrompt(headerText, questionText) {
    var prompt = document.getElementById('prompt');
    var promptQuestionText = document.getElementById('promptQuestionText');
    var promptHeaderText = document.getElementById('promptHeaderText');

    if (prompt != null &&
    promptHeaderText != null &&
    promptQuestionText != null) {
        promptHeaderText.innerText = headerText;
        promptQuestionText.innerText = questionText;
        prompt.style.display = "block";
    }

    ShowElement('clientBack');
}

function HidePrompt() {
    var prompt = document.getElementById('prompt');
    
    if (prompt != null) {
        prompt.style.display = "none";
    }

    HideElement('clientBack');
}

function OnWSRequestFailed(error) {
    //alert('error');
    
    /*alert("Stack Trace: " + error.get_stackTrace() + "/r/n" +
          "Error: " + error.get_message() + "/r/n" +
          "Status Code: " + error.get_statusCode() + "/r/n" +
          "Exception Type: " + error.get_exceptionType() + "/r/n" +
          "Timed Out: " + error.get_timedOut());*/
}

function ScrollToElementOffsetTop(id) {
    var theElement = document.getElementById(id);
    var selectedPosY = 0;

    while (theElement != null) {
        selectedPosY += theElement.offsetTop - 12;
        theElement = theElement.offsetParent;
    }

    window.scrollTo(0, selectedPosY);
}
