// Copyright (c) 2004-2007 koikikukan All Rights Reserved.
// http://yujiro.dyndns.com/blog/koikikukan/
// License is granted if and only if this entire
// copyright notice is included. By Yujiro ARAKI.

// Ver1.00 initial version.
// Ver2.00 add the state maintenance function by cookie.
// Ver3.00 improve cookie processing.
// Ver3.01 corresponds to Mac+IE.
// Ver4.00 2005.03.31 add link display by block.
// Ver5.00 2005.08.22 add Ajax library.
// Ver5.01 2005.08.27 add flag of Ajax selection for subcategory.
// Ver6.00 2006.07.10 add archives.
// Ver6.01 2006.08.22 corresponds to image.
// Ver6.02 2006.11.26 fix bug(corresponds to image).
// Ver6.03 2007.01.30 add option to apply the anchor to year and improvement of performance.

function deleteValue(name, nameEQ) {
    var ca = document.cookie.split(';');
    var newData = new Array();

    // Repeat by cookie
    for(var i = 0, len = ca.length; i < len; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1,c.length);
        }
        if (c.indexOf(nameEQ) == 0) {

            // Delete the corresponding name.
            var data = c.substring(nameEQ.length,c.length);
            var list = data.split('|');
            for(var x = 0; x < list.length; x++) {
                if (list[x] != name) {

                    // corresponds to Mac+IE
                    newData[newData.length] = list[x];
                }
            }
            return newData.join('|');
        }
    }

    // Return empty when cookie does not exist.
    return '';
}

function hasName(name, nameEQ) {
    var ca = document.cookie.split(';');
    for(var i = 0, len = ca.length; i < len; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1,c.length);
        }
        if (c.indexOf(nameEQ) == 0) {
            var data = c.substring(nameEQ.length,c.length);
            var list = data.split('|');
            for(var x = 0, len2 = list.length; x < len2; x++) {
                if (list[x] == name) {
                    return true;
                }
            }
            return false;
        }
    }
}

function createCookieByValue(name, onoff, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    } else {
        expires = "";
    }

    // Once delete a name from cookie.
    var newOnData = deleteValue(name, 'sidebarMenuOn=');
    var newOffData = deleteValue(name, 'sidebarMenuOff=');

    // Set up a name as new data.
    if (onoff == 'on') {
        if (newOnData != '') {
            newOnData += '|' + name;
        } else {
            newOnData = name;
        }
    } else {
        if (newOffData != '') {
            newOffData += '|' + name;
        } else {
            newOffData = name;
        }
    }

    // Save cookie.
    document.cookie = "sidebarMenuOn=" + newOnData + expires + "; path=/";
    document.cookie = "sidebarMenuOff=" + newOffData + expires + "; path=/";
}

function readCookieByValue(name) {

    // Search a menu.
    // Return empty if there is nothing to both.
    if (hasName(name, 'sidebarMenuOn=')) {
        return 'on';
    }
    if (hasName(name, 'sidebarMenuOff=')) {
        return 'off';
    }
    return null;
}

// ･�･ｹ･ﾈｿ�ｼ霹ﾀ
function getListCount(objLists, viewNum, idName, linkNumber, trackbackNumber, rightMarkForListNumber, subCategoryCount, leftMarkForListNumber, countTag, offsetValue) {

    var objItems;
    var href;
    var commentCounter = 0;

    // ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼ･�･ｹ･ﾈ
    if (subCategoryCount && (idName.indexOf('subcategories') == 0)) {
        objItems = objLists.getElementsByTagName('li');

    // ｻﾘﾄ熙ｵ､�､ｿ･ｿ･ｰ､�ｻﾈﾍﾑ
    } else if (countTag == 'li') {
        objItems = objLists.getElementsByTagName(countTag);

    // ､ｽ､ﾎﾂｾ(a･ｿ･ｰ)
    } else {
        objItems = objLists.getElementsByTagName('a');
    }

    // Recent Comments
    if (idName == 'comment') {
        for (i = 0, len = objItems.length; i < len; i++) { // Repeat a tag.
            href = objItems[i].getAttribute("href");
            if(href.indexOf('#') == -1){ // Count if '#' exists in a href attribute.
                commentCounter++;
            }
        }
    }

    // Trackback
    var counter;
    if (idName == 'trackback') {
        commentCounter = objItems.length / trackbackNumber;
    }

    // Subtract the unnecessary number of links.
    if (idName.indexOf('link') == 0) {
        var linkName;
        for (j = 0; j < linkNumber; j++) {
            linkName = 'link' + (j + 1);
            if (idName == linkName) {
                counter = objItems.length - offsetValue[j];
            }
        }
    } else {

        // Subtract the value of a counter from 'Recent Comments'
        counter = objItems.length - commentCounter;
    }

    // decoration counter
    if (leftMarkForListNumber) {
        counter = leftMarkForListNumber + counter;
    }
    if (rightMarkForListNumber) {
        counter = counter + rightMarkForListNumber;
    }

    return counter;
}

// ･�･ｹ･ﾈｿ�ﾀﾟﾄ�
function setListNumber(buffer, listCount, menuTitle, listNumberPosition, tlspace) {

    // ･�･ｹ･ﾈｿ�､�ﾁｰ､ﾋﾉｽｼｨ
    if (listNumberPosition) {
        buffer[buffer.length] = listCount;
        if (tlspace) {
            buffer[buffer.length] = tlspace;
        }
        buffer[buffer.length] = menuTitle;

    // ･�･ｹ･ﾈｿ�､�ｸ螟ﾋﾉｽｼｨ
    } else {
        buffer[buffer.length] = menuTitle;
        if (tlspace) {
            buffer[buffer.length] = tlspace;
        }
        buffer[buffer.length] = listCount;
    }
}

// ･皈ﾋ･蝪ｼ･ｿ･､･ﾈ･�+･�･ｹ･ﾈｿ�ﾀﾟﾄ�(blockﾍﾑ)
function setMenuTitleForBlock(viewNum, buffer, listCount, menuTitle, listNumberPosition, tlspace) {

    // ･�･ｹ･ﾈｿ�ﾉｽｼｨ
    if (viewNum) {
        setListNumber(buffer, listCount, menuTitle, listNumberPosition, tlspace);

    // ･�･ｹ･ﾈｿ�ﾈ�ﾉｽｼｨ
    } else {
        buffer[buffer.length] = menuTitle;
    }
}

// ･皈ﾋ･蝪ｼ･ｿ･､･ﾈ･�+･�･ｹ･ﾈｿ�ﾀﾟﾄ�
function setMenuTitle(viewNum, buffer, listCount, menuTitle, listNumberPosition, tlspace) {

    // ･�･ｹ･ﾈｿ�ﾉｽｼｨ
    if (viewNum) {

        // ･�･ｹ･ﾈｿ�､�ﾁｰ､ﾋﾉｽｼｨ
        if (listNumberPosition) {
            buffer[buffer.length] = listCount;
            if (tlspace) {
                buffer[buffer.length] = tlspace;
            }
        }

        buffer[buffer.length] = menuTitle;

        // ･�･ｹ･ﾈｿ�､�ｸ螟ﾋﾉｽｼｨ
        if (!listNumberPosition) {
            if (tlspace) {
                buffer[buffer.length] = tlspace;
            }
            buffer[buffer.length] = listCount;
        }

    // ･�･ｹ･ﾈｿ�ﾈ�ﾉｽｼｨ
    } else {
        buffer[buffer.length] = menuTitle;
    }
}

// ﾀﾞ､熙ｿ､ｿ､ﾟｼﾂｹﾔ(･ｿ･ｰｻﾘﾄ�)
function FoldNavigationByTagName(idName, initMode, viewNum, countTag, sp) {

//--------------------------------------------------------
// Configuration
//--------------------------------------------------------

//--------------------------------------------------------
// ･皈ﾋ･蝪ｼ･ｿ･､･ﾈ･�ﾍﾑﾀﾟﾄ�･ﾇ｡ｼ･ｿ
//--------------------------------------------------------

// ･�･�･ｯﾊ�ｼｰ
// ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､ﾋ･�･�･ｯﾉﾕﾍｿ｡ｧ'unblock'
// ･皈ﾋ･蝪ｼ･ｿ･､･ﾈ･�ﾏﾈﾁｴﾂﾎ､ﾋ･�･�･ｯﾉﾕﾍｿ 'block'
var linkType = 'block';

//-----------------------
// ﾀﾞ､熙ｿ､ｿ､ﾟ･ｹ･ﾔ｡ｼ･ﾉ
//-----------------------

// ﾁｴ､ﾆ､ﾎ･皈ﾋ･蝪ｼ､ﾎ･ｹ･ﾔ｡ｼ･ﾉ
// ﾄﾌｾ�｡ｧ'normal'
// ﾃﾙ､､｡ｧ'slow'
var speed = 'normal';

// ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼ､ﾎ･ｹ･ﾔ｡ｼ･ﾉ(speed ､ｬ slow ､ﾎｾ�ｹ遉ﾎ､ﾟﾍｭｸ�)
// ﾄﾌｾ�｡ｧ'normal'
// ﾃﾙ､､｡ｧ'slow'
var subcategorySpeed = 'normal';

//-----------------------
// ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯｴﾘﾏ｢
//-----------------------

// ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯﾉｽｼｨ(･皈ﾋ･蝪ｼ･ｿ･､･ﾈ･�ﾏﾈﾁｴﾂﾎ､�･�･�･ｯ､ﾋ､ｹ､�ｾ�ｹ遉ﾎ､ﾟﾍｭｸ�)
// ﾉｽｼｨ､ｹ､�｡ｧtrue
// ﾉｽｼｨ､ｷ､ﾊ､､｡ｧfalse
var displayMark = false;

// ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ
// ｾ蝪ｧﾊﾄ､ｸ､ﾆ､､､�ｾ�ﾂﾖ､ﾇﾉｽｼｨ､ｵ､�､�･ﾞ｡ｼ･ｯ
// ｲｼ｡ｧｳｫ､､､ﾆ､､､�ｾ�ﾂﾖ､ﾇﾉｽｼｨ､ｵ､�､�･ﾞ｡ｼ･ｯ
// ｲ霖�､�ﾀﾟﾄ熙ｹ､�ｾ�ｹ遉ﾏｱｦﾊﾕ､� '<img src="[ｲ霖�､ﾎURL]" />'; ､ﾈｽ�､､､ﾆ､ｯ､ﾀ､ｵ､､
var openMarkForSideBarMenu  = '｢ｦ';
var closeMarkForSideBarMenu = '｢､';

// ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯｰﾌﾃﾖ(ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ﾉｽｼｨ､ｹ､�ｾ�ｹ遉ﾎ､ﾟﾍｭｸ�)
// ･ｿ･､･ﾈ･�ﾁｰ､ﾋﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ﾇﾛﾃﾖ｡ｧtrue
// ･ｿ･､･ﾈ･�ｸ螟ﾋﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ﾇﾛﾃﾖ｡ｧfalse
// ｺｸﾃｼ､ﾞ､ｿ､ﾏｱｦﾃｼ､ﾋﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ﾇﾛﾃﾖ｡ｧtrue
var preMarkForSideBarMenu = true;

// ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯｲ霖�(･�･�･ｯﾊ�ｼｰ､ｬ 'block' ､ﾎｾ�ｹ遉ﾎ､ﾟｻﾈ､�､�､ﾞ､ｹ)
// ｲ霖�､�ｻﾈﾍﾑ､ｹ､�｡ｧtrue
// ｲ霖�､�ｻﾈﾍﾑ､ｷ､ﾊ､､｡ｧfalse
// var image = false;

//---------------
// ･�･ｹ･ﾈｿ�ｴﾘﾏ｢
//---------------

// ･�･ｹ･ﾈｿ�ﾉｽｼｨｰﾌﾃﾖ
// ･ｿ･､･ﾈ･�ﾁｰ､ﾋ･�･ｹ･ﾈｿ�､�ﾉｽｼｨ｡ｧtrue
// ･ｿ･､･ﾈ･�ｸ螟ﾋ･�･ｹ･ﾈｿ�､�ﾉｽｼｨ｡ｧfalse
var listNumberPosition = true;

// ･�･ｹ･ﾈｿ�ﾉｽｼｨ､�ｳ遉�･ﾞ｡ｼ･ｯ
var leftMarkForListNumber = '';
var rightMarkForListNumber = '';

// ･�･�･ｯｿ�ｸｺｻｻ､ｬﾉｬﾍﾗ､ﾊ･皈ﾋ･蝪ｼｿ�
// ･�･�･ｯｿ�､�ｸｺｻｻ､ｹ､�ﾉｬﾍﾗ､ｬ､｢､�･皈ﾋ･蝪ｼ､ﾏ､ｳ､ｳ､ﾋｴﾞ､皃ﾆ､ｯ､ﾀ､ｵ､､
// ﾃ�:ﾂﾐｾﾝ､ﾈ､ﾊ､�idﾂｰﾀｭﾌｾ､ｬ｡ﾖlinkx(x､ﾏｿ�ｻ�)｡ﾗ､ﾇ､｢､�､ｳ､ﾈ
// ｸｺｻｻ､ｹ､�･皈ﾋ･蝪ｼ､ｬ､ﾊ､､ｾ�ｹ�:0
var linkNumber = 2;

// ｸｺｻｻ､ｹ､�ｳﾆ･皈ﾋ･蝪ｼ､ﾎ･ｪ･ﾕ･ｻ･ﾃ･ﾈﾃﾍ
// ﾃ�:ﾂﾐｾﾝ､ﾈ､ﾊ､�idﾂｰﾀｭﾌｾ､ｬ｡ﾖlinkx(x､ﾏｿ�ｻ�)｡ﾗ､ﾇ､｢､�､ｳ､ﾈ
var offsetValue = new Array(linkNumber);
offsetValue[0] = 3;
offsetValue[1] = 2;

// ･ﾈ･鬣ﾃ･ｯ･ﾐ･ﾃ･ｯｿ�､ﾎｽ�ｿ�
// ﾃ�1:ﾂﾐｾﾝ､ﾈ､ﾊ､�idﾂｰﾀｭﾌｾ､ｬ｡ﾖtrackback｡ﾗ､ﾇ､｢､�､ｳ､ﾈ
// ﾃ�2:ｽ�ｻｻ､ｬﾉﾔﾍﾗ､ﾊｾ�ｹ遉ﾏ'1'､�ﾀﾟﾄ熙ｹ､�､ｳ､ﾈ
var trackbackNumber = 2;

// ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼ･�･ｹ･ﾈｿ�ｷﾗｿ�ﾊ�ﾋ｡
// li･ｿ･ｰ､ﾇｷﾗｿ�｡ｧtrue
// a･ｿ･ｰ､ﾇｷﾗｿ�｡ｧfalse
// ﾃ�:ﾂｾ､ﾎ･ｿ･ｰ､�ｻﾘﾄ熙ｹ､�ｾ�ｹ遉ﾏfalse､�ﾀﾟﾄ熙ｷ､ﾆ､ｯ､ﾀ､ｵ､､
var subCategoryCount = true;

//-------------------
// ﾉｽｼｨｰﾌﾃﾖﾊ菎ｵｴﾘﾏ｢
//-------------------

// ･ｿ･､･ﾈ･�ﾉｽｼｨｰﾌﾃﾖﾊ菎ｵ･ﾕ･鬣ｰ(ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ｺｸﾃｼ､ﾞ､ｿ､ﾏｱｦﾃｼ､ﾋﾇﾛﾃﾖ､ｹ､�ｾ�ｹ�)
// ﾊ菎ｵ､ｹ､�｡ｧtrue
// ﾊ菎ｵ､ｷ､ﾊ､､｡ｧfalse
var modificationFlag = true;

// ･ｿ･､･ﾈ･�ﾉｽｼｨｰﾌﾃﾖﾊ菎ｵﾊ�ｸ�(ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ｺｸﾃｼ､ﾞ､ｿ､ﾏｱｦﾃｼ､ﾋﾇﾛﾃﾖ､ｹ､�ｾ�ｹ�)
// ｡ｦ･ｿ･､･ﾈ･�､�ｱｦﾊ�ｸ�､ﾋﾊ菎ｵ｡ｧtrue
// ｡ｦ･ｿ･､･ﾈ･�､�ｺｸﾊ�ｸ�､ﾋﾊ菎ｵ｡ｧfalse
var centeringPosition = false;

// ･ｿ･､･ﾈ･�ﾉｽｼｨｰﾌﾃﾖﾊ菎ｵ･ｪ･ﾕ･ｻ･ﾃ･ﾈ(ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ｺｸﾃｼ､ﾞ､ｿ､ﾏｱｦﾃｼ､ﾋﾇﾛﾃﾖ､ｷ､ｿｾ�ｹ�)
var offsetForCentering = 0;

// ･ｿ･､･ﾈ･�､ﾈﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､ﾎ･ｹ･ﾚ｡ｼ･ｹ(ｾ蠏ｭｰﾊｳｰ､ﾇﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ﾉｽｼｨ､�､ｹ､�ｾ�ｹ遉ﾋﾍｭｸ�)
// ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ｺｸﾃｼ､ﾞ､ｿ､ﾏｱｦﾃｼ､ﾋﾇﾛﾃﾖ､ｹ､�ｾ�ｹ�'0'､�ﾀﾟﾄ�
var offsetForTitleAndMark = 1;

// ･ｿ･､･ﾈ･�､ﾈ･�･ｹ･ﾈｿ�､ﾎ･ｹ･ﾚ｡ｼ･ｹ(･�･ｹ･ﾈｿ�､�ﾉｽｼｨ､ｹ､�･皈ﾋ･蝪ｼ､ﾋﾍｭｸ�)
var offsetForTitleAndLinkNumber = 1;

//--------------------------------------------------------
// ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼ･�･ｹ･ﾈﾍﾑﾀﾟﾄ�･ﾇ｡ｼ･ｿ
//--------------------------------------------------------

// ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼ･ﾕ･鬣ｰ
// ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼ､ﾎﾀﾞ､熙ｿ､ｿ､ﾟ､�ﾍｭｸ�､ﾋ､ｹ､�(ﾊﾌﾅﾓ･ﾆ･�･ﾗ･�｡ｼ･ﾈﾀﾟﾄ熙ｬﾉｬﾍﾗ)
// ﾍｭｸ�､ﾋ､ｹ､�｡ｧtrue
// ﾌｵｸ�､ﾋ､ｹ､�｡ｧfalse
var subCategory = true;

// ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼﾍﾑﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ
// ｾ蝪ｧﾊﾄ､ｸ､ﾆ､､､�ｾ�ﾂﾖ､ﾇﾉｽｼｨ､ｵ､�､�･ﾞ｡ｼ･ｯ｡｡｢ｧ
// ｲｼ｡ｧｳｫ､､､ﾆ､､､�ｾ�ﾂﾖ､ﾇﾉｽｼｨ､ｵ､�､�･ﾞ｡ｼ･ｯ｡｡｢･
var openMarkForSubCategories  = '<img src="http://marinetime.jp/blog/images_pub/close.png" style="border:none;vertical-align:middle;padding-left:2px;" />';
var closeMarkForSubCategories = '<img src="http://marinetime.jp/blog/images_pub/open.png" style="border:none;vertical-align:middle;;padding-left:2px;" />';

// ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼﾍﾑﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯﾁﾞﾆ�ｰﾌﾃﾖ
// ･ｫ･ﾆ･ｴ･遙ｼﾁｰ､ﾋﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ﾇﾛﾃﾖ｡ｧtrue
// ･ｫ･ﾆ･ｴ･遙ｼｸ螟ﾋﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ﾇﾛﾃﾖ｡ｧfalse
var preMarkForSubCategory = true;

// ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼ､ﾎ･ｿ･､･ﾈ･�､ﾈ･ﾞ｡ｼ･ｯ､ﾎ･ｹ･ﾚ｡ｼ･ｹ
var offsetForTitleAndMarkOfSubcategory = 1;

//--------------------------------------------------------
// ･｢｡ｼ･ｫ･､･ﾖ･�･ｹ･ﾈﾍﾑﾀﾟﾄ�･ﾇ｡ｼ･ｿ
//--------------------------------------------------------

// ･｢｡ｼ･ｫ･､･ﾖ･�･ｹ･ﾈ･ﾕ･鬣ｰ
// ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼ､ﾎﾀﾞ､熙ｿ､ｿ､ﾟ､�ﾍｭｸ�､ﾋ､ｹ､�(ﾊﾌﾅﾓ･ﾆ･�･ﾗ･�｡ｼ･ﾈﾀﾟﾄ熙ｬﾉｬﾍﾗ)
// ﾍｭｸ�､ﾋ､ｹ､�｡ｧtrue
// ﾌｵｸ�､ﾋ､ｹ､�｡ｧfalse
var archives = true;

// ･｢｡ｼ･ｫ･､･ﾖ･�･ｹ･ﾈﾍﾑﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ
// ｾ蝪ｧﾊﾄ､ｸ､ﾆ､､､�ｾ�ﾂﾖ､ﾇﾉｽｼｨ､ｵ､�､�･ﾞ｡ｼ･ｯ
// ｲｼ｡ｧｳｫ､､､ﾆ､､､�ｾ�ﾂﾖ､ﾇﾉｽｼｨ､ｵ､�､�･ﾞ｡ｼ･ｯ
var openMarkForArchives  = '｢ｧ';
var closeMarkForArchives = '｢･';

// ･｢｡ｼ･ｫ･､･ﾖ･�･ｹ･ﾈﾍﾑﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯﾁﾞﾆ�ｰﾌﾃﾖ
// ･ｫ･ﾆ･ｴ･遙ｼﾁｰ､ﾋﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ﾇﾛﾃﾖ｡ｧtrue
// ･ｫ･ﾆ･ｴ･遙ｼｸ螟ﾋﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ﾇﾛﾃﾖ｡ｧfalse
var preMarkForArchives = false;

// ･｢｡ｼ･ｫ･､･ﾖ･�･ｹ･ﾈ､ﾎ･ｿ･､･ﾈ･�､ﾈ･ﾞ｡ｼ･ｯ､ﾎ･ｹ･ﾚ｡ｼ･ｹ
var offsetForTitleAndMarkOfArchives = 1;

// ･｢｡ｼ･ｫ･､･ﾖ･�･ｹ･ﾈﾍﾑﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯｻﾈﾍﾑ
// ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､�ｻﾈﾍﾑ､ｷ､ﾊ､､ｾ�ｹ遉ﾏﾇｯﾉｽｼｨ､ﾋ･�･�･ｯ､�ﾀﾟﾄ�
// ｻﾈﾍﾑ､ｹ､�｡ｧtrue
// ｻﾈﾍﾑ､ｷ､ﾊ､､｡ｧfalse
var displayArchivesMark = false;

//--------------------------------------------------------
// ｾ�ﾂﾖﾊﾝｻ�ﾍﾑﾀﾟﾄ�･ﾇ｡ｼ･ｿ
//--------------------------------------------------------

// ｾ�ﾂﾖﾊﾝｻ�･ﾕ･鬣ｰ
// ﾍｭｸ�､ﾋ､ｹ､�｡ｧtrue
// ﾌｵｸ�､ﾋ､ｹ､�｡ｧfalse
var holdState = true;

//--------------------------------------------------------

    var openMark;  // The mark for opening, when having closed
    var closeMark; // The mark for closing, when open

    var idTitle = Array(idName,'name').join('');
    var idList = Array(idName,'list').join('');
    var objTitle = this.document.getElementById(idTitle);
    var objLists = this.document.getElementById(idList);

    if (!objTitle || !objLists) return;

    // ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ
    openMark = openMarkForSideBarMenu;
    closeMark = closeMarkForSideBarMenu;
    if (subCategory) {
        if (idName.indexOf('subcategories') == 0) {
            openMark = openMarkForSubCategories;
            closeMark = closeMarkForSubCategories;
        }
    }
    if (archives) {
        if (idName.indexOf('archive') == 0) {
            openMark = openMarkForArchives;
            closeMark = closeMarkForArchives;
        }
    }

    var dispMode = objLists.style.display;
    if (!dispMode) {

        // Hold a fold-up state to cookie.
        if (holdState) {
            var cookie_initMode = readCookieByValue(idName);
            if(cookie_initMode){
                initMode = cookie_initMode;
            }
            createCookieByValue(idName, initMode, 365);
        }

        // ｳｫｻﾏ･ｿ･ｰ
        var buffer = new Array();
        var tmpText;

        // ﾀﾞ､熙ｿ､ｿ､ﾟ･ｹ･ﾔ｡ｼ･ﾉ､ﾋ､隍ﾃ､ﾆｵｯﾆｰｴﾘｿ�､�ﾊﾑｹｹ
        if(sp != 'dummy'){
            speed = sp;
        }
        if(speed == 'slow') {
            tmpText = Array('FoldNavigationSlowly(',"'",idName,"','chng','');return(false);").join('');
        } else {
            tmpText = Array('FoldNavigation(',"'",idName,"','chng','');return(false);").join('');
        }
        var startTag = Array('<a class="foldmark" href="#" onclick="',tmpText,'" onkeypress="',tmpText,'">').join('');

        // ｽｪﾎｻ･ｿ･ｰ
        var endTag = '</a>';

        // ﾉｽｼｨ､ｹ､�ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ
        var foldMark = (initMode == 'off') ? openMark : closeMark;

        // ･皈ﾋ･蝪ｼ･ｿ･､･ﾈ･�
        var menuTitle = objTitle.innerHTML;

        // ･ﾑ･ﾇ･｣･�･ｰ
        var padding = '';
        for (k = 0; k < offsetForCentering; k++) {
            padding += '&nbsp;';
        }

        // ･ｿ･､･ﾈ･�､ﾈ･�･�･ｯｿ�､ﾎ･ｹ･ﾚ｡ｼ･ｹ
        var tlspace = '';
        for (l = 0; l < offsetForTitleAndLinkNumber; l++) {
            tlspace += '&nbsp;';
        }

        // ･ｿ･､･ﾈ･�､ﾈ･ﾞ｡ｼ･ｯ､ﾎ･ｹ･ﾚ｡ｼ･ｹ
        var tmspace = '';
        for (l = 0; l < offsetForTitleAndMark; l++) {
            tmspace += '&nbsp;';
        }

        // ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼﾍﾑ･ｿ･､･ﾈ･�､ﾈ･ﾞ｡ｼ･ｯ､ﾎ･ｹ･ﾚ｡ｼ･ｹ
        var scspace = '';
        for (l = 0; l < offsetForTitleAndMarkOfSubcategory; l++) {
            scspace += '&nbsp;';
        }

        // ･｢｡ｼ･ｫ･､･ﾖ･�･ｹ･ﾈﾍﾑ･ｿ･､･ﾈ･�､ﾈ･ﾞ｡ｼ･ｯ､ﾎ･ｹ･ﾚ｡ｼ･ｹ
        var alspace = '';
        for (l = 0; l < offsetForTitleAndMarkOfArchives; l++) {
            alspace += '&nbsp;';
        }

        // ･�･ｹ･ﾈｿ�
        var listCount;
        if (viewNum) {
            listCount = getListCount(objLists, viewNum, idName, linkNumber, trackbackNumber, rightMarkForListNumber, subCategoryCount, leftMarkForListNumber, countTag, offsetValue);
        }

        // ﾀﾞ､熙ｿ､ｿ､ﾟﾉｽｼｨ､ﾄ､ｭ･ｿ･､･ﾈ･�ﾀｸﾀｮ

        // ･ｵ･ﾖ･ｫ･ﾆ･ｴ･遙ｼ･�･ｹ･ﾈ
        if (subCategory && (idName.indexOf('subcategories') == 0)) {
            if (preMarkForSubCategory) {
                buffer[buffer.length] = startTag;
                buffer[buffer.length] = foldMark;
                buffer[buffer.length] = endTag;
                if (scspace) {
                    buffer[buffer.length] = scspace;
                }
                buffer[buffer.length] = menuTitle;
            } else {
                buffer[buffer.length] = menuTitle;
                if (scspace) {
                    buffer[buffer.length] = scspace;
                }
                buffer[buffer.length] = startTag;
                buffer[buffer.length] = foldMark;
                buffer[buffer.length] = endTag;
            }

        // ･｢｡ｼ･ｫ･､･ﾖ･�･ｹ･ﾈ
        } else if (archives && (idName.indexOf('archive') == 0)) {
            if (displayArchivesMark) {
                if (preMarkForArchives) {
                    buffer[buffer.length] = startTag;
                    buffer[buffer.length] = foldMark;
                    buffer[buffer.length] = endTag;
                    if (alspace) {
                        buffer[buffer.length] = alspace;
                    }
                    buffer[buffer.length] = menuTitle;
                } else {
                    buffer[buffer.length] = menuTitle;
                    if (alspace) {
                        buffer[buffer.length] = alspace;
                    }
                    buffer[buffer.length] = startTag;
                    buffer[buffer.length] = foldMark;
                    buffer[buffer.length] = endTag;
                }
            } else {
                buffer[buffer.length] = startTag;
                buffer[buffer.length] = menuTitle;
                buffer[buffer.length] = endTag;
            }

        // ･皈ﾋ･蝪ｼ･ｿ･､･ﾈ･�
        } else {

            // ﾀｸﾀｮ･ﾑ･ｿ｡ｼ･�ｷ霪�(bufferﾀｸﾀｮ)
            if (linkType == 'unblock') {

                // ･ﾞ｡ｼ･ｯﾁｰ
                if (preMarkForSideBarMenu) {

                    // ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯﾀﾟﾄ�
                    buffer[buffer.length] = startTag;
                    buffer[buffer.length] = foldMark;
                    buffer[buffer.length] = endTag;

                    // ﾉｽｼｨｰﾌﾃﾖﾊ菎ｵ
                    if(modificationFlag && centeringPosition) {
                        buffer[buffer.length] = padding;
                    }

                    // ･ｿ･､･ﾈ･�､ﾈ･ﾞ｡ｼ･ｯ､ﾎ･ｹ･ﾚ｡ｼ･ｹ
                    if(offsetForTitleAndMark) {
                        buffer[buffer.length] = tmspace;
                    }

                    // ･ｿ･､･ﾈ･�ﾀﾟﾄ�
                    setMenuTitle(viewNum, buffer, listCount, menuTitle, listNumberPosition, tlspace);

                    // ﾉｽｼｨｰﾌﾃﾖﾊ菎ｵ
                    if(modificationFlag && !centeringPosition) {
                        buffer[buffer.length] = padding;
                    }

                // ･ﾞ｡ｼ･ｯｸ�
                } else {

                    // ﾉｽｼｨｰﾌﾃﾖﾊ菎ｵ
                    if(modificationFlag && centeringPosition) {
                        buffer[buffer.length] = padding;
                    }

                    // ･ｿ･､･ﾈ･�ﾀﾟﾄ�
                    setMenuTitle(viewNum, buffer, listCount, menuTitle, listNumberPosition, tlspace);

                    // ･ｿ･､･ﾈ･�､ﾈ･ﾞ｡ｼ･ｯ､ﾎ･ｹ･ﾚ｡ｼ･ｹ
                    if(offsetForTitleAndMark) {
                        buffer[buffer.length] = tmspace;
                    }

                    // ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯﾀﾟﾄ�
                    buffer[buffer.length] = startTag;
                    buffer[buffer.length] = foldMark;
                    buffer[buffer.length] = endTag;

                    // ﾉｽｼｨｰﾌﾃﾖﾊ菎ｵ
                    if(modificationFlag && !centeringPosition) {
                        buffer[buffer.length] = padding;
                    }
                }

            // ･ﾖ･�･ﾃ･ｯﾉｽｼｨ
            } else {
                buffer[buffer.length] = startTag;

                // ･ﾞ｡ｼ･ｯﾉｽｼｨ
                if (displayMark) {

                    // ･ﾞ｡ｼ･ｯﾁｰ
                    if (preMarkForSideBarMenu) {
                        buffer[buffer.length] = foldMark;

                        // ･ｿ･､･ﾈ･�､ﾈ･ﾞ｡ｼ･ｯ､ﾎ･ｹ･ﾚ｡ｼ･ｹ
                        if(offsetForTitleAndMark) {
                            buffer[buffer.length] = tmspace;
                        }

                        setMenuTitleForBlock(viewNum, buffer, listCount, menuTitle, listNumberPosition, tlspace);

                    // ･ﾞ｡ｼ･ｯｸ�
                    } else {
                        setMenuTitleForBlock(viewNum, buffer, listCount, menuTitle, listNumberPosition, tlspace);

                        // ･ｿ･､･ﾈ･�､ﾈ･ﾞ｡ｼ･ｯ､ﾎ･ｹ･ﾚ｡ｼ･ｹ
                        if(offsetForTitleAndMark) {
                            buffer[buffer.length] = tmspace;
                        }
                        buffer[buffer.length] = foldMark;
                    }

                // ･ﾞ｡ｼ･ｯﾈ�ﾉｽｼｨ
                } else {
                    setMenuTitleForBlock(viewNum, buffer, listCount, menuTitle, listNumberPosition, tlspace);
                }
                buffer[buffer.length] = endTag;
            }
        }

        // ﾀｸﾀｮ･ﾇ｡ｼ･ｿ､�･ｪ･ﾖ･ｸ･ｧ･ｯ･ﾈ､ﾋﾀﾟﾄ�
        objTitle.innerHTML = buffer.join('');

        // ･ｹ･ｿ･､･�ﾀﾟﾄ�
        objLists.style.display = (initMode == 'off') ? 'none' : 'block';

    } else if (initMode == 'chng') {

        // ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯﾃﾖｴｹ
        var objMarks = objTitle.getElementsByTagName('a');
        for (i = 0, len = objMarks.length; i < len; i++) {
            if (objMarks[i].className == 'foldmark') {

                if(linkType == 'block' && displayMark) {
                    var title = objMarks[i].innerHTML;

                    // ﾀﾞ､熙ｿ､ｿ､ﾟ･ﾞ｡ｼ･ｯ､ﾎｲ霖�ﾈｽﾄ�
                    var image = openMarkForSideBarMenu.search(/^</) != -1 ? true : false;
                    if (subCategory) {
                        if (idName.indexOf('subcategories') == 0) {
                            image = openMarkForSubCategories.search(/^</) != -1 ? true : false;
                        }
                    }
                    if (archives) {
                        if (idName.indexOf('archive') == 0) {
                            image = openMarkForArchives.search(/^</) != -1 ? true : false;
                        }
                    }
                    if(image){
                        if(dispMode == 'none'){
                            title = title.replace(/<.*>/, closeMark);
                        } else {
                            title = title.replace(/<.*>/, openMark);
                        }
                    } else {
                        if(dispMode == 'none'){
                           title = title.replace(openMark, closeMark);
                        } else {
                           title = title.replace(closeMark, openMark);
                        }
                    }
                    objMarks[i].innerHTML = title;
                } else if((linkType == 'unblock') || (subCategory && (idName.indexOf('subcategories') == 0)) || (archives && displayArchivesMark && (idName.indexOf('archive') == 0))) {
                    objMarks[i].innerHTML = (dispMode == 'none') ? closeMark : openMark;
                }
            }
        }

        // ﾀﾞ､熙ｿ､ｿ､ﾟ･ｹ･ﾔ｡ｼ･ﾉ
        if(sp != 'dummy'){
            speed = sp;
        }
        if(speed == 'slow' || (idName.indexOf('subcategories') == 0 && subcategorySpeed == 'slow')) {
            if(dispMode == 'none') {
                element = $(idList);
                options = {
                    afterFinish: function(effect) {
                        Element.undoClipping(effect.element);
                        Element.show(effect.element); // prototype.js ｽ､ﾀｵﾍﾗ
//                        element.style.display = 'block';
                    }
                };
                Effect.BlindDown(element, options);
            } else {
                element = $(idList);
                options = {
                    afterFinish: function(effect) {
                        Element.hide(effect.element);
                    }
                };
                Effect.BlindUp(element, options);
            }
        } else {

            // ･ｹ･ｿ･､･�ﾀﾟﾄ�
            objLists.style.display = (dispMode == 'none') ? 'block' : 'none';
        }

        // Hold a fold-up state to cookie, when a change occurs.
        if (holdState) {
            if (dispMode == 'none') {
                createCookieByValue(idName, 'on', 365);
            } else {
                createCookieByValue(idName, 'off', 365);
            }
        }
    }
}

// ﾀﾞ､熙ｿ､ｿ､ﾟｼﾂｹﾔ
function FoldNavigation(idName, initMode, viewNum) {
    FoldNavigationByTagName(idName, initMode, viewNum, 'dummy', 'dummy');
}

function FoldNavigationSlowly(idName, initMode, viewNum) {
    FoldNavigationByTagName(idName, initMode, viewNum, 'dummy', 'slow');
}

