﻿//
// form validation
//

function input_validate(oCheck)
{
	var is_valid=true;
	var r,re;
        
	for (var i in oCheck)
	{
		var item = oCheck[i];
                
		var cmd = item[0];

		
		var target = item[1];
		
		var msg = item[2];
		
		var option = item[3];
		
		
		switch (cmd)
		{
			case "input" :
				if (typeof(target)=="object" && target.tagName=="INPUT" && target.type=="checkbox")
					is_valid = target.checked;
				 
				else if (typeof(target)=="object" && target.length && target[0].tagName=="INPUT" && target[0].type=="radio")
				{
					
					is_valid = false;
					if (!(option && typeof(option.focus)=="object")) option = {"focus":false};
					
					for (var ii=0; ii<target.length; ii++) {
						if (target[ii].checked) {
							
							is_valid  = true;
							break;
						}
					}
				}
				else if (typeof(target)=="object" && target.tagName=="SELECT")
				{
					if(target.options[target.selectedIndex].value == ""){
						is_valid = false;
					}
				}
				else
    				is_valid = (target.value!="");
					
				break;
			case "max" :
				var length = item[2];
				msg = item[3];
				option = item[4];
				is_valid = (target.value.length<=length);
				break;
			case "min" :
				var length = item[2];
				msg = item[3];
				option = item[4];
				is_valid = (target.value.length>=length);
				break;
			case "len" :
				var length = item[2];
				msg = item[3];
				option = item[4];
				is_valid = (target.value.length==length);
				break;
			case "emaildomain" :
				var target2 = item[2];	
				msg = item[3];
				option = item[4];		
				if(target2.options[target2.selectedIndex].value == "self"){
					is_valid = (target.value!="");
				}
				break;
			case "email" :
				var target1 = ((item[1].value)? item[1].value : item[1]);
				var target2 = ((item[2].value)? item[2].value : item[2]);
				var target3 = String(target1) + "@" + String(target2);
				msg = item[3];
				option = item[4];				
				is_valid = bd_isEmail( (target3.value)? target3.value : target3 );
				break;
			case "number" :
				is_valid = bd_isNum(target.value);
				break;
			case "alphanumeric" :
				re = /[^0-9a-zA-Z]/;
				r = target.value.search(re);
				is_valid = (r<0);
				break;
			case "check" :
				is_valid = target;
				break;
			case "socialno" :
				var target1 = ((item[1].value)? item[1].value : item[1]);
				var target2 = ((item[2].value)? item[2].value : item[2]);
				var target3 = String(target1) + String(target2);
				msg = item[3];
				option = item[4];
				is_valid = bd_isSocialNo( (target3.value)? target3.value : target3 );
				break;
		}
		
		if (!is_valid)
		{
			alert(msg);
			if (!(option && (typeof(option.focus)=="object" || option.focus===false)) && typeof(target)=="object") target.focus();
			if (option && typeof(option.focus)=="object") option.focus.focus();
			return false;
		}
	}
	return true;
}


// only number
function bd_isNum(str)
{   
	var r,re = /[^0-9]/;
	r = str.search(re);
	return (r<0);
}
// E-mail validation
function bd_isEmail(str) {
    var r, re;
    re = /^[a-zA-Z0-9\-\_][\w\.-]*[a-zA-Z0-9\-\_]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/i;
    r = str.match(re);

    if (r == null) return false;
    return (str == r[0]);
}

// SocialNo validation
function bd_isSocialNo(socialno) {
    var i=0;
    var comp=0 ;
    var comp2=0 ; 
    var IDtot=0 ;
    var IDAdd = '234567892345' ;
          
    for (i=0; i <= 11; i++) { IDtot = IDtot + socialno.charAt(i) * IDAdd.charAt(i); }	
    
    comp = IDtot % 11;
    comp2 = 11 - comp;
	
    if (comp2 == 10) { comp2 = 0; }    
    if (comp2 == 11) { comp2 = 1; }

    if (socialno.charAt(12) == comp2) { return true; }   
    else { return false; }   
}

/* input_validate()  ü
function BD_checkEmpty(o, str, msg)
{
	if (o.value==str) {
		alert(msg);
		o.focus();
		return false;
	}
	return true;
}
function BD_checkLength(o, size, msg)
{
	if (o.value.length>size) {
		alert(msg);
		o.focus();
		return false;
	}
	return true;
}
*/
