(function() {
	var _obj, _isIE, _isIE7, _isIE6, _isOpera, _isBackCM;
	var _bw = 3;
	var _color = 'white';
	
	var simpleRollOver = function() {
		var img = document.getElementsByTagName( 'img' );
		for( var i=0; i<img.length; i++ ) {
			if( img[i].className && img[i].className.indexOf( 'simplerollover' ) !== -1 ) {
				if( img[i].addEventListener ) {
					img[i].addEventListener( 'mouseover', rollover, false );
				} else {
					img[i].attachEvent( 'onmouseover', rollover );
				}
			}
		}
	}
	
	var rollover = function( evt ) {
		var ele, fltFlg, tmp;
		
		//バブリングキャンセル
		( evt.stopPropagation ) ? evt.stopPropagation() : evt.cancelBubble = true;
		
		var tar = evt.target || evt.srcElement;
		var pn = tar.parentNode;
		
		var op = tar.offsetParent;
		var ot = tar.offsetTop;
		var ol = tar.offsetLeft;
		var tw = ( _isOpera && op.nodeName.toLowerCase() === 'a' ) ? op.offsetWidth : tar.offsetWidth;
		var th = ( _isOpera && op.nodeName.toLowerCase() === 'a' ) ? op.offsetHeight : tar.offsetHeight;
		if( op.currentStyle && op.currentStyle['position'] === 'static' ) {
			ot += op.offsetTop;
			tmp = op;
			do {
				if( tmp.currentStyle['styleFloat'] !== 'none' ) {
					ot += tmp.offsetTop;
					ol += tmp.offsetLeft;
					break;
				}
				tmp = tmp.offsetParent;
			} while( tmp );
		}
		
		if( !_obj ) {
			_obj = ele = document.createElement( 'span' );
		} else {
			ele = _obj;
		}
		
		var es = ele.style;
		
		es.borderStyle = 'solid';
		es.borderColor = _color;
		es.borderWidth = _bw + 'px';
		es.display = 'block';
		es.position = 'absolute';
		es.top = ot + 'px';
		es.left = ol + 'px';
		es.width = ( _isIE && _isBackCM ) ? tw + 'px' : ( tw - ( _bw * 2 ) ) + 'px';
		es.height = ( _isIE && _isBackCM ) ? th + 'px' : ( th - ( _bw * 2 ) ) + 'px';
		es.opacity = 0.7;
		es.MozOpacity = 0.7;
		es.filter = 'alpha( opacity=70 )';
		es.zIndex = 1000;
		
		
		if( ele.addEventListener ) {
			ele.addEventListener( 'mouseover', stopRollOver, false );
		} else {
			ele.attachEvent( 'mouseover', stopRollOver );
		}
		
		pn.appendChild( ele );
	}
	
	var rollout = function( evt ) {
		if( _obj ) {
			_obj.parentNode.removeChild( _obj );
			_obj = null;
		}
	}
	
	var stopRollOver = function( evt ) {
		( evt.stopPropagation ) ? evt.stopPropagation() : evt.cancelBubble = true;
	}
	
	var regFunc = function() {
		var ua = navigator.userAgent.replace( /\s+/g, '' ).toLowerCase();
		( ua.indexOf( 'msie7' ) !== -1 ) ? _isIE7 = true :
		( ua.indexOf( 'msie6' ) !== -1 ) ? _isIE6 = true : '';
		_isOpera = ( ua.indexOf( 'opera' ) !== -1 ) ? true : false;
		_isIE = /*@cc_on!@*/false;
		_isBackCM = ( document.compatMode === 'BackCompat' ) ? true : false;
		var param = getJsParam();
		_bw = param.border || _bw;
		_color = param.color || _color;
		simpleRollOver();
	}
	
	function getJsParam() {
		var filename = 'simpleRollOver.js';
		
		//読み込まれたスクリプトファイルの一覧を取得
		var scripts = document.getElementsByTagName( 'script' );
		var script;
		var params = {};
		
		//該当スクリプトファイルの抜き出し
		for ( var i=0; i<scripts.length; i++ ) {
			var s = scripts.item( i );
			if( s.src.indexOf( filename ) != -1 ) {
				script = s;
				break;
			}
		}
		
		if( script ) {
			script.src.match( /(.*)(\?)(.*)/ );
			if( RegExp.$3 ) {
				var a = RegExp.$3.split( '&' );
				if( a ) {
					for( var k=0; k<a.length; k++ ) {
						var p = a[ k ].split( '=' );
						if( p[0] ) {
							params[ p[0] ] = p[1];
						}
					}
				} else {
					return false;
				}
			} else {
				return false;
			}
		} else {
			return false;
		}
		
		return params;
	}

	
	if( window.addEventListener ) {
		window.addEventListener( 'load',regFunc, false );
		document.addEventListener( 'mouseover', rollout, false );
	} else {
		window.attachEvent( 'onload', regFunc );
		document.attachEvent( 'onmouseover', rollout );
	}
})();
