// namespace : webon.js.form_tools
// version : 1.0.0
// modify : 27/09/2004
//



function check_empty(form,input){
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["please_enter"]);
	var value=getInputValue(input,"");
	if(value==""){
		show_error_msg(msg,new Array("#label#"),new Array(label));
		return false;
	}else{
		return true;
	}
}

function check_email(form,input){
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["invalid_format"]);
	var value=getInputValue(input,"");
	if(value=="")return true;
	if (!((/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/).test(value)) ){
		show_error_msg(msg,new Array("#label#"),new Array(label));
		return false;	
	}else{
		return true;
	}
}

function check_number_min(form,input,min){
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["number_min"]);
	var value=getInputValue(input,"");
	
	if(value=="")return true;
	var n=parseInt(value,10);
	if("NaN"==n.toString()){
		
		show_error_msg(errorMsgs["nan"],new Array("#label#"),new Array(label));
		return false;
	}
	if(n<=min){
		show_error_msg(msg,new Array("#label#","#number#"),new Array(label,min));
		return false;
	}else{
		return true;
	}
}

function check_number_max(form,input,max){
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["number_max"]);
	var value=getInputValue(input,"");
	
	if(value=="")return true;
	
	var n=parseInt(value,10);
	if(n=="NaN"){
		show_error_msg(errorMsgs["nan"],new Array("#label#"),new Array(label));
		return false;
	}
	if(n>max){
		show_error_msg(msg,new Array("#label#","#number#"),new Array(label,max));
		return false;
	}else{
		return true;
	}
}

function check_string_min(form,input,min){
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["string_min"]);
	var value=getInputValue(input,"");
	
	if(value=="")return true;
	if(value.length<min){
		show_error_msg(msg,new Array("#label#","#number#"),new Array(label,min));
		return false;
	}else{
		return true;
	}
}

function check_string_max(form,input,max){
	
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["string_max"]);
	var value=getInputValue(input,"");
	if(value=="")return true;
	if(value.length>max){
		
		show_error_msg(msg,new Array("#label#","#number#"),new Array(label,max));
		return false;
	}else{
		return true;
	}
}

function check_date(form,input){
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["invalid_date_format"]);
	
	var value=getInputValue(input,"");
	if(value=="")return true;
	var formats=new Array();
	var formatString="yyyy/MM/dd HH:mm:ss";
	if(arguments.length<3){
		formats[formats.length]="yyyy/MM/dd HH:mm:ss";
	}else{
		var preFormat=arguments[2];
		var f="";
		switch(preFormat){
			case "fulldatetime":
				f="dd/MM/yyyy HH:mm:ss";
				formats[formats.length]="dd/MM/yyyy HH:mm:ss";
				formats[formats.length]="dd/M/yyyy HH:mm:ss";
				formats[formats.length]="d/MM/yyyy HH:mm:ss";			
				formats[formats.length]="d/M/yyyy HH:mm:ss";
			case "datetime":
				if(f=="")f="dd/MM/yyyy HH:mm";
				formats[formats.length]="dd/MM/yyyy HH:mm";
				formats[formats.length]="dd/M/yyyy HH:mm";
				formats[formats.length]="d/MM/yyyy HH:mm";			
				formats[formats.length]="d/M/yyyy HH:mm";
			case "date":
				if(f=="")f="dd/MM/yyyy";
				formats[formats.length]="dd/MM/yyyy";
				formats[formats.length]="dd/M/yyyy";
				formats[formats.length]="d/MM/yyyy";			
				formats[formats.length]="d/M/yyyy";
				break;
			default:
				alert(arguments[2]);
				for(var i=2;i<arguments.length;i++){
					var f=arguments[i];
					if(f!="" && f!=null)formats[formats.length]=f;

				}
				f=arguments[2];
				break;
		}
		formatString=f;
	}
	var d=null;
	for(var i=0;i<formats.length;i++){
		d=parseDateObject(value,formats[i]);
		if(d)return true;
	}	
	show_error_msg(msg,new Array("#label#","#format#"),new Array(label,formatString));
	return false;
}

function check_select_min(form,input,min){
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["select_min"]);
	
	var count=_count_selected(input);
	if(count<=min){
		show_error_msg(msg,new Array("#label#","#number#"),new Array(label,min));
		return false;
	}else{
		return true;
	}
}

function check_select_max(form,input,max){
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["select_max"]);
	
	var count=_count_selected(input);
	if(count>=max){
		show_error_msg(msg,new Array("#label#","#number#"),new Array(label,max));
		return false;
	}else{
		return true;
	}
}

function _count_selected(input){
	var type=input.type.toLowerCase();
	var count=0;
	switch(type){
		case "select-one":
		case "select-multiple":
			for(var i=0;i<input.options.length;i++){
				if(input.options[i].selected)count++;
			}
			break;
		case "checkbox":
			var checkboxs=document.getElementsByName(input.name);
			for(var i=0;i<checkboxs.length;i++){
				if(checkboxs[i].checked)count++;
			}		
			break;
	}
	return count;
}