// ロールオーバー
var suffix = { 
	normal: "_off.", 
	over: "_on." 
}; 


var RolloverManager = function(){ 
	this.pool = []; 
}; 
RolloverManager.prototype = { 
	register: function(container){ 
		var set = new RolloverContainer(container); 
		this.pool.push(set); 
    } 
}; 


var RolloverContainer = function(container){ 
	this.container = container; 
	
	if(this.container.is("a"))
	{
		var target = this.container.find("img").eq(0);
		if(!target.size()) return; 
		
	}else if(this.container.is("input"))
	{
		target = this.container
	};
	
	this.target = new RolloverImg(target); 
	this.setEvents(); 
}; 
RolloverContainer.prototype = { 
	setEvents: function(){ 
		var self = this;
		// bind("mouseover focus") というように、focus や blur を一緒に指定できる。
		this.container.bind("mouseover", function(){ 
			if(!self.target.flag) self.target.chgToOver();
		}).bind("mouseout", function(){ 
			// 元々 _on のやつには効かないようにするため。
			if(self.target.flag) self.target.chgToNormal(); 
		});
	} 
}; 


var RolloverImg = function(target){ 
	this.target = target;
	this.flag = false;
	this.preload();
}; 
RolloverImg.prototype = { 
	hasNormalSuffix: function(){ 
		return this.target.attr("src").indexOf(suffix.normal)!=-1 ? true : false; 
	}, 
	hasOverSuffix: function(){ 
		return this.target.attr("src").indexOf(suffix.over)!=-1 ? true : false; 
	}, 
	chgToOver: function(){ 
		if(!this.hasNormalSuffix()) return; 
		this.target.attr("src", this.target.attr("src").replace(suffix.normal, suffix.over));
		this.flag = true;
	}, 
	chgToNormal: function(){ 
		if(!this.hasOverSuffix()) return; 
		this.target.attr("src", this.target.attr("src").replace(suffix.over, suffix.normal)); 
		this.flag = false;
	}, 
	preload: function(){ 
		if(!this.hasNormalSuffix()) return; 
		(new Image).src = this.target.attr("src").replace(suffix.normal, suffix.over); 
	} 
}; 





// リンク
var targetString = {
	blank: "_blank",
	icon: '<img src="/images/common/bg_blank.gif" style="margin:0;vertical-align:middle;" width="12" height="12" alt="" />&nbsp;'
}

var TargetLinkManager = function(){ 
	this.pool = []; 
}; 
TargetLinkManager.prototype = { 
	register: function(container){ 
		var set = new TargetLinkContainer(container); 
		this.pool.push(set); 
    }
};


var TargetLinkContainer = function(container){
	this.a = container;
	this.targetLink = new TargetLink(this.a);
	this.set();
};
TargetLinkContainer.prototype = {
	set: function(){
		this.targetLink.setTargetBlank();
	}
};


var TargetLink = function(a){
	this.a = a;
};
TargetLink.prototype = {
	hasImg:function(){
		return this.a.find("img").eq(0).size();
	},
	setTargetBlank:function(){
		this.a.attr("target",targetString.blank);
		if(this.hasImg()) return;
		this.a.before(targetString.icon);
	}
};





$(function(){ 
	var rManager = new RolloverManager(); 
	var tManager = new TargetLinkManager();
	
	var rollover = "#HeaderNav a,#GlobalNav a,#LocalNav a,#RelatedLink a,#PrInfo a,#FooterNavi a,.Button a,#ReturnTop a,.hover";
	var targetLink = "a.blank";
	
	$(rollover).each(function(){ 
		rManager.register($(this));
	}); 
	
	$(targetLink).each(function(){ 
		tManager.register($(this));
	}); 
	
	$(".popup").click(function(){
		openWin(this.href ,'popup', 'width=700,height=700,toolbar=no,location=yes,status=no,menubar=no,scrollbars=yes,resizable=no');
		return false;
	})
	
});

// ポップアップ
function openWin(url,wname){
	var agent = navigator.userAgent.toLowerCase();
	var win = (agent.indexOf("windows") != -1);
	var opera = agent.indexOf("opera",0) != -1;
	var safari = agent.indexOf("safari") != -1;
	var ie = agent.indexOf("msie") != -1 && !opera;

	var w = 700;
	var h = 700;
	if(safari){h += 45;}
	if(win && ie){w += (scroll)? 16:0;h -= 19;}
	var str = 'width=' + w+ ',height=' + h;
		str += ',location=1,toolbar=1,menubar=0,scrollbars=1,resizable=1';
	swin = window.open(url,wname,'width=' + w + ',height=' + h + str);
	swin.focus();
}
