
function JsRoller(){};

JsRoller.prototype = {

	initialize : function( clses ){

		this.storedImg = new Array();
		var elems      = new Array();
		var targetImgLength   = this.getElementsByClassName( "img", clses ).length;
		var targetInputLength = this.getElementsByClassName( "input", clses ).length;
		for( var k = 0; k < targetImgLength; k++ ){
			elems = elems.concat( this.getElementsByClassName( "img", clses )[k] );
		}
		for( var j = 0; j < targetInputLength; j++ ){
			elems = elems.concat( this.getElementsByClassName( "input", clses )[j] );
		}

		var targetElementLength = elems.length;
		for( var i = 0; i < targetElementLength; i++ ){
			var elem   = elems[i];
			var imgSrc = elem.src;
			if( imgSrc.indexOf( "_cur." ) > -1 ){
				continue;
			}
			var ovrStr                 = this.imgOvrReplace( imgSrc, true );
			this.storedImg[imgSrc]     = new Image();
			this.storedImg[imgSrc].src = ovrStr;
			this.targetElement = elem;
			this.defaultImgSrc = imgSrc;
			this.storedImgSrc  = ovrStr;
			this.setMouseEvent();
		}
	},

	getElementsByClassName : function( pTagName, pClassName ){

		var res  = new Array();
		var tags = document.getElementsByTagName( pTagName );
		var len  = tags.length;
		for( var i = 0; i < len; i++ ){
			var classes = tags[i].className;
			if( classes.indexOf( pClassName ) > -1 ){
				res[res.length] = tags[i];
			}
		}
		return res;
	},

	imgOvrReplace:function( pSrc, pIsOvr ){

		var srcStr = pSrc;
		if( pIsOvr ){
			if( srcStr.indexOf( "_on" ) > -1 ){
				return srcStr;
			}
			srcStr = this.strReplace( srcStr, ".gif", "_on.gif" );
			srcStr = this.strReplace( srcStr, ".jpg", "_on.jpg" );
			srcStr = this.strReplace( srcStr, ".png", "_on.png" );
		} else {

			srcStr = this.strReplace( srcStr, "_on.gif", ".gif" );
			srcStr = this.strReplace( srcStr, "_on.jpg", ".jpg" );
			srcStr = this.strReplace( srcStr, "_on.png", ".png" );
		}
		return srcStr;
	},

	strReplace:function( pStr, pKey, pAlt ) {
		return pStr.split( pKey ).join( pAlt );
	},

	setMouseEvent : function(){
		var _targetElement = this.targetElement;
		var _defaultImgSrc = this.defaultImgSrc;
		var _storedImgSrc  = this.storedImgSrc;
		var _swapImage     = this.swapImage;

		if( _targetElement.nodeName.toUpperCase() == 'INPUT' ){

			_targetElement.onmouseover = function(){ _swapImage( _targetElement, _storedImgSrc  ) };
			_targetElement.onmouseout  = function(){ _swapImage( _targetElement, _defaultImgSrc  ) };

		} else if( _targetElement.nodeName.toUpperCase() == 'IMG' ){

			this.parentAnchorElement = '';
			this.getParentAnchorElement( _targetElement );
			if( this.parentAnchorElement != '' )
			{
				this.parentAnchorElement.onmouseover = function(){ _swapImage( _targetElement, _storedImgSrc  ) };
				this.parentAnchorElement.onmouseout  = function(){ _swapImage( _targetElement, _defaultImgSrc  ) };
			}
		}
	},


	swapImage : function( targetElement, src ) {
		targetElement.src = src;
	},

	getParentAnchorElement : function( element ) {
		var tempElement = element;
		if( tempElement.parentNode.nodeName.toUpperCase() != 'BODY' ){

			if( tempElement.parentNode.nodeName.toUpperCase() == 'A' ) {
				this.parentAnchorElement = tempElement.parentNode;
			} else {
				this.getParentAnchorElement( tempElement.parentNode );
			}
		}
	}
}

var JsRoller = new JsRoller();


