function check(form, field)
{
	//alert(field.type);
	if(document.getElementById('error_messages_content'+form.count) && document.getElementById(field.name))
	{
		if(form.elements[field.name])
		{
			var value = form.elements[field.name].value;
			var error = false;
			if(value=='' && field.require)
			{
				error=1;
			}
			else
			if(value!='' || field.require)
			{
				//Check length
				switch(field.type)
				{
				case 'text':
				case 'email':
				case 'name':
				case 'CMND':
				case 'mobilephone':
				case 'phone':
				case 'homephone':
					error = (value.length<field.min || value.length>field.max);
					break;
				case 'int':
				case 'float':
					var temp = parseFloat(value.toString().replace(',',''));
					error = (parseFloat(temp)<field.min || parseFloat(temp)>field.max);
					break;
				}
				//Check type
				if(!error)
				{
					switch(field.type)
					{
					case 'email':
						error = check_email(value);
						break;
					case 'name':
						error = value.match(/[^A-Za-z0-9_]/);
						break;
					case 'CMND':
					case 'phone':
					case 'homephone':
					case 'int':
						error = value.match(/[^0-9,]/);
						break;
					case 'mobilephone':
						error = check_mobilephone(value);
						break;
					case 'float':
						error = value.match(/[^0-9,\.]/);
						break;
					}
				}
			}
			if(error)
			{
				document.getElementById('error_messages_content'+form.count).innerHTML += '<li><a href = "javascript:document.forms['+form.form_id+'].namedItem(\''+field.name+'\').focus()">'+field.message+'<br>';
				return false;
			}
		}
	}
	return true;
}
function check_form(form)
{
	var ok = true;
	if(document.getElementById('error_messages_'+form.count)&&document.getElementById('error_messages_content'+form.count))
	{
		document.getElementById('error_messages_content'+form.count).innerHTML = form.start_up_error;
		if(form.elements['retype_password']!=null && form.elements['password']!=null)
		{
			if(form.elements['retype_password'].value != form.elements['password'].value)
			{
				document.getElementById('error_messages_content'+form.count).innerHTML += '<li><a href = "javascript:document.forms['+form.form_id+'].namedItem(\'password\').focus()">Password and retype password are not match<br>';
			}
		}
		for(var i in form.fields)
		{
			for(var field in form.fields[i])
			{
				if(!check(form, form.fields[i][field]))
				{
					ok = false;
				}
			}
		}
		if(!ok)
		{
			document.getElementById('error_messages_'+form.count).style.display = '';
		}
	}
	return ok;
}
function make_onsubmit(fields, count)
{
	if(document.getElementById('error_messages_'+count)&&document.getElementById('error_messages_content'+count))
	{
		
		var form = document.forms[document.forms.length-1];
		form.form_id = document.forms.length-1;
		form.fields = fields;
		form.error = false;
		form.count = count;
		form.start_up_error = document.getElementById('error_messages_content'+count).innerHTML;
		form.onsubmit = function()
		{
			return check_form(this);
		}
	}
}

function check_email(email)
{
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=email.match(emailPat);
	if (matchArray==null) {
     	return true;
	}
	var user=matchArray[1];
	var domain=matchArray[2];

	if (user.match(userPat)==null) {
    	return true;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
    	for (var i=1;i<=4;i++) {
	    	if (IPArray[i]>255) {
	    		return true;
	    	}
    	}
    	return true;
	}
	var domainArray=domain.match(domainPat);
	if (domainArray==null) {
		return true;
	}
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 ||
    	domArr[domArr.length-1].length>4) {
   		return true;
	}

	if (len<2) {
		return true;
	}

	return false;
}

function check_mobilephone(st)
{
	if (st) {
		var mobileCode = st.substring(0,3);
		var line = st.substring(4,10);
		mobifone = (mobileCode == "090") ? 0 : 1
		vinafone = (mobileCode == "091") ? 0 : 1
		sfone = (mobileCode == "095") ? 0 : 1
		viettel = (mobileCode == "098") ? 0 : 1
		cityphone = (mobileCode == "049" || mobileCode== "089") ? 0 : 1
		
		if (!(mobifone==0 || vinafone==0 || sfone==0 || viettel==0 || cityphone==0))
		{
			return false;
		}
	}
	return true;
}

function check_date(date, mindate, maxdate)
{
				
	function Text2Date(st)
	{
		a = st.split("/")
		if(a.length==3)
		{
			d = new Date(Date.parse(a[1]+"/"+a[0]+"/"+a[2]))
			if(a[0]==d.getDate()&&a[1]==d.getMonth()+1&&(a[2]==d.getFullYear()||a[2]==d.getYear()))
				return d
		}
		return ""
	}
	if(date!="")
	{
		d=Text2Date(date)
		if(d=="")
		{
			return true;
		}
		else
		if(mindate!=null && d<mindate)
		{
			return true;
		}
		else
		if(maxdate!=null&&d>maxdate)
		{
			return true;
		}
	}
	return false;
}
