$$=function(el){return document.getElementById(el)};
submit=function(frm_id,sUrl,callback,param) {
	$('#'+frm_id).submit(function() {
		$.ajax({
			type: 'POST',
			url: sUrl,
			data: $(this).serialize()+'&'+param,
			success: callback.success				
		})
		return false;
	});
	$('#'+frm_id).submit();
}
removeElement=function(id){
	var el = $$(id);
	el.parentNode.removeChild(el);
}

function Validator()
{
	this.els = new Array();
}

Validator.prototype.doValidate = function()
{

	for (i=0; i<this.els.length; i++)
	{
		var id = this.els[i]['id'];
		var rule = this.els[i]['rule'];
		var param = this.els[i]['param'];
		var message = this.els[i]['message'];		
		
		switch (rule)
		{
			case "require":
				if (($$(id).type == 'checkbox' && !$$(id).checked) || $$(id).value == '')
				return message;
			break;

			case "minlen":
				if ($$(id).value.length <= param)
				return message;
			break;

			case "maxlen":
				if ($$(id).value.length >= param)
				return message;
			break;

			case "email":
				//var pattern = '^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$';
				var pattern = '^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@(.*)$';
				if (!$$(id).value.match(new RegExp(pattern)))
				return message;
			break;
			
			case "regexp":
				if (!$$(id).value.match(new RegExp(param)))
				return message;
			break;

			case "confirm":
				if ($$(id).value != $$(param).value)
				return message;
			break;
			
			default: return true;
		}
	}
}

Validator.prototype.addRule = function(id, rule, message)
{
	var e = new Array();

	arr = rule.split("=");
	e['id'] = id;
	e['rule'] = arr[0];
	e['param'] = arr[1];
	e['message'] = message;
	
	this.els.push(e);
}