function get_discover_list(url_php_file_path, page, count, template_path) {

//    Constants
    var itunes_img = template_path + "/images/itunes_buy.png";
    var play_img = template_path + "/images/play.png";
    var pause_img = template_path + "/images/pause.png";
    var default_artwork_img = template_path + "/images/default_artwork.jpg";

    var discover_list_sel = jQuery("#discover-list");


//    Paging
    var after_date = 0;
    if (page == "earlier") {
        after_date = jQuery("#discover-list .timeago").last().attr('title');
    }


//     Set data type for proper parsing
	  var showSpinner = true;
		//var dataType = "text";
		if (jQuery.browser.msie) {	
		  var v = parseInt(jQuery.browser.version);
			
			if (v == 9) {
			  jQuery("#dl-spinner").css("top", "8px"); // Font is different so alignment needs adjustment
			}
			
			//if (v < 9) {		
				//dataType = "xml";
			//}
			
			if (v == 7) {
			  showSpinner = false;
			}
		}

	 
    if (showSpinner) {
			var opts = {
				lines: 10, // The number of lines to draw
				length: 4, // The length of each line
				width: 3, // The line thickness
				radius: 5, // The radius of the inner circle
				color: '#000', // #rgb or #rrggbb
				speed: 1, // Rounds per second
				trail: 60, // Afterglow percentage
				shadow: false // Whether to render a shadow
			};
			var spinner = new Spinner(opts);		
		}
		
		//count = 2;
		
		jQuery.ajax({
		    url:url_php_file_path,
				type:"POST",
				cache: false,				
				data:{after_date:after_date, count:count},				
				beforeSend: function(jqXHR, settings) {				    
				  if (showSpinner) {
					  var target = document.getElementById('dl-spinner');
					  spinner.spin(target);							
					}
				},
				complete : function(jqXHR, textStatus) {
				  if (showSpinner) {
					  spinner.stop();
					  jQuery("#dl-spinner").removeAll();
					}
				},
				error: function(jqXHR, textStatus, errorThrown) {
					alert(textStatus.toString() + " during discover list retrieval");
					alert(jqXHR.responseText);		
					alert(errorThrown.toString());
				},
        success:function(xml) {
												
            var emptied = false;
            var id_index = -1;
						
						if (jQuery.browser.msie) {
							var xmlDoc=new ActiveXObject( "Microsoft.XMLDOM" ) ;
							xmlDoc.async = "false" ;
							xmlDoc.loadXML( xml ) ;
							xml = xmlDoc;
						}


            var items = jQuery(xml).find('item');
            jQuery.each(items, function(index, value) {								

                id_index = id_index + 1;							  								
                var jPlayer_id = "jPlayer-" + id_index;
                var description = jQuery(value).find('description').text();
                var json_info = jQuery.parseJSON(description);

                // Show play/pause buttons when there is a stream to preview
                var buttons_element = "";
                var stream_url = json_info.CA_track_preview_itunes_url;
                if (!isEmpty(stream_url)) {
                    var swf_path = template_path + "/js/jPlayer";

                    buttons_element = "" +
                        "<div style='position:absolute;left:15px;top:15px;'>" +
                        '  <img class="play" onclick="play(\'' + jPlayer_id + '\', \'' + stream_url + '\', \'' + swf_path + '\');" src="' + play_img + '" width="40" />' +
                        '  <img class="pause" onclick="pause();" src="' + pause_img + '" width="40" style="display:none;"/>' +
                        "</div>";
                }


                var itunes_btn_element = "";
                var share_element = "";
                if (!isEmpty(json_info.short_url)) {

                    share_element = "" +
                        "<div class='discover-post' >" +
                        "  <ul class='meta'>" +
                        "    <li><iframe style='padding-top: 0;' src='http://api.tweetmeme.com/button.js?url=" + json_info.CA_itunes_url + "&amp;style=compact' frameborder='0' height='21' scrolling='no' width='65'></iframe></li>" +
                        "    <li><iframe src = 'http://www.facebook.com/plugins/like.php?href=" + json_info.short_url + "&amp;layout=button_count&amp;show_faces=false&amp;width=127&amp;action=like&amp;colorscheme=light&amp;height=21' style = 'border:none; overflow:hidden; width:120px; height:21px;' allowtransparency = 'true' frameborder = '0' scrolling ='no' ></iframe ></li>" +
                        "  </ul> " +
                        "</div>";

                    itunes_btn_element = "" +
                        "<div style='float: left;'>" +
                        "  <a href='" + json_info.short_url + "' target='_blank'><img src='" + itunes_img + "' width='70' height='25' /></a>" +
                        "</div>" + share_element;
                }


                var title = jQuery(value).find('title').text();
                var pubDate = jQuery(value).find('pubDate').text();
                var artwork_url = json_info.CA_itunes_artwork_url;
                if (isEmpty(artwork_url)) {
                    artwork_url = default_artwork_img;
                }


                // Delay empty until last moment
                if (!emptied) {
                    emptied = true;
                    discover_list_sel.empty();
                }
 

                // Show main discover entry i.e. put it all together
                discover_list_sel.append(
                    "<li id='jp_container_" + id_index.toString() + "' class='jp_container'>" +
                        "<div class='jPlayer' id='" + jPlayer_id + "'></div>" +
                        "<div style='position: relative;top:0;left:0;'></div>" +
                        "<div id='" + jPlayer_id + "-peers' class='discover-song' style='float:left;position:relative; margin-top:3px;margin-left:3px;'>" +
                        "  <div style='float:left;'>" +
                        "    <div>" +
                        "      <img src='" + artwork_url + "' width='70' />" +
                        buttons_element +
                        "    </div>" +
                        "  </div>" +
                        "  <div style='height:60px;margin-left: 70px; margin-bottom: 5px; padding: 4px 4px 6px 12px;'>" +
                        "    <div>" + title + "</a></div>" +
                        "    <div><abbr class='timeago' title='" + pubDate + "'></abbr> by " + get_twitter_element(json_info) + "</div>" +
                        "  </div>" +
                        itunes_btn_element +
                        "</div>" +
                    "</li>"
                );
            });
        }});
				
}


function play(jPlayer_id, stream_url, swf_path) {
//alert("play");
    pause();


    // Set current song button images
    var peers_id = "#" + jPlayer_id + "-peers";
    jQuery(peers_id + " .play").hide();
    jQuery(peers_id + " .pause").show();


    var id = "#" + jPlayer_id;
    if (jQuery(id).hasClass("played")) {
        jQuery(id).jPlayer("play");
    } else {
        jQuery(id).bind(jQuery.jPlayer.event.play, function(event) {
            jQuery(id).addClass("played");
            jQuery(id).addClass("playing");
        });

        jQuery(id).jPlayer({
            ready: function () {
                jQuery(this).jPlayer("setMedia", {
                    m4a: stream_url
                }).jPlayer("play");
            },
            ended: function() {
                var playing_sel = jQuery(".playing");
                if (playing_sel) {
                    playing_sel.removeClass("playing");
                }

                resetImages();
            },
            swfPath:  swf_path,
            supplied: "m4a",
            solution: 'html, flash',
            errorAlerts:true
//            warningAlerts:true
        });
    }
}


function pause() {

    var playing_sel = jQuery(".playing");
    if (0 < playing_sel.length) {
        playing_sel.jPlayer("pause");
        playing_sel.removeClass("playing");
    }

    resetImages();
}


function resetImages() {
    jQuery("#discover-list .pause").hide();
    jQuery("#discover-list .play").show();
}


function get_twitter_element(json_info) {

    var twitter_name = json_info.twitter_name;

    // Format name
    if (isEmpty(twitter_name)) {
        twitter_name = 'Unknown';
    } else if (!twitter_name.startsWith('@')) {
        twitter_name = '@' + twitter_name;
    }

    // Build element
    if (twitter_name.startsWith('@')) {
        var link = "<a href='http://twitter.com/" + twitter_name + "' target='_blank'>" + twitter_name + "</a>";
    } else {
        var link = twitter_name;
    }

    return link;
}


if (typeof String.prototype.startsWith != 'function') {
    String.prototype.startsWith = function (str) {
        return this.indexOf(str) == 0;
    };
}


function isEmpty(str) {
    return (str == undefined || !str || 0 === str.length);
}

