Songza Media controls

By jimmy miller Uploaded Jun 9, 2009
// Thanks for some inspiration and code examples
// http://ericburling.org/jetpacks/lfm.html

var previous = ""
function find_tab() {
    for (var tab in jetpack.tabs) {
        if (jetpack.tabs[tab].url == "http://songza.com/") {
            return tab;
        }
    }
    return false;
}
function show_song() { 
    jetpack.notifications.show({title: 'Currently Playing on Songza:', body: get_song(), icon: 'http://songza.com/favicon.ico'});  
}
function get_song() {
    return $(get_dom()).find("#songza-name").text();
}
function get_dom() {
    return jetpack.tabs[find_tab()].contentDocument
}
function notify() {
    if (get_song() != previous && get_song() != "" && is_playing() == true) {
        show_song();
        previous = get_song();
    }
}
function make_script(command) {
    var script_to_add = get_dom().createElement("script");
    script_to_add.innerHTML=command;
    get_dom().body.appendChild(script_to_add);
    delete script_to_add;
}

function pause() {
    make_script("Songza.pause()");
}

function play() {
    make_script("Songza.resume()");
}

function next() {
    make_script("Songza.playNext()");
}

function prev() {
    make_script("Songza.playPrev()");
}
function is_playing() {
  return $(get_dom()).find("#songza-status").text() != "Paused";
}
function update_ui(widget) {
    if (find_tab() == false || $(get_dom()).find("#player-wrap").css("display") == "none") {
        $(".pause", widget).css({display:"none"});
        $(".play", widget).css({display:"none"});
        $(".prev", widget).css({display:"none"});
        $(".next", widget).css({display:"none"});
    }
    else if (is_playing() == true) {
        $(".pause", widget).css({display:"inline"});
        $(".play", widget).css({display:"none"});
        $(".prev", widget).css({display:"inline"});
        $(".next", widget).css({display:"inline"});
    }
    else {
        $(".play", widget).css({display:"inline"});
        $(".pause", widget).css({display:"none"});
        $(".prev", widget).css({display:"inline"});
        $(".next", widget).css({display:"inline"});
    }
}
function main(widget) {
    update_ui(widget);
    if (find_tab() != false) {notify();}
}
jetpack.statusBar.append({
     html: '<img src="http://stupidbob307.eshlook.com/jetpacks/images/prev.png" class="prev" />\
     <span class="pause"> <img src="http://stupidbob307.eshlook.com/jetpacks/images/pause.png" />&nbsp;</span> \
     <img src="http://stupidbob307.eshlook.com/jetpacks/images/play.png" class="play" /> \
     <img src="http://stupidbob307.eshlook.com/jetpacks/images/next.png" class="next" />',
        
     width: 50, 
     onReady: function(widget) {
        main(widget);
        $(".next", widget).click(function(){ 
            next();
            update_ui(widget);
        });
        $(".play", widget).click(function(){ 
            play();
            update_ui(widget);
        });
        $(".pause", widget).click(function(){ 
            pause();
            update_ui(widget);
        });
         $(".prev", widget).click(function(){ 
                prev();
                update_ui(widget);
        });
        setInterval(main,1000,widget);
    } 
});