/**
 * ハンドラ
 *
 * @project WordPress
 * @subproject wp-framb
 * @author betation, inc.
 * @version 1.0.0
 */

/**
 * チェインハンドラ
 *
 * 登録する関数は実行結果として真偽を返す
 * execute() は登録された関数が真を返す限り、登録されている関数を順次実行する。
 *
 * WPFramb_Handler_Chain.append(group, func1);
 * WPFramb_Handler_Chain.append(group, func2);
 * WPFramb_Handler_Chain.execute(group);
 *
 * @var hash
 */
var WPFramb_Handler_Chain = {

	/**
	 * イベント関数
	 * @var hash
	 */
	'events': {} 

	/**
	 * グループ にイベント関数を追加する
	 * @param string グループ
	 * @param function イベント関数
	 */
	,'append': function(group, func) {
		if (!group) return;
		if (!func) return;
		if (!WPFramb_Handler_Chain.events[group]) WPFramb_Handler_Chain.events[group] = [];
		WPFramb_Handler_Chain.events[group].push(func);
	}

	/**
	 * グループ に登録されたイベント関数を順次実行する
	 * @param string グループ
	 */
	,'execute': function(group) {
		if (!group) return;
		var events = WPFramb_Handler_Chain.events[group]; if (!events) return;
		var length = events.length; if (!length) return;
		var i=0;
		for (i=0; i<length; i++) {
			if (!events[i]()) {
				break;
			}
		}
	}

};

