//####################//
//## ジャケット固定 ##//
//####################//
var FixedJacket  = {
	'option' : {
		'adjuster' : 5,  //固定時の余白
		'k': 0.3, // 運動係数
		'waitID' : setTimeout("", 500)
	},
	
	'init' : function() {
		var that = this;
		
		var jacket = document.getElementById("jacket");
		jacket.defaultPosY = GET.posY(jacket);
		jacket.defaultTop = parseInt(GET.style(jacket, "top"));
		jacket.opacity = 0;
		jacket.fadeInID = setTimeout("", 20);
		
		if(typeof window.addEventListener == 'function') {
			window.addEventListener('scroll', function() {
				clearTimeout(that.option.waitID);
				
				that.chkPos(jacket);
				that.option.waitID = setTimeout(function() {
					that.fixed(jacket);
				}, 500);
			}, false);
		} else if(typeof window.attachEvent == 'object'){
			window.attachEvent('onscroll', function() {
				clearTimeout(that.option.waitID);
				
				that.chkPos(jacket);
				that.option.waitID = setTimeout(function() {
					that.fixed(jacket);
				}, 500);
			});
		}
		
		that.fixed(jacket);
	},
	
	'fixed' : function(obj) {
		var scrollY = GET.scrollY();
		
		obj.opacity = 0;
		
		if(scrollY > obj.defaultPosY + obj.offsetHeight - this.option.adjuster) {
			var parent = document.getElementById("list");
			
			if(parent.offsetHeight > obj.offsetHeight) {
				var end = obj.defaultTop;
				
				var limit = GET.posY(parent) + parent.offsetHeight - obj.offsetHeight;
				
				if(scrollY + this.option.adjuster > limit) {
					end = obj.defaultTop + (limit - obj.defaultPosY) + this.option.adjuster;
				} else {
					end = obj.defaultTop + (scrollY - obj.defaultPosY) + this.option.adjuster;
				}
				
				obj.style.visibility = "visible";
				obj.style.top = end + "px";
				obj.fadeInID = this.fadeIn(obj);
			}
		} else {
			obj.style.visibility = "visible";
			if(obj.defaultPosY != GET.posY(obj)) {
				obj.style.top = obj.defaultTop + "px";
				obj.fadeInID = this.fadeIn(obj);
			}
		}
	},
	
	'fadeIn': function(obj) {
		var that = this;
		
		if(obj.opacity <= 10) {
			if(YAHOO.env.ua.ie && YAHOO.env.ua.ie < 9) obj.style.filter = 'alpha(opacity=' + obj.opacity * 10 + ')';
			obj.style.MozOpacity = obj.opacity / 10;
			obj.style.opacity = obj.opacity / 10;
			
			obj.opacity += 1;
			
			return setTimeout(function() {
				obj.fadeInID = that.fadeIn(obj);
			}, 20);
		} else {
			clearTimeout(obj.fadeInID);
			if(YAHOO.env.ua.ie && YAHOO.env.ua.ie < 9) obj.style.removeAttribute('filter');
		}
	},
	
	'chkPos' : function(obj) {
		if(obj.defaultPosY != GET.posY(obj)) {
			obj.style.visibility = "hidden";
		}
	}
	
};

//####################//
//## イニシャライズ ##//
//####################//
YAHOO.util.Event.onDOMReady(function() {
	if(YAHOO.env.ua.ie && YAHOO.env.ua.ie < 7) {
		DD_belatedPNG.fix("#catalog h3");
		DD_belatedPNG.fix("#catalog dl#product-info dd#list p.group");
		DD_belatedPNG.fix("#more-info");
	}
	
	AnimationTitle.init();
	FixedJacket.init();
});
