
	/*
	 * 画像切り替え 1/2 切り替えタイプ
	 * 
	 * imageObject で指定された画像の suffix を 1 にする．
	 * 
	 * @access public
	 * @param  object imageObject オブジェクトそのものか，あるいは名称
	 * @return void
	 */
	function out( imageObject )
	{
		if( typeof( imageObject ) != 'object' ){
			imageObject = document.images[ imageObject ];
		}
		imageObject.src = replaceImageSuffix( imageObject.src, 1 );
		return true;
	}

	/*
	 * 画像切り替え 1/2 切り替えタイプ
	 * 
	 * imageObject で指定された画像の suffix を 2 にする．
	 * 
	 * @access public
	 * @param  object imageObject オブジェクトそのものか，あるいは名称
	 * @return void
	 */
	function over( imageObject )
	{
		if( typeof( imageObject ) != 'object' ){
			imageObject = document.images[ imageObject ];
		}
		imageObject.src = replaceImageSuffix( imageObject.src, 2 );
		return true;
	}

	/*
	 * 画像切り替え 1/2 切り替えタイプ
	 * 
	 * imageObject で指定された画像の suffix を 1 なら 2 に，2 なら 1 にする．
	 * 
	 * @access public
	 * @param  object imageObject オブジェクトそのものか，あるいは名称
	 * @return void
	 */
	function swap( imageObject )
	{
		if( typeof( imageObject ) != 'object' ){
			imageObject = document.images[ imageObject ];
		}
		var imageFileName = imageObject.src;
		var suffix = imageFileName.match( /(.)\.[^.]+$/ )[ 1 ];
		imageObject.src = replaceImageSuffix( imageFileName, (suffix == '1')? 2: 1 );
		return true;
	}

	/*
	 * 画像切り替え 1/2 切り替えタイプ
	 * 
	 * srcName の文字列を URL とみなし，ファイル名の suffix を
	 * setTo で指定された文字列にする．
	 * 1文字以上も指定できるが，戻せなくなるので注意(笑)
	 * 
	 * 変更後のファイル名を
	 * 
	 * @access public
	 * @param  string srcName 画像の URL
	 * @param  string setTo   設定する suffix
	 * @return string 
	 */
	function replaceImageSuffix( srcName, setTo )
	{
		if( typeof( srcName ) == 'object' ){
			srcName.src = replaceImageSuffix( srcName.src, setTo );
		}
		else {
			srcName = srcName.replace( /.(\.[^.]+)$/, setTo + '$1' );
		}
		return srcName;
	}

	/*
	 * ファイル名指定切り替えタイプ
	 * 
	 * imageObject で指定された画像の src を imageUrl にする．
	 * 
	 * 切り替えた画像は name をキーにして記録しておき，restore() に備える．
	 * 
	 * @access public
	 * @param  object imageObject オブジェクトそのものか，あるいは名称
	 * @param  string imageUrl    画像の URL
	 * @return string 
	 */
	var swappedImages = new Array();
	function change( imageObject, imageFile )
	{
		if( document.images ){
			if( typeof( imageObject ) != 'object' ){
				imageObject = document.images[ imageObject ];
			}
			swappedImages[ imageObject.name ] = imageObject.src;
			imageObject.src = imageFile;
		}
		return true;
	}

	/*
	 * ファイル名指定切り替えタイプ
	 * 
	 * change() で切り替えた画像を元に戻す．
	 * 
	 * @access public
	 * @param  object imageObject オブジェクトそのものか，あるいは名称
	 * @return string 
	 */
	function restore( imageObject )
	{
		if( document.images ){
			if( typeof( imageObject ) != 'object' ){
				imageObject = document.images[ imageObject ];
			}
			imageObject.src = swappedImages[ imageObject.name ];
		}
		return true;
	}

	/*
	 * 画像プリロード
	 * 
	 * 画像をあらかじめロードしてキャッシュに蓄えさせる．
	 * 引数には任意の個数の画像 URL もしくは画像オブジェクトを受け取り，
	 * 画像 URL はその画像が，オブジェクトの場合は swap() した名称の画像が，
	 * それぞれロードされる．
	 * 
	 * @access public
	 * @param  array ---- 任意の個数の画像 URL もしくは画像オブジェクト
	 * @return string 
	 */
	function preload()
	{
		if( document.images ){
			var imageFileName;
			for( image in arguments ){
				tmp = new Image();
				tmp.src = imageFileName;
				tmp.src = ( typeof( image ) == 'object' )
					? replaceImageSuffix( image.src, ( image.src.match( /(.)\.[^\.]+$/ ) == 1 )? 2: 1 )
					: image
				;
			}
		}
		return true;
	}

