var Event = YAHOO.util.Event;
var loader;
Event.onDOMReady(function() {

  /* Search */
    loader = new YAHOO.widget.Panel("wait", {
        width:"240px",
        fixedcenter:true,
        close:false,
        draggable:false,
        zindex:4,
        modal:true,
        visible:false
    });
    loader.setHeader("Loading, please wait...");
    loader.setBody('<img src="http://l.yimg.com/a/i/us/per/gr/gp/rel_interstitial_loading.gif" />');
    loader.render(document.body);

    var button_lookup = new YAHOO.widget.Button("submit", { value: "Lookup" });
        button_lookup.on("click", lookup_artist );

  /* Check for enter */
  YAHOO.util.Event.addListener("artist", "keyup", check_enter); 

  /* Accordion menu */
    if(document.getElementById('mymenu')) {
        menu = new YAHOO.widget.AccordionView('mymenu', {
            collapsible: true, width: '100%', expandItem: 2,
            animationSpeed: '0.3', animate: true, effect:
            YAHOO.util.Easing.easeBothStrong});
    }

  /* Layout */
    var layout = new YAHOO.widget.Layout({
      units: [
        { position: 'top', height: 28, body: 'top', scroll: null, zIndex: 2 },
        { position: 'bottom', height: 90, body: 'bottom', resize: true },
        { position: 'left', header: 'Artist Information', width: 325, body: 'left', gutter: '5', collapse: true, animate: true, scroll: true },
        { position: 'center', body: 'center', gutter: '5' }
      ]
    });
    layout.render();
});

var cb = {
    success: function(o) { parse_artist(o) },
    failure: function(o) { loader.hide(); alert("Couldn't lookup artist") }
}

var check_enter = function (e) {
    if(e.keyCode == 13) {
        lookup_artist();
    }
}

var lookup_artist = function () {
    clear_search_results();
    loader.show();
    var t = YAHOO.util.Connect.asyncRequest(
        'POST', '/json/lookup_artist', cb,
        'artist='+document.getElementById('artist').value
    );
    return false;
}

function parse_artist(o) {
    try {
        var json = YAHOO.lang.JSON.parse(o.responseText);
    }
    catch (e) {
        loader.hide();
        alert("Couldn't find any artist :-(");
    }

    var length = json.json.artists.length;
    if(length == 0) {
        loader.hide();
        alert("Couldn't find that artist");
    } else if(length == 1) {
        var url  = '/artist/'+encodeURIComponent(json.json.artists[0].name)+'/';
        window.location = url;
    } else {
        loader.hide();
        search_results = document.getElementById('search_results');
        var search_txt = document.createElement('p');
        search_txt.innerHTML = "We've found "+length+" artist!<br />Please "+
                               "select the correct one.";
        search_results.appendChild(search_txt);

        for(var i=0;i<=length;i++) {
            var item = json.json.artists[i];
            if(!item)
                continue;
            var el = document.createElement('a');

            el.href  = '/artist/'+encodeURIComponent(item.name)+'/';
            el.title = 'Lookup '+item.name;
            el.innerHTML = item.name;

            search_results.appendChild(el);
            search_results.appendChild(document.createElement('br'));
        }
    }
}

function clear_search_results() {
    var el = document.getElementById("search_results");

    if ( el.hasChildNodes() ) {
        while ( el.childNodes.length >= 1 ) {
            el.removeChild( el.firstChild );
        }
    }
}

function search_for(artist) {
    var el = document.getElementById('artist');
    el.value = artist;
    lookup_artist();
}
