

// ---------------------------------------------------
var onNUM = 0;
var H0 = 0;
var imgURL = "/shared/img/img_opening.jpg";
var imgLoading = "/shared/img/img_loading.gif";
var httpObj;
var nowDetail;
var nowThumb;
var uid;
var flashProxy;
var URL;


// ---------------------------------------------------
Object.extend(Element, {
	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.removeAttribute("src");
		element.setAttribute("src", src);
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href;
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}
});


// ---------------------------------------------------
var loadHTML = Class.create();
loadHTML.prototype = {
	
	
	// -----------------------------------------------
	initialize : function () {
		
		H0 = Element.getHeight('mainBody') - 300;
		
		//window.moveTo(0,0);
		//window.resizeTo(screen.availWidth,screen.availHeight);
		
		var objBody = document.getElementsByTagName("body").item(0);
		
		var element = $("col1");
		element.style.display = 'none';
		
		var element = $("col2");
		element.style.display = 'none';
		
		
		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','overlay');
		objOverlay.style.display = 'none';
		objOverlay.effect = null;
		objBody.appendChild(objOverlay);
		
		/*var objThumbTitle = document.createElement("div");
		objThumbTitle.setAttribute('id','thumbTitle');
		objThumbTitle.style.display = 'none';
		objThumbTitle.effect = null;
		objBody.appendChild(objThumbTitle);*/
		
		var objThumb = document.createElement("div");
		objThumb.setAttribute('id','thumb');
		objThumb.type = "";
		objBody.appendChild(objThumb);
		
		var objThumbContainer = document.createElement("div");
		objThumbContainer.setAttribute('id','thumbContainer');
		objThumbContainer.style.display = 'none';
		objThumbContainer.effect = null;
		//objThumbContainer.timer = null;
		objThumb.appendChild(objThumbContainer);
		
		var objImageContainer = document.createElement("div");
		objImageContainer.setAttribute('id','zoomContainer');
		objImageContainer.style.display = 'none';
		objImageContainer.effect = null;
		objImageContainer.timer = null;
		objBody.appendChild(objImageContainer);
		
		var objZoomImage = document.createElement("img");
		objZoomImage.setAttribute('id','zoomImage');
		objZoomImage.onclick = function() { fadeZoom(true); return false; }
		objImageContainer.appendChild(objZoomImage);
		
		var objZoomTitle = document.createElement("div");
		objZoomTitle.setAttribute('id','zoomTitle');
		objImageContainer.appendChild(objZoomTitle);
		
		var objFlash = document.createElement("div");
		objFlash.setAttribute('id','flashcontent');
		objBody.appendChild(objFlash);
		
		
		var arrayPageSize = getPageSize();
		Element.setWidth('startImgArea', arrayPageSize[2]);
		Element.setHeight('startImgArea', arrayPageSize[3]);
		
		setLogo(false);
		
		var imgW = 1300;
		var imgH = 870;
		var img = document.getElementById("opening");
		img.onload = function() {
			this.width = arrayPageSize[2];
			this.height = Math.floor(imgH*arrayPageSize[2]/imgW);
			fadeIn();
		}	
		Element.setSrc(img, imgURL);
	},
	
	
	// -----------------------------------------------
	setFunction: function() {
		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');
		
		for (var i=0; i<anchors.length; i++){
			var anchor = anchors[i];
			var relAttribute = String(anchor.getAttribute('rel'));
			
			if(Element.classNames(anchor) == "") {
				Element.addClassName(anchor, onNUM);
			}
			if(anchor.getAttribute('href') && (relAttribute.toLowerCase().match('next'))) {
				anchor.onclick = function () {
					myloadHTML.start(this);
					return false;
				}
			}
			if(anchor.getAttribute('href') && (relAttribute.toLowerCase().match('back'))) {
				anchor.onclick = function () {
					backSet();
					return false;
				}
			}
			if(anchor.getAttribute('href') && (relAttribute.toLowerCase().match('appear'))) {
				anchor.effect = null;
				anchor.onclick = function () {
					areaApp(this);
					return false;
				}
			}
			if(anchor.getAttribute('href') && (relAttribute.toLowerCase().match('detail'))) {
				anchor.thumb = false;
				anchor.onclick = function () {
					appDetail(this);
					return false;
				}
			}
		}
	},
	
	
	// -----------------------------------------------
	start: function(loadFile) {
		onNUM = loadFile.className;
		loadHTMLFile(loadFile.getAttribute('href'));
	}
	
	
}



// ---------------------------------------------------
function getPageSize() {
	
	var xScroll, yScroll;
	if(window.innerHeight && window.scrollMaxY){
		xScroll=document.body.scrollWidth;
		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;
	if(self.innerHeight){
		// all except Explorer
		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;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){
		pageWidth=windowWidth;
	} else {
		pageWidth=xScroll;
	}
	
	var BROWSNAME = getBrowserName();
	if( ((BROWSNAME=='Safari' || BROWSNAME=='Firefox' || BROWSNAME=='Opera') && onNUM != 0) ) {
		pageWidth = windowWidth -= 16;
	}
	
	arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return (arrayPageSize);
}


// ---------------------------------------------------
function setLogo( flag ) {
	var logoURL = !flag ? "/shared/img/img_logo0.png" : "/shared/img/img_logo1.png";
	var logoImg = document.getElementById("logo");
	Element.setSrc(logoImg, logoURL);
}//IE ERROR...


// ---------------------------------------------------
function getBrowserName() {
    var aName = navigator.appName.toUpperCase();
    var uName = navigator.userAgent.toUpperCase();
    if (uName.indexOf("SAFARI") >= 0)  return "Safari";
    if (uName.indexOf("OPERA") >= 0)  return "Opera";
    if (uName.indexOf("FIREFOX") >= 0)  return "Firefox";
    if (aName.indexOf("NETSCAPE") >= 0)  return "Netscape";
    if (aName.indexOf("MICROSOFT") >= 0) return "Explorer";
    return "";
}


// ---------------------------------------------------
function fadeIn() {
	var effect = new Effect.Appear("mainBody", { from:0.0, to:1.0, duration: 2,	
		afterFinishInternal: function(e) {
			var timer = setTimeout("endOpening()",3000);
			onNUM++;
			myloadHTML.setFunction();
		}
	});
}


// ---------------------------------------------------
function endOpening() {
	heightSet();
	
	var arrayPageSize = getPageSize();
	Element.setWidth('startImgArea', arrayPageSize[2]);
			
	nextSet();
}


// ---------------------------------------------------
function createXMLHttpRequest() {
	var XMLhttpObject = null;
	try{
		XMLhttpObject = new XMLHttpRequest();
	}catch(e){
		try{
			XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				return null;
			}
		}
	}
	return XMLhttpObject;
}


// ---------------------------------------------------
function loadHTMLFile(filename) {
	URL = filename;
	onNUM++;
		
	httpObj = createXMLHttpRequest();
	httpObj.onreadystatechange = displayData;
	httpObj.open("GET",filename+"?cache="+(new Date()).getTime(),true);
	httpObj.send(null);
}


// ---------------------------------------------------
function displayData() {
	var element = $("col" + onNUM);
	if ((httpObj.readyState == 4) && (httpObj.status == 200)) {
		Element.update(element, httpObj.responseText);
		
		var sNum = httpObj.responseText.indexOf('<title>') + 7;
		var eNum = httpObj.responseText.indexOf('</title>');
		var ttl = httpObj.responseText.substring(sNum, eNum);
		
		SWFAddress.setValue(URL);
		SWFAddress.setTitle(ttl);
		
		heightSet();
		nextSet();
		
		myloadHTML.setFunction();	
	}else{
		Element.update(element, "<p>Loading...</p>");
	}
}


// ---------------------------------------------------
function heightSet() {	
	var arrayPageSize = getPageSize();
	H1 = (onNUM==1) ? H0 - 300 : arrayPageSize[3] - 300;
	
	var element = $("col" + onNUM);
	element.style.height = H1 + "px";
	
	displaySet(true);
}


// ---------------------------------------------------
function hideOpening() {
	var element = $("startImgArea");
	element.style.display = 'none';
	var element = $("col" + onNUM);
	Element.scrollTo(element);
	
	setLogo(true);
}


// ---------------------------------------------------
function displaySet(flag) {
	var target = flag ? onNUM : (onNUM+1);
	var element = $("col" + target);
	if(flag)	element.style.display = 'block';
	else		element.style.display = 'none';
	
	if( typeof nowDetail != "undefined" ) {
		var obj;
		nowDetail = obj;
		
		var flashArea = $("flashcontent");
		var ret = Element.getStyle(flashArea, "visibility");
		if( ret == "visible" ) {
			hideMovie("displaySet");
		}
		hideOverlay();		
	}
}


// ---------------------------------------------------
function arrowSet(flag) {
	var element = $("arrowArea");
	if(flag)	element.style.display = 'block';
	else		element.style.display = 'none';
}


// ---------------------------------------------------
function nextSet() {
	var target = onNUM;
	if( onNUM == 1 )	heightSet();
	var effect = new Effect.ScrollTo("col"+target, { from:0.0, to:1.0, duration:1.0,
		afterFinishInternal: function(e) {
			if( onNUM == 1 ) {
				hideOpening();
				
				var address = SWFAddress.getValue();
				if( address != "/" ) {
					loadHTMLFile(address);
				}
			}
			if( onNUM > 1 )	 {
				arrowSet(true);
			}
			
			//SWFAddress.addEventListener(SWFAddressEvent.CHANGE, handleChange);
		}
	});
}


// ---------------------------------------------------
function handleChange(event) {
	var address = SWFAddress.getValue();
	alert(address);
	if( address != "/" ) {
		//loadHTMLFile(address);
	}
}


// ---------------------------------------------------
function backSet() {
	var target = onNUM - 1;
	var effect = new Effect.ScrollTo("col"+target, { from:0.0, to:1.0, duration:.5,
		beforeStartInternal:function(e) {
			arrowSet(false);
		},
		afterFinishInternal:function(e) {
			while(onNUM > target) {
				onNUM--;
				SWFAddress.setValue("/");
				SWFAddress.setTitle("drawing and manual");
				displaySet(false);
			}
		}
	});
}


// ---------------------------------------------------
function areaApp(appName) {
	var target = $(appName.getAttribute('title'));
	if( !appName.effect ) {
		if( !Element.visible(target) ) {
			appName.effect = new Effect.BlindDown(target, { duration:1.0,
				afterFinishInternal:function(e){ appName.effect=null; }
			});
		}
		else {
			appName.effect = new Effect.BlindUp(target, { duration:.5, 
				afterFinishInternal:function(e){
					e.element.hide().undoClipping();
					appName.effect = null;
				}
			});
		}
	}
}


// ---------------------------------------------------
function appDetail(detailName) {
	
	var filename = detailName.getAttribute('href');

	if( !detailName.thumb ) {
		httpObj = createXMLHttpRequest();
		httpObj.onreadystatechange = setThumb;
		httpObj.open("GET",filename,true);
		httpObj.send(null);
		detailName.thumb = true;
		
		var element = $("thumbContainer");
		element.style.display = 'none';
		
		var element = $("thumb");
		element.top = chkScroll() + 113;
		element.style.left = '700px';
		element.style.top = element.top + 'px';
		element.style.padding = '5px 0 0 5px';
		element.type = detailName.getAttribute('rel');
		
		/*var elementTitle = $("thumbTitle");
		elementTitle.style.display = 'none';
		elementTitle.innerHTML = detailName.innerHTML;
		elementTitle.style.left = '700px';
		elementTitle.style.padding = '5px 0 0 5px';*/
		
		setNowThumb(detailName);
		nowThumb = detailName;	
	}
}


// ---------------------------------------------------
function hideThumb() {
	var element = $("thumbContainer");
	var thumb = $("thumb");
	//var thumbTitle = $("thumbTitle");
	var ret = Element.getStyle(element, "display");
	
	if( ret == "block" ) {
		element.style.display = "none";
		thumb.style.display = "none";
		//thumbTitle.style.display = "none";
	}
}


// ---------------------------------------------------
function fadeThumb() {
	
	//alert("[fadeThumb]");
	
	var element = $("thumbContainer");
	var thumb = $("thumb");
	//var thumbTitle = $("thumbTitle");
	
	if( element.effect ) {
		element.effect.cancel();
		element.effect = null;
	}
/*	if( element.timer ) {
		clearTimeout(element.timer);
		element.timer = null;
	}*/
	element.effect = new Effect.Fade(element, { duration:.2,
		afterFinishInternal:function(e){ thumb.style.display = "none"; }
	});
	
	/*if( thumbTitle.effect ) {
		thumbTitle.effect.cancel();
		thumbTitle.effect = null;
	}
	thumbTitle.effect = new Effect.Fade(thumbTitle, { duration:.2,
		afterFinishInternal:function(e){ thumbTitle.style.display = "none"; }
	});*/
	
	nowThumb.thumb = false;
}


// ---------------------------------------------------
function appThumb() {
	var element = $("thumbContainer");
	var thumb = $("thumb");
	//var thumbTitle = $("thumbTitle");
	
	thumb.style.display = "block";
	//thumbTitle.style.top = (thumb.top + Element.getHeight(element)) + 'px';
	
	element.effect = new Effect.Appear(element, { from:0.0, to:1.0, duration:.5,
		afterFinishInternal:function(e){
			element.effect=null;
		}
	});
	/*thumbTitle.effect = new Effect.Appear(thumbTitle, { from:0.0, to:1.0, duration:.5,
		afterFinishInternal:function(e){
			thumbTitle.effect=null;
		}
	});*/
}


// ---------------------------------------------------
function setThumb() {
	var element = $("thumbContainer");
	var thumb = $("thumb");
	//var thumbTitle = $("thumbTitle");
	
	if ((httpObj.readyState == 4) && (httpObj.status == 200)) {
		appOverlay();
		
		Element.update(element, httpObj.responseText);
		
		if( thumb.type != "detailStaff" ) {
			var thumCnt = document.getElementsByTagName("img").length - 4;
			if( thumCnt >= 3 )	thumb.style.width = '285px';
			else				thumb.style.width = 95*thumCnt + 'px';
		} else {
			thumb.style.width = '300px';
		}
		
		if( element.effect ) {
			element.effect.cancel();
			element.effect = null;
		}
		/*if( element.timer ) {
			clearTimeout(element.timer);
			element.timer = null;
		}*/
		
		setZoomAction();
		
		//thumbTitle.style.top = (thumb.top + Element.getHeight(element)) + 'px';	
	}
	else{
		Element.update(element, "");
	}
}


// ---------------------------------------------------
function setZoomAction() {
	var anchors = document.getElementsByTagName('a');	
	var flag = true;
	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];
		var relAttribute = String(anchor.getAttribute('rel'));			
		if(anchor.getAttribute('href') && (relAttribute.toLowerCase().match('zoom'))) {
			if(flag) {
				appZoom(anchor);
				flag = false;
			}
			anchor.onclick = function () {
				fadeThumb();
				appZoom(this);
				return false;
			}
		}
		if(anchor.getAttribute('href') && (relAttribute.toLowerCase().match('movie'))) {
			if(flag) {
				appMovie(anchor);
				flag = false;
			}
			anchor.onclick = function () {
				fadeThumb();
				appMovie(this);
				return false;
			}
		}
	}	
}


// ---------------------------------------------------
function appMovie(movie) {
	var flashArea = $("flashcontent");
	var thumb = $("thumb");
	var container = $("thumbContainer");
	/*if( container.timer ) {
		clearTimeout(container.timer);
		container.timer = null;
	}*/
	
	flashArea.style.visibility = "visible";
	flashArea.style.left = '700px';
	flashArea.style.top = thumb.top + 'px';
	flashArea.style.padding = '5px';
	
	uid = new Date().getTime();
	flashProxy = new FlashProxy(uid, '/shared/swf/JavaScriptFlashGateway.swf');
	var flv = movie.getAttribute('href');
	var so = new SWFObject("/shared/swf/flvplayer.swf", "mymovie", "320", "240", "8", "#FFFFFF");
	so.addParam("allowScriptAccess", "sameDomain");
	so.addParam("wmode", "transparent");
	so.addParam("menu", "false");
	so.addVariable("lcId", uid);
	so.addVariable("flvPath", flv);
	so.write(flashArea);
	
}


// ---------------------------------------------------
function hideMovie(type) {
	var flashArea = $("flashcontent");
	flashArea.style.visibility = "hidden";		
	flashProxy.call('fadeMovie');
		
	if( type != "displaySet" ) {
		hideOverlay();
	}
}


// ---------------------------------------------------
function appZoom(zoomImage) {	
	var imgZoom = $("zoomContainer");
	var thumb = $("thumb");
	var imgPreloader = new Image();
	var container = $("thumbContainer");
	
	imgZoom.style.left = '700px';
	imgZoom.style.top = thumb.top + 'px';
	imgZoom.style.padding = '5px';
	
	imgPreloader.onload = function() {
		Element.setSrc('zoomImage', zoomImage.getAttribute('href'));
		
		if( thumb.type == "detailStaff" ) {
			var elementTitle = $("zoomTitle");
			elementTitle.innerHTML = zoomImage.getAttribute('title');
		}
		else {
			var elementTitle = $("zoomTitle");
			elementTitle.innerHTML = "";
		}
		
		if( imgZoom.effect ) {
			imgZoom.effect.cancel();
			imgZoom.effect = null;
		}
		imgZoom.effect = new Effect.Appear('zoomContainer', { from:0.0, to:1.0,  duration:.2,
			afterFinishInternal:function(e){
				imgZoom.effect = null;
				clearTimeout(imgZoom.timer);
				imgZoom.timer = null;
				imgZoom.timer = setTimeout("fadeZoom(true)",2000);
			}
		});
		
		imgPreloader.onload=function(){};	//	clear onLoad, IE behaves irratically with animated gifs otherwise 
	}
	imgPreloader.src = zoomImage.getAttribute('href');
	
}


// ---------------------------------------------------
function hideZoom() {
	var element = $("zoomContainer");
	if( element.effect ) {
		element.effect.cancel();
		element.effect = null;
	}
	
	if( element.timer ) {
		clearTimeout(element.timer);
		element.timer = null;
	}
	
	var ret = Element.getStyle(element, "display");
	if( ret == "block" ) {
		element.style.display = "none";
	}
}


// ---------------------------------------------------
function fadeZoom(flag) {	
	var imgZoom = $("zoomContainer");
	if( imgZoom.effect ) {
		imgZoom.effect.cancel();
		imgZoom.effect = null;
	}
	
	if( imgZoom.timer ) {
		clearTimeout(imgZoom.timer);
		imgZoom.timer = null;
	}
	imgZoom.effect = new Effect.Fade('zoomContainer', { duration:.2,
		afterFinishInternal:function(e){
			hideZoom();
			if( flag ) appThumb();
		}
	});		
}


// ---------------------------------------------------
function appOverlay() {
	var element = $("overlay");
	var arrayPageSize = getPageSize();
	Element.setWidth(element, arrayPageSize[0]);
	Element.setHeight(element, arrayPageSize[1]);
	if( element.effect ) {
		element.effect.cancel();
		element.effect = null;
	}
	element.effect = new Effect.Appear(element, { from:0.0, to:0.7,  duration:.2, afterFinishInternal:function(e){ element.effect=null; } });
	element.onclick = function() { fadeOverlay(); return false; }
}


// ---------------------------------------------------
function fadeOverlay() {
	var element = $("overlay");
	if( element.effect ) {
		element.effect.cancel();
		element.effect = null;
	}
	element.effect = new Effect.Fade(element, { duration:.2 });
	
	fadeThumb();
	fadeZoom(false);
	//hideMovie();
}


// ---------------------------------------------------
function hideOverlay() {
	var element = $("overlay");
	if( element.effect ) {
		element.effect.cancel();
		element.effect = null;
	}
	element.effect = new Effect.Fade(element, { duration:.2 });
	
	hideThumb();
	hideZoom();
	//hideMovie();
}


// ---------------------------------------------------
function setNowThumb(obj) {
	if( typeof nowDetail != "undefined" ) {
		nowDetail.thumb = false;
	}
	nowDetail = obj;
}


// ---------------------------------------------------
function chkScroll() {
	var scrollTop  = document.body.scrollTop  || document.documentElement.scrollTop;
	return scrollTop;
}


// ---------------------------------------------------
function getMousePosition(e) {
	var obj = new Object();
	if(e) {
		obj.x = e.pageX;
		obj.y = e.pageY;
	}
	else {
		obj.x = event.x + document.body.scrollLeft;
		obj.y = event.y + document.body.scrollTop;
	}
	return obj;
}



// ---------------------------------------------------
function sendForm() {
	
	var element = $('container');
	var a = new Ajax.Request(
		"/mailForm.php",
		{
			method: 'post',
			postBody: Form.serialize("inquiry"),
			onComplete: function(request) {
				element.innerHTML = request.responseText;
				var effect = new Effect.BlindDown(element, { duration:.5,
					afterFinishInternal:function(e){}
				});				
			},
			onFailure: function(request) {
				element.innerHTML = "読み込みに失敗しました。";
			},
			onException: function (request) {
				element.innerHTML = "読み込み中にエラーが発生しました。";
			}
		}
	);

}




// ---------------------------------------------------
function initloadHTML() {
	myloadHTML = new loadHTML();
}
Event.observe(window, 'load', initloadHTML, false);
