

function setMixtapeSelectListEvents() {
    jQuery('#mixtapeselectlist').change(function() {
        var selectedValue = jQuery('#mixtapeselectlist').val();

        // get selected subject from hidden field
        var hiddenSubjectid = jQuery('#mixtapesHiddenSubjectid').val();

        // Store selected subject in cookie
        setLatestListIdInCookie(hiddenSubjectid, selectedValue);

        // Update edit link
        mixtapeSetEditLink(hiddenSubjectid, selectedValue);

        if (selectedValue == '-1') {
            jQuery("addTrackToMixtape").css('height', '250px');
            jQuery("#newmixtape").show();
            jQuery('#mixtapesEditLink').hide();

        }
        else {
            jQuery("addTrackToMixtape").css('height', '100px');
            jQuery("#newmixtape").hide();
            jQuery('#mixtapesEditLink').show();
        }
    });
}

function setMixtapeSelectUserListEvents() {
    // Create select list for artists
    // Hides it if no artists availale
    jQuery('#mixtapeUserSelectlist').unbind("change").change(function() {
        var selectedSubjectid = jQuery('#mixtapeUserSelectlist').val();

        // Store selected subject in cookie
        setLatestSubjectIdInCookie(selectedSubjectid);

        // Store selected subject in hidden field
        mixtapeSetHiddenField('mixtapesHiddenSubjectid', selectedSubjectid);

        // Rebuild mixtape-list
        mixtapesCreateSelectlist(selectedSubjectid);
    });

}

function mixtapesInit(subjectid)
{
    if(_mixtapesOptionsAdded < 1)
    {                    
        // Store default userid in hidden field
        mixtapeSetHiddenField('mixtapesHiddenUserid', subjectid);

        mixtapesCreateUserSelectlist(subjectid);

        setMixtapeSelectUserListEvents();

    }
}


// Populate selectlist with user and artists
// Populated mixtapelist with user-options
function mixtapesCreateUserSelectlist(subjectid)
{
    var userContext = subjectid;
    // Get user and all artists, and number of mixtapes
    Nrk.Untouched.WebService.MixtapeService.GetMixtapesSummary(subjectid, onGetMixtapesSummary, onMixtapeError, userContext);
}

function onMixtapeError(error, context, methodName)
{
}

function onGetMixtapesSummary(result, userContext) 
{
    var subjectid = userContext;
    var subjects = JSON.parse(result[0]);
            
    
    // If no artists, hide the dropdown
    if(subjects.length < 2)
    {
            jQuery("#mixtapesOwner").hide();

            // Store selected subject in cookie
            setLatestSubjectIdInCookie(subjectid);

            // Store selected subject in hidden field
            mixtapeSetHiddenField('mixtapesHiddenSubjectid', subjectid);

            // Populate mixtape-list
            mixtapesCreateSelectlist(subjectid);
    }   

    // Attempt to get the previously selected user
    var previouslySelectedSubjectid = getLatestSubjectIdFromCookie();
    if(previouslySelectedSubjectid == null || previouslySelectedSubjectid == '')
    {
        previouslySelectedSubjectid = subjectid;
    }
    
    var selected = "";
    var selectOptions = 'Velg bruker eller band<br /><select style="width:400px;font-size:12px;" id="mixtapeUserSelectlist">';
    var previousSubjectidFound = false;
    for(var i=0; i < subjects.length; i++)
    {
        var mixtapes;
        if(subjects[i].count == 1)
            mixtapes = " (1 miksteip)";
        else
            mixtapes = " (" + subjects[i].count + " miksteiper)";

        if(subjects[i].subjectid == previouslySelectedSubjectid)
        {
            selected = " selected='selected' ";
            previousSubjectidFound = true;
        }
        else
            selected = "";

        selectOptions += "<option value='" + subjects[i].subjectid + "'"+ selected +">" + subjects[i].alias + mixtapes + "</option>";
    }
    selectOptions += "</select>"
    
    // Reset previous subjectid if not in list
    if(!previousSubjectidFound)
    {
        previouslySelectedSubjectid = subjectid;
    }
        
       
    // Store selected subject in cookie
    setLatestSubjectIdInCookie(previouslySelectedSubjectid);

    // Store selected subject in hidden field
    mixtapeSetHiddenField('mixtapesHiddenSubjectid', previouslySelectedSubjectid);

    jQuery("#mixtapesOwner").html(selectOptions);
    setMixtapeSelectUserListEvents();
    jQuery("#mixtapesOwner").show();

    // Populate mixtape-list
    mixtapesCreateSelectlist(previouslySelectedSubjectid);
}


function getLatestSubjectIdFromCookie()
{
    var content = GetCookie(_MIXTAPECOOKIENAME);
    var vals = content.split("|");
    for(var i in vals)
    {
        var v = vals[i].split(":");
        if(v[0]=='subjectid')
            return v[1];    
    }
    return '';

}

function getLatestListIdFromCookie(subjectid)
{
    var content = GetCookie(_MIXTAPECOOKIENAME);
    var vals = content.split("|");
    for(var i in vals)
    {
        var v = vals[i].split(":");
        if(v[0]==subjectid)
            return v[1];    
    }
    return '';
}

function setLatestSubjectIdInCookie(subjectid)
{
    var content = GetCookie(_MIXTAPECOOKIENAME);
    var newContent = "subjectid:"+subjectid;
    var vals = content.split("|");
    for(var i in vals)
    {
        var v = vals[i].split(":");
        if(v.length == 2 && v[0] && v[1])
            if(v[0] != 'subjectid')
                newContent += "|"+v[0]+":"+v[1];    
    }
    SetCookie(_MIXTAPECOOKIENAME, newContent, 356);    
}

function setLatestListIdInCookie(subjectid, listid)
{
    var content = GetCookie(_MIXTAPECOOKIENAME);
    var newContent = subjectid+":"+listid;
    var vals = content.split("|");
    for(var i in vals)
    {
        var v = vals[i].split(":");
        if(v.length == 2 && v[0] && v[1])
            if(v[0] != subjectid)
                newContent += "|"+v[0]+":"+v[1];    
    }
    SetCookie(_MIXTAPECOOKIENAME, newContent, 356);    
}

// Call this to show mixtape-ui
function mixtapesShow(subjectid, mmmid, bandname, trackname)
{
       var ssa = Sys.Services.AuthenticationService;
       if (!ssa.get_isLoggedIn()) {
            mixtapeMessage("Du må være innlogga for å kunne lage miksteiper!","red");
            return;   
       }
    
    jQuery('#mixtapesBand').text(decodeURIComponent(bandname));
    jQuery('#mixtapesTrack').text(decodeURIComponent(trackname));
    
    mixtapeSetHiddenField('mixtapesHiddenMmmid', mmmid);
    
    // Set subject if not already set
    var s = jQuery("#mixtapesHiddenSubjectid").val();
    if(s==null || s == '')    
        mixtapeSetHiddenField('mixtapesHiddenSubjectid', subjectid);
    
    jQuery("#addTrackToMixtapeOverlay").addClass("addtracktomixtape-overlay");
    jQuery("#addTrackToMixtape").show();
}

function mixtapesHide()
{
    jQuery("#addTrackToMixtapeOverlay").removeClass("addtracktomixtape-overlay");
    jQuery("#addTrackToMixtape").hide();
}

  
function mixtapesCreateSelectlist(subjectid)
{
    var userContext = subjectid;
    
    
    jQuery('#mixtapesWait').show();
    jQuery('#mixtapesLists').hide();

    // Get mixtapes for selected subjectid 
    Nrk.Untouched.WebService.MixtapeService.GetLists(subjectid, onGetMixtapesSucceeded, onMixtapeError, userContext);
    
}

function onGetMixtapesSucceeded(result, userContext) 
{
    //var mixtapes = JSON.parse(result[0]);
    var mixtapes = eval(result[0]);
    
    var subjectid = userContext;
            
    // Attempt to get the previously used mixtape
    var listid = getLatestListIdFromCookie(subjectid);

    var selected = "";
    var selectOptions = "";
    
    
    selectOptions += '<select style="width:400px;font-size:16px;font-weight:bold;" id="mixtapeselectlist"><option value="-1">NY MIKSTEIP</option>';
    for(var i=0; i < mixtapes.length; i++)
    {
        
        if(mixtapes[i].listid == listid)
        {
            selected = " selected='selected' ";
        }
        else
            selected = "";
            
        var laater;
        if(mixtapes[i].count == 1)
            laater = " (1 låt)";
        else
            laater = " (" + mixtapes[i].count + " låter)";
        
        
        selectOptions += "<option value='" + mixtapes[i].listid + "'"+ selected +">" +  mixtapes[i].title + laater+ "</option>";
        _mixtapesOptionsAdded = _mixtapesOptionsAdded + 1;
    }
    selectOptions += "</select>";
    
    jQuery("#mixtapesLists").html(selectOptions);
    setMixtapeSelectListEvents();


    // Show the box
    jQuery('#mixtapesWait').hide();
    jQuery('#mixtapesLists').show();

    // Show or hide input-box for new mixtape
    if(mixtapes.length == 0 || listid == -1)
        jQuery("#newmixtape").show();
    else
    {
        mixtapeSetEditLink(subjectid, listid);
        jQuery("#newmixtape").hide();
    }       
    // Update edit link


}

function mixtapeAddNew()
{
    var mmmid = jQuery("#mixtapesHiddenMmmid").val();
    var subjectid = jQuery("#mixtapesHiddenSubjectid").val();
    var selectedMixtape = jQuery("#mixtapeselectlist").val();
    var userContext = [];
    userContext[1] = selectedMixtape;
    userContext[0] = subjectid;
        
    if(selectedMixtape == "-1")
    {
        var title = jQuery("#mixtapenewtitle").val();
        if(title.trim().length == 0)
        {
            mixtapeMessage("Du må gi den nye miksteipen ett navn!");   
            return false;
        }
        
        var description = jQuery("#mixtapenewdescription").val().trim();
            
        // Add new mixtape + track
        Nrk.Untouched.WebService.MixtapeService.AddNewMixtape(subjectid, title, description, mmmid, onAddNewMixtapeSucceeded, null, userContext);
    }
    else
    {
        // Add track to existing mixtape
        Nrk.Untouched.WebService.MixtapeService.AddTrackToMixtape(subjectid, selectedMixtape, mmmid, onAddTrackToMixtape, null, userContext);
        
    }        
}


function onAddNewMixtapeSucceeded(result, userContext) 
{
    var subjectid = userContext[0];
    var retval = result[0];
    if(retval == -2)
    {
        mixtapeMessage("Du har for mange miksteiper. Slett en teip vel å klikke på 'Rediger Miksteiper'","red");   
        return;
    }

    if(retval < 0)
    {
        mixtapeMessage("Klarte ikke å opprette mixteipen. Prøv igjen senere. Sorry!","red");   
        return;
    }
                
    // Store previous used cookie            
    setLatestListIdInCookie(subjectid, retval);

    mixtapeMessage("Ny mixteip opprettet!","green");   

    // Hide box
    mixtapesHide();   
        
    // Update select options
    var userid = jQuery('#mixtapesHiddenUserid').val();
    mixtapesCreateUserSelectlist(userid);
}

function onAddTrackToMixtape(result, userContext) 
{
    var subjectid = userContext[0]
    var retval = result[0];
    if(retval == -2)
    {
        mixtapeMessage("Låta finnes allerede i miksteipen din. Legg til noe annet :)","red");   
        return;
    }

    if(retval < 0)
    {
        mixtapeMessage("Klarte ikke å legge til låta i mixteipen. Prøv igjen senere. Sorry!","red");   
        return;
    }
    var listid = userContext[1];
                
    if(retval != 1)
        mixtapeMessage("Du har nå " + retval + " låter i miksteipen din","green");   
    else
        mixtapeMessage("Du har nå " + retval + " låt i miksteipen din","green");   
        
    mixtapesHide();    
    
    // Get mixtapes for user 
    Nrk.Untouched.WebService.MixtapeService.GetLists(subjectid, onGetMixtapesSucceeded, onMixtapeError, subjectid);   
}

function mixtapeSetHiddenField(id, value)
{
    jQuery("#"+id).val(value);
}

function mixtapeMessage(text, color)
{
   jQuery("#mixtapemessage").text(text).css("color", color).show().fadeOut(4000);       
}

function mixtapeSetEditLink(userid, listid)
{
    jQuery('#mixtapesEditLink').attr('href', baseUri + 'myuser2/editmixtapes.aspx?id='+userid+'&listid='+listid);

}

/* ------------------------------------------------------------- */
/* ----------------  myuser2/editmixtapes.aspx ------------------ */
/* ------------------------------------------------------------- */

function mixtapeDelete(userid, listid, title, idtohide) 
{
    if(!confirm("Er du sikker på at du vil slette miksteipen '" + unescape(title) + "'"))
        return false;
    var userContext = [];
    userContext[0] = idtohide;
    userContext[1] = listid;
     
    // Update list
    Nrk.Untouched.WebService.MixtapeService.DeleteMixtape(userid, listid, onDeleteMixtape, null, userContext);
   
    return true;    
}

function onDeleteMixtape(result, userContext) 
{
    jQuery(userContext[0]).hide();

    // Hide current mixtape if the same as deleted
    var listid = get_url_parametervalue_by_name("listid");
    if(listid == userContext[1])
    {
        jQuery(".editmixtapepage").hide();        
    }

    // Hide the entry we clicked
    jQuery(".mixtapeitem_" + userContext[1]).hide();
    
    alert("Miksteipen er sletta");

}

