function FormError ( frmFld , msg ) {
	if ( msg != '' )
		alert( msg );
	if (typeof(frmFld.select)=='function')frmFld.select();
	function fieldFocus() {
		frmFld.focus();
	}
	window.setTimeout( fieldFocus , 100 );
}

function valiDate ( inDate , emptyok , type ) {
	if ( arguments.length < 3 ) {
		type = 'mdy';
		if ( arguments.length < 2 )
			emptyok = true;
	}
	if ( !(type == 'mdy' || type == 'dmy' || type == 'ymd') )
		type = 'mdy';

	if ( inDate == '' )
		return ( emptyok ) ? true : false;

	var regExp = /[^0-9]/;
	var da, mo, yr;
	var now = new Date();
	var century = String( now.getFullYear() ).substr( 0 , 2 );

	if ( regExp.test( inDate ) ) {  // delimiters found
		var dateParts = inDate.split( regExp );
		if ( dateParts.length < 2 || dateParts.length > 3 )
			return false;
		if ( dateParts[0].length > 2 )
			type = 'ymd';
		switch ( type ) {
			case 'mdy':
				da = dateParts[1];
				mo = dateParts[0];
				yr = (dateParts.length == 3) ? dateParts[2] : String( now.getFullYear() );
				break;
			case 'dmy':
				da = dateParts[0];
				mo = dateParts[1];
				yr = (dateParts.length == 3) ? dateParts[2] : String( now.getFullYear() );
				break;
			case 'ymd':
				da = dateParts[2];
				mo = dateParts[1];
				yr = (dateParts.length == 3) ? dateParts[0] : String( now.getFullYear() );
				break;
		}
	}
	else {  // no delimiters, parse accordingly
		if ( inDate.length != 4 && inDate.length != 6 && inDate.length != 8 ) return false;
		switch ( type ) {
			case 'mdy':
				da = inDate.substr( 2 , 2 );
				mo = inDate.substr( 0 , 2 );
				yr = (inDate.length > 4) ? inDate.substr( 4 ) : String( now.getFullYear() );
				break;
			case 'dmy':
				da = inDate.substr( 0 , 2 );
				mo = inDate.substr( 2 , 2 );
				yr = (inDate.length > 4) ? inDate.substr( 4 ) : String( now.getFullYear() );
				break;
			case 'ymd':
				switch ( inDate.length ) {
					case 4:
						mo = inDate.substr( 0 , 2 );
						da = inDate.substr( 2 , 2 );
						yr = String( now.getFullYear() );
						break;
					case 6:
						da = inDate.substr( 4 , 2 );
						mo = inDate.substr( 2 , 2 );
						yr = century + inDate.substr( 0 , 2 );
						break;
					case 8:
						da = inDate.substr( 6 , 2 );
						mo = inDate.substr( 4 , 2 );
						yr = inDate.substr( 0 , 4 );
						break;
					default:
						return false;
				}
		} // end switch
	} // end if/else

	// do some error checking
	var moI = parseInt(mo,10);
	var daI = parseInt(da,10);
	var yrI = parseInt(((yr.length==2)?century+yr:yr),10);
	if ( isNaN(daI) || daI < 1 || daI > 31 ) return false;
	if ( isNaN(moI) || moI < 1 || moI > 12 ) return false;
	if ( (yrI%4) == 0 ) {
		if ( moI == 2 && daI > 29 ) return false;
	}
	else {
		if ( moI == 2 && daI > 28 ) return false;
	}
	if ( moI == 4 || moI == 6 || moI == 9 || moI == 11 ) {
		if ( daI > 30 ) return false;
	}
	if ( isNaN(parseInt(yr)) || yr.length != 2 && yr.length != 4 ) return false;

	// fill in missing digits
	da = (da.length == 1) ? '0'+da : da;
	mo = (mo.length == 1) ? '0'+mo : mo;
	yr = (yr.length == 2) ? century + yr : yr;

	return yr + '-' + mo + '-' + da;
}

