// 
// dglib_check.js - 20051210
// 

/**
 * checkRequire()
 * 入力必須チェック
 *
 * @param object	obj		チェック対象オブジェクト
 * @param string	message	エラー時メッセージ
 * 
 * @return string			エラーメッセージ
 */
function checkRequire(obj, message) {
	var error		= "";
	var selected	= 0;	
	if ( obj.type == "select-one" ) {
		selected	= "";
		for ( var i = 0; i < obj.length; i++ ) {
			if ( obj[i].selected ) {
				selected += obj.options[i].value;
			}
		}
		if ( selected == "" ) {
			error	= message + "\n";
		}
	} else if ( obj.type == "select-multiple" ) {
		for ( var i = 0; i < obj.length; i++ ) {
			if ( obj[i].selected ) {
				selected++;
			}
		}
		if ( selected == 0 ) {
			error	= message + "\n";
		}
	} else if ( obj.length > 1 ) {
		for ( var i = 0; i < obj.length; i++ ) {
			if ( obj[i].checked ) {
				selected++;
			}
		}
		if ( selected == 0 ) {
			error	= message + "\n";
		}
	} else {
		if ( obj.value == "" ) {
			error	= message + "\n";
		}
	}
	return error;
}

/**
 * checkSize()
 * サイズチェック
 *
 * @param object	obj		チェック対象オブジェクト
 * @param integer	min		最小サイズ（0=未チェック）
 * @param integer	max		最大サイズ（0=未チェック）
 * @param string	message	エラー時メッセージ
 * 
 * @return string			エラーメッセージ
 */
function checkSize(obj, min, max, message) {
	var error		= "";
	var selected	= 0;	
	if ( ( obj.type == "select-one" ) || ( obj.type == "select-multiple" ) ) {
		for ( var i = 0; i < obj.length; i++ ) {
			if ( obj[i].selected ) {
				selected++;
			}
		}
		if ( ( min != 0 ) && ( selected < min ) ) {
			error	= message + "\n";
		}
		if ( ( max != 0 ) && ( selected > max ) ) {
			error	= message + "\n";
		}
	} else if ( obj.length > 1 ) {
		for ( var i = 0; i < obj.length; i++ ) {
			if ( obj[i].checked ) {
				selected++;
			}
		}
		if ( ( min != 0 ) && ( selected < min ) ) {
			error	= message + "\n";
		}
		if ( ( max != 0 ) && ( selected > max ) ) {
			error	= message + "\n";
		}
	} else {
		if ( ( min != 0 ) && ( obj.value.length < min ) ) {
			error	= message + "\n";
		}
		if ( ( max != 0 ) && ( obj.value.length > max ) ) {
			error	= message + "\n";
		}
	}
	return error;
}

/**
 * checkStyle()
 * 文字種チェック
 *
 * @param object	obj		チェック対象オブジェクト
 * @param string	style	チェックスタイル（m:メール, n:半角数字, aA:半角英字, H:全角かな, K:全角カナ）
 * @param string	ex		追加パターン（許可文字）
 * @param string	message	エラー時メッセージ
 * 
 * @return string			エラーメッセージ
 */
function checkStyle(obj, style, ex, message) {
	var check	= "";
	var error	= "";
	if ( obj.value ) {
		if ( style == "m" ) {
			reg	= new RegExp(".+@.+\..+");
			if ( !reg.test(obj.value) ) {
				error	= message + "\n";
			}
		} else {
			if ( style.match("n") ) {
				check += "0-9";
			}
			if ( style.match("a") ) {
				check += "a-z";
			}
			if ( style.match("A") ) {
				check += "A-Z";
			}
			if ( style.match("H") ) {
				check += "ぁ-ん";
			}
			if ( style.match("K") ) {
				check += "ァ-ン";
			}
			check	= "[^" + check + ex + "]";
			reg		= new RegExp(check);
			if ( reg.test(obj.value) ) {
				error	= message + "\n";
			}
		}
	}
	return error;
}
