/* --------------------------------------------------------------------------------
 *
 *		通貨スタイル表示ライブラリ
 *
 *		Copyright(c) 2004-2008 Atsushi Oguma  <aog206rc@qj9.so-net.ne.jp>
 *		OG-Works
 *		3-11-8-203 Tsumada-kita, Atsugi-shi, Kanagawa-ken 243-0812, Japan
 *
 *		Copyright(c) 2004-2008 Atsushi Oguma
 *		Panorama snow academy ski school
 *		6666-703 Fujimi, Fujimi-cho, Suwa-gun, Nagano-ken 399-0211, Japan
 *
 * -------------------------------------------------------------------------------- */

/*
 *	コンストラクタ。
 *	通貨クラス。
 *
 *	@param	SumOfMoney	金額。
 */
function Money( SumOfMoney ) {
	this.validity = ( isNaN(SumOfMoney) ? FALSE : TRUE ) ;	/*	数値ではない場合はFALSE	*/

	this.SumOfMoney = SumOfMoney ;
	this.toJis = toJis ;

	/*	￥マークフラグ	*/
	this.fYenMark = TRUE ;

	/*	2byte化フラグ	*/
	this.fToJis = TRUE ;
}


/*
 *	￥マークフラグを有効にする。
 */
Money.prototype.enableYenMark = function () {
	this.fYenMark = TRUE ;
}

/*
 *	￥マークフラグを無効にする。
 */
Money.prototype.disableYenMark = function () {	this.fYenMark = FALSE ;	}

/*
 *	2byte化フラグを有効にする。
 */
Money.prototype.enableToJis = function () {
	this.fToJis = TRUE ;
}


/*
 *	2byte化フラグを有効無効。
 */
Money.prototype.disableToJis = function () {
	this.fToJis = FALSE ;
}

/*
 *	元の金額を返す
 */
Money.prototype.getSumOfMoney = function () {
	return( this.SumOfMoney ) ;
}


/*
 *	整数値を通貨スタイルに変更に変更した文字列を返す。
 */
Money.prototype.toMoneyStyle = function () {
	var		msg ="" ;
	var		cnt=0 ;
	var		basicVal = 1000 ;
	var		reside ;
	var		orgVal ;

	if ( !this.validity ) {
		/*	数値ではない場合など	*/
		return( this.SumOfMoney ) ;
	}

	orgVal = this.SumOfMoney ;
	while( 1 ) {
		reside = orgVal % basicVal 

		if( cnt>32 ) {
			msg = "WARNING!!\n" ;
			msg += "repeat over 32 times!!\n"
			msg += "operation will stop..."
			alert( msg ) ;
			break ;
		}

		if( ((orgVal-reside)/basicVal)<=0 || cnt>3 ) {
			msg = sprintf( "%d", orgVal ) + msg ;
			break ;
		}
		else {
			msg = sprintf( ",%03d", reside ) + msg ;
			orgVal = (orgVal - reside) / basicVal  ; 
		}

		cnt++ ;
	}

	if( this.fYenMark ) {
		msg = "\\" + msg ;
	}

	if( this.fToJis ) {
		return( this.toJis(msg) ) ;
	}
	else {
		return( msg ) ;
	}
}


/*--------------------------------------------------------------
 *	半角→全角変換
 *--------------------------------------------------------------*/
function toJis( orgStr ) {
	var		result="" ;
	var		ii ;

	table = new Array() ;
	table["0"] = "０" ;
	table["1"] = "１" ;
	table["2"] = "２" ;
	table["3"] = "３" ;
	table["4"] = "４" ;
	table["5"] = "５" ;
	table["6"] = "６" ;
	table["7"] = "７" ;
	table["8"] = "８" ;
	table["9"] = "９" ;
	table["-"] = "－" ;
	table["+"] = "＋" ;
	table["*"] = "＊" ;
	table["/"] = "／" ;
	table[","] = "，" ;
	table["."] = "．" ;
	table['\\'] = "￥" ;

	for( ii=0; ii<orgStr.length; ii++ ) {
		result += table[ orgStr.charAt(ii) ] ;
	}
	return( result ) ;
}
