
jQuery.fn.ytplaylist = function(options) {

    // default settings
    var options = jQuery.extend({
        holderId: 'ytvideo',
        playerHeight: '300',
        playerWidth: '500',
        addThumbs: false,
        thumbSize: 'small',
        showInline: false,
        autoPlay: true,
        showRelated: false,
        allowFullScreen: false,
        allowscriptaccess: 'always',
        showExternalPlayList: false,
        playListID: ''
    }, options);

    return this.each(function() {

        var selector = $(this);
        var autoPlay = "";
        var showRelated = "&rel=0";
        var fullScreen = "";
        if (options.autoPlay) autoPlay = "&autoplay=1";
        if (options.showRelated) showRelated = "&rel=1";
        if (options.allowFullScreen) fullScreen = "&fs=1";

        //throw a youtube player in
        function play(id) {
            var html = '';
            html += '<object height="' + options.playerHeight + '" width="' + options.playerWidth + '">';
            html += '<param name="movie" value="http://www.youtube.com/v/' + id + autoPlay + showRelated + fullScreen + '"> </param>';
            html += '<param name="wmode" value="transparent"> </param>';
            if (options.allowFullScreen) {
                html += '<param name="allowfullscreen" value="true"> </param>';
            }
            html += '<embed src="http://www.youtube.com/v/' + id + autoPlay + showRelated + fullScreen + '"';
            if (options.allowFullScreen) {
                html += ' allowfullscreen="true" ';
            }
            html += 'type="application/x-shockwave-flash" wmode="transparent"  height="' + options.playerHeight + '" width="' + options.playerWidth + '"></embed>';
            html += '</object>';
            return html;

        };

        function createPlayListPlayer(playListID) {
            var html = '';
            html += '<object height="' + options.playerHeight + '" width="' + options.playerWidth + '" movie="' + playListID + '">';
            html += '<param name="allowfullscreen" value="' + options.allowFullScreen + '"> </param>';

            var type = '';
            if (playListID.indexOf("www.youtube.com") == -1) {
                type = "application/x-mplayer2";
            } else {
                type = "application/x-shockwave-flash";
            }

            var embedhtml = '';
            embedhtml = '<embed src="' + playListID;
            embedhtml += 'allowfullscreen="' + options.allowFullScreen + '" type="' + type + '" wmode="transparent"';
            embedhtml += 'height="' + options.playerHeight + '" width="' + options.playerWidth + '"></embed>';

            html += embedhtml;
            html += '</object>';
            return html;
        }

        //grab a youtube id from a (clean, no querystring) url (thanks to http://jquery-howto.blogspot.com/2009/05/jyoutube-jquery-youtube-thumbnail.html)
        function youtubeid(url) {
            var ytid = url.match("[\\?&]v=([^&#]*)");
            //var ytid = url;
            ytid = ytid[1];
            return ytid;
        };


        if (options.showExternalPlayList) {
            //load inital video
            var firstVid = selector.children("li:first-child").addClass("currentvideo").children("a").attr("href");
            $("#" + options.holderId + "").html(play(youtubeid(firstVid)));
            //load video on request
            selector.children("li").children("a").click(function() {

                if (options.showInline) {
                    $("li.currentvideo").removeClass("currentvideo");
                    $(this).parent("li").addClass("currentvideo").html(play(youtubeid($(this).attr("href"))));
                }
                else {
                    $("#" + options.holderId + "").html(play(youtubeid($(this).attr("href"))));
                    $(this).parent().parent("ul").find("li.currentvideo").removeClass("currentvideo");
                    $(this).parent("li").addClass("currentvideo");
                }
                return false;
            });
        } else {
            $("#" + options.holderId + "").html(createPlayListPlayer(options.playListID));
        }

        //do we want thumns with that?
        if (options.addThumbs) {

            //            selector.children().each(function(i) {
            //            var replacedText = $(this).text();
            //                //Commented by Siva
            //                if (options.thumbSize == 'small') {
            //                    var thumbUrl = "http://img.youtube.com/vi/" + youtubeid($(this).children("a").attr("href")) + "/2.jpg";
            //                }
            //                else {
            //                    var thumbUrl = "http://img.youtube.com/vi/" + youtubeid($(this).children("a").attr("href")) + "/0.jpg";
            //                }
            //                $(this).children("a").empty().html("<img src='" + thumbUrl + "' alt='" + replacedText + "' />" + replacedText).attr("title", replacedText);
            //            });
        }
    });
};
