//check if object is empty
function checkEmpty(obj, message)
{
	if (obj)
	{
		if (empty(obj.value))
		{
			return wrapString(message);
		}
		else
		{
			return "";
		}
	}
	else
	{
		return wrapString("Object is not defined");
	}
}

//check length, criteria can be 'min' or 'max', limit is the number
function checkLength(obj, criteria, limit, message)
{
	if (obj)
	{
		if (criteria == "min")
		{
			if (strlen(obj.value) < limit)
			{
				return wrapString(message);
			}
			else
			{
				return "";
			}
		}
		else if (criteria == "max")
		{
			if (strlen(obj.value) > limit)
			{
				return wrapString(message);
			}
			else
			{
				return "";
			}
		}
		else
		{
			return "";
		}
	}
	else
	{
		return wrapString("Object is not defined");
	}
}

function checkEmail(obj, message)
{
	if (obj)
	{
		if (empty(obj.value))
		{
			return "";
		}
		else
		{
			if (strstr(obj.value, "@") && strstr(strstr(obj.value, "@", false), "."))
			{
				return "";
			}
			else
			{
				return wrapString(message);
			}
		}
	}
	else
	{
		return wrapString("Object is not defined");
	}
}

//criteria can be 'less' or 'more'
function checkDate(criteria, dateStr, dateStrFormat, message)
{
	//get today's date
	var current = new Date();
	var current_date = current.getDate();
	var current_month = current.getMonth()+1;
	var current_year = current.getFullYear();
	
	//split the passed in variable
	var evaluateDate = "";
	var evaluateMonth = "";
	var evaluateYear = "";
	
	var dateStrElement = dateStr.split("/");
	
	if (strstr(dateStrFormat, "d") && strstr(dateStrFormat, "m") && strstr(dateStrFormat, "Y"))
	{
		evaluateDate = isset(dateStrElement[0]) ? dateStrElement[0] : null;
		evaluateMonth = isset(dateStrElement[1]) ? dateStrElement[1] : null;
		evaluateYear = isset(dateStrElement[2]) ? dateStrElement[2] : null;
	}
	else if (!strstr(dateStrFormat, "d") && strstr(dateStrFormat, "m") && strstr(dateStrFormat, "Y"))
	{
		evaluateMonth = isset(dateStrElement[0]) ? dateStrElement[0] : null;
		evaluateYear = isset(dateStrElement[1]) ? dateStrElement[1] : null;
	}
	else if (strstr(dateStrFormat, "d") && !strstr(dateStrFormat, "m") && strstr(dateStrFormat, "Y"))
	{
		evaluateDate = isset(dateStrElement[0]) ? dateStrElement[0] : null;
		evaluateYear = isset(dateStrElement[1]) ? dateStrElement[1] : null;
	}
	else if (!strstr(dateStrFormat, "d") && !strstr(dateStrFormat, "m") && strstr(dateStrFormat, "Y"))
	{
		evaluateYear = isset(dateStrElement[0]) ? dateStrElement[0] : null;
	}
	
	if (criteria == "less")
	{
		//at the moment only date with year is supported
		if (!empty(evaluateYear))
		{
			if (evaluateYear < current_year)
			{
				return "";
			}
			else if (evaluateYear == current_year)
			{
				if (empty(evaluateMonth))
				{
					return "";
				}
				else
				{
					if (evaluateMonth < current_month)
					{
						return "";
					}
					else if (evaluateMonth == current_month)
					{
						if (empty(evaluateDate))
						{
							return "";
						}
						else
						{
							if (evaluateDate < current_date)
							{
								return "";
							}
							else
							{
								return wrapString(message);
							}
						}
					}
					else
					{
						return wrapString(message);
					}
				}
			}
			else
			{
				 return wrapString(message);
			}
		}
	}
	else if (criteria == "more")
	{
		//at the moment only date with year is supported
		if (!empty(evaluateYear))
		{
			if (evaluateYear > current_year)
			{
				return "";
			}
			else if (evaluateYear == current_year)
			{
				if (empty(evaluateMonth))
				{
					return "";
				}
				else
				{
					if (evaluateMonth > current_month)
					{
						return "";
					}
					else if (evaluateMonth == current_month)
					{
						if (empty(evaluateDate))
						{
							return "";
						}
						else
						{
							if (evaluateDate >= current_date)
							{
								return "";
							}
							else
							{
								return wrapString(message);
							}
						}
					}
					else
					{
						return wrapString(message);
					}
				}
			}
			else
			{
				return wrapString(message);
			}
		}
	}
}

//wrap the string with tag
function wrapString(str, tag)
{
	if (tag == "" || tag == null || tag == undefined)
	{
		tag = "li";
	}
	return "<" + tag + ">" + str + "</" + tag + ">";
}