﻿var RELEASE_LIST_MODE = 0;
var RELEASE_VIEW_MODE = 1;
var ARTIST_VIEW_MODE = 2;
var LABEL_VIEW_MODE = 3;
var RELEASE_LIST2_MODE = 4;
var SEARCH_MODE = 5;

var pageMode = RELEASE_LIST_MODE;
var viewMode = 'release';
var currentGenreId = '-1';

function setContext(pm, cid) {
    pageMode = pm;
    contextId = cid;
}

function changeGenre() {
    alert($(this).attr("selectedIndex"));
    currentGenreId = $(this).attr("selectedIndex");
    firstPage();
}
function resetList(vm) 
{
    currentPage = 1;
    viewMode = vm

    if (viewMode == 'release') {
        $("#vmTrack").removeClass("selected");
        $("#vmRelease").addClass("selected");
    }
    else if (viewMode == 'track') {
        $("#vmRelease").removeClass("selected");
        $("#vmTrack").addClass("selected");
    }
    $("#PB2").text('1');
    firstPage();
    return false;
}

function nextPage() 
{
    if (currentPage < numOfPages) {
        currentPage++;
        changePage();
    }
        
}

function previousPage() 
{
    if (currentPage > 1) {
        currentPage--;
        changePage();
    }
}

function firstPage() 
{
    currentPage = 1;
    changePage();
}

function lastPage() 
{
    currentPage = numOfPages;
    changePage();
}

function updateCurrentPage() 
{
    var element = document.getElementById('PB2');
    if (element) {element.innerHTML = currentPage;}
}

function changePage() {
    updateCurrentPage();
    if (viewMode == 'release')
        ReleaseList(["pageNumber", currentPage, "pageMode", pageMode, "contextId", contextId, "genreId", currentGenreId], rch, reh)
    else if (viewMode == 'track')
        TrackList(["pageNumber", currentPage, "pageMode", pageMode, "contextId", contextId, "genreId", currentGenreId], tch, teh)
    else if (viewMode == 'orderitementity')
        DownloadList(["pageNumber", currentPage, "pageMode", pageMode], dlch, dleh)
}

// Release List methods
function ReleaseList(pa, as, af) {
    var pp = '_pm.aspx/GetReleases';
    toggleLoader(true);
    DoAjax(pp, pa, as, af);
}

function rch(result) 
{
    toggleLoader(false);

    if (result.d) 
    {
        // Set the total page count here
        numOfPages = result.d.PageCount;
        $("#PB3").text(result.d.PageCount);
        createReleaseList(result.d.Releases);
    }
}

function reh(result) 
{
    toggleLoader(false);
    if (result) 
    {
        alert('Ooops unable to load the release list at this time');
    }
}

function createReleaseList(releases) {
    if (releases) 
    {
        var arraySize = releases.length;
        var o = '<table id=\"releases\" cellspacing=\"0\" width=\"100%\">';

        for (var i = 0; i < arraySize; i += 2) {
            o += '<tr>';
            o += ProcessRelease(releases[i]);

            if ((i + 1) < arraySize) {
                o += ProcessRelease(releases[i + 1]);
            }
            else {
                o += '<td>&nbsp;</td>';
            }
            o += '</tr>';
        }
        o += '</table>';
        document.getElementById('_relList').innerHTML = o;
    }
}

function ReleaseTemplate() {
    return '<td style="height:60px;width:50%;">' +
'<div class="releaseImage" style="float:left;width:50px;">' +
    '<a href="_imageLink">' +
        '<img src="_imageUrl" border="0" alt="" width="50" height="50" title="_imageToolTip"/>' +
    '</a>' +
'</div>' +
'<div class="rd" style="float:right;">' +
    '<h1><a href="_artistLink" title="_artistToolTip">_artistName</a>&nbsp;</h1>' +
    '<h2><a href="_titleLink" title="_titleToolTip">_titleName</a>&nbsp;</h2>' +
    '<h3><a href="_labelLink" title="_labelToolTip">_labelName</a>&nbsp;</h3>' +
    '<h3 style="text-align:right;">' +
       '<a onclick="MakePurchase(\'_purchaseLink\');return false;" href="#" title="_buyImageToolTip">' +
          '<img src="images/icons/buy.gif"  width="29" height="16" border="0" alt="buy" />' +
       '</a>' +
       '<a onclick="_clipLink" href="#" title="_clipImageToolTip">' +
           '<img src="images/icons/l.jpg" width="21" height="16" border="0" alt="clip" />' +
       '</a>' +
    '</h3>' +
'</div>' +
'</td>';
}


function ProcessRelease(release) {
    var t = ReleaseTemplate();

    var _ml = 28;
    var _tnf = release.ReleaseName;
    var titleName = _tnf.length > _ml ? _tnf.substring(0, _ml - 2) + '..' : _tnf;
    var _anf = release.ArtistName;
    var artistName = _anf.length > _ml ? _anf.substring(0, _ml - 2) + '..' : _anf;
    var _lnf = release.LabelName;
    var labelName = _lnf.length > _ml ? _lnf.substring(0, _ml - 2) + '..' : _lnf;

    var imageUrl;

    if (!(release.ImageUrl) || release.ImageUrl.Length == 0) {
        imageUrl = "images/zoologo_50.jpg";
    }
    else {
        imageUrl = release.ImageUrl;
    }

    var imageLink = "Release.aspx?rid=" + release.ReleaseId + "&cp=" + currentPage + "&fr=" + pageMode;
    var imageToolTip = "goto release: " + _tnf;

    var titleLink = "Release.aspx?rid=" + release.ReleaseId + "&cp=" + currentPage + "&fr=" + pageMode;
    var titleToolTip = "track: " + _tnf;

    var artistLink = "Artist.aspx?cid=" + release.ArtistId + "&cp=" + currentPage + "&fr=" + pageMode;
    var artistToolTip = "artist: " + _anf;

    var labelLink = "Label.aspx?lid=" + release.LabelId + "&cp=" + currentPage + "&fr=" + pageMode;
    var labelToolTip = "label: " + _lnf;

    var clipLink = release.ClipLink;
    var clipOnClick = '';
    var clipImageToolTip = "listen to main track: " + release.MainTrackName;
    var buyImageToolTip = "purchase the 320kbps MP3 release for AUD $" + release.ReleaseCost;
    
    if (clipLink){clipOnClick = GetClipOnClick(_tnf + ' ' + _lnf, clipLink);}

    t = t.replace('_imageLink', imageLink);
    t = t.replace('_imageUrl', imageUrl);
    t = t.replace('_imageToolTip', imageToolTip);
    t = t.replace('_artistLink', artistLink);
    t = t.replace('_artistToolTip', artistToolTip);
    t = t.replace('_artistName', artistName);
    t = t.replace('_titleLink', titleLink);
    t = t.replace('_titleToolTip', titleToolTip);
    t = t.replace('_titleName', titleName);
    t = t.replace('_labelLink', labelLink);
    t = t.replace('_labelToolTip', labelToolTip);
    t = t.replace('_labelName', labelName);
    t = t.replace('_purchaseLink', release.PurchaseLink);
    t = t.replace('_buyImageToolTip', buyImageToolTip);
    t = t.replace('_clipLink', clipOnClick);
    t = t.replace('_clipImageToolTip', clipImageToolTip);

    return t;
}

//////////////////////////////////////////////////////////////////////////
//Start of the track methods
//////////////////////////////////////////////////////////////////////////

// Release List methods
function TrackList(pa, as, af) {
    var pp = '_pm.aspx/GetTracks';
    toggleLoader(true);
    DoAjax(pp, pa, as, af);
}

function tch(result) {
    toggleLoader(false);

    if (result.d) {
        numOfPages = result.d.PageCount;
        $("#PB3").text(result.d.PageCount);
        createTrackList(result.d.Tracks);
    }
}

function teh(result) {
    toggleLoader(false);
    if (result) {
        alert('Ooops unable to load the track list at this time');
    }
}

function createTrackList(tracks) {
    if (tracks) {
        var arraySize = tracks.length;
        var o = '<table id=\"tracks\" cellspacing=\"0\" width=\"100%\" height=\"30px\">';

        for (var i = 0; i < arraySize; i ++) {
            o += ProcessTrack(tracks[i]);
        }
        o += '</table>';
        document.getElementById('_relList').innerHTML = o;
    }
}

function TrackTemplate() {
    return '<tr id="tr[trackid]">' +
	    '<td style="text-align:left">' +
	    '<a href="_imageLink">' +
        '<img src="_imageUrl" border="0" alt="" width="30" height="30" title="_imageToolTip"/>' +
        '</a>' +
	    '</td>' +
		'<td style="width:150px;text-align:left" title="_titleToolTip"><div class="trd"><h1>_titleName&nbsp;</h1></div></td>' +
		'<td style="text-align:left"><div class="trd"><h3><a href="_artistLink" title="_artistToolTip">_artistName</a>&nbsp;<br /><a href="_labelLink" title="_labelToolTip">_labelName</a></h3></div></td>' +
		'<td style="text-align:left"><div class="trd"><h3>[duration]&nbsp;<br />[genre]</h3></div></td>' +
		'<td style="text-align:left">' +
		'<h3 style="text-align:right;">' +
           '<a onclick="MakePurchase(\'_purchaseLink\');return false;" href="#" title="_buyImageToolTip">' +
              '<img src="images/icons/buy.gif"  width="29" height="16" border="0" alt="buy" />' +
           '</a>' +
           '<a onclick="_clipLink" href="#" title="_clipImageToolTip">' +
               '<img src="images/icons/l.jpg" width="21" height="16" border="0" alt="clip" />' +
           '</a>' +
        '</h3>' +
		'</td>' +
	'</tr>';
}


function ProcessTrack(track) {
    var _ml = 22;
    var t = TrackTemplate();

    var _tnf = track.TN;
    var title = _tnf.length > 38 ? _tnf.substring(0, 38 - 2) + '..' : _tnf;
    var _anf = track.CN;
    var artist = _anf.length > _ml ? _anf.substring(0, _ml - 2) + '..' : _anf;
    var _lnf = track.LN;
    var label = _lnf.length > _ml ? _lnf.substring(0, _ml - 2) + '..' : _lnf;

    var imageUrl;

    if (!(track.ImageUrl) || track.ImageUrl.Length == 0) {
        imageUrl = "images/zoologo_50.jpg";
    }
    else {
        imageUrl = track.ImageUrl;
    }

    var imageLink = "Release.aspx?rid=" + track.RI + "&cp=" + currentPage + "&fr=" + pageMode + "&vm=" + viewMode;
    var imageToolTip = "release: " + _tnf;

    var titleToolTip = _tnf;

    var artistLink = "Artist.aspx?cid=" + track.CI + "&cp=" + currentPage + "&fr=" + pageMode + "&vm=" + viewMode;
    var artistToolTip = _anf;

    var labelLink = "Label.aspx?lid=" + track.LI + "&cp=" + currentPage + "&fr=" + pageMode + "&vm=" + viewMode;
    var labelToolTip = _lnf;

    var clipLink = track.ClipLink;
    var clipOnClick = '';
    var clipImageToolTip = "listen to track: " + _tnf;
    var buyImageToolTip = "purchase the 320kbps MP3 track for AUD $" + track.TrackCost;

    if (clipLink) { clipOnClick = GetClipOnClick(_tnf + ' ' + _lnf, clipLink); }

    t = t.replace('_imageLink', imageLink);
    t = t.replace('_imageUrl', imageUrl);
    t = t.replace('_imageToolTip', imageToolTip);
    
    t = t.replace('_artistLink', artistLink);
    t = t.replace('_artistToolTip', artistToolTip);
    t = t.replace('_artistName', artist);
    t = t.replace('_titleToolTip', titleToolTip);
    t = t.replace('_titleName', title);
    t = t.replace('_labelLink', labelLink);
    t = t.replace('_labelToolTip', labelToolTip);
    t = t.replace('_labelName', label);

    t = t.replace('_purchaseLink', track.PurchaseLink);
    
    if (track.Duration)
        t = t.replace('[duration]', track.Duration);
    else
        t = t.replace('[duration]', '');
        
    if (t.MixVersion)
        t = t.replace('[mixversion]', track.MixVersion);
    else
        t = t.replace('[mixversion]', '');

    t = t.replace('[genre]', track.GN);
    t = t.replace('[trackid]', track.TI);
    t = t.replace('_buyImageToolTip', buyImageToolTip);
    t = t.replace('_clipLink', clipOnClick);
    t = t.replace('_clipImageToolTip', clipImageToolTip);

    return t;
}

function GetClipOnClick(title, trackUrl)
{
    var onclick = ''; 
    if (title)
    {
        title = title.replace('\'', '').replace(';', '').replace('?', '').replace('&', '').replace('\"', '');
        onclick = "openTarget('" + addressStem + "zooplayer.htm?ti=" + title + "&tr=" + trackUrl + "&ts=" + ticks + "');return false;";
    }
    return onclick;
}


//////////////////////////////////////////////////////////////////////////
//Start of the download list methods
//////////////////////////////////////////////////////////////////////////

// Download List methods
function DownloadList(pa, as, af) {
    var pp = '_pm.aspx/GetDownloads';
    toggleLoader(true);
    DoAjax(pp, pa, as, af);
}

function dlch(result) {
    toggleLoader(false);

    if (result.d) {
        numOfPages = result.d.PageCount;
        $("#PB3").text(result.d.PageCount);
        createDownloadList(result.d.Items);
    }
}

function dleh(result) {
    toggleLoader(false);
    if (result) {
        alert('Ooops unable to load the pending download list at this time');
    }
}

function createDownloadList(items) {
    if (items) {
        var arraySize = items.length;
        var o = '<table id=\"downloads\" cellspacing=\"0\" width=\"100%\" height=\"30px\">';

        for (var i = 0; i < arraySize; i++) {
            o += ProcessDownload(items[i]);
        }
        o += '</table>';
        document.getElementById('_downloads').innerHTML = o;
    }
}

function DownloadTemplate() {
    return '<tr id="tr[trackid]">' +
	    '<td style="text-align:left">' +
	    '<a href="_imageLink">' +
        '<img src="_imageUrl" border="0" alt="" width="30" height="30" title="_imageToolTip"/>' +
        '</a>' +
	    '</td>' +
		'<td style="width:150px;text-align:left" title="_titleToolTip"><div class="trd"><h1>_titleName&nbsp;</h1></div></td>' +
		'<td style="text-align:left"><div class="trd"><h3><a href="_labelLink" title="_labelToolTip">_labelName</a></h3></div></td>' +
		'<td style="text-align:left"><div class="trd"><h3>[duration]&nbsp;<br />[genre]</h3></div></td>' +
		'<td style="text-align:left">' +
		'<h3 style="text-align:right;">' +
           '<a onclick="MakePurchase(\'_purchaseLink\');return false;" href="#" title="_buyImageToolTip">' +
              '<img src="images/icons/buy.gif"  width="29" height="16" border="0" alt="buy" />' +
           '</a>' +
           '<a onclick="_clipLink" href="#" title="_clipImageToolTip">' +
               '<img src="images/icons/l.jpg" width="21" height="16" border="0" alt="clip" />' +
           '</a>' +
        '</h3>' +
		'</td>' +
	'</tr>';
}

function ProcessDownload(item) {

    var t = DownloadTemplate();

    t = t.replace('[trackid]', item.TrackId);
    t = t.replace('[imageUrl]', item.ImageUrl);
    t = t.replace('[titleToolTip]', item.TitleToolTip);
    t = t.replace('[titleName]', item.TitleName);
    t = t.replace('[artistName]', item.ArtistName);
    t = t.replace('[labelName]', item.LabelName);
    t = t.replace('[orderDate]', item.OrderDate);
    t = t.replace('[format]', item.Format);
    t = t.replace('[bitRate]', item.BitRate);
    t = t.replace('[downloadLink]', item.DownloadLink);
    
    return t;
}