/*
#
# Forms.js
#
# Validation functions for forms
#
# Version 1.0
#
# Huber Ulrich
# EuroNetSolutions GnbR (r)
# Stillupklamm 822
# A-6290 Mayrhofen
#
# last modified: 13.4.2001
#
*/

//bool CheckDate(formname,name_of_day_textfield,name_of_month_textfield,name_of_year_textfield)
function CheckDate(fname,fDay,fMonth,fYear)
	{
	var intDay = parseInt(fname.elements[fDay].value,10);
	var intMonth = parseInt(fname.elements[fMonth].value,10);
	var intYear = parseInt(fname.elements[fYear].value,10);
	// boundary violation
	if (isNaN(intDay) || isNaN(intMonth) || isNaN(intYear))
		{
		return false;	
		}
	if (intDay < 1 || intDay > 31) 
		{
		return false;
		}
	if (intMonth < 1 || intMonth > 12)
		{
		return false;	
		}

	// check for 31st 
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && intDay == 31) 
		{
		return false;
		}
	
	// Check for February date validity (including leap years) 
	if (intMonth == 2) 
		{
		// figure out if "year" is a leap year; don't forget that
		// century years are only leap years if divisible by 400
		var isleap=(intYear%4==0 && (intYear%100!=0 || intYear%400==0));
		if (intDay > 29 || (intDay == 29 && !isleap)) 
			{
			return false;
	        }
		}
	return true;
	}

//check date sequence : d1 must be less than d2
// bool d1lessd2 (formname,name_of_day1_textfield,name_of_month1_textfield,name_of_year1_textfield,
//					name_of_day2_textfield,name_of_month2_textfield,name_of_year2_textfield,check_dates_before_comparison)
function d1lessd2(fname,fd1d,fd1m,fd1y,fd2d,fd2m,fd2y,chkdat)
	{	
	//validate single dates
	if (chkdat)
		{
		if (!CheckDate(fname,fd1d,fd1m,fd1y) || !CheckDate(fname,fd2d,fd2m,fd2y))
			{
			return false;
			}		
		}
		
	var intDay1 = parseInt(fname.elements[fd1d].value,10);
	var intMonth1 = parseInt(fname.elements[fd1m].value,10);
	var intYear1 = parseInt(fname.elements[fd1y].value,10);

	var intDay2 = parseInt(fname.elements[fd2d].value,10);
	var intMonth2 = parseInt(fname.elements[fd2m].value,10);
	var intYear2 = parseInt(fname.elements[fd2y].value,10);

	//checkyear
	if (intYear2 > intYear1)
		{
		return true;
		}
	else
		{
		if (intYear2 < intYear1)
			{
			return false;
			}
		}
	
	//checkmonth
	if (intMonth2 > intMonth1)
		{
		return true;
		}
	else
		{
		if (intMonth2 < intMonth1)
			{
			return false;
			}
		}
	
	//checkday
	if (intDay2 <= intDay1)
		{
		return false;
		}
		
	return true;
	}

// email validation done by regular expression
function CheckEmail(email)
	{
	var rex = /^[\w\.=-]+@[\w\.=-]+\.[a-z]{2,3}$/;
	var t = rex.test(email);
	if (email.length <= 0 || !t)
		{
		return false;
		}
	return true;
	}
