/* *******************************
 * Functions for validation data *
 * *******************************/

/**
 * Returns true if parameter string is a valid e-mail.
 *
 * @param String v
 * @return boolean
 */
function isEmail(v)
{
	return v.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,3}$/);
}

/**
 * Check if string is a correct unsigned integer.
 * 
 * @param String v
 * @return boolean
 */
function isNumber(v)
{
	return v.match(/^\d+$/);
}

/**
 * Check if string is a correct string.
 * 
 * @param String v
 * @return boolean
 */
function isString(v)
{
    return (v != "") && !v.match(/^\s+$/);
    //return v.match(/\w+/) ? true : false;
}

/**
 * Check if parameter is correct date value.
 * Date format is: d[d]/m[m]/yy[yy]
 * 
 * @param String v
 * @return boolean
 */
function isDate(v)
{
	var days = new Array();

	days[1] = "31";
	days[2] = "28";
	days[3] = "31";
	days[4] = "30";
	days[5] = "31";
	days[6] = "30";
	days[7] = "31";
	days[8] = "31";
	days[9] = "30";
	days[10] = "31";
	days[11] = "30";
	days[12] = "31";

	if(!v.match(/^\d{1,2}\/\d{1,2}\/(\d\d){1,2}$/))
		return false;
		
	var foo = v.split('/');
	var day = parseInt(foo[0], 10);
	var month = parseInt(foo[1], 10);
	var year = parseInt(foo[2], 10);
	
	// If year is leap.
	if(year % 4 == 0 || year % 100 == 0 || year % 400 == 0)
		days[2] = "29";
	
	if(month < 1 || month > 12)
		return false;
	
	if(day < 1 || day > days[month])
		return false;
	
	return true;
}

/**
 * Check if parameter is correct time value.
 * Time format is: hh:mm
 * 
 * @param string v
 */
function isTime(v)
{
	if(!v.match(/^\d{1,2}:\d{1,2}$/))
		return false;
		
	var foo = v.split(":");
	var hours = parseInt(foo[0], 10);
	var minutes = parseInt(foo[1], 10);
	
	if(hours < 0 || hourse > 23)
		return false;
		
	if(minutes < 0 || minutes > 59)
		return false;
		
	return true;
}
