// 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_radio(form,input){
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["please_enter"]);
	var disabled=getAttrValue(input,"disabled",input.name);
	
	var value=getInputValue(getObj(input.name+"Check"),"");
	
	if(value=="" &&  (disabled==false || disabled==input.name)){
		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_empty(form,input){
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["select_empty"]);
	
	var empty=false;
	for(var i=0;i<input.options.length;i++){
		if(input.options[i].selected && input.options[i].value=="")
		{
			empty=true;
		}
	}
	if(empty){
		show_error_msg(msg,new Array("#label#"),new Array(label));
		return false;
	}else{
		return true;
	}
}

function check_combo_checkbox(form,input)
{
	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["please_enter"]);
	var msg1=getAttrValue(input,"errorMsg",errorMsgs["others"]);
	var msg2=getAttrValue(input,"errorMsg",errorMsgs["none"]);
	var msg3=getAttrValue(input,"errorMsg",errorMsgs["tickOthers"]);
	
	var empty=true;
	var otherEmpty=false;
	var tickAnother =false;
	var tickNone =false;
	var otherTick=false;
	input = getObj(input.name);
	
	for(var i=0;i<input.length;i++){
		if(input[i].value != "None of the above" && input[i].checked)
		{
			tickAnother=true;
		}
		if(input[i].value == "None of the above" && input[i].checked)
		{
			tickNone=true;
		}
		if(input[i].value == "Others" && getObj(input[i].name+"_other").value == "" && input[i].checked)
		{
			otherEmpty=true;
		}
		if(input[i].value == "Others" && getObj(input[i].name+"_other").value != "" && !input[i].checked)
		{
			otherTick=true;
		}
		if(input[i].checked)
		{
			empty = false;
		}
	}
	
	
	
	if(empty){
		show_error_msg(msg,new Array("#label#"),new Array(label));
		return false;
	}else if (otherEmpty){
		show_error_msg(msg1);
		return false;
	}else if (tickNone && tickAnother){
		show_error_msg(msg2);
		return false;
	}else if (otherTick){
	show_error_msg(msg3);
	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;
}