Clay.ready(function(c) {

    c('html').clazz('-no-js');

    /* --------------------------------------------------------------------------------- */

    var $suggest = c('#suggestion'),
        $wrapper = c('#wrapper'),
        $window  = c(window);
    function showHatena() {
        if ( $suggest.css('display') !== 'none' ) {
            c.http.jsonp('http://b.hatena.ne.jp/entrylist/json?sort=count&url=http://havelog.ayumusato.com', 'callback', function(res) {
                var compiled   = c.widget.tmpl(c('#tpl-hatena').text()), height;
                $suggest.i(0).innerHTML += compiled({entry:res});
                height = $suggest.absrect().height + 620;
                if (height > $wrapper.absrect().height) {
                    $wrapper.css('min-height', height+'px');
                }
            });
            $window.off('resize', showHatena);
        }
    }

    $window.on('resize', showHatena);
    $window.emit('resize');

    var facebook = c('#facebook').i(0);
    facebook.innerHTML += '<div class="fb-like-box" data-href="http://facebook.com/havelog" data-width="150" data-height="250" data-show-faces="true" data-border-color="#f0f0f0" data-stream="false" data-header="false"></div>';

    /* --------------------------------------------------------------------------------- */

    var $nav     = c('#nav'),
        content  = c.elm('#content'),
        wrapper  = c.elm('#wrapper'),
        init     = $nav.i(0).offsetTop,
        tmpWidth = $nav.css('width'),
        docked;

    $window.on('scroll', function () {
        if (!docked && ($nav.i(0).offsetTop - scrollTop() < 0)) {
            $nav.css({
                position: 'fixed',
                top     : 0,
                left    : (wrapper.offsetLeft+content.offsetLeft) + 'px',
                width   : content.offsetWidth + 'px'
            });
            $nav.clazz('+docked');
            docked = true;
        }
        else if (docked && scrollTop() <= init) {
            $nav.css({
                position: 'absolute',
                top     : init + 'px',
                left    : null,
                width   : tmpWidth
            });
            $nav.clazz('-docked');
            docked = false;
        }
    });
    $window.on('resize', function() {
        tmpWidth = content.offsetWidth;
        if ( docked !== void 0 ) {
            $nav.css('width', tmpWidth + 'px');
        }
        if ( docked ) {
            $nav.css('left', (wrapper.offsetLeft+content.offsetLeft) + 'px');
        }
    });

    function scrollTop() {
      return document.body.scrollTop || document.documentElement.scrollTop;
    }

    /* --------------------------------------------------------------------------------- */

    var $menus = c('menu li'),
        $megas = c('.megamenu'),
        $document = c(document),
        $closes= c('.close'),
        j     = 0,
        p;

    $menus.on('click', function(e) {
        var $that    = c(this),
            $target  = c('#'+ $that.attr('data-target')),
            display = ($target.css('display') !== 'none'),
            closeFn;

        if ( display ) {
            $target.css('display', 'none');
            $that.clazz('-stay');
        } else {
            $megas.css('display', 'none');
            $menus.clazz('-stay');

            $target.css('display', 'block');
            $that.clazz('+stay');

            closeFn = function(e) {
                if ( e.target.tagName === 'A' ) {

                } else {
                    $target.css('display', 'none');
                    $that.clazz('-stay');
                    $document.off('click', closeFn);
                }
            };
            $document.on('click', closeFn);
            e.stopPropagation();
        }
    });
    $closes.on('click', function() {
        $megas.css('display', 'none');
        $menus.clazz('-stay');
    });

    /* --------------------------------------------------------------------------------- */

    var codes = c.elm('pre'),
        i = 0, iz = codes.length;

    for ( ; i<iz; i++ ) {
        hljs.highlightBlock(codes[i], '    ');
    }

});

