/**
* DD_belatedPNG: Adds IE6 support: PNG images for CSS background-image and HTML <IMG/>.
* Author: Drew Diller
* Email: drew.diller@gmail.com
* URL: http://www.dillerdesign.com/experiment/DD_belatedPNG/
* Version: 0.0.8a
* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_belatedPNG/#license
*
* Example usage:
* DD_belatedPNG.fix('.png_bg'); // argument is a CSS selector
* DD_belatedPNG.fixPng( someNode ); // argument is an HTMLDomElement
**/

/*
PLEASE READ:
Absolutely everything in this script is SILLY.  I know this.  IE's rendering of certain pixels doesn't make sense, so neither does this code!
*/

var test_xxx = "abcdef";

var DD_belatedPNG;

//** Simple Controls Gallery- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com
//** Dec 7th, 08'- Script created (Requires jquery 1.2.x)
//** February 6th, 09'- Updated to v 1.3:
	//1) Adds Description Panel to optionally show a textual description for each slide
	//2) In Auto Play mode, you can now set the number of cycles before gallery stops.
	//3) Inside oninit() and onslide(), keyword "this" now references the current gallery instance


var simpleGallery_navpanel={
	panel: {height:'45px', opacity:0.5, paddingTop:'5px', fontStyle:'bold 11px Verdana'}, //customize nav panel container
	images: ['jQuery/simpleGallery/images/left.gif', 'jQuery/simpleGallery/images/play.gif', 'jQuery/simpleGallery/images/right.gif', 'jQuery/simpleGallery/images/pause.gif'], //nav panel images (in that order)
	imageSpacing: {offsetTop:[-4, 0, -4], spacing:10}, //top offset of left, play, and right images, PLUS spacing between the 3 images
	slideduration: 500 //duration of slide up animation to reveal panel
}

function simpleGallery(settingarg){
	this.setting=settingarg
	settingarg=null
	var setting=this.setting
//	setting.panelheight=(parseInt(setting.navpanelheight)>5)? parseInt(setting.navpanelheight) : parseInt(simpleGallery_navpanel.panel.height)
	setting.fadeduration=parseInt(setting.fadeduration)
	setting.curimage=(setting.persist)? simpleGallery.routines.getCookie("gallery-"+setting.wrapperid) : 0
	setting.curimage=setting.curimage || 0 //account for curimage being null if cookie is empty
	setting.ispaused=!setting.autoplay[0] //ispaused reflects current state of gallery, autoplay[0] indicates whether gallery is set to auto play
	setting.currentstep=0 //keep track of # of slides slideshow has gone through
	setting.totalsteps=setting.imagearray.length*setting.autoplay[2] //Total steps limit: # of images x # of user specified cycles
	setting.fglayer=0, setting.bglayer=1 //index of active and background layer (switches after each change of slide)
//	setting.oninit=setting.oninit || function(){}
//	setting.onslide=setting.onslide || function(){}
	var preloadimages=[], longestdesc=null //preload images
	setting.longestdesc="" //get longest description of all slides. If no desciptions defined, variable contains ""
	for (var i=0; i<setting.imagearray.length; i++){
		preloadimages[i]=new Image()
		preloadimages[i].src=setting.imagearray[i][0]
		if (setting.imagearray[i][3] && setting.imagearray[i][3].length>setting.longestdesc.length)
			setting.longestdesc=setting.imagearray[i][3]
	}
	var slideshow=this
	jQuery(document).ready(function($){
		var setting=slideshow.setting
		setting.$wrapperdiv=$('#'+setting.wrapperid).css({position:'relative', visibility:'visible', background:'#FFFFFF', overflow:'hidden', width:setting.dimensions[0], height:setting.dimensions[1]}).empty() //main gallery DIV
		if (setting.$wrapperdiv.length==0){ //if no wrapper DIV found
			alert("Error: DIV with ID \""+setting.wrapperid+"\" not found on page.")
			return
		}
		setting.$gallerylayers=$('<div class="gallerylayer"></div><div class="gallerylayer"></div>') //two stacked DIVs to display the actual slide 
			.css({position:'absolute', left:0, top:0})
			.appendTo(setting.$wrapperdiv)
		setting.gallerylayers=setting.$gallerylayers.get() //cache stacked DIVs as DOM objects
//		setting.navbuttons=simpleGallery.routines.addnavpanel(setting) //get 4 nav buttons DIVs as DOM objects
//		if (setting.longestdesc!="") //if at least one slide contains a description (feature is enabled)
//			setting.descdiv=simpleGallery.routines.adddescpanel(setting)
/*		$(setting.navbuttons).filter('img.navimages').css({opacity:0.8})
			.bind('mouseover mouseout', function(e){
				$(this).css({opacity:(e.type=="mouseover")? 1 : 0.8})
			})
			.bind('click', function(e){
				var keyword=e.target.title.toLowerCase()
				slideshow.navigate(keyword) //assign behavior to nav images
			})
*/
//		setting.$wrapperdiv.bind('mouseenter', function(){slideshow.showhidenavpanel('show')})
//		setting.$wrapperdiv.bind('mouseleave', function(){slideshow.showhidenavpanel('hide')})
		slideshow.showslide(setting.curimage) //show initial slide
//		setting.oninit.call(slideshow) //trigger oninit() event
		$(window).bind('unload', function(){ //clean up and persist
//			$(slideshow.setting.navbuttons).unbind()
			if (slideshow.setting.persist) //remember last shown image's index
				simpleGallery.routines.setCookie("gallery-"+setting.wrapperid, setting.curimage)
			jQuery.each(slideshow.setting, function(k){
				if (slideshow.setting[k] instanceof Array){
					for (var i=0; i<slideshow.setting[k].length; i++){
						if (slideshow.setting[k][i].tagName=="DIV") //catches 2 gallerylayer divs, gallerystatus div
							slideshow.setting[k][i].innerHTML=null
						slideshow.setting[k][i]=null
					}
				}
				if (slideshow.setting[k].innerHTML) //catch gallerydesctext div
					slideshow.setting[k].innerHTML=null
				slideshow.setting[k]=null
			})
			slideshow=slideshow.setting=null
		})
	})
}

simpleGallery.prototype={

	navigate:function(keyword){
		clearTimeout(this.setting.playtimer)
		this.setting.totalsteps=100000 //if any of the nav buttons are clicked on, set totalsteps limit to an "unreachable" number 
		if (!isNaN(parseInt(keyword))){
			this.showslide(parseInt(keyword))
		}
		else if (/(prev)|(next)/i.test(keyword)){
			this.showslide(keyword.toLowerCase())
		}
		else{ //if play|pause button
			var slideshow=this
//			var $playbutton=$(this.setting.navbuttons).eq(1)
			if (!this.setting.ispaused){ //if pause Gallery
				this.setting.autoplay[0]=false
//				$playbutton.attr({title:'Play', src:simpleGallery_navpanel.images[1]})
			}
			else if (this.setting.ispaused){ //if play Gallery
				this.setting.autoplay[0]=true
				this.setting.playtimer=setTimeout(function(){slideshow.showslide('next')}, this.setting.autoplay[1])
//				$playbutton.attr({title:'Pause', src:simpleGallery_navpanel.images[3]})
			}
			slideshow.setting.ispaused=!slideshow.setting.ispaused
		}
	},

	showslide:function(keyword){
		var slideshow=this
		var setting=slideshow.setting
		var totalimages=setting.imagearray.length
		var imgindex=(keyword=="next")? (setting.curimage<totalimages-1? setting.curimage+1 : 0)
			: (keyword=="prev")? (setting.curimage>0? setting.curimage-1 : totalimages-1)
			: Math.min(keyword, totalimages-1)
		setting.gallerylayers[setting.bglayer].innerHTML=simpleGallery.routines.getSlideHTML(setting.imagearray[imgindex])
		setting.$gallerylayers.eq(setting.bglayer).css({zIndex:100, opacity:0}) //background layer becomes foreground
			.stop().css({opacity:0}).animate({opacity:1}, setting.fadeduration, function(){ //Callback function after fade animation is complete:
				clearTimeout(setting.playtimer)
				setting.gallerylayers[setting.bglayer].innerHTML=null  //empty bglayer (previously fglayer before setting.fglayer=setting.bglayer was set below)
				try{
					setting.onslide.call(slideshow, setting.gallerylayers[setting.fglayer], setting.curimage)
				}catch(e){
					alert("Simple Controls Gallery: An error has occured somwhere in your code attached to the \"onslide\" event: "+e)
				}
				setting.currentstep+=1
				if (setting.autoplay[0]){
//					if (setting.currentstep<=setting.totalsteps)
						setting.playtimer=setTimeout(function(){slideshow.showslide('next')}, setting.autoplay[1])
//					else
//						slideshow.navigate("play/pause")
				}
			}) //end callback function
		setting.gallerylayers[setting.fglayer].style.zIndex=99 //foreground layer becomes background
		setting.fglayer=setting.bglayer
		setting.bglayer=(setting.bglayer==0)? 1 : 0
		setting.curimage=imgindex
//		setting.navbuttons[3].innerHTML=(setting.curimage+1) + '/' + setting.imagearray.length
/*		if (setting.imagearray[imgindex][3]){ //if this slide contains a description
			setting.$descpanel.css({visibility:'visible'})
			setting.descdiv.innerHTML=setting.imagearray[imgindex][3]
		}
		else if (setting.longestdesc!=""){ //if at least one slide contains a description (feature is enabled)
			setting.descdiv.innerHTML=null
			setting.$descpanel.css({visibility:'hidden'})

		}
	},
*/
/*	showhidenavpanel:function(state){
		var setting=this.setting
		var endpoint=(state=="show")? setting.dimensions[1]-setting.panelheight : this.setting.dimensions[1]
		setting.$navpanel.stop().animate({top:endpoint}, simpleGallery_navpanel.slideduration)
		if (setting.longestdesc!="") //if at least one slide contains a description (feature is enabled)
			this.showhidedescpanel(state)
	},

	showhidedescpanel:function(state){
		var setting=this.setting
		var endpoint=(state=="show")? 0 : -setting.descpanelheight
		setting.$descpanel.stop().animate({top:endpoint}, simpleGallery_navpanel.slideduration)
*/	}

}

simpleGallery.routines={

	getSlideHTML:function(imgelement){
		var layerHTML=(imgelement[1])? '<a href="'+imgelement[1]+'" target="'+imgelement[2]+'">\n' : '' //hyperlink slide?
		layerHTML+='<img src="'+imgelement[0]+'" style="border-width:0;" //> '
		layerHTML+=(imgelement[1])? '</a>' : ''
		return layerHTML //return HTML for this layer
	},

/*	addnavpanel:function(setting){
		var interfaceHTML=''
		for (var i=0; i<3; i++){
			var imgstyle='position:relative; border:0; cursor:hand; cursor:pointer; top:'+simpleGallery_navpanel.imageSpacing.offsetTop[i]+'px; margin-right:'+(i!=2? simpleGallery_navpanel.imageSpacing.spacing+'px' : 0)
			var title=(i==0? 'Prev' : (i==1)? (setting.ispaused? 'Play' : 'Pause') : 'Next')
			var imagesrc=(i==1)? simpleGallery_navpanel.images[(setting.ispaused)? 1 : 3] : simpleGallery_navpanel.images[i]
			interfaceHTML+='<img class="navimages" title="' + title + '" src="'+ imagesrc +'" style="'+imgstyle+'" /> '
		}
		interfaceHTML+='<div class="gallerystatus" style="margin-top:1px">' + (setting.curimage+1) + '/' + setting.imagearray.length + '</div>'
		setting.$navpanel=$('<div class="navpanellayer"></div>')
			.css({position:'absolute', width:'100%', height:setting.panelheight, left:0, top:setting.dimensions[1], font:simpleGallery_navpanel.panel.fontStyle, zIndex:'1001'})
			.appendTo(setting.$wrapperdiv)
		$('<div class="navpanelbg"></div><div class="navpanelfg"></div>') //create inner nav panel DIVs
			.css({position:'absolute', left:0, top:0, width:'100%', height:'100%'})
			.eq(0).css({background:'black', opacity:simpleGallery_navpanel.panel.opacity}).end() //"navpanelbg" div
			.eq(1).css({paddingTop:simpleGallery_navpanel.panel.paddingTop, textAlign:'center', color:'white'}).html(interfaceHTML).end() //"navpanelfg" div
			.appendTo(setting.$navpanel)
		return setting.$navpanel.find('img.navimages, div.gallerystatus').get() //return 4 nav related images and DIVs as DOM objects
	},

	adddescpanel:function(setting){
		setting.$descpanel=$('<div class="gallerydesc"><div class="gallerydescbg"></div><div class="gallerydescfg"><div class="gallerydesctext"></div></div></div>')
			.css({position:'absolute', width:'100%', left:0, top:-1000, zIndex:'1001'})
			.find('div').css({position:'absolute', left:0, top:0, width:'100%'})
			.eq(0).css({background:'black', opacity:simpleGallery_navpanel.panel.opacity}).end() //"gallerydescbg" div
			.eq(1).css({color:'white'}).end() //"gallerydescfg" div
			.eq(2).html(setting.longestdesc).end().end()
			.appendTo(setting.$wrapperdiv)
		var $gallerydesctext=setting.$descpanel.find('div.gallerydesctext')
		setting.descpanelheight=$gallerydesctext.outerHeight()
		setting.$descpanel.css({top:-setting.descpanelheight, height:setting.descpanelheight}).find('div').css({height:'100%'})
		return setting.$descpanel.find('div.gallerydesctext').get(0) //return gallery description DIV as a DOM object
	},
*/
	getCookie:function(Name){ 
		var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
		if (document.cookie.match(re)) //if cookie found
			return document.cookie.match(re)[0].split("=")[1] //return its value
		return null
	},

	setCookie:function(name, value){
		document.cookie = name+"=" + value + ";path=/"
	}
}

// Copyright (c) 2004-2007 koikikukan All Rights Reserved.
// http://www.koikikukan.com/
// 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.
// Ver7.00 2007.04.27 add function to stateless hold.

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, state) {

//--------------------------------------------------------
// 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 = false;

// 折りたたみマーク画像(リンク方式が '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 = 0;

// タイトルとリスト数のスペース(リスト数を表示するメニューに有効)
var offsetForTitleAndLinkNumber = 1;

//--------------------------------------------------------
// サブカテゴリーリスト用設定データ
//--------------------------------------------------------

// サブカテゴリーフラグ
// サブカテゴリーの折りたたみを有効にする(別途テンプレート設定が必要)
// 有効にする：true
// 無効にする：false
var subCategory = true;

// サブカテゴリー用折りたたみマーク
// 上：閉じている状態で表示されるマーク
// 下：開いている状態で表示されるマーク
var openMarkForSubCategories  = '▼';
var closeMarkForSubCategories = '▲';

// サブカテゴリー用折りたたみマーク挿入位置
// カテゴリー前に折りたたみマークを配置：true
// カテゴリー後に折りたたみマークを配置：false
var preMarkForSubCategory = false;

// サブカテゴリーのタイトルとマークのスペース
var offsetForTitleAndMarkOfSubcategory = 0;

//--------------------------------------------------------
// アーカイブリスト用設定データ
//--------------------------------------------------------

// アーカイブリストフラグ
// サブカテゴリーの折りたたみを有効にする(別途テンプレート設定が必要)
// 有効にする：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;
        }
    }

    // 状態保持解除
    if (!state) {
        holdState = false;
    }

    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', true);
}

function FoldNavigationSlowly(idName, initMode, viewNum) {
    FoldNavigationByTagName(idName, initMode, viewNum, 'dummy', 'slow', true);
}

function FoldNavigationStateless(idName, initMode, viewNum) {
    FoldNavigationByTagName(idName, initMode, viewNum, 'dummy', 'dummy', false);
}


/***********************************
*
*	smart Roooooooooooooollover !
*
************************************/
function smartRollover() {
	if(document.getElementsByTagName) {
		var images = document.getElementsByTagName("img");

		for(var i=0; i < images.length; i++) {
			if(images[i].getAttribute("src").match("_off."))
			{
				images[i].onmouseover = function() {
					this.setAttribute("src", this.getAttribute("src").replace("_off.", "_on."));
				}
				images[i].onmouseout = function() {
					this.setAttribute("src", this.getAttribute("src").replace("_on.", "_off."));
				}
			}
		}
	}
}


if(window.addEventListener) {
	window.addEventListener("load", smartRollover, false);
}
else if(window.attachEvent) {
	window.attachEvent("onload", smartRollover);
}

/*****************************************
*
* :: Lava Lamp ::
*
*****************************************/

jQuery.easing={easein:function(x,t,b,c,d){return c*(t/=d)*t+b},easeinout:function(x,t,b,c,d){if(t<d/2)return 2*c*t*t/(d*d)+b;var a=t-d/2;return-2*c*a*a/(d*d)+2*c*a/d+c/2+b},easeout:function(x,t,b,c,d){return-c*t*t/(d*d)+2*c*t/d+b},expoin:function(x,t,b,c,d){var a=1;if(c<0){a*=-1;c*=-1}return a*(Math.exp(Math.log(c)/d*t))+b},expoout:function(x,t,b,c,d){var a=1;if(c<0){a*=-1;c*=-1}return a*(-Math.exp(-Math.log(c)/d*(t-d))+c+1)+b},expoinout:function(x,t,b,c,d){var a=1;if(c<0){a*=-1;c*=-1}if(t<d/2)return a*(Math.exp(Math.log(c/2)/(d/2)*t))+b;return a*(-Math.exp(-2*Math.log(c/2)/d*(t-d))+c+1)+b},bouncein:function(x,t,b,c,d){return c-jQuery.easing['bounceout'](x,d-t,0,c,d)+b},bounceout:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b}},bounceinout:function(x,t,b,c,d){if(t<d/2)return jQuery.easing['bouncein'](x,t*2,0,c,d)*.5+b;return jQuery.easing['bounceout'](x,t*2-d,0,c,d)*.5+c*.5+b},elasin:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b},elasout:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b},elasinout:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b},backin:function(x,t,b,c,d){var s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b},backout:function(x,t,b,c,d){var s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},backinout:function(x,t,b,c,d){var s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b},linear:function(x,t,b,c,d){return c*t/d+b}};

(function($){$.fn.lavaLamp=function(o){o=$.extend({fx:"linear",speed:500,click:function(){}},o||{});return this.each(function(){var b=$(this),noop=function(){},$back=$('<li class="back"><div class="left"></div></li>').appendTo(b),$li=$("li",this),curr=$("li.current",this)[0]||$($li[0]).addClass("current")[0];$li.not(".back").hover(function(){move(this)},noop);$(this).hover(noop,function(){move(curr)});$li.click(function(e){setCurr(this);return o.click.apply(this,[e,this])});setCurr(curr);function setCurr(a){$back.css({"left":a.offsetLeft+"px","width":a.offsetWidth+"px"});curr=a};function move(a){$back.each(function(){$.dequeue(this,"fx")}).animate({width:a.offsetWidth,left:a.offsetLeft},o.speed,o.fx)}})}})(jQuery);


$(function() {
$("#navi_l").lavaLamp({
fx: "backout",
speed: 700
});
}); 
