function formhandle(form,callback){
	
	if(typeof callback=='function'){
		var _ures = callback();
		if(!_ures)return false;
	}

	if(typeof form != 'object')
		var form = document.getElementById(form)

	var _elements = form.elements;
	
	
	
	if(!_elements.length)
	{
		return true;
	}else{
		for(var i=0; i<_elements.length; i++){
			var _element = _elements[i];

			
			if(!_element.usrtype){
					continue;
			}else{
				try{
					var _rs = eval("forms_function_"+_element.usrtype+"(form,_element)");
					if(!_rs) return false;
				}catch(e){
					alert("usrtype:'"+_element.usrtype+"' is not implemented."+"\nMessage:"+e.message);
					return false;
				}
			}
		}
	}
	return true;
}

function forms_function_empty(form,element){
	var _message = element.message;
	if(element.value == ''){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}

function forms_function_string(form,element){
	var _min_length = element.minlen;
	var _max_length = element.maxlen;
	var _message = element.message;
	if(element.value.length>_max_length || element.value.length<_min_length){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}

function forms_function_int(form,element){
	if(element.minlen){
		var _min_length = element.minlen-1;
	}else{
		var _min_length = 1-1;
	}

	if(element.maxlen){
		var _max_length = element.maxlen-1;
	}else{
		var _max_length = 11-1;
	}
	var _message = element.message;
	var _int_reg = new RegExp('^[-\+]?[1-9][0-9]{'+_min_length+','+_max_length+'}$');
	if(!_int_reg.test(element.value)){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}

function forms_function_number(form,element){
	if(element.minlen){
		var _min_length = element.minlen;
	}else{
		var _min_length = 1;
	}

	if(element.maxlen){
		var _max_length = element.maxlen;
	}else{
		var _max_length = 11;
	}
	var _message = element.message;
	var _int_reg = new RegExp('^[0-9]{'+_min_length+','+_max_length+'}$');
	if(!_int_reg.test(element.value)){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}

function forms_function_float(form,element){
	var _float_reg = /^[-\+]?\d+(\.\d+)?$/;
	var _message = element.message;
	
	if(!_float_reg.test(element.value)){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}

function forms_function_confirm(form,element){
	var _require = element.require;
	var _require_obj = form.elements[_require];
	var _message = element.message;
	if(_require_obj.value != element.value){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}
/*
function forms_function_fckeditor(form,element){
	var _require = element.require;
	var _require_obj = form.elements[_require];
	var _message = element.message;
	alert(_require_obj.value)
	if(_require_obj.value == ''){
		//_require_obj.focus();
		if(_message)alert(_message);
		return false;
	}
	return true;
}
*/

function forms_function_email(form,element){
	var _mail_reg = /^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/;
	var _message = element.message;
	if(!_mail_reg.test(element.value)){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}

function forms_function_ftp(form,element){
	var _regexp_string = "^ftp:\/\/.*";
	var _message = element.message;
	var _regexp = new RegExp(_regexp_string);
	if(!_regexp.test(element.value)){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}

function forms_function_http(form,element){
	var _regexp_string = "^http:\/\/.*";
	var _message = element.message;
	var _regexp = new RegExp(_regexp_string);
	if(!_regexp.test(element.value)){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}

function forms_function_https(form,element){
	var _regexp_string = "^https:\/\/.*";
	var _message = element.message;
	var _regexp = new RegExp(_regexp_string);
	if(!_regexp.test(element.value)){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}

function forms_function_radio(form,element){
	var _message = element.message;
	var element = form.elements[element.name];
	if(!element.length){
		if(!element.checked){
			if(_message)alert(_message);
			return false;
		}
	}else{
		var _checked = false;
		for(var i=0; i<element.length; i++){
			if(element[i].checked){ 
				_checked = true;
				break;
			}
		}
		if(!_checked){
			if(_message)alert(_message);
			return false;
		}
	}
	return true;
}

function forms_function_checkbox(form,element){
	var _message = element.message;
	
	var element = form.elements[element.name];
	if(!element[0]){
		if(!element.checked){
			if(_message)alert(_message);
			return false;
		}
	}else{
		var _checked = 0;
		var _require = element.require;
		for(var i=0; i<element.length; i++){
			if(element[i].checked){
				_checked++;
			}
		}
		if(_checked<_require){
			if(_message)alert(_message);
			return false;
		}
	}
	return true;
}

function forms_function_regexp(form,element){
	var _regexp_string = element.regexp;
	var _message = element.message;
	try{
	var _regexp = new RegExp(_regexp_string);
	}catch(e){alert(e.message)}

	if(!_regexp.test(element.value)){
		try{
		element.focus();
		}catch(e){}
		if(_message)alert(_message);
		return false;
	}
	return true;
}

//10,000,000