//Stores the value of the name property of the email address input field for each occurence on the emailAuto.xsl
var emailAutoFields = new Array();

//Validate all email address fields on emailauto.xsl for content.
function validateEmailAuto(objForm)
{
	var objEmailField;
	var blnValidForm = true;
	
	//alert(emailAutoFields.length)
	
	for (var x=0; x < emailAutoFields.length; x++)
	{
		objEmailField = objForm.elements(emailAutoFields[x]);
		if (trim(objEmailField.value).length ==  0)
		{
			blnValidForm = false;
			alert("Each email must have a 'To' address");
			objEmailField.focus();
			return;
		}
// *** This is valid code that forces a valid email address for welcome emails. Uncomment to enforce this. ****
//		else
//		if (! is_valid_email(objEmailField.value)) 
//		{	blnValidForm = false;
//			alert( "This is not a valid email address." );
//			objEmailField.focus();
//			return;
//		}


	}
	
	if (blnValidForm)
	{
		objForm.submit();
	}
}


function validateEmailFull( strEmail )
{
	window.open("http://www.hexillion.com/samples/SimpleEmailValidation.asp?email=" + strEmail, "_email", "toolbar=0,width=400,height=200");
}


// Generate User Id from Name if a new user
function GenerateUserId( result, field1, field2 )
{
	result.value = trim(field1.value) + ' ' + trim(field2.value);
}


function setCompletedFlag (objResponseFld)
{
	var fldStub;
	var objForm;
	
	objForm = objResponseFld.form;
		
	cBoxName = objResponseFld.name.replace(/response/g,"completed");
	
	eval("objCompletedCBox = objForm.elements['" + cBoxName + "']");
	
	if ( ( trim(objResponseFld.value)).length > 0)
	{
		objCompletedCBox.checked = true;
	}
	else
	{
		objCompletedCBox.checked = false;
	}
	
}


function trim(str)
{
	var re_start = /^ +/;
	var re_end = / +$/;	
		
	return (str.replace(re_start,"")).replace(re_end,"");
}

function formatCRLF(str)
{
	var regexp = new RegExp("\r\n","g");
	return str.replace(regexp,"<BR>");
	//return str;
}

function Max(Obj, Size)
{
	if (Obj.value.length > Size)
	{
		alert ("Too many characters have been entered.  This field is limited to " + Size + " characters.");
		// Set Focus back
		Obj.focus()
	}
}

function IsNumeric(objField)
//  check for valid numeric strings
{
	var strValidChars = "0123456789.-";
	var strChar;
	var blnResult = true;
	var strString = objField.value;
	
	//  test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
		{
			blnResult = false;
		}
	}
	if (! blnResult)
	{
		alert("This field must contain only numeric characters");
		// Set focus back
		//objField.value = "";
		objField.focus();
	}
}

function ValidateDateEval (name, desc, warn)
{
	var theForm = document.Main;
	var dateStr;
	var dateObj;
	if (warn == null)
		{warnon = true;}
	else {warnon = warn;}

	eval ("dateObj = theForm.elements['" + name + "']");

	eval ("DayObj = theForm.elements['" + name + "_day']");
	eval ("MonthObj = theForm.elements['" + name + "_month']");
	eval ("YearObj = theForm.elements['" + name + "_year']");

	intDay = DayObj.value
	intMonth = MonthObj.value
	intYear = YearObj.value

	if ( (intDay == 0) || (intMonth == 0) || (intYear == 0) )
	{
		dateObj.value = "";

		// Mandatory Date Check
		if (warnon)
		{
			if (confirm("A value has not been entered for " + desc + ".\n"
						+ "No value will be recorded for " + desc + ".\n\n"
						+ "Is this correct?"))
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		else
		{	// Warn if part dates have been entered
			if  ((intDay + intMonth + intYear) > 0)
			{
				if (! confirm("A value has only been partly entered for " + desc + ".\n"
							+ "No value will be recorded for " + desc + ".\n\n"
							+ "Is this correct?"))
				{
					return false;
				}
			}
		}
		return true;
	}
	else
	{
		dateStr = intYear;
		dateStr = dateStr.concat("-", (intMonth < 10 ? "0" : ""),intMonth);
		dateStr = dateStr.concat("-", (intDay < 10 ? "0" : ""),intDay);
		dateObj.value = dateStr;

		var isLeapYear = ( ( intYear % 4 == 0) && ( ( intYear % 100 != 0) || (intYear % 400 == 0) ) )
	
		switch (Number(intMonth))
		{
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				return true;
				break;
			case 4:
			case 6:
			case 9:
			case 11:
				if (intDay > 30)
				{
					alert (desc + " Error: " + months[intMonth - 1] + " has only 30 days!");
					return false;
				}
				return true;
				break;
			case 2:
				if ( (intDay <= 28) || ((intDay == 29) && isLeapYear) )
				{
					return true;
				}
				else
				{
					alert (desc + " Error: February has only " 
						+ (isLeapYear ? "29" : "28") + " days in a "
						+ (isLeapYear ? "leap" : "non-leap") + " year!");
					return false;
				}
			default:
				alert (desc + " RECOGNITION ERROR: The month value entered could"
				+ " not be recognised as a legitimate month!");
				return false;
		}	
	}
	return false;	
}

/********************************************************************************************************
Preloading images: we create an image object, then we give it a gif or jpeg source file.
This file will be loaded into the cache of the browser, which will enable its instant display when it is requested.
********************************************************************************************************/
if (document.images) {
	var mainmenuoff = new Image();
	mainmenuoff.src = "images/mainmenu.gif";
	var mainmenuon = new Image();
	mainmenuon.src =  "images/mainmenu_on.gif";
	
	var adminmenuoff = new Image();
	adminmenuoff.src = "images/adminmenu.gif";
	var adminmenuon = new Image();
	adminmenuon.src =  "images/adminmenu_on.gif";
	
	var myprofileoff = new Image();
	myprofileoff.src = "images/myprofile.gif";
	var myprofileon = new Image();
	myprofileon.src =  "images/myprofile_on.gif";

	var userguideoff = new Image();
	userguideoff .src = "images/userguide.gif";
	var userguideon = new Image();
	userguideon.src =  "images/userguide_on.gif";

	var venueoff = new Image();
	venueoff.src = "images/venue.gif";
	var venueon = new Image();
	venueon.src =  "images/venue_on.gif";

	var assignmentsoff = new Image();
	assignmentsoff.src = "images/assignments.gif";
	var assignmentson = new Image();
	assignmentson.src =  "images/assignments_on.gif";

	var needhelpoff = new Image();
	needhelpoff.src = "images/needhelp.gif";
	var needhelpon = new Image();
	needhelpon.src =  "images/needhelp_on.gif";

	var aboutoff = new Image();
	aboutoff.src = "images/about.gif";
	var abouton = new Image();
	abouton.src =  "images/about_on.gif";
	
	var emailoff = new Image();
	emailoff.src = "images/email.gif";
	var emailon = new Image();
	emailon.src =  "images/email_on.gif";
	
	var printoff = new Image();
	printoff.src = "images/print.gif";
	var printon = new Image();
	printon.src =  "images/print_on.gif";
	
	var helpoff = new Image();
	helpoff.src = "images/help.gif";
	var helpon = new Image();
	helpon.src =  "images/help_on.gif";
	
	var participantsbookletoff = new Image();
	participantsbookletoff.src = "images/participantsbooklet.gif";
	var participantsbookleton = new Image();
	participantsbookleton.src =  "images/participantsbooklet_on.gif";
	
	var accomplishmentsoff = new Image();
	accomplishmentsoff.src = "images/accomplishments.gif";
	var accomplishmentson = new Image();
	accomplishmentson.src =  "images/accomplishments_on.gif";
	
	var createuseroff = new Image();
	createuseroff.src = "images/createuser.gif";
	var createuseron = new Image();
	createuseron.src =  "images/createuser_on.gif";
	
	var coursesoff = new Image();
	coursesoff.src = "images/courses.gif";
	var courseson = new Image();
	courseson.src =  "images/courses_on.gif";
	
	var attendanceoff = new Image();
	attendanceoff.src = "images/attendance.gif";
	var attendanceon = new Image();
	attendanceon.src =  "images/attendance_on.gif";
	
	var winwinagreementoff = new Image();
	winwinagreementoff.src = "images/winwinagreement.gif";
	var winwinagreementon = new Image();
	winwinagreementon.src =  "images/winwinagreement_on.gif";
	
	var lessonsoff = new Image();
	lessonsoff.src = "images/lessons.gif";
	var lessonson = new Image();
	lessonson.src =  "images/lessons_on.gif";
	
	var feedbackformsoff = new Image();
	feedbackformsoff.src = "images/feedback_forms.gif";
	var feedbackformson = new Image();
	feedbackformson.src =  "images/feedback_forms_on.gif";
}

/********************************************************************************************************
Rollover functions
********************************************************************************************************/
function getOff(nom)
	{
	if (document.images) {
		document.images[nom].src = eval(nom + 'off').src;
	}
}
function getOn(nom)
	{
	if (document.images) {
		document.images[nom].src = eval(nom + 'on').src;
	}
}
function getDown(nom)
	{
	if (document.images) {
		document.images[nom].src = eval(nom + 'down').src;
	}
}


