//---------------------------------------------------------------------------
// Process a key event.  If enter was pressed, submit specified form
function onDoKey(myEvent, formName)
{
	if (myEvent.keyCode==13)
	{
		document.forms[formName].submit();
		myEvent.returnValue = false;
	}
}

//---------------------------------------------------------------------------
// For some unknown reason, some forms (multipart?) are allergic to our calling their 'submit'
// We'll rely on a hidden submit button called 'btnSubmit' on the form and have it submit all.
function onDoKey2(myEvent, formName)
{
	if (myEvent.keyCode==13)
	{
		document.forms[formName].btnSubmit.click();
		myEvent.returnValue = false;
	}
}

//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

if (english)
{
	lang = "";
	arrDays = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
	arrMonths = new Array("", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
}
else
{
	lang = "_fr";
	arrDays = new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
	arrMonths = new Array("", "janvier", "f&eacute;vrier", "mars", "avril", "mai", "juin", "juillet", "ao&ucirc;t", "septembre", "octobre", "novembre", "d&eacute;cembre");
}      	

//---------------------------------------------------------------------------
// Write activity string (member list)
function writeActivity(activity)
{
	if (activity != "")
		document.write(activity + (english ? ": " : " : "));
}

//---------------------------------------------------------------------------
// Write a string representing a sum of money
function writeMoneyStr(money)
{
	var dollars = (money > 0) ? Math.floor(money) : Math.ceil(money);
	var cents = Math.floor((money - dollars) * 100);
	
	if (english)
		document.write("$" + dollars + "." + padRightZero(cents, 2));	
	else
		document.write(dollars + "." + padRightZero(cents, 2) + "$");	
}

//---------------------------------------------------------------------------
// Write money symbol based on language and position
function writeMoneySymbol(before)
{
	if (english && before)
		document.write("$");
	else if (!english && !before)
		document.write("$");	
}

//---------------------------------------------------------------------------
// Select a radio button
function selectRadio(buttons, value)
{
	var i;
	var found = false;
	for (i=0; i < buttons.length; i++)
	{
		if (buttons[i].value == value)
		{
			found = true;
			buttons[i].checked = true;
		}
	}
	
	if (!found)
		buttons[0].checked = true;
}

//---------------------------------------------------------------------------
// Parse a YYYY-MM-DD string and return an array. If dateStr is empty, returns today
function writePlural(count, sing, plur, none)
{
	var num = new Number(count);
	if (num > 1)
		document.write(count + " " + plur);
	else if (num == 1)
		document.write(count + " " + sing);
	else
		document.write(none + " " + (english ? plur : sing));
}

//---------------------------------------------------------------------------
// Parse a YYYY-MM-DD string and return an array. If dateStr is empty, returns today
function parseDateString(dateString)
{
  if (dateString == "" || dateString == "null")
	{
		var d = new Date();		
		return new Array(d.getYear(), d.getMonth() + 1, d.getDate());
	}

  var myArray = new Array(3);
	var idx = 0;
	var lastIdx = 0;

	for (i=0; i < dateString.length; i++)
	{	

		switch (dateString.charAt(i))
		{
			case '-':
			case ' ':
			case ':':
				myArray[idx] = new Number(dateString.substring(lastIdx, i));
				idx++;
				lastIdx = i + 1;
				break;
		}
	}

	myArray[idx] = new Number(dateString.substring(lastIdx));
	return myArray;
}

//---------------------------------------------------------------------------
// Write a date string
function writeDateStr(dateString)
{
 	if (dateString == "null")
 	{
 		if (english)
 			document.write("Not specified");
 		else
		  document.write("Non sp&eacute;cifi&eacute;e");
  }
 	else
		writeDateByArr(parseDateString(dateString), true);
}

//---------------------------------------------------------------------------
// Write a date string
function writeDateStrNoTime(dateString)
{
 	if (dateString == "null")
 	{
 		if (english)
 			document.write("Not specified");
 		else
		  document.write("Non sp&eacute;cifi&eacute;e");
  }
 	else
		writeDateByArr(parseDateString(dateString), false);
}

//---------------------------------------------------------------------------
// Writes a date in current language format
function writeDate(year, month, day)
{
	writeDateByArr( new Array(year, month, day), true);
}

//---------------------------------------------------------------------------
// Writes a date in current language format
function writeDateByArr(arr, writeTime)
{
	var year = arr[0];
	var month = arr[1];
	var day = arr[2];
	
  var d = new Date(year, month - 1, day);

  var dow = d.getDay();
  var date = "";
  var sDay = new String(day);


  if (english)
  {
	  date = arrDays[dow]  + ", " + arrMonths[month] + " " + sDay;

    if (sDay.substr(sDay.length - 1) == "1" && day != 11)
		  date = date + "st";
	  else if (sDay.substr(sDay.length - 1) == "2" && day != 12)
		  date = date + "nd";
    else if (sDay.substr(sDay.length - 1) == "3" && day != 13)
		  date = date + "rd";
	  else
		  date = date + "th";
	  
	  date = date  + ", "  + year;

  }
  else
  {
	  date = arrDays[dow] + " " + day;
	  if (day == 1)
	  	date = date + "er";
	  	
	  date = date + " " + arrMonths[month] + " " + year;	  
  }
  
  if (arr.length > 3 && writeTime)
  {
  	if (english)
  	{
  		if (arr[3] > 12)
	  		date = date + " at " + padLeftZero(arr[3] - 12, 2) + "h" + arr[4] + " PM";
	  	else
		  	date = date + " at " + padLeftZero(arr[3], 2) + "h" + arr[4] + " AM";
 		}
  	else
  		date = date + " &agrave; " + padLeftZero(arr[3], 2) + ":" + padLeftZero(arr[4], 2);

  }

  document.write(date);
}

// Pad left with zeroes
function padLeftZero(str, max)
{
	str = new String(str);

	while (str.length < max)
		str = "0" + str;
		
	return str;
}

// Pad right with zeroes
function padRightZero(str, max)
{
	str = new String(str);

	while (str.length < max)
		str = str + "0";
		
	return str;
}

//---------------------------------------------------------------------------
function selectOptionById(idName, opVal)
{
	var obj = document.getElementById(idName).options;
	selectOption(obj, opVal);
}

//---------------------------------------------------------------------------
// Select an option from an select object based on their value
function selectOption(opts, opVal)
{
	if (opts.length > 0)
	{

		for (i=0; i < opts.length; i++)
		{
			if (opts[i].value == opVal)
			{
				opts[i].selected = true;
				break;
			}
		}
	}
}

//---------------------------------------------------------------------------
// Write a page link (used by write pages)
function writePageLink(hRefLink, hRefClass, idx, txt)
{
	document.write("<a href=\"" + hRefLink + idx + "\"");

	if (typeof hRefClass != "undefined")
		document.write(" class=\"" + hRefClass + "\">" + txt + "</a>&nbsp");
	else
		document.write(">" + txt + "</a>&nbsp");
}

//---------------------------------------------------------------------------
// Write a 'pages' control
function writePages(curPage, maxPages, hRefLink, hRefClass)
{
	if (maxPages == 1)
		return;

	var iStart = Math.max(1, curPage - 5);
	var iEnd = Math.min(maxPages, curPage + 5);

	if (curPage > 1)
		writePageLink(hRefLink, hRefClass, (curPage - 1), "&laquo;");

	if (iStart > 1)
		document.write("...&nbsp;");

	for (i=iStart; i <=iEnd; i++)
	{
		if (i == curPage)
			writePageLink(hRefLink, hRefClass, i, "[" + i + "]");
		else
			writePageLink(hRefLink, hRefClass, i, i);
	}

	if (iEnd < maxPages)
		document.write("...&nbsp;");

	if (curPage < maxPages)
		writePageLink(hRefLink, hRefClass, (curPage + 1), "&raquo;");
}

//---------------------------------------------------------------------------
// Write a date control
function writeDateCtrl(dateString, ctrlName, formName)
{
	myArray = parseDateString(dateString);
	writeDateWebCtrl(new Number(myArray[0]), new Number(myArray[1]), new Number(myArray[2]), ctrlName, formName);
}

//---------------------------------------------------------------------------
// Write a date control
function writeDateTimeCtrl(dateString, ctrlName, formName)
{

	myArray = parseDateString(dateString);

	if (myArray.length == 3)
	{
		var d = new Date();		
		myArray.push(d.getHours());
		myArray.push(d.getMinutes());
	}

	writeDateTimeWebCtrl(myArray[0], myArray[1], myArray[2], myArray[3], myArray[4], ctrlName, formName);
}

//---------------------------------------------------------------------------
// Write a date control
function writeBaseDateWebCtrl(year, month, day, ctrlName, formName, methodName)
{
	var d = new Date();
	writeNumericSelect(year, Math.min(d.getYear() - 10, year - 5), Math.max(d.getYear() + 10, year + 5), ctrlName + "_year", methodName + "('" + ctrlName + "', '" + formName + "');");
	writeNumericSelect(month, (month == 0 ? 0 : 1), 12, ctrlName + "_month", methodName + "('" + ctrlName + "', '" + formName + "');");
	writeNumericSelect(day, (day == 0 ? 0 : 1), 31, ctrlName + "_day", methodName + "('" + ctrlName + "', '" + formName + "');");
}

//---------------------------------------------------------------------------
// Write a date control
function writeDateWebCtrl(year, month, day, ctrlName, formName)
{
	writeBaseDateWebCtrl(year, month, day, ctrlName, formName, "dateElementChanged");
	document.write('<input type="hidden" name="' + ctrlName + '" value="' + year + '-' + month + '-' + day + '">');
}

//---------------------------------------------------------------------------
// Write a date control
function writeDateTimeWebCtrl(year, month, day, hour, minute, ctrlName, formName)
{
	writeBaseDateWebCtrl(year, month, day, ctrlName, formName, "dateTimeElementChanged");

	if (english)
		document.write('&nbsp;at&nbsp;');
	else
		document.write('&nbsp;&agrave;&nbsp;');
		
	writeNumericSelect(hour, 0, 23, ctrlName + "_hour", "dateTimeElementChanged('" + ctrlName + "', '" + formName + "');");
	
	if (english)
		document.write('&nbsp;h&nbsp;');
	else
		document.write('&nbsp;:&nbsp;');
	
	writeNumericSelect(minute, 0, 59, ctrlName + "_minute", "dateTimeElementChanged('" + ctrlName + "', '" + formName + "');");
	document.write('<input type="hidden" name="' + ctrlName + '" value="' + year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':00.0">');
}

//---------------------------------------------------------------------------
// Called when an element of a date control has changed
function dateElementChanged(ctrlName, formName)
{
	var oVal = eval('document.forms[formName].' + ctrlName);
	oVal.value = 
		eval('document.forms[formName].' + ctrlName + '_year.value') + '-' +
		eval('document.forms[formName].' + ctrlName + '_month.value') + '-' +
		eval('document.forms[formName].' + ctrlName + '_day.value');
}

//---------------------------------------------------------------------------
// Called when an element of a date control has changed
function dateTimeElementChanged(ctrlName, formName)
{
	var oVal = eval('document.forms[formName].' + ctrlName);
	oVal.value = 
		eval('document.forms[formName].' + ctrlName + '_year.value') + '-' +
		eval('document.forms[formName].' + ctrlName + '_month.value') + '-' +
		eval('document.forms[formName].' + ctrlName + '_day.value') + ' ' + 
		eval('document.forms[formName].' + ctrlName + '_hour.value') + ':' + 
		eval('document.forms[formName].' + ctrlName + '_minute.value') + ":00.0";
}

//---------------------------------------------------------------------------
// Write a select that work with numbers only
function writeNumericSelect(select, start, end, ctrlName, onChange)
{
	document.write('<select name="' + ctrlName + '"' + (typeof onChange == "undefined" ? "" : 'onChange="' + onChange + '" ') + '>');
	for (i = start; i <= end; i++)
	{
		document.write('<option value="' + i + '"' + (i == select ? ' SELECTED >' : '>') + i)	;
	}
	document.write('</select>');
}