var detailviewer = null;
var deepviewer = null;
var ssviewer = null;



function changeLang(selType, selLang) {
	var dlang_regex = /d_lang=../;
	var slang_regex = /s_lang=../;

	if (selLang == null)
		selLang = document.topLang.selectLang.value;

	newDLang = "d_lang=" + selLang;;
	newSLang = "s_lang=" + selLang;

	tmpUrl = document.location.search.replace(dlang_regex, newDLang);
	newUrl = tmpUrl.replace(slang_regex, newSLang);

	location.href = newUrl;
}

var baseURL   = 'http://'+hostAddr();
var detailCommon = {
        contentsDir:            "/img/content/",
        jumpURL:                baseURL+"/shosoinPublic/top.do",
        jumpPhotoURL:           baseURL+"/shosoinPublic/detail.do?treasureId=",
        slideshowJsonURL:       baseURL+"/shosoinPublic/slideshow.do"
};

function hostAddr() {
	var addr=location.href;
	addr=addr.split('//');
	var    addrRet=addr[1].substr(0,addr[1].indexOf('/'));

	return addrRet;
}
function initSlideShow() {
	var mode = 'all';
	if (initSlideShow.arguments.length > 0) {
		mode = initSlideShow.arguments[0];
	}
	slideShowOption.mode = mode;
	ssviewer = new Slideshow.Viewer(slideShowOption);
	ssviewer.open();
}


if (!window.Slideshow) {
	window.Slideshow={};
}

Slideshow.Config = {
	requestURL:		detailCommon.slideshowJsonURL,
	contentsURL:		detailCommon.contentsDir,
	iconPATH:		baseURL+"/shosoinPublic/img/ss/",
	depth:			"",
	fadeSpeed:		"slow",
	slideSpeed:		"slow",
	nowspeed:		"7000",
	fast:			"5000",
	normal:			"7000",
	slow:			"9000",
	loop:			false,
	dashbord:		'on',
	thumbnailUnitWidth:	100,
	thumbnailHeight:	100,
	thumbnailImgHeight:	80,
	thumbnailImgWidth:	80,
	sliderLeftMargin:	5,
	controllerHeight:	100,
	controllerWidth:	251,
	dashbordHeight:		100,
	dashbordHideTime:	3,
	logoWidth:   		231,
	canvasMargin:		30,
	captionWidth:		246
}

Slideshow.Viewer = function(_ssopt) {
	Slideshow.Config.opt = _ssopt;
	Slideshow.Config.stat = "";
	Slideshow.Config.container = Slideshow.Config.opt.container;
	Slideshow.Config.currentKey = Slideshow.Config.opt.currentSeq-1;

	Slideshow.Config.numberOfAddSlideUnit	= 0;
	Slideshow.Config.slideCount		= 0;
	Slideshow.Config.contentsIDs		= [];
	Slideshow.Config.dataSize		= [];
	Slideshow.Config.maxCount 		= 0;
	Slideshow.Config.documentBodyHeight	= "";
	Slideshow.Config.documentBodyWidth	= "";
	Slideshow.Config.numberOfThumbnailPerPage= 0;
	Slideshow.Config.numberPerRequest	= 0;
	Slideshow.Config.RequestCount		= 0;
	Slideshow.Config.LoopCount		= 0;
	Slideshow.Config.timer			= 0;
	Slideshow.Config.dashbordHideCountDown= 0;
	Slideshow.Config.currentThumbnailHeight	= Slideshow.Config.thumbnailHeight;
	Slideshow.Config.oldX			= 0;
	Slideshow.Config.oldY			= 0;

	Slideshow.Config.currentCations = "";

	this.open = function() {
		initialize();
	}
	function initialize() {
		var config = Slideshow.Config;
		var containerID = Slideshow.Config.container;
		var container = '#'+containerID
		var util = new Slideshow.Utils();
		config.stat = "on";
		util.addDiv($(document.body), containerID, "", "width:0;height:0;top:0;left:0;overflow:hidden;position:absolute;display:none;z-index:100;");
		util.addDiv($(container), "ss-canvas", "", " width:0;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:100;");
		$('* html '+container).css({"height":"1%"});
		util.addDiv($('#ss-canvas'), "ss-logo", "", "width:0;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:200;");
		util.addDiv($('#ss-header'), "ss-logo", "", "width:0;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:200;");
		util.addImg($('#ss-logo'), "ss-logo-img", config.iconPATH+"ss_logo.gif", "", "");
		$('#ss-logo-img').css("overflow", "hidden");
		util.addDiv($('#ss-canvas'),"ss-caption","","width:0;min-height:5em;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:200;background-color:#000;");
		util.addDiv($('#ss-caption'),"ss-img-data","","margin:0;width:0;min-height:5em;float:left;");
		util.addDiv($('#ss-caption'),"ss-img-nav","","margin:10px;width:26px;height:26px;float:right;position:relative;");
		util.addDiv($('#ss-canvas'), "ss-pic-even", "", "width:0;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:110;");
		util.addDiv($('#ss-pic-even'), "ss-pic-even-fit", "", "width:0;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:110;");
		util.addImg($('#ss-pic-even-fit'), "ss-pic-even-img", "", "", "");
		$('#ss-pic-even-img').css("overflow", "hidden");
		util.addDiv($('#ss-canvas'), "ss-pic-odd", "", "width:0;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:110;");
		util.addDiv($('#ss-pic-odd'), "ss-pic-odd-fit", "", "width:0;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:110;");
		util.addImg($('#ss-pic-odd-fit'), "ss-pic-odd-img", "", "", "");
		$('#ss-pic-odd-img').css("overflow", "hidden");
		util.addDiv($(container), "ss-dashbord", "", "width:0;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:100;");
		util.addDiv($('#ss-dashbord'), "ss-thumbnail", "", "width:0;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:100;");
		util.addDiv($('#ss-thumbnail'), "ss-slider", "", "width:auto;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:110;");
		util.addDiv($('#ss-dashbord'), "ss-controller", "", "width:0;height:0;top:0;left:0;overflow:visible;position:absolute;display:none;z-index:100;");
		util.addDiv($(container), "ss-end", "", "background-color: #000;width:0;height:0;top:0;left:0;overflow:hidden;position:absolute;display:none;z-index:200;");
		util.addDiv($('#ss-end'), "ss-end-command", "", "background-color:#000;width:0;height:0;top:0;left:0;overflow:hidden;position:absolute;display:none;z-index:200;");
		$('#ss-canvas').bgiframe();

		_ss_controller = new Slideshow.Controller();
		btn = new Slideshow.Button();
		btn.setButton();
		_ss_controller.initSize();
		_ss_controller.start();
		$(window).resize(_ss_controller.resize);
	}
}

Slideshow.Controller = function() {

	this.slideSwitch = function() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils();
		var ret = slideInit();
		if (slideInit() == false) {
		}
		var pathCurr = baseURL + config.contentsURL + config.contentsIDs[config.currentKey].img + "/slide.jpeg";
		setImgAttr();
		if (config.currentKey%2 == 0) {	// (0,2,4...)
			$('#ss-pic-even-img').attr("src", config.iconPATH+"blank.gif");
			$('#ss-thumbfit-'+(config.currentKey-1)).css("border", "#ccc 0px solid");
			$('#ss-thumbfit-'+config.currentKey).css("border", "white 3px solid");
			$('#ss-pic-even').css("display", "none");
			$('#ss-pic-even').css("z-index", "110");
			$('#ss-pic-odd').css("z-index", "120");
			$('#ss-pic-even-fit').width(parseInt(config.currentImgWidth));
			$('#ss-pic-even-fit').height(parseInt(config.currentImgHeight));
			$('#ss-pic-even-img').css("width", parseInt(config.currentImgWidth));
			$('#ss-pic-even-img').css("height", parseInt(config.currentImgHeight));
			$('#ss-pic-even-fit').divcentering();
			$('#pageBody').css("display", "none");
			$('#ss-pic-even-img').click(function(){
				location.href = config.currentJumpUrl;
				_ss_controller.close();
			});
			$('#ss-pic-even-img').attr("src", pathCurr);
			$('#ss-pic-even').css("display", "block");
			$('#ss-pic-odd').fadeOut("slow");
		} else if (config.currentKey%2 ==1) {	// (1,3,5...)
			$('#ss-pic-odd-img').attr("src", config.iconPATH+"blank.gif");
			$('#ss-thumbfit-'+(config.currentKey-1)).css("border", "#ccc 0px solid");
			$('#ss-thumbfit-'+config.currentKey).css("border", "white 3px solid");
			$('#ss-pic-odd').css("display", "none");
			$('#ss-pic-odd').css("z-index", "110");
			$('#ss-pic-even').css("z-index", "120");
			$('#ss-pic-odd-fit').width(parseInt(config.currentImgWidth));
			$('#ss-pic-odd-fit').height(parseInt(config.currentImgHeight));
			$('#ss-pic-odd-img').css("width", parseInt(config.currentImgWidth));
			$('#ss-pic-odd-img').css("height", parseInt(config.currentImgHeight));
			$('#ss-pic-odd-fit').divcentering();
			$('#pageBody').css("display", "none");
			$('#ss-pic-odd-img').click(function(){
				location.href = config.currentJumpUrl;
				_ss_controller.close();
			});
			$('#ss-pic-odd-img').attr("src", pathCurr);
			$('#ss-pic-odd').css("display", "block");
			$('#ss-pic-even').fadeOut("slow");
		}
		var caption = $("<ul/>").attr({
            'id':'caption',
            'style':'width:200px;min-height:5em;text-align:left;float:left;list-style-type:none;opacity:0.85;',
            'class':''
		});
		$('<li/>').append(config.contentsIDs[config.currentKey].img).appendTo(caption);
		$('<li/>').append(config.contentsIDs[config.currentKey].name).appendTo(caption);
		$('<li/>').append(config.contentsIDs[config.currentKey].cls).appendTo(caption);



		$('#ss-img-data').empty().append(caption);
		slideAfter();
	}
	this.resize = function() {
		var config = Slideshow.Config;
		if (config.stat != "on")
			return;
		setupSize();
	}
	this.initSize = function() {
		setupSize();
	}
	function setupSize() {
		var config = Slideshow.Config;
		var containerID = Slideshow.Config.container;
		var container = '#'+containerID
		var util = new Slideshow.Utils();

		config.documentBodyHeight = $(document.body).height();
		config.documentBodyWidth = $(document.body).width();
		$(document.body).height("100%");
		$(document.body).width("100%");
		$(document.body).css("overflow", "hidden");
		$(window).css("overflow", "hidden");
		$(window).css("display","block");
		$('#pageBody').css("display", "none");
		$(container).width($(window).width());
		$(container).height($(window).height());
		$(container).css("top",$(window).scrollTop());
		$(container).fadeIn('slow');
		$('#ss-canvas').width($(container).width());
		$('#ss-canvas').height($(container).height());
		$('#ss-canvas').css("display", "block");
		$('#ss-canvas').css("text-align", "center");

		$('#ss-header').width($(container).width());
		$('#ss-header').height(config.dashbordHeight);
		$('#ss-header').css("top", 0);
		$('#ss-header').css("display", "block");
		$('#ss-header').css("opacity" , 0.75);
		$('#ss-header').css("background-color", "black");

		$('#ss-logo').css("top", 0);
		$('#ss-logo').css("left", 0);
		$('#ss-logo').width(231);
		$('#ss-logo').height(59);
		$('#ss-logo').css("display", "block");
		$('#ss-logo-img').width(231);
		$('#ss-logo-img').height(59);
		$('#ss-caption').width(config.captionWidth+10);
		$('#ss-caption').css("top", 0);
		$('#ss-caption').css("left", $(window).width()-config.captionWidth-10);
		$('#ss-caption').css("display", "block");
		$('#ss-caption').css({"min-height":"5em","width":config.captionWidth,"padding-left":"10px","background-color":"black","color":"white","line-height":"1.5","font-size":"80%"});
		$('#ss-pic-even').css("background-color", $('#ss-canvas').css("background-color"));
		$('#ss-pic-even').width($('#ss-canvas').width());
		$('#ss-pic-even').height($('#ss-canvas').height());
		$('#ss-pic-even').css("text-align", "center");
		$('#ss-pic-even-fit').css("display", "block");
		$('#ss-pic-even-fit').css("text-align", "center");
		$('#ss-pic-even-fit').divcentering();
		$('#ss-pic-even-img').css("vertical-align", "middle");
		$('#ss-pic-even-img').css("margin", "0 auto");
		$('#ss-pic-odd').css("background-color", $('#ss-canvas').css("background-color"));
		$('#ss-pic-odd').width($('#ss-canvas').width());
		$('#ss-pic-odd').height($('#ss-canvas').height());
		$('#ss-pic-odd').css("text-align", "center");
		$('#ss-pic-odd-fit').css("display", "block");
		$('#ss-pic-odd-fit').css("text-align", "center");
		$('#ss-pic-odd-fit').divcentering();
		$('#ss-pic-odd-img').css("vertical-align", "middle");
		$('#ss-pic-odd-img').css("margin", "0 auto");
		$('#ss-pic-even-img, #ss-pic-odd-img').addClass("blink");

		config.dashbord = 'on';
		config.dashbordHideCountDown = 0;
		$('#ss-dashbord').width($(container).width());
		$('#ss-dashbord').height(config.dashbordHeight);
		$('#ss-dashbord').css("top", $('#ss-canvas').height()-config.dashbordHeight);
		$('#ss-dashbord').css("display", "block");
		$('#ss-dashbord').css("opacity" , 0.75);

		$('#ss-thumbnail').width(parseInt($('#ss-dashbord').width())-parseInt(config.controllerWidth));
		$('#ss-thumbnail').height(config.thumbnailHeight);
		$('#ss-thumbnail').css("top", 0);
		$('#ss-thumbnail').css("left", config.controllerWidth);
		$('#ss-thumbnail').css("display", "block");
		$('#ss-slider').width($('#ss-thumbnail').width());
		$('#ss-slider').css("top", 8);
		$('#ss-slider').height(90);
		$('#ss-slider').css("display", "block");
		config.numberOfThumbnailPerPage = parseInt(parseInt($('#ss-thumbnail').width())/config.thumbnailUnitWidth)+1;
		config.numberPerRequest = config.numberOfThumbnailPerPage;
		$('#ss-controller').width(config.controllerWidth);
		$('#ss-controller').height(config.controllerHeight);
		$('#ss-controller').css("top", 0);
		$('#ss-controller').css("display", "block");
		$('#ss-controller').css("background-color", "black");
		$('#ss-end').width($(container).width());
		$('#ss-end').height($(container).height());
		$('#ss-end-command').width($('#ss-end').width());
		$('#ss-end-command').css("display", "block");
		$('#ss-end-command').css("text-align", "center");
		$('#ss-end-command').height(20);
		$('#ss-end-command').divcentering();
	}
	function slideInit() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils();
		var nextLeft = (config.numberOfThumbnailPerPage-1) * parseInt(config.thumbnailUnitWidth);
		if (config.contentsIDs.length == 0) {
			$('div[id^="ss-thumb-"]').empty();
			$('div[id^="ss-thumb-"]').remove();
			$('#ss-slider').width(0);
			$('#ss-slider').css("left", 0);
			config.currentKey = 0;
			config.RequestCount = 0;
			config.numberOfAddSlideUnit = 0;
			config.slideCount = 0;
		}
		var currentLeft = parseInt($('#ss-thumb-'+config.currentKey).css("left"))+parseInt($('#ss-slider').css("left"));
		if (config.contentsIDs.length == 0 || currentLeft >= nextLeft || config.currentKey == config.contentsIDs.length - 1) {
			return loadJson();
		}
		return true;
	}
	function setImgAttr() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils();
		var canvas_width = parseInt($('#ss-canvas').width());
		var canvas_height = parseInt($('#ss-canvas').height());
		var canvas_width = parseInt($(window).width());
		var canvas_height = parseInt($(window).height());
		var margin = config.canvasMargin*2;
		var x = config.contentsIDs[config.currentKey].x;
		var y = config.contentsIDs[config.currentKey].y;
		var size = fitSize2(x, y, canvas_width-margin, canvas_height-margin);

		config.currentImgWidth = size.w;
		config.currentImgHeight = size.h;
		config.currentJumpUrl = makeURL(config.contentsIDs[config.currentKey].id);
		config.currentCation = config.contentsIDs[config.currentKey].img;
	}
	function makeURL(id) {
		var config = Slideshow.Config;
		var url = detailCommon.jumpPhotoURL;
		var ret = '';
		ret = url+id;
		ret += '&mode=' + config.opt.mode;

		return ret;
	}
	function asort(arr, key){
	  arr.sort ( function (b1, b2) { return b1[key] > b2[key] ? 1 : -1; } );
	}
        function fitSize(x, y, base) {
                if (x == undefined || x == 0 || y == undefined || y == 0)
                        return {w:0,h:0};
                var l=x;
		if (x<y) l=y;
                var ratio = base/l;
                return {w:parseInt(ratio*x),h:parseInt(ratio*y)};
        }
        function fitSize2(x, y, xb, yb) {
                if (x == undefined || x == 0 || y == undefined || y == 0)
                        return {w:0,h:0};
		x = parseInt(x);
		y = parseInt(y);
		var ratio = x/y;
		var ratiob = xb/yb;
		if (x > y) {
			if (ratio < ratiob) {
				return {w:parseInt(yb*ratio), h:parseInt(yb)}
			} else {
				return {w:parseInt(xb), h:parseInt(xb/ratio)}
			}
		} else {
			if (ratio < ratiob) {
				return {w:parseInt(yb*ratio), h:parseInt(yb)}
			} else {
				return {w:parseInt(xb), h:parseInt(xb/ratio)}
			}
		}
        }
	function loadJson() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils();

		config.RequestCount++;
		var from = config.contentsIDs.length + 1;
		var to = config.contentsIDs.length + config.numberPerRequest;
		$.ajaxSetup({async:false, cache: false});
		if ( config.opt.mode == 'detail') {
			$.getJSON(config.requestURL,
				{contents: config.opt.contents, fromSeq: from, toSeq: to},
				function (json) {
					config.maxCount = json.maxCount;
					config.contentsURL = json.contentURL;
					if ((config.contentsURL.charAt(config.contentsURL.length - 1)) != '/') {
						config.contentsURL += '/';
					}
					for (var i = 0; i < config.maxCount; i++) {
						config.contentsIDs.push(json.contentsIDs[i]);
					}
					var oldLength = config.contentsIDs.length;
					for (var i = 0; i < config.numberPerRequest && (i + oldLength) < config.maxCount; i++) {
						config.contentsIDs.push(json.contentsIDs[i]);
					}
					config.numberOfAddSlideUnit = config.contentsIDs.length - oldLength;
				});
		} else {
			$.getJSON(config.requestURL,
				{mode: slideShowOption.mode, fromSeq: from, toSeq: to},

				function (json) {
					config.maxCount = json.maxCount;
					config.contentsURL = json.contentURL;
					if ((config.contentsURL.charAt(config.contentsURL.length - 1)) != '/') {
						config.contentsURL += '/';
					}
					var oldLength = config.contentsIDs.length;
					for (var i = 0; i < config.numberPerRequest && (i + oldLength) < config.maxCount; i++) {
						config.contentsIDs.push(json.deepContentsIDs[i]);
					}
					config.numberOfAddSlideUnit = config.contentsIDs.length - oldLength;
				});
		}
		if (config.contentsIDs == undefined || config.contentsIDs.length == 0) {
			return false;
		}
		for (var i = config.currentKey; i < config.contentsIDs.length; i++) {
			var path = baseURL + config.contentsURL + config.contentsIDs[i].img + "/thumbnail.jpeg"; // --- サムネイルのパス ---
			util.addDiv($('#ss-slider'), 'ss-thumb-'+i, "", "border:#ccc 0 solid;width:0;height:0;top:0;left:0;overflow:hidden;position:absolute;display:none;z-index:110;");
			util.addDiv($('#ss-thumb-'+i), 'ss-thumbfit-'+i, "", "border:#ccc 0 solid;width:0;height:0;top:0;left:0;overflow:hidden;position:absolute;display:none;z-index:110;");
			$('#ss-thumb-'+i).css("left", i*parseInt(config.thumbnailUnitWidth)+config.sliderLeftMargin);
			var size = fitSize(parseInt(config.contentsIDs[i].x), parseInt(config.contentsIDs[i].y), config.thumbnailImgHeight-10);
			$('#ss-thumb-'+i).width(config.thumbnailHeight-10);
			$('#ss-thumb-'+i).height(config.thumbnailUnitWidth-10);
			$('#ss-thumb-'+i).css({display: "block"});
			$('#ss-thumbfit-'+i).width(size.w);
			$('#ss-thumbfit-'+i).height(size.h);
			$('#ss-thumbfit-'+i).css({display: "block"});
			util.addImg($('#ss-thumbfit-'+i), 'ss-thumbimg-'+i, path, "", "");
			$('#ss-thumbfit-'+i).divcentering();

			$('#ss-thumbimg-'+i).width(size.w);
			$('#ss-thumbimg-'+i).height(size.h);
			$('#ss-thumbimg-'+i).click(function(){
				var str_id = $(this).attr("id").split('-');
				var url = makeURL(config.contentsIDs[str_id[2]].id);
				location.href = url;
				_ss_controller.close();
			});
			var expandWidth = config.numberOfAddSlideUnit * parseInt(config.thumbnailUnitWidth);
			$('#ss-slider').width(parseInt($('#ss-slider').width())+expandWidth);
		}
		return true;
	}
	function loopOrEnd() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils();
		if (config.currentKey+1 >= config.maxCount) {
			if (config.loop == false) {
				end();
			} else {
				return true;
			}
		}
		return false;
	}
	function end() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils();
		var container = '#'+Slideshow.Config.container;
		clearInterval(config.timer);
		clearTimeout(config.hideTimer);
		$('#ss-end').css("opacity" , 0.75);
		$('#ss-end').css("text-align" , "center");
		setTimeout("$('#ss-end').fadeIn('slow')", 4000);
		config.contentsIDs = [];
	}
	function loop() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils();
		config.contentsIDs = [];
		config.LoopCount++;
	}
	function slideAfter() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils();
		var rtn = loopOrEnd();

		if (rtn == true) {
			loop();
			return;
		}
		if (config.currentKey == 0) {
			config.currentKey++;
			return;
		}
		var nextLeft = (config.numberOfThumbnailPerPage-1) * parseInt(config.thumbnailUnitWidth);
		var currentLeft = parseInt($('#ss-thumb-'+config.currentKey).css("left"))+parseInt(config.thumbnailUnitWidth)/2+config.sliderLeftMargin+parseInt($('#ss-slider').css("left"));
		if (currentLeft > nextLeft) {
			$('#ss-slider').animate({left:'-='+nextLeft+'px'},
						1000,
						function() {
							for (var i = 0; i < config.currentKey-3; i++) {
								$('#ss-thumb-'+i).empty();
								$('#ss-thumb-'+i).remove();
							}
						});
			config.numberOfAddSlideUnit = 0;
			config.slideCount++;
		}
		config.currentKey++;
		return;
	}
	this.reset = function() {
		_ss_controller.dashbordON();
	}
	this.start = function() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils;
		$('#ss-end').fadeOut('fast');
		_ss_controller.slideSwitch();
		_ss_controller.dashbordON();
		_ss_controller.dashbordHideSetup();
		$(document).mousemove(function(ev) {
			if (config.oldX == 0) {
				config.oldX = ev.pageX;
				config.oldY = ev.pageY;
			}
			if (config.oldX != ev.pageX || config.oldY != ev.pageY) {
				_ss_controller.reset();
			}
		});
		config.timer = setInterval("_ss_controller.slideSwitch()", config.nowspeed);
	}
	this.dashbordHideSetup = function() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils;
		config.dashbordHideCountDown++;
		if (config.dashbordHideCountDown > config.dashbordHideTime) {
			_ss_controller.dashbordOFF();
		}
		config.hideTimer = setTimeout("_ss_controller.dashbordHideSetup()", 1000);
	}
	this.play = function() {
		var config = Slideshow.Config;
		if (config.timer == 0) {	// play
			config.timer = setInterval("_ss_controller.slideSwitch()", config.nowspeed);
		} else {			// pause
			clearInterval(Slideshow.Config.timer);
			config.timer = 0;
		}
	}
	function speedControl(itime) {
		var config = Slideshow.Config;
		config.nowspeed = itime;
		clearInterval(config.timer);
		_ss_controller = new Slideshow.Controller();
		config.timer = setInterval("_ss_controller.slideSwitch()", itime);
	}
	this.speedChange = function() {
		var config = Slideshow.Config;
		if(config.nowspeed == config.normal){
			speedControl(config.slow);
		} else if (config.nowspeed == config.fast){
			speedControl(config.normal);
		} else if (config.nowspeed == config.slow){
			speedControl(config.fast);
		}
	}
	this.fast = function() {
		var config = Slideshow.Config;
		speedControl(config.fast);
	}
	this.normal = function() {
		var config = Slideshow.Config;
		speedControl(config.normal);
	}
	this.slow = function() {
		var config = Slideshow.Config;
		speedControl(config.slow);
	}
	this.loop = function() {
		var config = Slideshow.Config;
		if (config.loop == true) config.loop = false;
		else config.loop = true;
	}
	this.dashbordON = function() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils;
		config.dashbordHideCountDown = 0;
		if (config.dashbord == 'on') return;
		$('#ss-dashbord').animate({top:'-='+config.dashbordHeight+'px'}, 500);
		$('#ss-header').animate({top:'+='+config.dashbordHeight+'px'}, 500);
		config.dashbord = 'on';
	}
	this.dashbordOFF = function() {
		var config = Slideshow.Config;
		if (config.dashbord == 'off') return;
		config.oldX = 0;
		$('#ss-dashbord').animate({top:'+='+config.dashbordHeight+'px'}, 500);
		$('#ss-header').animate({top:'-='+config.dashbordHeight+'px'}, 500);
		config.dashbord = 'off';
	}
	this.close = function() {
		var config = Slideshow.Config;
		var container = '#'+Slideshow.Config.container;
		clearInterval(config.timer);
		$('#pageBody').css("display", "block");
		$(document.body).css("overflow", "visible");
		$(container).empty();
		$(container).remove();
		$('div[id^="ss-thumb-"]').empty();
		$('div[id^="ss-thumb-"]').remove();
		config.stat = "off";
	}
}


Slideshow.Button = function() {

        this.setButton = function(){
                closeNav();
                closeBtn();
                playBtn();
                speedBtn();
                loopBtn();
		endBtn();
        };

	function closeNav() {
		var config = Slideshow.Config;
		var util = new Slideshow.Utils;
		var closeImgN = config.iconPATH + "ss_close_n.gif";
		var closeImgO = config.iconPATH + "ss_close_o.gif";

		var button = addButton("ss-close", closeImgN);
		button.mouseover(function(){
			button.attr("src", closeImgO);
		});
		button.mouseout(function(){
			button.attr("src", closeImgN);
		});
		button.mousedown(function(){
			button.attr("src", closeImgN);
		});
		button.mouseup(function(){
			button.attr("src", closeImgO);
		});

		button.attr("title", "終了");

		button.click(function(){
			if ( config.opt.mode == 'all') {
				location.href = detailCommon.jumpURL;
			} else {
				var container = '#'+Slideshow.Config.container;
				clearInterval(config.timer);
				$('#pageBody').css("display", "block");
				$(document.body).css("overflow", "visible");
				$(container).empty();
				$(container).remove();
				$('div[id^="ss-thumb-"]').empty();
				$('div[id^="ss-thumb-"]').remove();
				config.stat = "off";
			}
		});
		$('#ss-img-nav').append(button);
		$('#ss-close').css({
			"position":"absolute",
			"top":0,
			"left":0
		});
		$('#ss-close').addClass("blink");
	}


	function closeBtn(){
		var config = Slideshow.Config;
		var util = new Slideshow.Utils;
		var closeImgN = config.iconPATH + "ss_exit_n.gif";
		var closeImgO = config.iconPATH + "ss_exit_o.gif";

		var button = addButton("ss-closeBtn", closeImgN);
		button.mouseover(function(){
			button.attr("src", closeImgO);
		});
		button.mouseout(function(){
			button.attr("src", closeImgN);
		});
		button.mousedown(function(){
			button.attr("src", closeImgN);
		});
		button.mouseup(function(){
			button.attr("src", closeImgO);
		});

		button.attr("title", "終了");

		button.click(function(){
			if ( config.opt.mode == 'all') {
				location.href = detailCommon.jumpURL;
			} else {
				var container = '#'+Slideshow.Config.container;
				clearInterval(config.timer);
				$('#pageBody').css("display", "block");
				$(document.body).css("overflow", "visible");
				$(container).empty();
				$(container).remove();
				$('div[id^="ss-thumb-"]').empty();
				$('div[id^="ss-thumb-"]').remove();
				config.stat = "off";
			}
		});
		$('#ss-controller').append(button);
		$('#ss-closeBtn').css({
				"position":"absolute",
				"top":25,
				"left":0,
				"width":81,
				"height":50
		});
	}

	function playBtn(){
		var config = Slideshow.Config;
		var playImgN = config.iconPATH + "ss_start_n.gif";
		var playImgO = config.iconPATH + "ss_start_o.gif";
		var pauseImgN = config.iconPATH + "ss_stop_n.gif";
		var pauseImgO = config.iconPATH + "ss_stop_o.gif";

		var button = addButton("ss-playBtn", pauseImgN);
		button.mouseover(function(){
			if(config.timer != 0){
				button.attr("src", pauseImgO);
			} else {
				button.attr("src", playImgO);
			}
		});

		button.mouseout(function(){
			if(config.timer != 0){
				button.attr("src", pauseImgN);
			} else {
				button.attr("src", playImgN);
			}
		});
		button.mousedown(function(){
			if(config.timer != 0){
				button.attr("src", playImgN);
			} else {
				button.attr("src", pauseImgN);
			}
		});

		button.mouseup(function(){
			if(config.timer != 0){
				button.attr("src", playImgO);
			} else {
				button.attr("src", pauseImgO);
			}
		});
		button.attr("title", "スタート、一時停止の切替");

		button.click(_ss_controller.play);
		$('#ss-controller').append(button);
		$('#ss-playBtn').css({
				"position":"absolute",
				"top":25,
				"left":199,
				"width":52,
				"height":50
		});
	}

	function loopBtn(){
		var config = Slideshow.Config;
		var loopImgN = config.iconPATH + "ss_loop_n.gif";
		var loopImgO = config.iconPATH + "ss_loop_o.gif";
		var noloopImgN = config.iconPATH + "ss_loopoff_n.gif";
		var noloopImgO = config.iconPATH + "ss_loopoff_o.gif";

		var button = addButton("ss-loopBtn", noloopImgN);
		button.mouseover(function(){
			if(config.loop == true){
				button.attr("src", loopImgO);
			} else {
				button.attr("src", noloopImgO);
			}
		});

		button.mouseout(function(){
			if(config.loop == true){
				button.attr("src", loopImgN);
			} else {
				button.attr("src", noloopImgN);
			}
		});
		button.mousedown(function(){
			if(config.loop == true){
				button.attr("src", noloopImgN);
			} else {
				button.attr("src", loopImgN);
			}
		});

		button.mouseup(function(){
			if(config.loop == true){
				button.attr("src", noloopImgO);
			} else {
				button.attr("src", loopImgO);
			}
		});
		button.attr("title", "リピートの切替");

		button.click(_ss_controller.loop);
		$('#ss-controller').append(button);
		$('#ss-loopBtn').css({
			"position":"absolute",
			"top":25,
			"left":81,
			"width":59,
			"height":50
		});
	}

	function speedBtn(){
		var config = Slideshow.Config;
		var normalImgN = config.iconPATH + "ss_medium_n.gif";
		var normalImgO = config.iconPATH + "ss_medium_o.gif";
		var fastImgN = config.iconPATH + "ss_fast_n.gif";
		var fastImgO = config.iconPATH + "ss_fast_o.gif";
		var slowImgN = config.iconPATH + "ss_slow_n.gif";
		var slowImgO = config.iconPATH + "ss_slow_o.gif";
		var button = addButton("ss-speedBtn", normalImgN);
		button.mouseover(function(){
			if(config.nowspeed == config.normal){
				button.attr("src", normalImgO);
			} else if (config.nowspeed == config.fast){
				button.attr("src", fastImgO);
			} else if (config.nowspeed == config.slow){
				button.attr("src", slowImgO);
			}
		});

		button.mouseout(function(){
			if(config.nowspeed == config.normal){
				button.attr("src", normalImgN);
			} else if (config.nowspeed == config.fast){
				button.attr("src", fastImgN);
			} else if (config.nowspeed == config.slow){
				button.attr("src", slowImgN);
			}
		});
		button.mousedown(function(){
			if(config.nowspeed == config.normal){
				button.attr("src", slowImgN);
			} else if (config.nowspeed == config.fast){
				button.attr("src", normalImgN);
			} else if (config.nowspeed == config.slow){
				button.attr("src", fastImgN);
			}
		});
		button.mouseup(function(){
			if(config.nowspeed == config.normal){
				button.attr("src", slowImgO);
			} else if (config.nowspeed == config.fast){
				button.attr("src", normalImgO);
			} else if (config.nowspeed == config.slow){
				button.attr("src", fastImgO);
			}
		});
		button.attr("title", "スピード切替");

		button.click(_ss_controller.speedChange);
		$('#ss-controller').append(button);
		$('#ss-speedBtn').css({
			"position":"absolute",
			"top":25,
			"left":140,
			"width":59,
			"height":50
		});
	}

        function endBtn(){
		var util = new Slideshow.Utils;
		var config = Slideshow.Config;
                var close_button = $("<input type='button'>").attr({
                        'id':"ss-closeBtn",
                        'value':"close",
                        'title':"終了"
                });
                var restart_button = $("<input type='button'>").attr({
                        'id':"ss-restartBtn",
                        'value':"restart",
                        'title':"もう一度見る"
                });

		close_button.click(function(){
			if ( config.opt.mode == 'all') {
				location.href = detailCommon.jumpURL;
			} else {
				var container = '#'+Slideshow.Config.container;
				clearInterval(config.timer);
				$('#pageBody').css("display", "block");
				$(document.body).css("overflow", "visible");
				$(container).empty();
				$(container).remove();
				$('div[id^="ss-thumb-"]').empty();
				$('div[id^="ss-thumb-"]').remove();
				config.stat = "off";
			}
		});
		restart_button.click(_ss_controller.start);
		$('#ss-end-command').append(close_button);
		$('#ss-end-command').append(restart_button);
        }

        function addButton(id,src){

                var img = $("<img/>").attr({
                   'id':id,
                   'src':src
            });

                return img;
        }

}

Slideshow.Utils = function(){

        this.addDiv = function(parentDiv,name,classStr,styleStr){

                var addDiv = $("<div/>").attr({
                        'id':name,
                        'style':styleStr,
                        'class':classStr
            });
                parentDiv.append(addDiv);

        }
        this.addImg = function(div, id, src,w,h){

                var img = $("<img/>").attr({
                   'id':id,
                   'src':src,
                   'galleryimg' :"no"
            });
                div.append(img);
        }
}

jQuery.extend(jQuery.fn, {
     divcentering: function() {
	  var imgHeight = parseInt($(this).css("height"));
	  var imgWidth = parseInt($(this).css("width"));

	  var slider = $(this).parent();
	  var containerHeight = slider.height();
	  var containerWidth = slider.width();

	  var top = (containerHeight / 2) - (imgHeight / 2);
	  var left = (containerWidth / 2) - (imgWidth / 2);
	  $(this).css("top", top);
	  $(this).css("left", left);
     }
});


