/*
*
*	$LastChangedRevision: 3196 $
*	$LastChangedDate: 2010-05-21 12:30:48 +0100 (Fri, 21 May 2010) $
*	$LastChangedBy: jedi $
*
*/
function Trim(sString) {
	return sString.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

function isDate(iDay, iMonth, iYear)
{
	//Check to make sure that they have selected a valid date
	var ary30Days = new Array("4","6","9","11");
	var bLeapYear = iYear / 4;
	
	//Is this a leap yer
	if (parseInt(bLeapYear) == bLeapYear)
		bLeapYear = true;
	else
		bLeapYear = false;
	
	//ensure that all values have been passed
	//if they havent, how can the date be correct
	if (isNaN(parseInt(iDay)) || isNaN(parseInt(iMonth)) || isNaN(parseInt(iYear)))
		return false;
	
	if (parseInt(iMonth) == 2)
	{
		if (bLeapYear && (parseInt(iDay) > 29))
			return false;
		else if (!bLeapYear && parseInt(iDay) > 28)
			return false;
	}
	else if (parseInt(iDay) > 30)
	{
		for (i = 0; i < ary30Days.length; i++)
		{
			if (parseInt(iMonth) == ary30Days[i])
				return false;
		}
	}
	return true;
}

function selecteditems(frm, sFields)
{
	var fieldlist = sFields.split(",");
	var aryRtn = new Array();
	var iArrayPos = 0;
	
	for(var element=0; element<fieldlist.length; element++)
	{
		var doc = eval('frm.' + fieldlist[element]);
		iArrayPos = aryRtn.length;
		for (var i=0; i<doc.length; i++)
		{
			if (doc[i].alt)
				aryRtn[iArrayPos] = doc[i].alt;
			else
				aryRtn[iArrayPos] = "You must select an option for " + doc[i].name;
				
			if (doc[i].checked)
			{
				aryRtn[iArrayPos] = 0;
				break;
			}
		}
	}
	
	//now check that they were all checked
	for (var i=0; i<aryRtn.length; i++)
	{
		if (aryRtn[i] != 0)
		{
			alert(aryRtn[i]);
			return false;
		}
	}
	return true;
}

function isEmail(sEmail)
{
	if (sEmail.indexOf("@") == -1)
		return false;
		
	var emailFilter = /^([a-z0-9][-._a-z0-9]*)*[a-z0-9]+@([a-z0-9][-_a-z0-9]*\.)+[a-zA-Z]{2,7}$/i;
	return emailFilter.test(sEmail);
}

function collectionToArray(col) 
{
	var a = new Array();
	for (var i = 0; i < col.length; i++)
		a[a.length] = col[i];
	return a;
}

function checkEnablerForm(oFrm)
{
	var iType = 0;
	var aryFields = collectionToArray(document.getElementsByTagName("input"));
	aryFields = aryFields.concat(collectionToArray(document.getElementsByTagName("textarea")));	
	aryFields = aryFields.concat(collectionToArray(document.getElementsByTagName("radio")));
	aryFields = aryFields.concat(collectionToArray(document.getElementsByTagName("checkbox")));
	aryFields = aryFields.concat(collectionToArray(document.getElementsByTagName("select")));
	
	
	for (var i=0; i<aryFields.length; i++)
	{
		if (aryFields[i].name.substring(0, 2) == "f_")
		{
			var iType = 0;
			var sMessage = "";
			var bArray = false;
			var bDate = false;
			var bTime = false;
			
			switch (aryFields[i].type.toLowerCase())
			{
				case "text" :
					iType = parseInt(aryFields[i].alt.substring(0, 1));
					sMessage = aryFields[i].alt.substring(2, aryFields[i].alt.length);
					break;
				case "textarea" :
					iType = parseInt(aryFields[i].title.substring(0, 1));
					sMessage = aryFields[i].title.substring(2, aryFields[i].title.length);
					break;
				case "radio" :
				case "checkbox" :
					sMessage = aryFields[i].alt;
					bArray = true;
					break;
				case "select-one" :
					if ((aryFields[i].name.indexOf("day") >= 0) || (aryFields[i].name.indexOf("month") >= 0) || (aryFields[i].name.indexOf("year") >= 0))
						bDate = true;
					if ((aryFields[i].name.indexOf("hour") >= 0) || (aryFields[i].name.indexOf("minutes") >= 0))
						bTime = true;
					sMessage = aryFields[i].title;
					break;
			}
			
			if (!bArray && !bDate && !bTime && sMessage != "")
			{
				if (Trim(aryFields[i].value) == "")
				{
					alert(sMessage);
					aryFields[i].focus();
					return false;
				}
				switch (iType)
				{
					case 1 :
						if (!isEmail(Trim(aryFields[i].value)))
						{
							alert(sMessage);
							aryFields[i].focus();
							return false;
						}
						break;
					case 2 :
						if (isNaN(Trim(aryFields[i].value)))
						{
							alert(sMessage);
							aryFields[i].focus();
							return false;
						}
						break;
				}
			}
			else if (bDate)
				bDate = bDate;
			else if (bTime)
			{
				if (sMessage != "" && !selecteditems(oFrm, aryFields[i].name + "," + aryFields[i+1].name))
					return false;
			}
			else if (bArray)
				if (sMessage != "" && !selecteditems(oFrm, aryFields[i].name))
					return false;
		}
	}
	return true;
}
