var Kurumanorg = {
    init: function() {
        if (!window.opera) this.removeOperaScheme();
    },
    removeOperaScheme: function() {
        // http://orera.g.hatena.ne.jp/higeorange/20060412/1144782954
        // http://kuruman.org/diary/2006/12/23/opera-config-link
        var anc = document.getElementsByTagName('a');
        a = anc.length;
        for (var i = 0; i < a; i++) {
            if(anc[i].href.match(/^opera:/i)) {
                var span = document.createElement('span');
                if (span.title) span.title = anc[i].title;
                span.className = 'opera-config-anchor';
                var childs = anc[i].childNodes[0].cloneNode(true);
                span.appendChild(childs);
                if(anc[i].href.match(/^opera:config/i)) {
                    var span2 = document.createElement('span');
                    span2.className = 'opera-config-path';
                    span2.appendChild(document.createTextNode("(" + anc[i].href + ")"));
                    span.appendChild(span2);
                }
                anc[i].parentNode.replaceChild(span, anc[i]);
                i--;
                a--;
            }
        }
    },
    starDefaultClass: function(div) {
        var h1 = document.getElementsByTagName('h1')[0];
        this.title = Ten.DOM.scrapeText(h1);
        var posted = Ten.DOM.getElementsByTagAndClassName('dd','permanenturi',div)[0];
        this.uri = Ten.DOM.scrapeText(posted);
        this.comment_container = Hatena.Star.EntryLoader.createCommentContainer();
        h1.appendChild(this.comment_container);
        this.star_container = Hatena.Star.EntryLoader.createStarContainer();
        h1.appendChild(this.star_container);
    },
    starDiaryClass: function(dl, hNodeName) {
        var setted = false;
        var posted = Ten.DOM.getElementsByTagAndClassName('a','permanenturi',dl)[0];
        this.uri = Ten.DOM.scrapeText(posted);
        this.title = posted.getAttribute('title');
        this.comment_container = Hatena.Star.EntryLoader.createCommentContainer();
        this.star_container = Hatena.Star.EntryLoader.createStarContainer();
        if (hNodeName) {
            var hNode = Ten.DOM.prevElement(dl);
            if (hNode.tagName.toLowerCase() == hNodeName) {
                setted = true;
            } else { // 2回で十分
                hNode = Ten.DOM.prevElement(hNode);
                if (hNode.tagName.toLowerCase() == hNodeName) {
                    setted = true;
                }
            }
            if (setted) {
                hNode.appendChild(this.comment_container);
                hNode.appendChild(this.star_container);
            }
        }
        if (!setted) {
            var dt = document.createElementNS('http://www.w3.org/1999/xhtml', 'dt');
            dt.appendChild(document.createTextNode('Hatena Star'));
            dt.appendChild(this.comment_container);
            var dd = document.createElementNS('http://www.w3.org/1999/xhtml', 'dd');
            dd.appendChild(this.star_container);
            dl.appendChild(dt);
            dl.appendChild(dd);
        }
    },
    starDiaryYearClass: function(li) {
        var a = li.getElementsByTagName('a')[0];
        this.title = Ten.DOM.scrapeText(a);
        this.uri = ['http://kuruman.org',a.getAttribute('href')].join("");
        this.comment_container = Hatena.Star.EntryLoader.createCommentContainer();
        li.appendChild(this.comment_container);
        this.star_container = Hatena.Star.EntryLoader.createStarContainer();
        li.appendChild(this.star_container);
    }
};

window.init = Kurumanorg.init();

Hatena.Star.EntryLoader.loadEntries = function() {
    var entries = [];
    var pathname = location.pathname;
    if (pathname.match(/^\/diary\/latest(\.(html|xhtml))?$/)) { // Latest
        var divs = Ten.DOM.getElementsByTagAndClassName('dl','entryInformation',document.body);
        for (var i = 0, l = divs.length; i < l; i++) {
            entries.push(new Kurumanorg.starDiaryClass(divs[i]));
        }
    } else if (pathname.match(/^\/diary\/\w{4}\/\w{2}(\.(html|xhtml))?$/)) { // Month
        var divs = Ten.DOM.getElementsByTagAndClassName('dl','entryiteminformation',document.body);
        for (var i = 0, l = divs.length; i < l; i++) {
            entries.push(new Kurumanorg.starDiaryClass(divs[i], 'h3'));
        }
    } else if (pathname.match(/^\/diary\/\w{4}\/\w{2}\/\w{2}(\.(html|xhtml))?$/)) { // Day
        var divs = Ten.DOM.getElementsByTagAndClassName('dl','entryiteminformation',document.body);
        for (var i = 0, l = divs.length; i < l; i++) {
            entries.push(new Kurumanorg.starDiaryClass(divs[i], 'h2'));
        }
    } else if (pathname.match(/^\/diary\/\w{4}(\.(html|xhtml))?$/)) { // Year
        var divs = Ten.DOM.getElementsByTagAndClassName('li','entrylistitem',document.body);
        for (var i = 0, l = divs.length; i < l; i++) {
            entries.push(new Kurumanorg.starDiaryYearClass(divs[i]));
        }
    } else {
        var divs = Ten.DOM.getElementsByTagAndClassName('div','information',document.body);
        for (var i = 0, l = divs.length; i < l; i++) {
            entries.push(new Kurumanorg.starDefaultClass(divs[i]));
        }
    }
    return entries;
};
Hatena.Star.Token = 'aa29e14e2d78eee6b53496492f37f5782249b9d2';
