// JavaScript Document
// (c)pgmon from TheDesignum

var sozai = {
	init: function() {
	},
	dominit: function() {
		this.menuFunc();
		this.scrollFunc();
		this.zoomFunc();
	},
	indexFunc: function() {
		imgsCount = $('indexImage').getChildren('div').length;
		imgs = $$("#content .imageBlock");
		fadeShow = new Fx.Elements(imgs, { duration: 1500, wait: true });
		this.fadeFunc(imgsCount);
	},
	fadeFunc: function(state) {
		var o = {};
		
		state--;

		imgs.each(function(img, i) {
			if(i >= state) o[i] = { opacity: [0] };
		});

		(function(){
			fadeShow.start(o).chain(function(){
				if(state == 0) {
					imgs.set('opacity', 1);
					state = imgsCount;
				}
				sozai.fadeFunc(state);
			});
		}).delay(3000);
	},
	zoomFunc: function() {	
		var imageUrl = '';
		var links = $$('a');
		links.each(function(a, i) {
			if(a.get('rel') == 'zoom') a.set('id', 'zoom' + i);
		});

		$$('a').addEvent('mousedown',function() {
			if(this.get('rel') == 'zoom') imageUrl = this.get('href');
		});
		$$('a').addEvent('click',function() {
			if(this.get('rel') == 'zoom') {
				linkID = this.get('id');
				$(linkID).set('href', 'javascript:void(0)');
				new Element('div', {
					events: {
						click: function() {
							this.destroy();
							$(linkID).set('href', imageUrl);
						}
					},
					'id': 'cover'
				}).setStyles({ 'height': window.getScrollHeight(), 'width': window.getWidth() }).injectInside($('niceBody'));
				new Asset.image(imageUrl, {
					events: {
						click: function() {
							$('cover').destroy();
							$(linkID).set('href', imageUrl);
						}
					},
					onerror: function() { $('cover').destroy(); },
					onabort: function() { $('cover').destroy(); },
					onload: function() {
						this.set('id','zoom').inject('cover');
						sozai.resize();
					}
				});
			}
		});
	},
	resize: function() {
		if($('cover')) $('cover').setStyles({ 'height': window.getScrollHeight(), 'width': window.getWidth() });
		if($('zoom')) $('zoom').setStyle('margin', window.getHeight()/2 - $("zoom").getHeight()/2 + 'px 0px 0px -7px' );
	},
	menuFunc: function() {
		onMouseMenu = $$("#header .onMouseMenu");
		onMouseHook = $$("#header .headmenuHook");
		menuFx = new Fx.Elements(onMouseMenu, { duration: 250, wait: false, transition: Fx.Transitions.easeOut });
		
		onMouseMenu.set('opacity', 0);
		onMouseMenu.setStyle('visibility', 'visible');
		
		onMouseHook.addEvent('mouseenter',function() {
			var hookID = this.get('id')
			switch (hookID) {
				case 'hookA':
					sozai.menuOpacityFunc(0);
				break;
				case 'hookB':
					sozai.menuOpacityFunc(1);
				break;
				case 'hookC':
					sozai.menuOpacityFunc(2);
				break;
				case 'hookD':
					sozai.menuOpacityFunc(3);
				break;
				default:
			}
		});
		onMouseMenu.addEvent('mouseenter',function() {
			var thisID = this.get('id')
			switch (thisID) {
				case 'onMouseA':
					sozai.menuOpacityFunc(0);
				break;
				case 'onMouseB':
					sozai.menuOpacityFunc(1);
				break;
				case 'onMouseC':
					sozai.menuOpacityFunc(2);
				break;
				case 'onMouseD':
					sozai.menuOpacityFunc(3);
				break;
				default:
			}
		});
		onMouseHook.addEvent('mouseleave',function() {
			sozai.menuOpacityFunc(-1);
		});
		onMouseMenu.addEvent('mouseleave',function() {
			sozai.menuOpacityFunc(-1);
		});
		this.menuOpacityFunc(-1);
	},
	menuOpacityFunc: function(targetMenu) {
		var obj = {};
		onMouseMenu.each(function(cat, i) {	
			if(i == targetMenu) {
				obj[i] = { opacity: [1] };
			} else {
				obj[i] = { opacity: [0] };
			}
		});
		menuFx.start(obj);	
	},
	scrollFunc: function() {
		var winScroller = new Fx.Scroll(window, { duration: 1000, transition: Fx.Transitions.Quart.easeOut });
		//「ページトップに戻る」アクション
		$('pageTop').addEvent('click', function() {
			winScroller.toTop();			
		});
		$('pageTop').set('href', 'javascript:void(0);');
	}
}

window.addEvent('domready', function(){ sozai.dominit() });
//window.addEvent('load', function(){ dsninit() });　描画にずれ？
window.onresize = function() {
	sozai.resize();
};
window.onload = function() {
	sozai.init();
};
