function check_email(email)
{
	var v_mail = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
	if( !v_mail.test(email) )
	{
		return false;
	}
	return true;
}

function check_zip(zip)
{
	var flag = 0;
	var len = zip.length;
		
	if(len == 5)
	{
		income = zip.toString( );
		
		var v_zip = /^[0-9]+$/;
		if( !v_zip.test(income) )
		{			
			flag = 1;
		}		
	}
	else
	{
		flag = 1;
	}
	
	if(flag == 1)
	{
		return 'Zip should be 5-digits number';
	}
	else
		return false;
}

function check_state(state)
{	
	var flag = 0;
	var len = state.length;
		
	if(len == 2)
	{
		income = state.toString( );

		var v_state = /^[a-zA-Z]+$/;
		if( !v_state.test(income) )
		{			
			flag = 1;
		}
	}
	else
	{
		flag = 1;
	}
	
	if(flag == 1)
	{
		return 'State should be 2 characters';
	}
	else
		return false;
}

function check_contact_name(fname, first_last)
{
	var flag = 0;
	
	income = fname.toString( );

	var len = income.length;
	if(len == 0)
	{
		return first_last+' Name field should not be empty!';
	}

	var v_str = /^[a-zA-Z\'\-]+$/;
	if( !v_str.test(income) )
	{
		flag = 1;
	}
	
	if(flag == 1)
	{
		return 'Wrong characters in '+first_last+' Name field. Allowed symbols : a-zA-Z\'-';
	}
	else
		return false;
}

function check_address(address)
{
	var flag = 0;
	
	income = address.toString( );

	var len = income.length;
	if(len == 0)
	{
		return 'Address field should not be empty!';
	}
	
	var v_str = /^[a-zA-Z0-9 :;%!\#@\$&\/\,\(\)+\'\._-]+$/;
	if( !v_str.test(income) )
	{			
		flag = 1;
	}
	
	if(flag == 1)
	{
		return 'Wrong characters in Address field. Allowed symbols : a-zA-Z0-9 :;%#!@$&/,()+.\'_-';
	}
	else
		return false;
}

function check_address2(address)
{
	var flag = 0;
	
	income = address.toString( );

	var len = income.length;
	if(len == 0)
	{
		return true;
	}
	
	var v_str = /^[a-zA-Z0-9 :;%!\#@\$&\/\,\(\)+\'\._-]+$/;
	if( !v_str.test(income) )
	{			
		flag = 1;
	}
	
	if(flag == 1)
	{
		return 'Wrong characters in Address field. Allowed symbols : a-zA-Z0-9 :;%#!@$&/,()+.\'_-';
	}
	else
		return false;
}

function check_city(city)
{
	var flag = 0;
	
	income = city.toString( );

	var len = income.length;
	if(len == 0)
	{
		return 'City field should not be empty!';
	}
	
	var v_str = /^[a-zA-Z \-\'\.]+$/;
	if( !v_str.test(income) )
	{			
		flag = 1;
	}
	
	if(flag == 1)
	{
		return 'Wrong characters in City field. Allowed symbols : a-zA-Z \'.-';
	}
	else
		return false;
}

function check_businessname(b_name)
{
	var flag = 0;
	
	income = b_name.toString( );

	var len = income.length;
	if(len == 0)
	{
		return 'Business name field should not be empty!';
	}
	
	var v_str = /[\"]+/;
//	var v_str = /^[a-zA-Z0-9 :;%!\#@\$&\/\,\(\)+\'\._-]+$/;
	if( v_str.test(income) )
	{			
		flag = 1;
	}
	
	if(flag == 1)
	{
		return 'Wrong characters in Business name field. Disallowed symbols : " ';
	}
	else
		return false;
}

function check_number(num)
{
	if(num == null)
		return false;
		
	income = num.toString( );
	var v_num = /^[0-9]+$/;
	if( !v_num.test(income) )
		return false;
	else
		return true;
}

// check credit card number
function check_credit_card_number(number)
{
	var flag = 0;
	var len = number.length;
		
	if(len > 12)
	{
		income = number.toString( );
		
		var v_tpl = /^[0-9]+$/;
		if( !v_tpl.test(income) )
		{			
			flag = 1;
		}		
	}
	else
	{
		flag = 1;
	}
	
	if(flag == 1)
	{
		return 'Card number is too short';
	}
	else
		return false;
}

// check credit card cv2 number
function check_cv2(number, card_type)
{
	var flag = 0;
	var len = number.length;

	low_card_type = card_type.toLowerCase();
	var max_len = 3;
	if(low_card_type == 'american express' || low_card_type == 'amex')
	{
		max_len = 4;
	}
	
	if(len == max_len)
	{
		income = number.toString( );
		
		var v_tpl = /^[0-9]+$/;
		if( !v_tpl.test(income) )
		{			
			flag = 1;
		}		
	}
	else
	{
		flag = 1;
	}
	
	if(flag == 1)
	{
		return 'CV2 code should be '+max_len+'-digits number for \''+card_type+'\' card type';
	}
	else
		return false;
}

// check expiration date
function check_exp_date(month, year)
{
	// check month format
	var mflag = 0;
	var mlen = month.length;
	if(mlen == 1)
	{
		month = '0'+month;
		mlen = mlen+1;
	}
	
	if(mlen == 2)
	{
		income = month.toString();
		var v_m = /^[0-9]+$/;
		if( !v_m.test(income) )
		{			
			mflag = 1;
		}
		else
		{
			mnum = income;
			if(mnum > 0 && mnum < 13)
			{
			}
			else
			{
				return 'Wrong Exp month';
			}
		}
	}
	else
	{
		mflag = 1;
	}	
	
	if(mflag == 1)
	{
		return 'Please, select Exp month';
	}

	// check year format
	var dteNow = new Date();
	var curYear = dteNow.getFullYear();
	var curMonth= dteNow.getMonth()+1;
	
	var yflag = 0;
	var ylen = year.length;
	if(ylen == 1)
	{
		year = '0'+year;
		ylen = ylen+1;
	}
	
	if(ylen == 2)
	{
		year = '20'+year;
		income = year.toString();
		var v_y = /^[0-9]+$/;
		if( !v_y.test(income) )
		{			
			yflag = 1;
		}
		else
		{
			ynum = income;
			if(ynum < curYear)
			{
				return 'Exp year has expired';
			}
			else
			{
				if(ynum == curYear)
				{
					if(mnum < curMonth)
					{
						return 'Exp month has expired';
					}
					else
					{
						if(mnum == curMonth)
							return 'Exp month will expire this month';
					}
				}
			}
		}
	}
	else
	{
		yflag = 1;
	}	
	
	if(yflag == 1)
	{
		return 'Please, select Exp year';
	}
	
	return false;
}

function check_phone_part(p, len)
{
	var flag = 0;
	var l = p.length;
		
	if(l == len)
	{
		income = p.toString( );
		
		var v_p = /^[0-9]+$/;
		if( !v_p.test(income) )
		{			
			flag = 1;
		}		
	}
	else
	{
		flag = 1;
	}
	
	if(flag == 1)
	{
		return 'Phone part should be '+len+'-digits number';
	}
	else
		return false;

}
