var	DEF_ITEMIZE_LIST_HEAD_NONE		= 0 ;		/*	先頭マーク：なし	*/
var	DEF_ITEMIZE_LIST_HEAD_DOT		= 1 ;		/*	先頭マーク：・		*/
var	DEF_ITEMIZE_LIST_HEAD_DISK		= 2 ;		/*	先頭マーク：●		*/
var	DEF_ITEMIZE_LIST_HEAD_CIRCLE	= 3 ;		/*	先頭マーク：○		*/
var	DEF_ITEMIZE_LIST_HEAD_SQUARE	= 4 ;		/*	先頭マーク：■		*/
var	DEF_ITEMIZE_LIST_HEAD_RECT		= 5 ;		/*	先頭マーク：□		*/
var	DEF_ITEMIZE_LIST_HEAD_DIA		= 6 ;		/*	先頭マーク：◆		*/
var	DEF_ITEMIZE_LIST_HEAD_KOME		= 7 ;		/*	先頭マーク：※		*/



/*
 *	コンストラクタ。
 *
 *	@param	info	メニュー要素。
 */
function ItemizeListItem( info ) {
	var		data ;
	data = info.split(",") ;

	this.flag = new Flag( data[0] ) ;
	this.word = data[1] ;

 	this.head = DEF_ITEMIZE_LIST_HEAD_DISK ;	/*	先頭マーク：●		*/
}


/*
 *	表示フラグの状態を返す。
 *
 *	@return	表示する場合は<code>true</code>、表示しない場合は<code>false</code>を返す。
 */
ItemizeListItem.prototype.isShow = function () {
	return( this.flag.getBitValue(0)!=0  ? true : false ) ;
}

/*
 *	先頭のヘッダ文字を取得する。
 *
 *	@return	先頭のヘッダ文字。
 */
ItemizeListItem.prototype.getHeaderMark = function () {
	var		mark="" ;
	switch( this.head ) {
	case DEF_ITEMIZE_LIST_HEAD_NONE:	mark = "" ;		break ;
	case DEF_ITEMIZE_LIST_HEAD_DOT:		mark = "・" ;	break ;
	case DEF_ITEMIZE_LIST_HEAD_DISK:	mark = "●" ;	break ;
	case DEF_ITEMIZE_LIST_HEAD_CIRCLE:	mark = "○" ;	break ;
	case DEF_ITEMIZE_LIST_HEAD_SQUARE:	mark = "■" ;	break ;
	case DEF_ITEMIZE_LIST_HEAD_RECT:	mark = "□" ;	break ;
	case DEF_ITEMIZE_LIST_HEAD_DIA:		mark = "◆" ;	break ;
	case DEF_ITEMIZE_LIST_HEAD_KOME:	mark = "※" ;	break ;
	default:							mark = "・" ;	break ;
	}
	return( mark ) ;
}

/*
 *	先頭のヘッダ文字をする。
 *
 *	@param	head	先頭のヘッダ文字。
 *						DEF_ITEMIZE_LIST_HEAD_NONE		なし
 *						DEF_ITEMIZE_LIST_HEAD_DOT		・
 *						DEF_ITEMIZE_LIST_HEAD_DISK		●
 *						DEF_ITEMIZE_LIST_HEAD_CIRCLE	○
 *						DEF_ITEMIZE_LIST_HEAD_SQUARE	■
 *						DEF_ITEMIZE_LIST_HEAD_RECT		□
 *						DEF_ITEMIZE_LIST_HEAD_DIA		◆
 *						DEF_ITEMIZE_LIST_HEAD_KOME		※
 */
ItemizeListItem.prototype.setHeaderMark = function ( head ) {
	switch( head ) {
	case DEF_ITEMIZE_LIST_HEAD_NONE:
	case DEF_ITEMIZE_LIST_HEAD_DOT:
	case DEF_ITEMIZE_LIST_HEAD_DISK:
	case DEF_ITEMIZE_LIST_HEAD_CIRCLE:
	case DEF_ITEMIZE_LIST_HEAD_SQUARE:
	case DEF_ITEMIZE_LIST_HEAD_RECT:
	case DEF_ITEMIZE_LIST_HEAD_DIA:
	case DEF_ITEMIZE_LIST_HEAD_KOME:
		this.head = head ;
		break ;
	}
}

/*
 *	項目を表示する。
 *
 *	@param	style	メニューバーを表示するスタイルのスタイル名。
 *	項目を表示する。
 *	項目を表示する。
 */
ItemizeListItem.prototype.put = function ( borderSize, borderColor ) {
	document.write( this.getWord( borderSize, borderColor) ) ;
}
ItemizeListItem.prototype.getWord = function ( borderSize, borderColor ) {
	var		word="" ;

	/* 表示しない？ */
	if( !this.isShow() ) {
		return( word ) ; 
	}

	/*	強調／注記対応	*/
	word += "<tr>" ;


	/*	ヘッドマーク	*/
	word += "<td class='headmark'" ;
	if( borderSize>0 ) {
		word += " style='" ;
		if( borderSize>0 ) {
			word += "border:" + borderSize + "px #" + borderColor + " solid;" ;
		}
		word += "'" ;
	}
	word += ">" + this.getHeaderMark() +"</td>" ;


	/*	項目	*/
	word += "<td" ;
	if( borderSize>0 ) {
		word += " style='" ;
		if( borderSize>0 ) {
			word += "border:" + borderSize + "px #" + borderColor + " solid;" ;
		}
		word += "'" ;
	}
	word += ">" + this.word + "</td>" ;


	word += "</tr>" ;

	return( word ) ; 
}




/*
 *	コンストラクタ。
 *
 *	項目リストを表示する。
 *
 *	@param	info	項目リスト。
 */
function ItemizeList( info ) {
	var		ii ;
	this.num = info.length ;
	this.item = new Array() ;
	for( ii=0; ii<this.num; ii++ ) {
		this.item[ii] = new ItemizeListItem( info[ii] ) ;
	}

	/*	表示スタイル（ディフォルト）	*/
	this.setStyle( "itemize-list" ) ;

	/*	table要素の罫線を0	*/
	this.tableBorderSize = 0 ;

	/*	table要素の罫線色をセット（ディフォルト）	*/
	this.setTableBorderColor( "a0a0a0" ) ;
	
	/*	強調表示フラグをリセット	*/
	this.fEmphasize = false ;

	/*	注記表記フラグをリセット	*/
	this.fNotice = false ;
}


/*
 *	table要素の罫線幅を設定する（デバッグ用）。
 */
ItemizeList.prototype.debug = function () {
	this.tableBorderSize = 1 ;
}

/*
 *	table要素の罫線色をセットする。
 */
ItemizeList.prototype.setTableBorderColor = function ( color ) {
	this.tableBorderColor = color ;
}


/*
 *	色付き強調表示する。
 */
ItemizeList.prototype.setEmphasize = function () {
	this.fEmphasize = true ;
}


/*
 *	強調表示する。
 */
ItemizeList.prototype.setEmphasize = function () {
	this.fEmphasize = true ;
}


/*
 *	注記表記する。
 */
ItemizeList.prototype.setNotice = function () {
	this.fNotice = true ;
}


/*
 *	表示スタイルを定義する。
 * 
 *	@param	style	メニューバーを表示するスタイルのスタイル名。
 */
ItemizeList.prototype.setStyle = function ( style ) {
	this.style = style ;
}


/*
 *	先頭のヘッダ文字をする。
 *
 *	@param	head	先頭のヘッダ文字。
 *						DEF_ITEMIZE_LIST_HEAD_NONE		なし
 *						DEF_ITEMIZE_LIST_HEAD_DOT		・
 *						DEF_ITEMIZE_LIST_HEAD_DISK		●
 *						DEF_ITEMIZE_LIST_HEAD_CIRCLE	○
 *						DEF_ITEMIZE_LIST_HEAD_SQUARE	■
 *						DEF_ITEMIZE_LIST_HEAD_RECT		□
 *						DEF_ITEMIZE_LIST_HEAD_DIA		◆
 *						DEF_ITEMIZE_LIST_HEAD_KOME		※
 */
ItemizeList.prototype.setHeaderMark = function ( head ) {
	var		ii ;
	for( ii=0; ii<this.num; ii++ ) {
		this.item[ii].setHeaderMark( head ) ;
	}
}


/**
  *	項目リストを表示する。
  */
ItemizeList.prototype.put = function ( ) {
	document.write( this.getWord() ) ;
}
ItemizeList.prototype.getWord = function ( ) {
	var		word="" ;
	var		ii ;

	word += "<table class='" + this.style + "' " ;
	if( this.fEmphasize ) {
		word += "class='emphasize'" ;
	}
	else if( this.fEmphasize ) {
		word += "class='emphasize'" ;
	}
	else if( this.fNotice ) {
		word += "class='notice'" ;
	}
	word += " cellspacing='0' cellpadding='0' border='0'>" ;

	for( ii=0; ii<this.num; ii++ ) {
		word += this.item[ii].getWord( this.tableBorderSize, this.tableBorderColor ) ;
	}
	word += "</table>" ;

	return( word ) ;
}
