/*
	dk_form.js (c) 2001 by David Kearns
	
	These are the supporting functions for the dk_form library.
	This must be included on every page that uses dk_form.
	Use the following syntax:
	
	<script src="/js/dk_form.js" language="JavaScript" type="text/javascript"></script>
*/

//	setup regEx

var acceptabledate = /^((0?(1|2|3|4|5|6|7|8|9|10|11|12)[\/\-](01|1|02|2|03|3|04|4|05|5|06|6|07|7|08|8|09|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)[\/\-](\d\d?){1,2})|((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (01|1|02|2|03|3|04|4|05|5|06|6|07|7|08|8|09|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)(,| ) ?(\d\d?){1,2})|((January|February|March|April|May|June|July|August|September|October|November|December) (01|1|02|2|03|3|04|4|05|5|06|6|07|7|08|8|09|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)(,| ) ?(\d\d?){1,2}))?$/i;

//	check to ensure that a field isn't over the maxlength specified

function checkmaxsize(fieldobj,maxsize)
{	if (fieldobj.value.length > maxsize)
	{	var howmany = (fieldobj.value.length-maxsize);
		alert(fieldobj.name+' is '+howmany+' characters too long.');
		fieldobj.select();
		return false;
	}
	return true;
}

function checkminsize(fieldobj,minsize)
{	if (fieldobj.value.length < minsize)
	{	var howmany = (minsize+fieldobj.value.length);
		alert(fieldobj.name+' is '+howmany+' characters too short.');
		fieldobj.select();
		return false;
	}
	return true;
}

function required(fieldobj,fieldtype)
{	var returnback = true;
	//alert(fieldobj.name);
	switch(fieldtype.toLowerCase())
	{	
		case 'select':
			if (!fieldobj.selectedIndex || (fieldobj.option && fieldobj.option[fieldobj.selectedindex].value == '' && fieldobj.selectedindex == 0 ))
			{	alert(dk_form_support_reference(fieldobj)+' must have something selected. Please select something.');
				fieldobj.focus();
				returnback = false;
			}
		break;
		case 'radio':
			var somethingpicked = false;
			for (var x=0; x<fieldobj.length;  x++)
			{	somethingpicked = somethingpicked || fieldobj[x].checked;
			}
			if (!somethingpicked)
			{	alert(dk_form_support_reference(fieldobj[0])+' must have something selected. Please select one.');
				fieldobj[0].focus();
				returnback = false;
			}
		break;
		case 'checkbox':
			var somethingpicked = false;
			for (var x=0; x<fieldobj.length;  x++)
			{	somethingpicked = somethingpicked || fieldobj[x].checked;
			}
			if (!somethingpicked)
			{	alert(dk_form_support_reference(fieldobj[0])+' must have something selected. Please select one.');
				fieldobj[0].focus();
				returnback = false;
			}
		break;
		default:
			if (fieldobj.value.length == 0)
			{	alert(dk_form_support_reference(fieldobj)+' is required. Please enter something');
				fieldobj.select();
				returnback = false;
			}
		break;
	}
	return returnback;
}

function dk_form_support_reference(fo)
{	if (fo.title != '')
	{	return fo.title;
	}
	else
	{	return fo.name;	
	}
}

//	validation functions - name dk_fva_#validateas#

//	integer
function dk_fva_integer(fo)
{	if (!isNaN(fo.value) && fo.value.indexOf('.') == -1 && fo.value != '')
	{	return true;
	}
	fo.focus();
	alert(dk_form_support_reference(fo)+' needs to be an integer. Please correct.');
	return false;
}

//	real
function dk_fva_real(fo)
{	if (!isNaN(fo.value) && fo.value != '')
	{	return true;
	}
	fo.focus();
	alert(dk_form_support_reference(fo)+' needs to be number. Please correct.');
	return false;
}

//	date
function dk_fva_date(fo)
{	if ((fo.value != '' && fo.value.search(acceptabledate) != -1) || fo.value == '')
	{	return true;
	}
	fo.focus();
	alert(dk_form_support_reference(fo)+' needs to be a date. Please correct.');
	return false;
}