// namespace : webon.js.form_tools
// version : 1.1.0
// modify : 31/12/2008
//
function check_string_min(input,min){
    if(input.getValue().length<min)
    {
        show_error_msg(errorMsgs["string_min"],new Array("#label#","#number#"),new Array(input.readAttribute('label'),min),input);
		return false;
    }
    return true;
}

function check_string_max(input,max){
	
    if(input.getValue().length > max)
    {
        show_error_msg(errorMsgs["string_max"],new Array("#label#","#number#"),new Array(input.readAttribute('label'),max),input);
		return false;
    }
    return true;
}

function check_empty(input){
	if(input.getValue().blank() && !input.disabled)
	{
	    show_error_msg(errorMsgs["please_enter"],new Array("#label#"),new Array(input.readAttribute('label')),input);
	    return false;
	}
	return true;
}

function check_radio(input){
    var _check = false;
    $$('input[name = '+input.name+']').each(function(item) {
        if(item.getValue() != null)
        {
            _check = true;
            throw $break;
        }
    });
    if(!_check)show_error_msg(errorMsgs["select_empty"],new Array("#label#"),new Array(input.readAttribute('label')),input);
	return _check;
}

function check_email(input){
	var value=input.getValue();
	if(value=="")return true;
	var objExp=new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
	if (!(objExp.test(value)) ){
		show_error_msg(errorMsgs["invalid_format"],new Array("#label#"),new Array(input.readAttribute('label')),input);
		return false;	
	}else{
		return true;
	}
}

function check_captcha(input,checkObj)
{
    if($(checkObj).getValue() != input.value)
    {
        show_error_msg(errorMsgs["captcha"],new Array("#label#"),new Array(input.readAttribute('label')),input);
	    return false;
    }
    return true;
}

function check_same(input,checkObj)
{
    if($(checkObj).getValue() != input.value)
    {
        show_error_msg(errorMsgs["same"],new Array("#label#"),new Array(input.readAttribute('label')),input);
	    return false;
    }
    return true;
}

function check_duplicate(input,checkObj)
{
    if($(checkObj).getValue() == input.value)
    {
        show_error_msg(errorMsgs["duplicate"],new Array("#label#","#label1#"),new Array(input.readAttribute('label'),$(checkObj).readAttribute('label')),input);
	    return false;
    }
    return true;
}

function check_tel_duplicate(input,checkObj)
{
    if($($(checkObj).name+'Code').getValue()+''+$(checkObj).getValue() == $(input.name+'Code').getValue() +''+ input.value)
    {
        show_error_msg(errorMsgs["duplicate"],new Array("#label#","#label1#"),new Array(input.readAttribute('label'),$(checkObj).readAttribute('label')),input);
	    return false;
    }
    return true;
}

function check_date(input)
{
    var date = $(input);
    var month = $(input.name.replace(/date/,"month"));
    var year = $(input.name.replace(/date/,"year"));
    if(date.getValue() != '' || month.getValue() != '' || year.getValue() != '')
    {
        if(date.getValue() == '')
        {
            show_error_msg(errorMsgs["date"],new Array("#label#"),new Array(input.readAttribute('label')),date);
	        return false;        
        }
        if(month.getValue() == '')
        {
            show_error_msg(errorMsgs["date"],new Array("#label#"),new Array(input.readAttribute('label')),month);
	        return false;
        }
        if(year.getValue() == '')
        {
            show_error_msg(errorMsgs["date"],new Array("#label#"),new Array(input.readAttribute('label')),year);
	        return false;
        }
        var selectDate = new Date();
        selectDate.setFullYear(year.getValue(),+month.getValue()-1,date.getValue());
        if(selectDate.getFullYear() != year.getValue() || selectDate.getMonth() != month.getValue()-1 || selectDate.getDate() != date.getValue())
        {
            show_error_msg(errorMsgs["date"],new Array("#label#"),new Array(input.readAttribute('label')),date);
	        return false;
        }
    }
    return true;
}

function check_number(input){
	var value = input.value;
	if (value == "")return true;
	if (isNaN(value)){
	    show_error_msg(errorMsgs["invalid_format"],new Array("#label#"),new Array(input.readAttribute('label')),input);
		return false;
	}
	return true;
}

function check_age_min(input,minAge)
{
    var age = $(input.name.replace(/DobDay/,"AgeTag"));
    if(parseInt(age.innerHTML) < minAge)
    {
        show_error_msg(errorMsgs["min_age"],new Array("#label#","#number#"),new Array(input.readAttribute('label'),minAge),input);
        return false;
    }
    return true;   
}

function check_tel_no(input)
{
    if(input.getValue() == '')return true;
    var code = $(input.name+'Code').getValue();
    if((isNaN(code) && code != null) || isNaN(input.value))
    {
        show_error_msg(errorMsgs["nan"],new Array("#label#"),new Array(input.readAttribute('label')),input);
	    return false;
    }
    if((code == "852" || code == null) && input.value.length != 8)
    {
        show_error_msg(errorMsgs["number_equal"],new Array("#label#","#number#"),new Array(input.readAttribute('label'),8),input);
	    return false;
    }
    return true;
}

function check_id_format(input){
	input.value=input.value.toUpperCase().replace(/^\s+|\s+$/, '');
	var value = input.value;
	if (value == "")return true;
	if (!validHKID(value)){
	    show_error_msg(errorMsgs["invalid_format"],new Array("#label#"),new Array(input.readAttribute('label')),input);
		return false;
	}
	return true;
}

function validHKID(hkid){
	var last3char=hkid.substring(hkid.length-3);
	var chk=last3char.charAt(1);
	
	//var reg=/^[a-zA-Z]{1,2}\d{6,7}\([a-zA-Z0-9]{1}\)$/g;
	var objExp=new RegExp(/^[a-zA-Z]{1,2}\d{6,7}\([a-zA-Z0-9]{1}\)$/g);
	if (!(objExp.test(hkid))){
		return false;
	}
	
	var totalSum=0;
	var chkDigit=0;
	var remainder=0;
	
	if (hkid.length==10){
		totalSum=58*9;
	}
	
	for(var i=hkid.length-2; i>1; i--){
		var posChar=hkid.charAt(hkid.length-2-i);
		totalSum+=getDigitValue(posChar)*i;
	}
	
	remainder=totalSum%11;
	
	var check=totalSum;
	if (chk=="A"){
		check=check+10;
	}else{
		check=check+Number(chk);
	}
	//alert(check % 11 != 0)
	if (check % 11 != 0){
		return false;
	}
	return true;
}

function getDigitValue(digit){
	if (digit.charCodeAt(0)>=65 && digit.charCodeAt(0)<=90){
		return digit.charCodeAt(0)-55;
	}
	return Number(digit);
}

