// moo_check 0.1


// フォームチェック
////////////////////////////////////////////////////////////////////////////////
function CheckForm( form_element, check_mode, input_element, multiple_option ){
	/* check_mode     -> チェック方法
	 * input_element  -> フォーム名(複数の場合は配列)
	 * multiple_option -> 複数の項目をチェックする場合のモード（each or all）
	 */
	
	var result       = false;
//	var ele_type = $type(input_element);
	
//	alert(ele_type);
	var form_elements = AjaxForm.formElement;
	
	//var form_element = form_elements.getElement('id=[input_element]');
	
	switch( check_mode ){
		case 'text':
			var form_element = $E('#'+input_element,form_elements);
			switch( $type(input_element) ){
				case 'string':
					if( form_element.getValue() != "" ){
						result = true;
					}
				break;
				case 'array':
					switch( multiple_option ){
						case 'all':
							for( i=0; i<input_element.length; i++ ){
								var ele_tmp = input_element[i];
								if( $(ele_tmp).getValue() != "" ){
									result = true;
								}else{
									result = false;
									break;
								}
							}
							break;
						case 'each':
							for( i=0; i<input_element.length; i++ ){
								var ele_tmp = input_element[i];
								if( $(ele_tmp).getValue() != "" ){
									result = true;
									break;
								}
							}
							break;
						default:
							alert('multiple_option is not defind');
					}
				break;
				default:
					if( $(input_element).getValue() != "" ){
						result = true;
					}
			}
			break;


		case 'select':
			var form_element = $ES('#'+input_element,form_elements);
			if( $(input_element).getValue() != "" ){
				result = true;
			}
			break;
			
		case 'check':
			var form_element = $ES('.'+input_element,form_elements);
			var element_number = form_element.length;
			form_element.each(function(ele){
				if( ele.checked == true ){
					result = true;
				}
			});
			break;
		case 'radio':
			var form_element = $ES('#'+input_element,form_elements);
			var tmp_element = form_element.getElements('input[name$='+input_element+']');
			var element_length = tmp_element.length;
			for( i=0; i<element_length; i++ ){
				if( tmp_element[i].getValue() != "" ){
					result = true;
					break;
				}
			}
			break;
		case 'mail':
			var form_element = $E('#'+input_element,form_elements);
			if( $(input_element).getValue().match(/^[\w\_\-\.]+\@[\w\-\.]+\.[a-z]+$/)){
				result = true;
			}
			break;
		case 'han':
			var form_element = $E('#'+input_element,form_elements);
			if( $(input_element).getValue().match(/^[\x21-\x7E]+$/)){
				result = true;
			}
			break;
		case 'full':
			var form_element = $E('#'+input_element,form_elements);
			if( $(input_element).getValue().match(/^[^\x21-\x7E]+$/)){
				result = true;
			}
			break;
		case 'hanKata':
			var form_element = $E('#'+input_element,form_elements);
			txt = "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｬｭｮｯｰ､｡｢｣ﾞﾟ";
			for (i=0; i<input_ele.getValue.length; i++) {
				if (txt.indexOf(form_element.value.charAt(i),0) >= 0) {
				}else{
					result = true;
				}
			}
			break;
		case 'zenHira':
			var form_element = $E('#'+input_element,form_elements);
			if( $(input_element).getValue().match(/^[あ-ん]+$/)){
				result = true;
			}
			break;
		case 'hanNum':
			var form_element = $E('#'+input_element,form_elements);
			if( $(input_element).getValue().match(/^[0-9]+$/)){
				result = true;
			}
			break;
		case 'hanNumHy':
			var form_element = $E('#'+input_element,form_elements);
			if( $(input_element).getValue().match(/^[-0-9]+$/)){
				result = true;
			}
			break;
		case 'num':
			var form_element = $E('#'+input_element,form_elements);
			if( $(input_element).getValue().match(/^[0-9]+$/)){
				result = true;
			}
			break;
		case '4-8length':
			var form_element = $E('#'+input_element,form_elements);
			if( $(input_element).getValue().length >= 4 && form_element.value.length <= 8){
				result = true;
			}
			break;
		case 'length_force':
			var form_element = $E('#'+input_element,form_elements);
			if( $(input_element).getValue().length == element_number){
				result = true;
			}
			break;
		case 'full_nenmber':
			var form_element = $E('#'+input_element,form_elements);
			if( $(input_element).getValue().match(/^[^\x21-\x7E]+$/) || form_element.value == ""){
				result = true;
			}
			break;
		case 'same':
			//var form_element = $E('#'+input_element,form_elements);
			if( $(input_element[0]).getValue() == $(input_element[1]).getValue() ){
				result = true;
			}
			break;
		default:
			alert('チェックモードが指定されていないか、存在しないチェックモードです。');
	}
	//エラーの背景色を戻す
	if(result){
	/*
		if(check_mode == "same"){
			form_element_same1.style.backgroundColor = blur_color;
			form_element_same2.style.backgroundColor = blur_color;		
		}else if(check_mode != "check"){
			form_element.style.backgroundColor = blur_color;
		}
		*/
		return true;
	//背景色をフォーカスする
	}else{
	/*
		if(check_mode == "same"){
			form_element_same1.style.backgroundColor = focus_color;
			form_element_same2.style.backgroundColor = focus_color;
		}else if(check_mode != "check"){
			form_element.style.backgroundColor = focus_color;
		}
		*/
		return false;
	}
}
// フォームチェック通常色・警告色リセット
////////////////////////////////////////////////////////////////////////////////
function ResetColor(this_object){
	if(!document.layers){
		this_object.style.backgroundColor = blur_color;
	}
}





// フォームリセット
////////////////////////////////////////////////////////////////////////////////
function Reset(form_name){
	if(confirm("フォームの入力内容をリセットしますが\nよろしいですか？")){
		document.forms[form_name].reset();
		
		if(!document.layers){
			for(var i = 0 ; i < document.forms[form_name].elements.length ; i++){
				document.forms[form_name].elements[i].style.backgroundColor = blur_color;
			}
		}
	}
}

