﻿var selectedSubType = null;
var subTypes = null;
var pieces = null;
var sections = 0;
var currentSection = 0;

function SelectType(pk,subtypeSelect)
{
    if( selectedType == pk )
    {
//        return;
    }
    currentSection = 0;
    selectedType = pk;
    BuildArtistMenu();
    
    HttpRequest("GET","/site/artist/type.htm", function(html) 
    {
        document.getElementById("content").innerHTML = html;
        LoadSubTypes(subtypeSelect);
        ScrollInit("type_content");
    });
}

function LoadSubTypes(subtypeSelect)
{
   
    subTypes = proxies.PieceSubType.GetPieceSubTypes(selectedType);
    if( !subTypes || subTypes.length == 0 )
    {
        subTypes = new Array();
        SelectSubType();
        return;
    }

    var allArray = new Array();
    var all = new Object();
    all.PkPieceSubType = 0;
    all.Name = "All";
    allArray[0] = all;
    
    subTypes = allArray.concat(subTypes);
    if( !subtypeSelect ) selectedSubType = 0; else selectedSubType = subtypeSelect;
    
    var b = new StringBuilder();
    for(var i=0;i<subTypes.length;i++)
    {
        b.Append("<span id=\"sub_type_"+subTypes[i].PkPieceSubType+"\" class=\"sub_type_item\" onclick=\"SelectSubType("+subTypes[i].PkPieceSubType+")\">"+subTypes[i].Name+"</span>");
    }
    document.getElementById("sub_types").innerHTML = b.ToString();
    
    SelectSubType(selectedSubType);
}

function SelectSubType(pk)
{
    window.dhtmlHistory.add("subtype:"+selectedType+":"+pk);

    currentSection = 0;
    ScrollInit("type_content");
    
    if( !pk ) pk=0;
    
    for(var i=0;i<subTypes.length;i++)
    {
        if( subTypes[i].PkPieceSubType == pk )
        {
            document.getElementById("sub_type_"+subTypes[i].PkPieceSubType).className = "sub_type_item_select";
        }
        else
        {
            document.getElementById("sub_type_"+subTypes[i].PkPieceSubType).className = "sub_type_item";
        }
    }
    
//    pieces = proxies.ArtistPiece.GetPiecesFromType(selectedType,pk);
    pieces = proxies.ArtistPiece.GetFirstPieceOfArtistFromType(selectedType,pk);
    if( pieces == null )
    {
        alert("Pieces failed to load");
        return;
    }
    
    selectedSubType = pk;
    if( pieces.length == 0 )
    {
        document.getElementById("type_content_pieces").innerHTML = "<i>No pieces available to view</i>";
    }
    else
    {
        var b = new StringBuilder();
        var count = 0;
        sections = 0;

        for(var i=0;i<pieces.length;i++)
        {
            if( count == 0 )
            {
                b.Append("<div class=\"piece_section\">");
                sections++;
            }
        
            b.Append("<div id=\"Piece"+pieces[i].PkArtistPiece+"\" class=\"piece\" onclick=\"SelectPiece("+pieces[i].PkArtistPiece+","+pieces[i].FkArtist+")\" onmouseover=\"PieceFadeIn(this)\" onmouseout=\"PieceFadeOut(this)\"><img src=\""+pieces[i].ImageThumbnail+"\" /><div class=\"piece_inner\">"+pieces[i].ArtistName+"</div></div>");
            
            count++;
            
            if( count == 12 )
            {
                b.Append("</div>");
                count = 0;
            }
        }
        if( count != 0 )
        {
            b.Append("</div>");
        }
        document.getElementById("type_content_pieces").innerHTML = b.ToString();
        document.getElementById("type_content_pieces").style.width = (sections*650)+"px";
    }
}

var pieceFades = new Array();

function PieceFadeIn(element)
{
    var fade = new Object();
    fade.id = element.id;
    fade.value = 0;
    fade.delta = fadeRate;
    fade.timer = setInterval("PieceFadeUpdate(\""+fade.id+"\")",5);

    if( pieceFades[fade.id] )
    {
        fade.value = pieceFades[fade.id].value;
        clearInterval(pieceFades[fade.id].timer);
    }

    pieceFades[fade.id] = fade;
}

function PieceFadeOut(element)
{
    var fade = new Object();
    fade.id = element.id;
    fade.value = 1;
    fade.delta = -fadeRate;
    fade.timer = setInterval("PieceFadeUpdate(\""+fade.id+"\")",5);

    if( pieceFades[fade.id] )
    {
        fade.value = pieceFades[fade.id].value;
        clearInterval(pieceFades[fade.id].timer);
    }

    pieceFades[fade.id] = fade;
}

function PieceFadeUpdate(id)
{
    var fade = pieceFades[id];
    fade.value += fade.delta;
    if( fade.value > 1 )
    {   
        fade.value = 1;
        pieceFades[fade.id] = null;
        clearInterval(fade.timer);
    }
    else if( fade.value < 0 )
    {
        fade.value = 0;
        pieceFades[fade.id] = null;
        clearInterval(fade.timer);n
    }
    if( document.getElementById(fade.id) && document.getElementById(fade.id).childNodes[1] )
    {
        var element = document.getElementById(fade.id).childNodes[1];
        element.style.opacity = fade.value;
        element.style.filter = "alpha (opacity="+Math.round(fade.value*100)+")";
    }
}

