/** HOWTO:
 * <script class="wowtree-reply-badge" type="text/javascript" src="http://pub.wowtree.com/wowtree-reply-badge.js?aid=2&limit=10&order=0"></script>
 * order: v, asc, desc (vote / date asc / date desc)
 */
/**
 * Yahoo! Name Space
 * http://yui.yahooapis.com/2.5.2/build/yahoo/yahoo.js
 */
if (typeof YAHOO == "undefined" || !YAHOO) {
    var YAHOO = {};
};
YAHOO.namespace = function() {
    var a=arguments, o=null, i, j, d;
    for (i=0; i<a.length; i=i+1) {
        d=a[i].split(".");
        o=YAHOO;
        // YAHOO is implied, so it is ignored if it is included
        for (j=(d[0] == "YAHOO") ? 1 : 0; j<d.length; j=j+1) {
            o[d[j]]=o[d[j]] || {};
            o=o[d[j]];
        }
    }
    return o;
};
if (!YAHOO.util) {
    YAHOO.namespace('util');
}

/**
 * getElementsByClassName: Dustin Diaz's getElementsByClass
 * http://ejohn.org/blog/getelementsbyclassname-speed-comparison/
 */
YAHOO.util.getElementsByClassName = function(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
};

/* Badge */
(function() {
    /* reference: http://www.netlobo.com/url_query_string_javascript.html */
    var getValue = function (name, url) {
        name = name.replace(/[\[]/,'\\\[').replace(/[\]]/,'\\\]');
        var regEx = new RegExp('[\\?&]' + name + '=([^&#]*)');
        return (!regEx.exec(url))?'':regEx.exec(url)[1];
    };

    var ListBadge = {
        identity:0,
        getData:function(oData) {
            var aArticle = oData;
            var aHtml = [];

            aHtml.push('<div class="wowtree-reply-badge">');
            aHtml.push('<div class="wowtree-hd"></div>');

            aHtml.push('<div class="wowtree-bd">');
            aHtml.push('<ul>');
            var i = c = 0;
            if (typeof aArticle['item'] == "undefined" || aArticle['item'].length == 0) {
                aHtml.push('<li>目前沒有資料，歡迎<a href="' + aArticle['article'].link + '" title="' + aArticle['article'].description + '">參與回應</a></li>');
            } else {
                for (i = 0, c = aArticle['item'].length; i < c; i++) {
                    if (aArticle['item'][i].url) {
                        aHtml.push('<li><a href="' + aArticle['item'][i].url + '" title="' + aArticle['item'][i].shortdescription + '">' + aArticle['item'][i].title + '</a> <a href="' + aArticle['item'][i].link + '" title="' + aArticle['article'].title + '"><img src="http://static.wowtree.com/s.gif"></a></li>');
                    } else {
                        aHtml.push('<li><a title="' + aArticle['item'][i].shortdescription + '">' + aArticle['item'][i].title + '</a> <a href="' + aArticle['item'][i].link + '" alt="' + aArticle['article'].title + '"><img src="http://static.wowtree.com/s.gif"></a></li>');
                    }
                }
            }

            aHtml.push('</ul>')
            aHtml.push('</div>');
            aHtml.push('<div class="wowtree-ft">');
            aHtml.push('<cite><a href="' + aArticle['article'].link + '" title="' + aArticle['article'].description + '">' + aArticle['article'].title + '</a> @ <a href="http://wowtree.com/" class="wowtree-brand">wowTree</a></cite>');
            aHtml.push('</div></div>');

            document.write(aHtml.join(''));
            /*
            if (typeof aArticle['item'] == "undefined" || aArticle['item'].length == 0) {
                document.write('<cite><a href="' + aArticle['article'].link + '" title="' + aArticle['article'].description + '">' + aArticle['article'].title + '</a> @ <a href="http://wowtree.com/" class="wowtree-brand">wowTree</a></cite>');
            } else {
                document.write(aHtml.join(''));
            }
            */
        }
    };
    var checkEnviornment = function(){
        if (!window.wowTree) {
            window.wowTree = {
                'ListBadge':ListBadge
            };
            document.write('<link type="text/css" rel="stylesheet" href="http://pub.wowtree.com/style/wowtree-reply-badge-1.css">');
        }

        if (!window.wowTree.ListBadge) {
            window.wowTree.ListBadge = ListBadge;
            document.write('<link type="text/css" rel="stylesheet" href="http://pub.wowtree.com/style/wowtree-reply-badge-1.css">');
        }
    };

    try {
        /* check class name owner and get class name value */
        //var src = document.getElementById('wowtree-reply-badge').src;
        //var dScripts = YAHOO.util.getElementsByClassName('wowtree-reply-badge');
        var dScripts = document.getElementsByTagName('script');
        var src = dScripts[dScripts.length -1].src;

        /* GET arg */
        var aid = getValue('aid', src);
        var order = getValue('order', src);
        var limit = getValue('limit', src);
        if (limit < 0) {
            limit = 0;
        }
    } catch (e) {
        // if javascript have not class="wowtree-reply-badge", so use default value.
        var aid = 1;
        var order = 'v';
        var limit = 10;
    }

    var generateBadge = function() {
        wowTree.ListBadge.identity++;
        document.write('<script src="http://api.wowtree.com/reply-list.php?aid=' + aid + '&callback=wowTree.ListBadge.getData' + '&order=' + order + '&limit=' + limit + '&output=json' + '&r=' + Date.parse(new Date())  + '" type="text/javascript"></s' + 'cript>');
    };

    checkEnviornment();
    generateBadge();
}());

