// -----------------------------------------------------------------------------------
//
//	Lightbox v2.03.3
//	by Lokesh Dhakar - http://www.huddletogether.com
//	5/21/06
//
//	For more information on this script, visit:
//	http://huddletogether.com/projects/lightbox2/
//
//	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
//	
//	Credit also due to those who have helped, inspired, and made their code available to the public.
//	Including: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), Thomas Fuchs(mir.aculo.us), and others.
//
//
// -----------------------------------------------------------------------------------
/*

	Table of Contents
	-----------------
	Configuration
	Global Variables

	Extending Built-in Objects	
	- Object.extend(Element)
	- Array.prototype.removeDuplicates()
	- Array.prototype.empty()

	Lightbox Class Declaration
	- initialize()
	- updateImageList()
	- start()
	- changeImage()
	- resizeImageContainer()
	- showImage()
	- updateDetails()
	- updateNav()
	- enableKeyboardNav()
	- disableKeyboardNav()
	- keyboardAction()
	- preloadNeighborImages()
	- end()
	
	Miscellaneous Functions
	- getPageScroll()
	- getPageSize()
	- getKey()
	- listenKey()
	- showSelectBoxes()
	- hideSelectBoxes()
	- showFlash()
	- hideFlash()
	- pause()
	- initLightbox()
	
	Function Calls
	- addLoadEvent(initLightbox)
	
*/
// -----------------------------------------------------------------------------------

//
//	Configuration
//
var fileLoadingImage = "/uw/images/loading_lightbox.gif";
var filePrevButtonImage = "/jalan/images/common/lightbox/btn_prev.jpg";
var filePrevButtonImageOver = "/jalan/images/common/lightbox/btn_prev_over.jpg";
var fileNextButtonImage = "/jalan/images/common/lightbox/btn_next.jpg";
var fileNextButtonImageOver = "/jalan/images/common/lightbox/btn_next_over.jpg";
var filePlanArticleBtn = "/uw/images/btn_reserve.gif";			// プラン表示部の「詳細・予約」ボタン
var filePlanArticleBtnOver = "/uw/images/btn_reserve_on.gif";	// プラン表示部の「詳細・予約」ボタンマウスオン
var filePlanQuestionIcon = "/jalan/common/image/icon01.gif";	// プラン表示部の「最安料金」の「？」アイコン
var urlPlanQuestion = "/jalan/doc/howto/yadolog_exp_low-price.html";	// プラン表示部の「最安料金」リンク先
var textHeadNavClose = "×閉じる";
var imgWidthFixed = 600;	//横幅固定

var overlayOpacity = 0.9;	// controls transparency of shadow overlay

var animate = true;			// toggles resizing animations
var resizeSpeed = 7;		// controls the speed of the image resizing animations (1=slowest and 10=fastest)

//var borderSize = 10;		//if you adjust the padding in the CSS, you will need to update this variable
var borderSize = 15;		//if you adjust the padding in the CSS, you will need to update this variable

var paddingSize = 15;		//imageData内の padding値 CSSと同期をとること
var boxMinHeight = 450;		//outerImageContainerの最小高さ（px）
// -----------------------------------------------------------------------------------

//
//	Global Variables
//
var imageArray = new Array;
var activeImage;

if(animate == true){
	overlayDuration = 0.2;	// shadow fade in/out duration
	if(resizeSpeed > 10){ resizeSpeed = 10;}
	if(resizeSpeed < 1){ resizeSpeed = 1;}
	resizeDuration = (11 - resizeSpeed) * 0.15;
} else { 
	overlayDuration = 0;
	resizeDuration = 0;
}

// -----------------------------------------------------------------------------------

//
//	Additional methods for Element added by SU, Couloir
//	- further additions by Lokesh Dhakar (huddletogether.com)
//
Object.extend(Element, {
	getWidth: function(element) {
	   	element = $(element);
	   	return element.offsetWidth; 
	},
	setWidth: function(element,w) {
	   	element = $(element);
    	element.style.width = w +"px";
	},
	setHeight: function(element,h) {
   		element = $(element);
    	element.style.height = h +"px";
	},
	setTop: function(element,t) {
	   	element = $(element);
    	element.style.top = t +"px";
	},
	setLeft: function(element,l) {
	   	element = $(element);
    	element.style.left = l +"px";
	},
	setSrc: function(element,src) {
    	element = $(element);
    	element.src = src; 
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href; 
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}
});

// -----------------------------------------------------------------------------------

//
//	Extending built-in Array object
//	- array.removeDuplicates()
//	- array.empty()
//
Array.prototype.removeDuplicates = function () {
    for(i = 0; i < this.length; i++){
        for(j = this.length-1; j>i; j--){        
            if(this[i][0] == this[j][0]){
                this.splice(j,1);
            }
        }
    }
}

// -----------------------------------------------------------------------------------

Array.prototype.empty = function () {
	for(i = 0; i <= this.length; i++){
		this.shift();
	}
}

// -----------------------------------------------------------------------------------

//
//	Lightbox Class Declaration
//	- initialize()
//	- start()
//	- changeImage()
//	- resizeImageContainer()
//	- showImage()
//	- updateDetails()
//	- updateNav()
//	- enableKeyboardNav()
//	- disableKeyboardNav()
//	- keyboardNavAction()
//	- preloadNeighborImages()
//	- end()
//
//	Structuring of code inspired by Scott Upton (http://www.uptonic.com/)
//
var Lightbox = Class.create();

Lightbox.prototype = {
	
	// initialize()
	// Constructor runs on completion of the DOM loading. Calls updateImageList and then
	// the function inserts html at the bottom of the page which is used to display the shadow 
	// overlay and the image container.
	//
	initialize: function() {	
		
		this.updateImageList();

		// Code inserts html at the bottom of the page that looks similar to this:
		//
		//	<div id="overlay"></div>
		//	<div id="lightbox">
//フォトギャラリー対応 Start
		//		<div id="titleDataContainer">
		//			<table id="titleLine">
		//			<tbody>
		//				<tr>
		//					<td>
		//						<div id="titleData">
		//					</td>
		//				</tr>
		//			</tbody>
		//			</table>
		//		</div>
//フォトギャラリー対応 End
		//		<div id="outerImageContainer">
		//			<div id="imageContainer">
		//				<img id="lightboxImage">
		//				<div style="" id="hoverNav">
		//					<a href="#" id="prevLink"></a>
		//					<a href="#" id="nextLink"></a>
		//				</div>
		//				<div id="loading">
		//					<a href="#" id="loadingLink">
		//						<img src="images/loading.gif">
		//					</a>
		//				</div>
		//			</div>
		//		</div>
		//		<div id="imageDataContainer">
		//			<div id="imageData">
//フォトギャラリー対応 Start
		//				<div id="imageUpdate">
//フォトギャラリー対応 End
		//				<div id="imageDetails">
		//					<span id="caption"></span>
		//					<span id="numberDisplay"></span>
		//				</div>
		//				<div id="bottomNav">
		//					<a href="#" id="bottomNavClose">
		//						<img src="images/close.gif">
		//					</a>
		//				</div>
		//			</div>
		//		</div>
//フォトギャラリー対応 Start
		//		<div id="bottomDataContainer">
		//			<table id="bottomDataTable">
		//				<tbody id="bottomDataTbody">
		//					<tr id="bottomDataTr">
		//						<td id="bottomDataTd">
		//							<p id="bottomText"></p>
		//						</td>
		//					</tr>
		//				</tbody>
		//			</table>
		//		</div>
//フォトギャラリー対応 End
		//	</div>


		var objBody = document.getElementsByTagName("body").item(0);
		
		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','overlay');
		objOverlay.style.display = 'none';
		objOverlay.onclick = function() { myLightbox.end(); }
		objBody.appendChild(objOverlay);
		
		var objLightbox = document.createElement("div");
		objLightbox.setAttribute('id','lightbox');
		objLightbox.style.display = 'none';
		objLightbox.onclick = function(e) {	// close Lightbox is user clicks shadow overlay
			if (!e) var e = window.event;
			var clickObj = Event.element(e).id;
			if ( clickObj == 'lightbox') {
				myLightbox.end();
			}
		};
		objBody.appendChild(objLightbox);


//フォトギャラリー対応 start
		/* next、prev写真 */
		var objHoverPhoto = document.createElement("div");
		objHoverPhoto.setAttribute('id','hoverPhoto');
		objLightbox.appendChild(objHoverPhoto);

		var objHoverPhotoPrev = document.createElement("table");
		objHoverPhotoPrev.setAttribute('id','hoverPhotoPrev');
		objHoverPhotoPrev.setAttribute('cellpadding', '0');
		objHoverPhotoPrev.setAttribute('cellspacing', '0');
		objHoverPhotoPrev.setAttribute('border', '0');
		objHoverPhoto.appendChild(objHoverPhotoPrev);

		//IEではtbodyが必要
		var objHoverPhotoPrevTbody = document.createElement("tbody");
		objHoverPhotoPrev.appendChild(objHoverPhotoPrevTbody);

		var objHoverPhotoPrevTableTr = document.createElement("tr");
		objHoverPhotoPrevTbody.appendChild(objHoverPhotoPrevTableTr);

		var objHoverPhotoPrevTableTd = document.createElement("td");
		objHoverPhotoPrevTableTr.appendChild(objHoverPhotoPrevTableTd);
		
		var objHoverPhotoPrevBox = document.createElement("div");
		objHoverPhotoPrevBox.setAttribute('id','PhotoPrevBox');
		objHoverPhotoPrevTableTd.appendChild(objHoverPhotoPrevBox);

		var objPhotoPrevImageP = document.createElement("p");
		objHoverPhotoPrevBox.appendChild(objPhotoPrevImageP);

		var objPhotoPrevImage = document.createElement("img");
		objPhotoPrevImage.setAttribute('id','photoPrevImage');
		objPhotoPrevImageP.appendChild(objPhotoPrevImage);

		var objPhotoPrevText = document.createElement("p");
		objPhotoPrevText.setAttribute('id','photoPrevText');
		objHoverPhotoPrevBox.appendChild(objPhotoPrevText);

		var objHoverPhotoNext = document.createElement("table");
		objHoverPhotoNext.setAttribute('id','hoverPhotoNext');
		objHoverPhotoNext.setAttribute('cellpadding', '0');
		objHoverPhotoNext.setAttribute('cellspacing', '0');
		objHoverPhotoNext.setAttribute('border', '0');
		objHoverPhoto.appendChild(objHoverPhotoNext);

		//IEではtbodyが必要
		var objHoverPhotoNextTbody = document.createElement("tbody");
		objHoverPhotoNext.appendChild(objHoverPhotoNextTbody);

		var objHoverPhotoNextTableTr = document.createElement("tr");
		objHoverPhotoNextTbody.appendChild(objHoverPhotoNextTableTr);

		var objHoverPhotoNextTableTd = document.createElement("td");
		objHoverPhotoNextTableTr.appendChild(objHoverPhotoNextTableTd);
		
		var objHoverPhotoNextBox = document.createElement("div");
		objHoverPhotoNextBox.setAttribute('id','PhotoNextBox');
		objHoverPhotoNextTableTd.appendChild(objHoverPhotoNextBox);

		var objPhotoNextImageP = document.createElement("p");
		objHoverPhotoNextBox.appendChild(objPhotoNextImageP);

		var objPhotoNextImage = document.createElement("img");
		objPhotoNextImage.setAttribute('id','photoNextImage');
		objPhotoNextImageP.appendChild(objPhotoNextImage);

		var objPhotoNextText = document.createElement("p");
		objPhotoNextText.setAttribute('id','photoNextText');
		objHoverPhotoNextBox.appendChild(objPhotoNextText);

		/* next、prevナビボタン */
		var objHoverNav = document.createElement("div");
		objHoverNav.setAttribute('id','hoverNav');
		objLightbox.appendChild(objHoverNav);

		var objHoverNavPrev = document.createElement("div");
		objHoverNavPrev.setAttribute('id','hoverNavPrev');
		objHoverNav.appendChild(objHoverNavPrev);

		var objPrevLink = document.createElement("a");
		objPrevLink.setAttribute('id','prevLink');
		objPrevLink.setAttribute('href','#');
		objPrevLink.onmouseover = function() {objPrevButtonImage.src = filePrevButtonImageOver; return false; }
		objPrevLink.onmouseout = function() {objPrevButtonImage.src = filePrevButtonImage; return false; }
		objHoverNavPrev.appendChild(objPrevLink);

		var objPrevButtonImage = document.createElement("img");
		objPrevButtonImage.setAttribute('src',filePrevButtonImage);
		objPrevLink.appendChild(objPrevButtonImage);

		var objHoverNavNext = document.createElement("div");
		objHoverNavNext.setAttribute('id','hoverNavNext');
		objHoverNav.appendChild(objHoverNavNext);

		var objNextLink = document.createElement("a");
		objNextLink.setAttribute('id','nextLink');
		objNextLink.setAttribute('href','#');
		objNextLink.onmouseover = function() {objNextButtonImage.src = fileNextButtonImageOver; return false; }
		objNextLink.onmouseout = function() {objNextButtonImage.src = fileNextButtonImage; return false; }
		objHoverNavNext.appendChild(objNextLink);

		var objNextButtonImage = document.createElement("img");
		objNextButtonImage.setAttribute('src',fileNextButtonImage);
		objNextLink.appendChild(objNextButtonImage);
//フォトギャラリー対応 end

//フォトギャラリー対応 start
		/* 画像上部のTitle属性の出力 */
		var objTitleContainer = document.createElement("div");
		objTitleContainer.setAttribute('id','titleDataContainer');
		objLightbox.appendChild(objTitleContainer);

		var objTitleTable = document.createElement("table");
		objTitleTable.setAttribute('id', 'titleLine');
		objTitleTable.setAttribute('cellpadding', '0');
		objTitleTable.setAttribute('cellspacing', '0');
		objTitleTable.setAttribute('border', '0');
		objTitleContainer.appendChild(objTitleTable);

		//IEではtbodyが必要
		var objTitleTbody = document.createElement("tbody");
		objTitleTable.appendChild(objTitleTbody);

		var objTitleTableTr = document.createElement("tr");
		objTitleTbody.appendChild(objTitleTableTr);

		var objTitleTableTd = document.createElement("td");
		objTitleTableTr.appendChild(objTitleTableTd);
		
		var objHeadNav = document.createElement("div");
		objHeadNav.setAttribute('id','headNav');
		objTitleTableTd.appendChild(objHeadNav);
		
		var objHeadNavCloseLink = document.createElement("a");
		objHeadNavCloseLink.setAttribute('id','headNavClose');
		objHeadNavCloseLink.setAttribute('href','#');
		objHeadNavCloseLink.onclick = function() { myLightbox.end(); return false; }
//		objHeadNavCloseLink.onmouseover = function() {objHeadNavCloseImage.src = fileHeadNavCloseImageOver; return false; }
//		objHeadNavCloseLink.onmouseout = function() {objHeadNavCloseImage.src = fileHeadNavCloseImage; return false; }
		objHeadNav.appendChild(objHeadNavCloseLink);

		var objTextHeadNavClose = document.createTextNode(textHeadNavClose);
//		objHeadNavCloseImage.setAttribute('src', textHeadNavClose);
		objHeadNavCloseLink.appendChild(objTextHeadNavClose);

		var objTitleDiv = document.createElement("div");
		objTitleDiv.setAttribute('id','titleData');
		objTitleTableTd.appendChild(objTitleDiv);

//フォトギャラリー対応 end

	
//フォトギャラリー対応 start
//		var objImageUpdate = document.createElement("div");
//		objImageUpdate.setAttribute('id','imageUpdate');
//		objTitleTableTd.appendChild(objImageUpdate);
//フォトギャラリー対応 end

		var objOuterImageContainer = document.createElement("div");
		objOuterImageContainer.setAttribute('id','outerImageContainer');
		objLightbox.appendChild(objOuterImageContainer);

		// When Lightbox starts it will resize itself from 250 by 250 to the current image dimension.
		// If animations are turned off, it will be hidden as to prevent a flicker of a
		// white 250 by 250 box.
		if(animate){
			Element.setWidth('outerImageContainer', 250);
			Element.setHeight('outerImageContainer', 250);			
		} else {
			Element.setWidth('outerImageContainer', 1);
			Element.setHeight('outerImageContainer', 1);			
		}

		var objImageContainer = document.createElement("div");
		objImageContainer.setAttribute('id','imageContainer');
		objOuterImageContainer.appendChild(objImageContainer);

	
		var objLightboxImage = document.createElement("img");
		objLightboxImage.setAttribute('id','lightboxImage');
		objImageContainer.appendChild(objLightboxImage);
	
	
//		var objHoverNav = document.createElement("div");
//		objHoverNav.setAttribute('id','hoverNav');
//		objImageContainer.appendChild(objHoverNav);

//		var objPrevLink = document.createElement("a");
//		objPrevLink.setAttribute('id','prevLink');
//		objPrevLink.setAttribute('href','#');
//		objHoverNav.appendChild(objPrevLink);

//		var objNextLink = document.createElement("a");
//		objNextLink.setAttribute('id','nextLink');
//		objNextLink.setAttribute('href','#');
//		objHoverNav.appendChild(objNextLink);
	
		var objLoading = document.createElement("div");
		objLoading.setAttribute('id','loading');
		objImageContainer.appendChild(objLoading);
	
		var objLoadingLink = document.createElement("a");
		objLoadingLink.setAttribute('id','loadingLink');
		objLoadingLink.setAttribute('href','#');
		objLoadingLink.onclick = function() { myLightbox.end(); return false; }
		objLoading.appendChild(objLoadingLink);
	
		var objLoadingImage = document.createElement("img");
		objLoadingImage.setAttribute('src', fileLoadingImage);
		objLoadingLink.appendChild(objLoadingImage);

		var objImageDataContainer = document.createElement("div");
		objImageDataContainer.setAttribute('id','imageDataContainer');
		objLightbox.appendChild(objImageDataContainer);

		var objImageData = document.createElement("div");
		objImageData.setAttribute('id','imageData');
		objImageDataContainer.appendChild(objImageData);

//フォトギャラリー対応 start
//		var objImageUpdate = document.createElement("div");
//		objImageUpdate.setAttribute('id','imageUpdate');
//		objImageData.appendChild(objImageUpdate);
//フォトギャラリー対応 end

		var objImageDetails = document.createElement("div");
		objImageDetails.setAttribute('id','imageDetails');
		objImageData.appendChild(objImageDetails);
	
		var objCaption = document.createElement("span");
		objCaption.setAttribute('id','caption');
		objImageDetails.appendChild(objCaption);

//		var objNumberDisplay = document.createElement("span");
//		objNumberDisplay.setAttribute('id','numberDisplay');
//		objImageDetails.appendChild(objNumberDisplay);

//		var objBottomNav = document.createElement("div");
//		objBottomNav.setAttribute('id','bottomNav');
//		objImageData.appendChild(objBottomNav);
// フォトギャラリー対応 start
//		var objBottomNavCloseLink = document.createElement("input");
//		objBottomNavCloseLink.setAttribute('id','bottomNavClose');
//		objBottomNavCloseLink.setAttribute('type','button');
//		objBottomNavCloseLink.setAttribute('value','閉じる');
//		objBottomNavCloseLink.onclick = function() { myLightbox.end(); return false; }
//		objBottomNav.appendChild(objBottomNavCloseLink);
//
//		var objBottomNavCloseLink = document.createElement("a");
//		objBottomNavCloseLink.setAttribute('id','bottomNavClose');
//		objBottomNavCloseLink.setAttribute('href','#');
//		objBottomNavCloseLink.onclick = function() { myLightbox.end(); return false; }
//		objBottomNav.appendChild(objBottomNavCloseLink);
//
//		var objBottomNavCloseImage = document.createElement("img");
//		objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage);
//		objBottomNavCloseLink.appendChild(objBottomNavCloseImage);

// フォトギャラリー対応 start
		//プラン表示 start
		var objPlanBox = document.createElement("div");
		objPlanBox.setAttribute('id','planBox');
		objImageDataContainer.appendChild(objPlanBox);

		var objPlanName = document.createElement("p");
		objPlanName.setAttribute('id','planName');
		objPlanBox.appendChild(objPlanName);

		var objRoomtypeIcon = document.createElement("p");
		objRoomtypeIcon.setAttribute('id','roomtypeIcon');
		objPlanBox.appendChild(objRoomtypeIcon);

		var objRoomtypeIconImg = document.createElement("img");
		objRoomtypeIconImg.setAttribute('id','roomtypeIconImg');
		objRoomtypeIcon.appendChild(objRoomtypeIconImg);

		var objplanArticle = document.createElement("a");
		objplanArticle.setAttribute('id','planArticle');
		objplanArticle.onmouseover = function() {objplanArticleBtn.src = filePlanArticleBtnOver; return false; }
		objplanArticle.onmouseout = function() {objplanArticleBtn.src = filePlanArticleBtn; return false; }
		objPlanBox.appendChild(objplanArticle);

		var objplanArticleText = document.createElement("span");
		objplanArticleText.setAttribute('id','planArticleText');
		objplanArticle.appendChild(objplanArticleText);

		var objplanArticleBtn = document.createElement("img");
		objplanArticleBtn.setAttribute('id','planArticleBtn');
		objplanArticleBtn.setAttribute('src',filePlanArticleBtn);
		objplanArticle.appendChild(objplanArticleBtn);

		var objPlanPrice = document.createElement("p");
		objPlanPrice.setAttribute('id','planPrice');
		objPlanBox.appendChild(objPlanPrice);

		var objPlanQuestion = document.createElement("p");
		objPlanQuestion.setAttribute('id','planQuestion');
		objPlanBox.appendChild(objPlanQuestion);

		var objPlanQuestionIcon = document.createElement("img");
		objPlanQuestionIcon.setAttribute('src',filePlanQuestionIcon);
		objPlanQuestion.appendChild(objPlanQuestionIcon);

		var objPlanQuestionText = document.createElement("a");
		objPlanQuestionText.setAttribute('id','planQuestionText');
		objPlanQuestionText.setAttribute('href',urlPlanQuestion);
		objPlanQuestionText.setAttribute('target','sub');
		objPlanQuestionText.onclick = function() {window.open(urlPlanQuestion,'sub','toolbar=no,status=no,location=no,directories=no,menubar=no,scrollbars=yes,resizable=yes,width=640,height=640')};
		objPlanQuestion.appendChild(objPlanQuestionText);
		//プラン表示 end

//フォトギャラリー対応 end

		var objBottomDataContainer = document.createElement("div");
		objBottomDataContainer.setAttribute('id','bottomDataContainer');
		objLightbox.appendChild(objBottomDataContainer);

//フォトギャラリー対応 start
		var objImageUpdate = document.createElement("div");
		objImageUpdate.setAttribute('id','imageUpdate');
		objBottomDataContainer.appendChild(objImageUpdate);
//フォトギャラリー対応 end

		var objBottomDataTable = document.createElement("table");
		objBottomDataTable.setAttribute('id','bottomDataTable');
		objBottomDataContainer.appendChild(objBottomDataTable);

		var objBottomDataTbody = document.createElement("tbody");
		objBottomDataTbody.setAttribute('id','bottomDataTbody');
		objBottomDataTable.appendChild(objBottomDataTbody);

		var objBottomDataTr = document.createElement("tr");
		objBottomDataTr.setAttribute('id','bottomDataTr');
		objBottomDataTbody.appendChild(objBottomDataTr);

		var objBottomDataTd = document.createElement("td");
		objBottomDataTd.setAttribute('id','bottomDataTd');
		objBottomDataTr.appendChild(objBottomDataTd);

		var objBottomText = document.createElement("p");
		objBottomText.setAttribute('id','bottomText');
		objBottomDataTd.appendChild(objBottomText);
		
		var objFloatClear2 = document.createElement("br");
		objFloatClear2.setAttribute('style','clear:both;');
		objBottomDataContainer.appendChild(objFloatClear2);

// フォトギャラリー対応 end

	},


	//
	// updateImageList()
	// Loops through anchor tags looking for 'lightbox' references and applies onclick
	// events to appropriate links. You can rerun after dynamically adding images w/ajax.
	//
	updateImageList: function() {	
		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');
		var areas = document.getElementsByTagName('area');

		// loop through all anchor tags
		for (var i=0; i<anchors.length; i++){
			var anchor = anchors[i];
			
			var relAttribute = String(anchor.getAttribute('rel'));
			
			// use the string.match() method to catch 'lightbox' references in the rel attribute
			if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
				anchor.onclick = function () {myLightbox.start(this); return false;}
			}
		}

		// loop through all area tags
		// todo: combine anchor & area tag loops
		for (var i=0; i< areas.length; i++){
			var area = areas[i];
			
			var relAttribute = String(area.getAttribute('rel'));
			
			// use the string.match() method to catch 'lightbox' references in the rel attribute
			if (area.getAttribute('href') && (relAttribute.toLowerCase().match('lightbox'))){
				area.onclick = function () {myLightbox.start(this); return false;}
			}
		}
	},
	
	
	//
	//	start()
	//	Display overlay and lightbox. If image is part of a set, add siblings to imageArray.
	//
	start: function(imageLink) {	

		hideSelectBoxes();
		hideFlash();

//フォトギャラリー対応 Start
		//loading（outerImageContainer領域）表示矩形を毎回250pxに設定。
		if(animate){
			Element.setWidth('outerImageContainer', 250);
			Element.setHeight('outerImageContainer', 250);
		} else {
			Element.setWidth('outerImageContainer', 1);
			Element.setHeight('outerImageContainer', 1);
		}
//フォトギャラリー対応 End

		// stretch overlay to fill page and fade in
		var arrayPageSize = getPageSize();
		Element.setWidth('overlay', arrayPageSize[0]);
		Element.setHeight('overlay', arrayPageSize[1]);

		new Effect.Appear('overlay', { duration: overlayDuration, from: 0.0, to: overlayOpacity });
		imageArray = [];
		imageNum = 0;		

		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName( imageLink.tagName);

		// if image is NOT part of a set..
		if((imageLink.getAttribute('rel') == 'lightbox')){
			// add single image to imageArray
//フォトギャラリー対応 Start
//			imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title')));
			imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title').escapeHTML(), imageLink.getAttribute('top_title').escapeHTML(), imageLink.getAttribute('image_update').escapeHTML(), imageLink.getAttribute('plan_name').escapeHTML(), imageLink.getAttribute('roomtype_icon'), imageLink.getAttribute('plan_text').escapeHTML(), imageLink.getAttribute('plan_url'), imageLink.getAttribute('plan_price'), imageLink.getAttribute('planquestion_link')));
//フォトギャラリー対応 End
		} else {
		// if image is part of a set..

			// loop through anchors, find other images in set, and add them to imageArray
			for (var i=0; i<anchors.length; i++){
				var anchor = anchors[i];
				if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))){
//フォトギャラリー対応 Start
//			imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
			imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title').escapeHTML(), anchor.getAttribute('top_title').escapeHTML(), anchor.getAttribute('image_update').escapeHTML(), anchor.getAttribute('plan_name').escapeHTML(), anchor.getAttribute('roomtype_icon'), anchor.getAttribute('plan_text').escapeHTML(), anchor.getAttribute('plan_url'), anchor.getAttribute('plan_price'), anchor.getAttribute('planquestion_link')));
//フォトギャラリー対応 End
				}
			}
			imageArray.removeDuplicates();
			while(imageArray[imageNum][0] != imageLink.getAttribute('href')) { imageNum++;}
		}

		// calculate top and left offset for the lightbox 
		var arrayPageScroll = getPageScroll();
//		var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 1000);
		var lightboxTop = arrayPageScroll[1];
		var lightboxLeft = arrayPageScroll[0];
		Element.setTop('lightbox', lightboxTop);
		Element.setLeft('lightbox', lightboxLeft);

		Element.show('lightbox');
		this.changeImage(imageNum);
	},

	//
	//	changeImage()
	//	Hide most elements and preload image in preparation for resizing image container.
	//
	changeImage: function(imageNum) {	

		activeImage = imageNum;	// update global var

		// hide elements during transition
//フォトギャラリー対応 Start
//		if(animate){ Element.show('loading');}
		if(animate){ 
			//loading表示用
			document.getElementById('outerImageContainer').style.visibility = 'visible';
			Element.show('loading');
			}
		Element.hide('titleDataContainer');
		Element.hide('bottomDataContainer');
//フォトギャラリー対応 End

		Element.hide('lightboxImage');
		//プラン表示 start
		Element.hide('planBox');
		//プラン表示 end
		Element.hide('hoverPhoto');
		Element.hide('hoverPhotoPrev');
		Element.hide('hoverPhotoNext');
		Element.hide('hoverNav');
		Element.hide('prevLink');
		Element.hide('nextLink');
		Element.hide('imageDataContainer');
//		Element.hide('numberDisplay');		

		imgPreloader = new Image();
		
		// once image is preloaded, resize image container
		imgPreloader.onload=function(){
			Element.setSrc('lightboxImage', imageArray[activeImage][0]);
			myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height);
			imgPreloader.onload=function(){};	//	clear onLoad, IE behaves irratically with animated gifs otherwise 
		}
		imgPreloader.src = imageArray[activeImage][0];
	},

	//
	//	resizeImageContainer()
	//
	resizeImageContainer: function( imgWidth, imgHeight) {

//フォトギャラリー対応 Start
//
//		// get curren width and height
//		this.widthCurrent = Element.getWidth('outerImageContainer');
//		this.heightCurrent = Element.getHeight('outerImageContainer');
//
//フォトギャラリー対応 End

		// get new width and height
//フォトギャラリー対応 Start
		//横幅が300px以下の場合は300pxとする。
//		if ( imgWidth < boxMinWidth ) {
//			imgWidth = boxMinWidth;
//		}
//フォトギャラリー対応 End

//フォトギャラリー対応 Start
		//元々の画像高さ
		var imgHeightDef = imgHeight;

		//縦が450px以下の場合は450pxとする。
		if ( imgHeight < boxMinHeight ) {
			imgHeight = boxMinHeight;
		}
//フォトギャラリー対応 End

//		var widthNew = (imgWidth  + (borderSize * 2));
		var widthNew = (imgWidthFixed  + (borderSize * 2));
//		var heightNew = (imgHeight  + (borderSize * 2));
		var heightNew = (imgHeight);//  + (borderSize * 1));

//フォトギャラリー対応 Start
//
//		// scalars based on change from old to new
//		this.xScale = ( widthNew / this.widthCurrent) * 100;
//		this.yScale = ( heightNew / this.heightCurrent) * 100;
//
//		// calculate size difference between new and old image, and resize if necessary
//		wDiff = this.widthCurrent - widthNew;
//		hDiff = this.heightCurrent - heightNew;
//
//		if(!( hDiff == 0)){ new Effect.Scale('outerImageContainer', this.yScale, {scaleX: false, duration: resizeDuration, queue: 'front'}); }
//		if(!( wDiff == 0)){ new Effect.Scale('outerImageContainer', this.xScale, {scaleY: false, delay: resizeDuration, duration: resizeDuration}); }
//
//		// if new and old image are same size and no scaling transition is necessary, 
//		// do a quick pause to prevent image flicker.
//		if((hDiff == 0) && (wDiff == 0)){
//			if (navigator.appVersion.indexOf("MSIE")!=-1){ pause(250); } else { pause(100);} 
//		}
//

		Element.setWidth('outerImageContainer',widthNew);
		Element.setHeight('outerImageContainer',heightNew);
//フォトギャラリー対応 End

//		Element.setHeight('prevLink', imgHeight);
//		Element.setHeight('nextLink', imgHeight);
		Element.setWidth( 'imageDataContainer', widthNew);

//フォトギャラリー対応 Start
		Element.setWidth( 'titleDataContainer', widthNew);
		//		document.getElementById('titleLine').style.width = widthNew - paddingSize;
		document.getElementById('titleLine').style.width = imgWidthFixed;
		
		Element.setWidth( 'bottomDataContainer', widthNew);
		
		
		//小さい写真の時に天地中央にする
		document.getElementById('imageContainer').style.padding = (heightNew - imgHeightDef) / 2 +' 0px';
//フォトギャラリー対応 End

		this.showImage();
	},
	
	//
	//	showImage()
	//	Display image and begin preloading neighbors.
	//
	showImage: function(){
		Element.hide('loading');

//フォトギャラリー対応 Start
		//loading非表示対応
		document.getElementById('outerImageContainer').style.visibility = 'hidden';
//フォトギャラリー対応 End

		new Effect.Appear('lightboxImage', { duration: resizeDuration, queue: 'end', afterFinish: function(){	myLightbox.updateDetails(); } });
		this.preloadNeighborImages();
	},

	//
	//	updateDetails()
	//	Display caption, image number, and bottom nav.
	//
	updateDetails: function() {

		// if caption is not null
		if(imageArray[activeImage][1]){
			Element.show('caption');
			Element.setInnerHTML( 'caption', imageArray[activeImage][1]);
		}

//フォトギャラリー対応 start
		Element.show('titleDataContainer');

		// if titleData is not null
		if(imageArray[activeImage][2]){
			Element.show('titleData');
			Element.setInnerHTML( 'titleData', imageArray[activeImage][2]);
		}

		// if image_update is not null
		//作業依頼 フォトギャラリーの日付をはずす_20090413 #20090413_03 にてコメントアウト
		//if(imageArray[activeImage][3]){
		//	Element.show('imageUpdate');
		//	Element.setInnerHTML( 'imageUpdate', "写真登録日 : " + imageArray[activeImage][3]);
		//}

//フォトギャラリー対応 end

		// if image is part of set display 'Image x of x' 
//		if(imageArray.length > 1){
//			Element.show('numberDisplay');
//			Element.setInnerHTML( 'numberDisplay', "Image " + eval(activeImage + 1) + " of " + imageArray.length);
//		}

		Element.show('imageDataContainer');

//フォトギャラリー対応 Start
//		new Effect.Appear('imageDataContainer', { sync: true, duration: resizeDuration });
//		new Effect.Parallel(
//			[ new Effect.SlideDown( 'imageDataContainer', { sync: true, duration: resizeDuration, from: 0.0, to: 1.0 }), 
//			  new Effect.Appear('imageDataContainer', { sync: true, duration: resizeDuration }) ], 
//			{ duration: resizeDuration, afterFinish: function() {
//				// update overlay size and update nav
//				var arrayPageSize = getPageSize();
//				Element.setHeight('overlay', arrayPageSize[1]);
//				myLightbox.updateNav();
//				}
//			} 
//		);

		var arrayPageSize = getPageSize();
		Element.setHeight('overlay', arrayPageSize[1]);
		myLightbox.updateNav();

//プラン表示 start
//		if(imageArray[activeImage][4] && imageArray[activeImage][5] && imageArray[activeImage][6] && imageArray[activeImage][7] && imageArray[activeImage][8] && imageArray[activeImage][9]){
		if(imageArray[activeImage][4] &&  imageArray[activeImage][6] && imageArray[activeImage][7] && imageArray[activeImage][8] && imageArray[activeImage][9]){

			Element.show('planBox');
			
			//プラン名
			Element.setInnerHTML('planName',imageArray[activeImage][4]);
			
			//部屋タイプアイコン
//			document.getElementById('roomtypeIconImg').src = imageArray[activeImage][5];
			if (imageArray[activeImage][5]) {
				document.getElementById('roomtypeIconImg').src = imageArray[activeImage][5];
                                document.getElementById('roomtypeIconImg').style.display = 'block';
			} else {
				document.getElementById('roomtypeIconImg').style.display = 'none'; 
			}
			
			//プランテキスト
			Element.setInnerHTML('planArticleText',imageArray[activeImage][6]);
			document.getElementById('planArticle').href = imageArray[activeImage][7];
			
			//プラン価格
			Element.setInnerHTML('planPrice',imageArray[activeImage][8]);
			
			//プランの最安料金リンク
			Element.setInnerHTML('planQuestionText','最安料金（目安）');
			document.getElementById('planQuestionText').href = imageArray[activeImage][9];
		}
//プラン表示 end

		Element.show('bottomText');
		Element.setInnerHTML( 'bottomText', "×閉じる、またはグレー背景をクリックすると一覧画面に戻ります。");
		Element.show('bottomDataContainer');
		
		//まとめて表示する。
		document.getElementById('hoverPhoto').style.visibility = 'visible';
		document.getElementById('hoverNav').style.visibility = 'visible';
		document.getElementById('titleDataContainer').style.visibility = 'visible';
		document.getElementById('outerImageContainer').style.visibility = 'visible';
		document.getElementById('imageDataContainer').style.visibility = 'visible';
		document.getElementById('bottomDataContainer').style.visibility = 'visible';
//フォトギャラリー対応 End

	},

	//
	//	updateNav()
	//	Display appropriate previous and next hover navigation.
	//
	updateNav: function() {

		Element.show('hoverNav');

		// if not first image in set, display prev image button
		if(activeImage != 0){
			Element.show('prevLink');
			document.getElementById('prevLink').onclick = function() {
				myLightbox.changeImage(activeImage - 1); return false;
			}
		}

		// if not last image in set, display next image button
		if(activeImage != (imageArray.length - 1)){
			Element.show('nextLink');
			document.getElementById('nextLink').onclick = function() {
				myLightbox.changeImage(activeImage + 1); return false;
			}
		}
		
		this.enableKeyboardNav();
		
		// 前後写真
		Element.show('hoverPhoto');
		if(activeImage != 0){
			document.getElementById('photoPrevImage').src = imageArray[activeImage - 1][0].replace('2L','S');
			Element.show('photoPrevImage');
			Element.show('hoverPhotoPrev');
			
			Element.setInnerHTML( 'photoPrevText', "前の写真");
			Element.show('photoPrevText');
		}else{
			document.getElementById('photoPrevImage').src = '/uw/images/spacer.gif';//IEで前の画像が残る対策
			Element.hide('photoPrevImage');
			Element.hide('hoverPhotoPrev');
		}
		
		if(activeImage != imageArray.length -1){
			document.getElementById('photoNextImage').src = imageArray[activeImage + 1][0].replace('2L','S');
			Element.show('photoNextImage');
			Element.show('hoverPhotoNext');
			
			Element.setInnerHTML( 'photoNextText', "次の写真");
			Element.show('photoNextText');
		}else{
			document.getElementById('photoNextImage').src = '/uw/images/spacer.gif';//IEで前の画像が残る対策
			Element.hide('photoNextImage');
			Element.hide('hoverPhotoNext');
		}
		
	},

	//
	//	enableKeyboardNav()
	//
	enableKeyboardNav: function() {
		document.onkeydown = this.keyboardAction; 
	},

	//
	//	disableKeyboardNav()
	//
	disableKeyboardNav: function() {
		document.onkeydown = '';
	},

	//
	//	keyboardAction()
	//
	keyboardAction: function(e) {
		if (e == null) { // ie
			keycode = event.keyCode;
			escapeKey = 27;
		} else { // mozilla
			keycode = e.keyCode;
			escapeKey = e.DOM_VK_ESCAPE;
		}

		key = String.fromCharCode(keycode).toLowerCase();
		
		if((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)){	// close lightbox
			myLightbox.end();
		} else if((key == 'p') || (keycode == 37)){	// display previous image
			if(activeImage != 0){
				myLightbox.disableKeyboardNav();
				myLightbox.changeImage(activeImage - 1);
			}
		} else if((key == 'n') || (keycode == 39)){	// display next image
			if(activeImage != (imageArray.length - 1)){
				myLightbox.disableKeyboardNav();
				myLightbox.changeImage(activeImage + 1);
			}
		}

	},

	//
	//	preloadNeighborImages()
	//	Preload previous and next images.
	//
	preloadNeighborImages: function(){

		if((imageArray.length - 1) > activeImage){
			preloadNextImage = new Image();
			preloadNextImage.src = imageArray[activeImage + 1][0];
		}
		if(activeImage > 0){
			preloadPrevImage = new Image();
			preloadPrevImage.src = imageArray[activeImage - 1][0];
		}
	
	},

	//
	//	end()
	//
	end: function() {

//フォトギャラリー対応 Start
		//まとめて非表示する。
		document.getElementById('hoverPhoto').style.visibility = 'hidden';
		document.getElementById('hoverNav').style.visibility = 'hidden';
		document.getElementById('titleDataContainer').style.visibility = 'hidden';
		document.getElementById('outerImageContainer').style.visibility = 'hidden';
		document.getElementById('imageDataContainer').style.visibility = 'hidden';
		document.getElementById('bottomDataContainer').style.visibility = 'hidden';
//フォトギャラリー対応 End

		this.disableKeyboardNav();
		Element.hide('lightbox');
		new Effect.Fade('overlay', { duration: overlayDuration});

		showSelectBoxes();
		showFlash();
	}
}

// -----------------------------------------------------------------------------------

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.com
//
function getPageScroll(){

	var xScroll, yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}

	arrayPageScroll = new Array(xScroll,yScroll) 
	return arrayPageScroll;
}

// -----------------------------------------------------------------------------------

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.com
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	
//	console.log(self.innerWidth);
//	console.log(document.documentElement.clientWidth);

	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

//	console.log("xScroll " + xScroll)
//	console.log("windowWidth " + windowWidth)

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}
//	console.log("pageWidth " + pageWidth)

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

// -----------------------------------------------------------------------------------

//
// getKey(key)
// Gets keycode. If 'x' is pressed then it hides the lightbox.
//
function getKey(e){
	if (e == null) { // ie
		keycode = event.keyCode;
	} else { // mozilla
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();
	
	if(key == 'x'){
	}
}

// -----------------------------------------------------------------------------------

//
// listenKey()
//
function listenKey () {	document.onkeypress = getKey; }
	
// ---------------------------------------------------

function showSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function hideSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}

// ---------------------------------------------------

function showFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "visible";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function hideFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "hidden";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "hidden";
	}

}


// ---------------------------------------------------

//
// pause(numberMillis)
// Pauses code execution for specified time. Uses busy code, not good.
// Help from Ran Bar-On [ran2103@gmail.com]
//

function pause(ms){
	var date = new Date();
	curDate = null;
	do{var curDate = new Date();}
	while( curDate - date < ms);
}
/*
function pause(numberMillis) {
	var curently = new Date().getTime() + sender;
	while (new Date().getTime();	
}
*/
// ---------------------------------------------------



function initLightbox() { myLightbox = new Lightbox(); }
Event.observe(window, 'load', initLightbox, false);


function _sleep(time){
var d1 = new Date().getTime();
var d2 = new Date().getTime();
while( d2 < d1 + time ){
d2=new Date().getTime();
}
return; 
}

