//rollover属性の画像パスをsrcと同じにする
//true:srcと同じパス、false:rollover属性値のまま
var autopath = true;

var imgData = new Array ;

/**
 * ロールオーバー効果設定処理
 * 現在のHTMLドキュメントの中からrollover属性を設定しているimgタグに、
 * ロールオーバー、ロールアウトの関数を設定する
 * HTMLには、以下のような感じで、rollover属性にてロールオーバー時の画像を指定する
 * <img src="img/off.jpg" rollover="img/on.jpg" />
 */
function initRollOvers() {
	var imgtags = document.getElementsByTagName("img") ;
	
	for ( var i = 0 ; i < imgtags.length ; i++ ) {
		var imgtag = imgtags[i] ;
		
		var overurl = imgtag.getAttribute("rollover") ;
		if ( autopath && overurl ) {
			path = imgtag.getAttribute("src") ;
			path = getPath( path ) ;
			overurl = path + getFilename( overurl ) ;
		}
		//グループ名の取得
		var groupname = imgtag.getAttribute("group") ;
		if ( groupname && overurl ) setGroupname(imgtag, groupname, overurl) ;
		else if ( overurl ) setRollOver(imgtag, overurl) ;
	}
}
function getPath(src) {
	if ( src.lastIndexOf("/") > -1 ) {
		src = src.substring(0, src.lastIndexOf("/")+1) ;
	} else if ( src.lastIndexOf("\\") > -1 ) {
		src = src.substring(0, src.lastIndexOf("\\")+1) ;
	}
	return src ;
}
function getFilename(src) {
	if ( src.lastIndexOf("/") > -1 ) {
		src = src.substring(src.lastIndexOf("/")+1) ;
	} else if ( src.lastIndexOf("\\") > -1 ) {
		src = src.substring(src.lastIndexOf("\\")+1) ;
	}
	return src ;
}

function setGroupname(imgobj, groupname, overurl) {
	if ( typeof imgobj == "string" ) {
		//imgobjが文字列(string)の場合、imgオブジェクトに変換する
		//imgobjに格納されている値は、id属性値とみなす
		
		var imgid = imgobj ;
		imgobj = null ;
		
		if ( document.getElementById ) imgobj = document.getElementById(imgid) ;
		else if ( document.all ) imgobj = document.all[imgid] ;
		
		if ( !imgobj ) imgobj = document.images[imgid] ;
		
		//画像が見つからなかった場合は、エラー表示も何もせずにリターンする。
		if ( !imgobj ) return ;
	}
	
	//指定されたオブジェクトがimgタグではなかったら、エラー表示も何もせずにリターンする。
	if ( imgobj.tagName.toLowerCase() != "img" ) return ;
	
	//変更前の画像のURLを記憶する
	var defaulturl = imgobj.src ;
	
	var gn_on = groupname + "_on" ;
	var gn_def = groupname + "_def" ;
	if ( imgData[groupname] == null )
		imgData[groupname] = new Array(imgobj) ;
	else
		imgData[groupname].push(imgobj);
	
	if ( imgData[gn_def] == null )
		imgData[gn_def] = new Array(defaulturl) ;
	else
		imgData[gn_def].push(defaulturl);
	
	//ロールオーバーで表示する画像をキャッシュに格納する
	(new Image()).src = overurl ;
	
	//クリックを設定
	imgobj.onclick = function() {
		for ( i = 0 ; i < imgData[groupname].length ; i++ ) {
			if ( imgData[groupname][i]==imgobj ) {
				imgData[gn_on] = i ;
				imgData[groupname][i].src = overurl ;
			} else {
				imgData[groupname][i].src = imgData[gn_def][i];
			}
		}
	}
	//ロールオーバーを設定
	imgobj.onmouseover = function() {
		if ( imgData[groupname][imgData[gn_on]] != imgobj )
			imgobj.src = overurl ;
	}
	//ロールアウトを設定
	imgobj.onmouseout = function() {
		if ( imgData[groupname][imgData[gn_on]] != imgobj )
			imgobj.src = defaulturl ;
	}
}

/**
 * 画像ロールオーバー処理
 * @param imgobj imgタグ
 * @param overurl ロールオーバー時に表示する画像ファイル
 */
function setRollOver(imgobj, overurl) {
	if ( typeof imgobj == "string" ) {
		//imgobjが文字列(string)の場合、imgオブジェクトに変換する
		//imgobjに格納されている値は、id属性値とみなす
		
		var imgid = imgobj ;
		imgobj = null ;
		
		if ( document.getElementById ) imgobj = document.getElementById(imgid) ;
		else if ( document.all ) imgobj = document.all[imgid] ;
		
		if ( !imgobj ) imgobj = document.images[imgid] ;
		
		//画像が見つからなかった場合は、エラー表示も何もせずにリターンする。
		if ( !imgobj ) return ;
	}
	
	//指定されたオブジェクトがimgタグではなかったら、エラー表示も何もせずにリターンする。
	if ( imgobj.tagName.toLowerCase() != "img" ) return ;
	
	//変更前の画像のURLを記憶する
	var defaulturl = imgobj.src ;
	
	//ロールオーバーで表示する画像をキャッシュに格納する
	(new Image()).src = overurl ;
	
	//ロールオーバーを設定
	imgobj.onmouseover = function() { imgobj.src = overurl ; }
	//ロールアウトを設定
	imgobj.onmouseout = function() { imgobj.src = defaulturl ; }
}

if ( window.addEventListener )
	window.addEventListener( "load" , initRollOvers , false ) ;
else if ( window.attachEvent )
	window.attachEvent( "onload" , initRollOvers ) ;
