// #require mootools.js
if (window.addEvent) {

// Fix Opacity Treatment
Element.Properties.opacity.set = function (opacity, novisibility) {
	if (!novisibility){
		if (opacity == 0) {
			if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';
		} else {
			if (this.style.visibility != 'visible') this.style.visibility = 'visible';
		}
	}
	if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;
	if (Browser.Engine.trident) {
		if (opacity == 1) {
			this.style.filter = this.style.filter.replace(/alpha\(opacity=[0-9\.]+\)/, '').clean();
		} else {
			try {
				if (this.filters && this.filters['alpha']) {
					this.filters['alpha'].opacity = opacity * 100;
				} else {
					this.style.filter = (this.style.filter + ' alpha(opacity=' + opacity * 100 + ')').clean();
				}
			} catch (ex) {
				// When this element is not injected inside DOM.
				this.style.filter = (this.style.filter + ' alpha(opacity=' + opacity * 100 + ')').clean();
			}
		}
	}
	this.style.opacity = opacity;
	this.store('opacity', opacity);
}


// Adjust Transitions.Expo
Fx.Transitions.extend({
	Expo: function(p){
//		return Math.pow(2, 8 * (p - 1));	// original
		return Math.pow(2, 8 * (p - 1)) - 1/256;	// result is exactly 0 when p := 0
//		return (Math.pow(2, 8 * p) - 1) / 255;	// result is exactly 0 when p := 0, and exactly 1 when p := 1
	},
	SineInExpoOut: function (p) {
		if (p < 0.3) {
			return Fx.Transitions.Sine.easeIn(p / 0.3) / 2;
		} else {
			return 1 - Fx.Transitions.Expo.easeIn((1 - p) / 0.7) / 2;
		}
	}
});

// PullDownMenu
window.addEvent('domready', function(){
	//1
	var parentMenu = $("link-feature");
	parentMenu.removeProperty("title");
	var childMenu = parentMenu.getNext("#feature-sub");//get childMenu
	 childMenu.getChildren().each(function(li){
			//li.getElement("a").removeProperty("title");
	});
	var timer =null;
	parentMenu.addEvents({
		"mouseover":function(){
			if (Browser.Engine.trident){
			//IEの場合
			//全部非表示して表示
			//$$('#feature-sub').setStyle('display','none');
			$$('#function-sub').setStyle('display','none');
			$$('#utilization-sub').setStyle('display','none');
			$$('#showcase-sub').setStyle('display','none');
			$$('#support-sub').setStyle('display','none');
			childMenu.setStyle('visibility','visible');
			childMenu.setStyle("display","block");
			if(timer){$clear(timer);}
			} else {
			//IE以外の場合
			//全部非表示してアニメーションで表示
			$$('#feature-sub').setStyle('display','block');
			$$('#function-sub').setStyle('display','none');
			$$('#utilization-sub').setStyle('display','none');
			$$('#showcase-sub').setStyle('display','none');
			$$('#support-sub').setStyle('display','none');
			childMenu.setStyles('display','block');
			childMenu.setStyle('visibility','visible');
			childMenu.setStyle('opacity','0');
			childMenu.set('tween', {duration: 350}); 
			childMenu.fade('in');
			if(timer){$clear(timer);}
			}
		},
		"mouseleave":function(){
			if (Browser.Engine.trident){
			//IEの場合
			//非表示
			fnc = function(){childMenu.setStyle("display","none");}
			timer = fnc.delay(250,this)
			} else {
			//IE以外の場合
			//アニメーションで非表示
			childMenu.set('tween', {duration: 250}); 
			childMenu.fade('out');
			}
		}
	});
	childMenu.addEvents({
		"mouseover":function(){
			if (Browser.Engine.trident){
			//IEの場合
			//表示
			this.setStyles({"display":"block"});
			if(timer){$clear(timer);}
			} else {
			//IE以外の場合
			//アニメーションで表示
			this.setStyles('display','block');
			childMenu.fade('in');
			if(timer){$clear(timer);}
			}
		},
		"mouseleave":function(){
			if (Browser.Engine.trident){
			//IEの場合
			//非表示
			fnc = function(){this.setStyle("display","none");}
			timer = fnc.delay(250,this)
			} else {
			//IE以外の場合
			//アニメーションで非表示
			childMenu.set('tween', {duration: 250}); 
			childMenu.fade('out');
			fnc = function(){this.setStyle('visibility','hidden');}
			timer = fnc.delay(1000,this);
			}
		}
	});
	//2
	var parentMenu02 = $("link-function");
	parentMenu02.removeProperty("title");
	var childMenu02 = parentMenu02.getNext("#function-sub");//get childMenu
	 childMenu02.getChildren().each(function(li){
			//li.getElement("a").removeProperty("title");
	});
	var timer =null;
	parentMenu02.addEvents({
		"mouseover":function(){
			if (Browser.Engine.trident){
			$$('#feature-sub').setStyle('display','none');
			//$$('#function-sub').setStyle('display','none');
			$$('#utilization-sub').setStyle('display','none');
			$$('#showcase-sub').setStyle('display','none');
			$$('#support-sub').setStyle('display','none');
			childMenu02.setStyle('visibility','visible');
			childMenu02.setStyle("display","block");
			if(timer){$clear(timer);}
			} else {
			$$('#feature-sub').setStyle('display','none');
			$$('#function-sub').setStyle('display','block');
			$$('#utilization-sub').setStyle('display','none');
			$$('#showcase-sub').setStyle('display','none');
			$$('#support-sub').setStyle('display','none');
			childMenu02.setStyles('display','block');
			childMenu02.setStyle('visibility','visible');
			childMenu02.setStyle('opacity','0');
			childMenu02.set('tween', {duration: 350}); 
			childMenu02.fade('in');
			if(timer){$clear(timer);}
			}
		},
		"mouseleave":function(){
			if (Browser.Engine.trident){
			fnc = function(){childMenu02.setStyle("display","none");}
			timer = fnc.delay(250,this)
			} else {
			childMenu02.set('tween', {duration: 250}); 
			childMenu02.fade('out');
			}
		}
	});
	childMenu02.addEvents({
		"mouseover":function(){
			if (Browser.Engine.trident){
			this.setStyles({"display":"block"});
			if(timer){$clear(timer);}
			} else {
			this.setStyles('display','block');
			childMenu02.fade('in');
			if(timer){$clear(timer);}
			}
		},
		"mouseleave":function(){
			if (Browser.Engine.trident){
			fnc = function(){this.setStyle("display","none");}
			timer = fnc.delay(250,this);
			} else {
			childMenu02.set('tween', {duration: 250}); 
			childMenu02.fade('out');
			fnc = function(){this.setStyle('visibility','hidden');}
			timer = fnc.delay(1000,this);

			}
		}
	});
	//3
	var parentMenu03 = $("link-utilization");
	parentMenu03.removeProperty("title");
	var childMenu03 = parentMenu03.getNext("#utilization-sub");//get childMenu
	 childMenu03.getChildren().each(function(li){
			//li.getElement("a").removeProperty("title");
	});
	var timer =null;
	parentMenu03.addEvents({
		"mouseover":function(){
			if (Browser.Engine.trident){
			$$('#feature-sub').setStyle('display','none');
			$$('#function-sub').setStyle('display','none');
			//$$('#utilization-sub').setStyle('display','none');
			$$('#showcase-sub').setStyle('display','none');
			$$('#support-sub').setStyle('display','none');
			childMenu03.setStyle('visibility','visible');
			childMenu03.setStyle("display","block");
			if(timer){$clear(timer);}
			} else {
			$$('#feature-sub').setStyle('display','none');
			$$('#function-sub').setStyle('display','none');
			$$('#utilization-sub').setStyle('display','block');
			$$('#showcase-sub').setStyle('display','none');
			$$('#support-sub').setStyle('display','none');
			childMenu03.setStyles('display','block');
			childMenu03.setStyle('visibility','visible');
			childMenu03.setStyle('opacity','0');
			childMenu03.set('tween', {duration: 350}); 
			childMenu03.fade('in');
			if(timer){$clear(timer);}
			}
		},
		"mouseleave":function(){
			if (Browser.Engine.trident){
			fnc = function(){childMenu03.setStyle("display","none");}
			timer = fnc.delay(250,this)
			} else {
			childMenu03.set('tween', {duration: 250}); 
			childMenu03.fade('out');
			}
		}
	});
	childMenu03.addEvents({
		"mouseover":function(){
			if (Browser.Engine.trident){
			this.setStyles({"display":"block"});
			if(timer){$clear(timer);}
			} else {
			this.setStyles('display','block');
			childMenu03.fade('in');
			if(timer){$clear(timer);}
			}
		},
		"mouseleave":function(){
			if (Browser.Engine.trident){
			fnc = function(){this.setStyle("display","none");}
			timer = fnc.delay(250,this);
			} else {
			childMenu03.set('tween', {duration: 250}); 
			childMenu03.fade('out');
			fnc = function(){this.setStyle('visibility','hidden');}
			timer = fnc.delay(1000,this);
			}
		}
	});
	//4
	var parentMenu04 = $("link-showcase");
	parentMenu04.removeProperty("title");
	var childMenu04 = parentMenu04.getNext("#showcase-sub");//get childMenu
	 childMenu04.getChildren().each(function(li){
			//li.getElement("a").removeProperty("title");
	});
	var timer =null;
	parentMenu04.addEvents({
		"mouseover":function(){
			if (Browser.Engine.trident){
			$$('#feature-sub').setStyle('display','none');
			$$('#function-sub').setStyle('display','none');
			$$('#utilization-sub').setStyle('display','none');
			//$$('#showcase-sub').setStyle('display','none');
			$$('#support-sub').setStyle('display','none');
			childMenu04.setStyle('visibility','visible');
			childMenu04.setStyle("display","block");
			if(timer){$clear(timer);}
			} else {
			$$('#feature-sub').setStyle('display','none');
			$$('#function-sub').setStyle('display','none');
			$$('#utilization-sub').setStyle('display','none');
			$$('#showcase-sub').setStyle('display','block');
			$$('#support-sub').setStyle('display','none');
			childMenu04.setStyles('display','block');
			childMenu04.setStyle('visibility','visible');
			childMenu04.setStyle('opacity','0');
			childMenu04.set('tween', {duration: 350}); 
			childMenu04.fade('in');
			if(timer){$clear(timer);}
			}
		},
		"mouseleave":function(){
			if (Browser.Engine.trident){
			fnc = function(){childMenu04.setStyle("display","none");}
			timer = fnc.delay(250,this)
			} else {
			childMenu04.set('tween', {duration: 250}); 
			childMenu04.fade('out');
			}
		}
	});
	childMenu04.addEvents({
		"mouseover":function(){
			if (Browser.Engine.trident){
			this.setStyles({"display":"block"});
			if(timer){$clear(timer);}
			} else {
			this.setStyles('display','block');
			childMenu04.fade('in');
			if(timer){$clear(timer);}
			}
		},
		"mouseleave":function(){
			if (Browser.Engine.trident){
			fnc = function(){this.setStyle("display","none");}
			timer = fnc.delay(250,this);
			} else {
			childMenu04.set('tween', {duration: 250}); 
			childMenu04.fade('out');
			fnc = function(){this.setStyle('visibility','hidden');}
			timer = fnc.delay(1000,this);
			}
		}
	});
	//5
	var parentMenu05 = $("link-support");
	parentMenu05.removeProperty("title");
	var childMenu05 = parentMenu05.getNext("#support-sub");//get childMenu
	 childMenu05.getChildren().each(function(li){
			//li.getElement("a").removeProperty("title");
	});
	var timer =null;
	parentMenu05.addEvents({
		"mouseover":function(){
			if (Browser.Engine.trident){
			$$('#feature-sub').setStyle('display','none');
			$$('#function-sub').setStyle('display','none');
			$$('#utilization-sub').setStyle('display','none');
			$$('#showcase-sub').setStyle('display','none');
			//$$('#support-sub').setStyle('display','none');
			childMenu05.setStyle('visibility','visible');
			childMenu05.setStyle("display","block");
			if(timer){$clear(timer);}
			} else {
			$$('#feature-sub').setStyle('display','none');
			$$('#function-sub').setStyle('display','none');
			$$('#utilization-sub').setStyle('display','none');
			$$('#showcase-sub').setStyle('display','none');
			$$('#support-sub').setStyle('display','block');
			childMenu05.setStyles('display','block');
			childMenu05.setStyle('visibility','visible');
			childMenu05.setStyle('opacity','0');
			childMenu05.set('tween', {duration: 350}); 
			childMenu05.fade('in');
			if(timer){$clear(timer);}
			}
		},
		"mouseleave":function(){
			if (Browser.Engine.trident){
			fnc = function(){childMenu05.setStyle("display","none");}
			timer = fnc.delay(250,this)
			} else {
			childMenu05.set('tween', {duration: 250}); 
			childMenu05.fade('out');
			}
		}
	});
	childMenu05.addEvents({
		"mouseover":function(){
			if (Browser.Engine.trident){
			this.setStyles({"display":"block"});
			if(timer){$clear(timer);}
			} else {
			this.setStyles('display','block');
			childMenu05.fade('in');
			if(timer){$clear(timer);}
			}
		},
		"mouseleave":function(){
			if (Browser.Engine.trident){
			fnc = function(){this.setStyle("display","none");}
			timer = fnc.delay(250,this);
			} else {
			childMenu05.set('tween', {duration: 250}); 
			childMenu05.fade('out');
			fnc = function(){this.setStyle('visibility','hidden');}
			timer = fnc.delay(1000,this);
			}
		}
	});

});



// RollOver & BrightOver
var selectors = [
	"a.rollover",	// 一般A
	"img.rollover",	// 一般B
	"input.rollover"	// 一般C
];
// RollOver
window.addEvent('domready', function(){
	// 画像の切り替え表示
	var fn_mover_factory = function(theObj) {
		return function () {
			theObj.target.src = theObj.sw_img.src;
		};
	};
	var fn_mout_factory = function(theObj) {
		return function () {
			theObj.target.src = theObj.or_img.src;
		};
	};
	(function (selectors) {
		selectors = selectors.filter(function(flg){return !!flg;});
		return $$(selectors.join(','));
	})(selectors).each(function (elm) {
		var imgs = [elm];
		if (!elm.src) {
			imgs = elm.getElements('img');
		}
		imgs.each(function (img) {
			if (img.src.test(/^.+-(act|on)\.(gif|jpe?g|png)(\?.*)?$/))	return;
			var or_img = new Image;
			var sw_img = new Image;
			if (window.IEPNGFIX && (img.filters[IEPNGFIX.filter] || (/\.png(\?.*)?$/i).test(img.src))) {
				IEPNGFIX.fix(img);
				or_img.src = img.filters[IEPNGFIX.filter].src;
				sw_img.src = or_img.src.replace(
					/^(.+)(?:-on)?(\.(gif|jpe?g|png)(\?.*)?)$/,
					"$1-on$2");
				var obj = {
					"target": img.filters[IEPNGFIX.filter],
					"or_img": or_img,
					"sw_img": sw_img
				};
			} else {
				or_img.src = img.src;
				sw_img.src = img.src.replace(
					/^(.+)(?:-on)?(\.(gif|jpe?g|png)(\?.*)?)$/,
					"$1-on$2");
				var obj = {
					"target": img,
					"or_img": or_img,
					"sw_img": sw_img
				};
			}
			this.addEvent('mouseenter', fn_mover_factory(obj));
			this.addEvent('mouseleave', fn_mout_factory(obj));
		}, elm);
	});
});
// BrightOver for IE8
if (Browser.Engine.trident && document.documentMode && document.documentMode >= 8) {
	window.addEvent('domready', function(){
		$$('.brightover').each(function (item) {
			var imgs = item.getElements('img');
			if (imgs.length) {
				item.addEvent('mouseenter', function () {
					imgs.setOpacity(0.7);
				}).addEvent('mouseleave', function () {
					imgs.setOpacity(1.0);
				});
			} else {
				item.addEvent('mouseenter', function () {
					item.setOpacity(0.7);
				}).addEvent('mouseleave', function () {
					item.setOpacity(1.0);
				});
			}
		});
		$$('.brightover_rev').each(function (item) {
			var imgs = item.getElements('img');
			if (imgs.length) {
				item.addEvent('mouseenter', function () {
					imgs.setOpacity(1.0);
				}).addEvent('mouseleave', function () {
					imgs.setOpacity(0.7);
				});
				imgs.setOpacity(0.7);
			} else {
				item.addEvent('mouseenter', function () {
					item.setOpacity(1.0);
				}).addEvent('mouseleave', function () {
					item.setOpacity(0.7);
				});
				item.setOpacity(0.7);
			}
		});
	});
}
// BrightOver for IE6,7
if (Browser.Engine.trident && !(document.documentMode && document.documentMode >= 8)) {
	window.addEvent('domready', function(){
		$$('.brightover').each(function (item) {
			item.addEvent('mouseenter', function () {
				item.setOpacity(0.7);
			}).addEvent('mouseleave', function () {
				item.setOpacity(1.0);
			});
		});
		$$('.brightover_rev').each(function (item) {
			item.addEvent('mouseenter', function () {
				item.setOpacity(1.0);
			}).addEvent('mouseleave', function () {
				item.setOpacity(0.7);
			});
			item.setOpacity(0.7);
		});
	});
}

// Smooth Scroll
var evDuration;
var evTransition;
window.addEvent('domready', function () {
	//高さ算出
	var scroll = $('main-inner').getScrollSize();  //コンテンツエリアの高さ
	var sideHeight = $('sidebar').getScrollSize(); //右エリアの高さ
	var addHeight = scroll.y - sideHeight.y ; //上記2つの差分A
	$$('#sidebar-inner').setStyle('height', addHeight);//差分Aを高さとする。
	//スムーススクロール
	var scrollCtrl = (window.SmoothScroll
		? new SmoothScroll({links: 'a.innerlink, area.innerlink', transition: Fx.Transitions.SineInExpoOut.easeIn})
		: {timer: false, addEvent: $empty}
	);

	});

}

// ElevatorMenu(PageTop-Link)
var mooFollow = new Class({
	
	Implements: [Options,Events],

	options: {
		transition:"sine:out",
		duration:"long",
		link:"cancel",
		top:null,
		watermark:false,
		watermarkHtml:"▲このページの先頭へ",
		watermarkHref:"#header",
		SmoothScroll:false,
		onStart:$empty,
		onComplete:$empty
	},
	initialize: function(element,options) {
		this.setOptions(options);
		if(element==null) this.element = $("follower");
		else this.element = element;
		this.tran = this.options.transition;
		this.dur = this.options.duration;
		this.link = this.options.link;
		this.position = null;
		this.parent = this.element.getParent();
		this.parentPosition = null;
		this.scrollsize = null;
		this.fx = null;
		this.setElPosition();
		this.setElStyles();
		this.makeFx();
		if(this.options.watermark == true) this.watermark();
		if(this.options.top === null) this.top = this.position.y;
		else this.top = this.options.top;
		
		window.addEvents({
			"scroll":function(){this.follow();}.bind(this),
			"domready":function(){this.follow();}.bind(this)
			});
		
		return true;
	},
	setElPosition: function() {
		this.parent.setStyles({"position":"relative"});
		this.position = this.element.getPosition(this.parent);
		this.parentPosition = this.parent.getPosition();
	},
	makeFx:function(){
		this.fx = new Fx.Morph(this.element,{duration:this.dur,transition:this.tran,link:this.link,
		onStart:function(){
			this.fireEvent('start');
			if(this.options.watermark == true){
				this.watermark.fade("hide");
				this.addWatermark();
			}
		}.bind(this),
		onComplete:function(){
			this.fireEvent('complete');
			if(this.options.watermark == true) this.watermark.fade("in",{duration:750});
		}.bind(this)});
	},
	setScrollsize:function(){
		this.scrollsize = window.getScroll();
	},
	setElStyles:function(){
		this.element.setStyles({"position":"absolute","top":this.position.y,"left":72,"margin":0});
	},
	follow:function(){
		this.setScrollsize();
		
		if (this.position.y >= this.scrollsize.y||this.parentPosition.y >= this.scrollsize.y) {
			this.fx.start({top: this.position.y+"px"});
		} else {
			if(this.parent.getSize().y < (this.scrollsize.y + this.element.getSize().y + this.top-800)){ //
				this.fx.start({top:(this.parent.getSize().y-this.element.getSize().y )+"px"});
			}else if((this.scrollsize.y - this.parentPosition.y) + this.top < this.position.y){
				return;
			}else if(this.scrollsize.y >= this.position.y){
				this.fx.start({top: ((this.scrollsize.y - this.parentPosition.y) + this.top)+"px"});
			}
		}
		
	},
	watermark:function(){
		this.watermark = new Element("a",{
			"class":"gotoTop",
			"id":this.element.id+"-gotoTop",
			"href":this.options.watermarkHref,
			html:this.options.watermarkHtml,
			styles:{
				"opacity":0,
				"display":"block"
			}
		});
	},
	addWatermark:function(){
		if($$("#"+this.element.id+" a.gotoTop")[0]==null) {
			this.watermark.inject(this.element);
			if(this.options.SmoothScroll&&this.options.watermark) new Fx.SmoothScroll({duration:500,links:"#"+this.element.id+"-gotoTop"});
		}
		if (this.position.y >= this.scrollsize.y)
			this.watermark.dispose();
	}
});
