/*______________________________________

  futtenBlogAssets #090313
  
  Copyright (C) 2009 Chihiro Yokoyama All rights reserved.
  Script written by Mahiro Komura <mahirok@mizuyari.jp>
  http://blog.futten.com/
______________________________________*/

var futtenBlogContentWidthMonTimer;

function futtenBlogContentWidthMonInit() { // futtenBlogContentWidthMonInit #090311
    futtenBlogContentWidthMon();
    futtenBlogContentWidthMonTimer = setInterval("futtenBlogContentWidthMon()", 1000);
}

function futtenBlogContentWidthMonEnd() { // futtenBlogContentWidthMonEnd #090311
    clearInterval(futtenBlogContentWidthMonTimer);
}

function futtenBlogContentWidthMon() { // futtenBlogContentWidthMon #090317
    var containerElmt = miz$('container');
    var postElements = getElementsByClassName('post');
    var containerElmtMargins = [];
    var contentElmtMargins = [];
    var totalWidth = 1;

    if (mizuyari.containsClass(miz$('contents'), "archive_days")){
        containerElmtMargins = [0,0,0,0];
        contentElmtMargins = [0,0,0,0];
    } else {
        containerElmtMargins = [0,0,0,135];
        contentElmtMargins = [0,180,0,0];
    }

    for (var i=0; i<postElements.length; i++) {
        totalWidth += postElements[i].clientWidth + contentElmtMargins[1];
    }
    totalWidth += containerElmtMargins[3];
    // trace(postElements.length + " / " + totalWidth);
    containerElmt.style.width = totalWidth + 'px';
}


var mizMouseScrollTimer;

function mizMouseScrollInit() { // mizMouseScrollInit #090312
    if (mizuyari.ua.isWinIE) {
        mizuyari.addEvent(document, "mousewheel", wheel);
    } else if (mizuyari.ua.isSafari) {
        mizuyari.addEvent(window, "mousewheel", wheel);
    } else {
        mizuyari.addEvent(window, "DOMMouseScroll", wheel);    
    }
}

function mizMouseScroll(toX) { // mizMouseScroll #090312
    var frms = 4;
    if (mizMouseScrollTimer) clearTimeout(mizMouseScrollTimer);
    var xPosBy = Math.floor((toX - getPageXOffset()) / frms);
    if (Math.abs(xPosBy) > 0) {
        window.scrollBy(xPosBy, 0);
        mizMouseScrollTimer = setTimeout("mizMouseScroll("+toX+")",16);
    }
}

function mizMouseScrollApp(adj) { // mizMouseScrollApp #090313
    var toX = getPageXOffset() + Math.floor(getWindowInnerWidth()/3) * adj;
    if (toX < 0) {
        toX = 0;
    } else if (toX >= getWindowScrollMaxX()) {
        toX = getWindowScrollMaxX();
    }
    mizMouseScroll(toX);
}

function handle(delta) { // handle #090311
    if (delta < 0) {
        // trace("down:" + delta);
        mizMouseScrollApp(1);
   } else {
        // trace("up:" + delta);
        mizMouseScrollApp(-1);
   }
}

function wheel(event){ // wheel #090311
   var delta = 0;
   if (!event) /* For IE. */
       event = window.event;
   if (event.wheelDelta) { /* IE/Opera. */
       delta = event.wheelDelta/120;
       if (window.opera) delta = -delta;
   } else if (event.detail) { /** Mozilla case. */
       delta = -event.detail/3;
   }
   if (delta) handle(delta);
   if (event.preventDefault) {
       event.preventDefault();
   }
   event.returnValue = false;
}

mizuyari.addOnLoadEvent(mizMouseScrollInit);
mizuyari.addOnLoadEvent(futtenBlogContentWidthMonInit);