//
// IEでアンカー以外にもhover効果
// 
// CGI-PLANT http://wws.cside.com/cgi-plant/
// 2006.01.26
//


//
// 初期化処理
//
// Selecters::array( [ElementName][.className] / #ID )
//
function allhover(Selecters){
	if(! navigator.userAgent.match(/MSIE/)) return;
	for(var i=0;i<Selecters.length;i++) {
		if(Selecters[i].match(/^#(.*)/)){
			var O = document.getElementById(RegExp.$1);
			if(! O)continue;
			O.overClass = 'Hover';
			O.onmouseover = function(){classHandle('add',this)};
			O.onmouseout = function(){classHandle('del',this)};
		} else {
			var TagClass = Selecters[i].split('.');
			if(TagClass[0] == '') TagClass[0] = '*';
			var TagList = document.getElementsByTagName(TagClass[0]);
			for(var j=0;j<TagList.length;j++) {
				if( TagClass[1] && (! classHandle('match',TagList[j],TagClass[1]))) continue;
				var addName = (TagClass[1])?TagClass[1]+'Hover':'Hover';
				TagList[j].overClass = addName;
				TagList[j].onmouseover = function(){classHandle('add',this)};
				TagList[j].onmouseout = function(){classHandle('del',this)};
			}
		}
	}
}
//
// 要素のクラス操作
//
// Mode
//  match::オブジェクト(O)にクラス(str)は含まれているか？ return true/false
//  add::オブジェクト(O)のクラスに新しくクラス(str)を追加
//  del::オブジェクト(O)のクラスからクラス(str)を削除
//
function classHandle(Mode,O,str){
	var ClassList = O.className.split(' ');
	if(Mode == 'match') {
		for(var i=0;i<ClassList.length;i++){
			if(ClassList[i] == str) return true;
		}
		return false;
	} else if(Mode == 'add') {
		for(var i=0;i<ClassList.length;i++){
			if(ClassList[i] == O.overClass) return O.className;
		}
		O.className += ' '+O.overClass;
		return O.className;
	} else if(Mode == 'del') {
		var newClassName = '';
		for(var i=0;i<ClassList.length;i++){
			if(ClassList[i] != O.overClass)
				newClassName += ' '+ClassList[i];
		}
		O.className = newClassName.replace(/^ /,'');
		return O.className;
	}
}
