// 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($(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_valid(form,input){
	/*var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz0123456789,@";

	var label=getAttrValue(input,"label",input.name);
	var msg=getAttrValue(input,"errorMsg",errorMsgs["invalid_characters"]);
	var value=getInputValue(input,"");
	var allValid = true;

	if(value=="")return true;
	//alert(value.length);
	var code=new Array(value.length);
	for(var i=0;i<value.length;i++){
        code[i]=value.charCodeAt(i);
        //alert (code[i]);
    }
	for (i = 0;  i < value.length;  i++)
    {
    ch = value.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
    if (ch == checkOK.charAt(j)){
    
    break;
    }
    if (j == checkOK.length)
    {
    allValid = false;
    
    break;
    }
    }
    if (allValid==false){
    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_checkbox_min(form,input,min){
    var label=getAttrValue(input,"label",input.name);
    var msg=getAttrValue(input,"errorMsg",errorMsgs["checkbox_min"]);
    var count=_count_checkbox(input);
	if(count<=min){
		show_error_msg(msg,new Array("#label#","#number#"),new Array(label,min));
		return false;
	}else{
		return true;
	}
}

function _count_checkbox(input){
    var v=getInputValue(input);
    var test=v.split(",");
    return test.length;
}

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 = $(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" && $(input[i].name+"_other").value == "" && input[i].checked)
		{
			otherEmpty=true;
		}
		if(input[i].value == "Others" && $(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;
}