/*----------------------------------------------------------------------------\
|                         Intekron JXP Select Controls                        |
|-----------------------------------------------------------------------------|
|                       (mailto:support@intekron.com)                         |
|                  For Intekron (http://www.intekron.com/)                    |
|-----------------------------------------------------------------------------|
|                   Copyright (c) 2003-2009 Intekron Ltd.                     |
|-----------------------------------------------------------------------------|
| This software is provided "as is", without warranty of any kind, express or |
| implied, including  but not limited  to the warranties of  merchantability, |
| fitness for a particular purpose and noninfringement. In no event shall the |
| authors or  copyright  holders be  liable for any claim,  damages or  other |
| liability, whether  in an  action of  contract, tort  or otherwise, arising |
| from,  out of  or in  connection with  the software or  the  use  or  other |
| dealings in the software.                                                   |
\----------------------------------------------------------------------------*/

//********************************************************************************
// CONTROL: ctlSelectNITOBI - SELECT BASE CLASS BASED ON NITOBI ComboBox
//********************************************************************************
function ctlSelectNITOBI(oNTBControl, sOIDField, sID, bRequired, bReadonly, bVisible, lOID, sName) {
	this.base					= new ctlCommon(sID, bRequired, bReadonly, bVisible);
	this.lOID					= lOID;
	this.sName					= sName;
	zControls[zControls.length] = this;
	this.oNTBControl			= oNTBControl;
	this.sOIDField				= sOIDField;
}
ctlSelectNITOBI.prototype.getValue = function () { return this.getOID(); }
ctlSelectNITOBI.prototype.getOID = function () { return this.lOID; }
ctlSelectNITOBI.prototype.setOID = function (lNewOID) { this.lOID = lNewOID; this.change(); }
ctlSelectNITOBI.prototype.getName = function () {
	var oTXT = this.oNTBControl.GetTextBox();
	return (oTXT ? oTXT.GetValue() : this.sName);
}
ctlSelectNITOBI.prototype.setName = function (sNewName) {
	this.sName = sNewName;
	var oTXT = this.oNTBControl.GetTextBox();
	oTXT.SetValue(this.sName);
	this.change();
	oTXT.SetCSSClassName(this.isValid() ? '' : 'INPUTERROR');
}
ctlSelectNITOBI.prototype.focus = function () { 
	if (!this.isReadonly() && this.oNTBControl != null) {
		var oTXT = this.oNTBControl.GetTextBox();
		oTXT.SetCSSClassName(!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
		this.oNTBControl.SetFocus();
		return this.base.focus();
	}
}
ctlSelectNITOBI.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oTXT = this.oNTBControl.GetTextBox();
		oTXT.SetCSSClassName(!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectNITOBI.prototype.click = function () { return this.base.click(); }
ctlSelectNITOBI.prototype.change = function () { 
	if (!this.isReadonly()) {
		var oTXT = this.oNTBControl.GetTextBox();
		oTXT.SetCSSClassName(this.isRequired() ? 'INPUTREQUIRED' : '');
		this.lOID = this.oNTBControl.GetSelectedItem().Value;
		return this.base.change();
	}
}
ctlSelectNITOBI.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectNITOBI.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectNITOBI.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectNITOBI.prototype.isValid = function () { return (this.isRequired() && !this.isReadonly() ? this.lOID > 0 || this.lOID == -1 || this.lOID == -2 : true ); }
ctlSelectNITOBI.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectNITOBI.prototype.clear = function () { return this.base.clear(); }
ctlSelectNITOBI.prototype.show = function (bVal) { document.getElementById('div_cmb_'+this.getID()).style.display=bVal?'block':'none';return this.base.show(bVal); }
ctlSelectNITOBI.prototype.readonly = function (bVal) {
	var oTXT = this.oNTBControl.GetTextBox();
	if (bVal) { oTXT.Disable(); } else { oTXT.Enable(); }
	oTXT.SetCSSClassName(bVal ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');
	return this.base.readonly(bVal);
}
ctlSelectNITOBI.prototype.required = function (bVal) {
	this.base.required(bVal);
	if (!this.isReadonly() && this.isValid()) {
		var oTXT = this.oNTBControl.GetTextBox();
		oTXT.SetCSSClassName(bVal ? 'INPUTREQUIRED' : '');
	}
}
ctlSelectNITOBI.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectNITOBI.prototype.getID = function () { return this.base.getID(); }
ctlSelectNITOBI.prototype.getLabel = function () { return this.base.getLabel(); }
ctlSelectNITOBI.prototype.setLabel = function (sNewLabel) { return this.base.setLabel(sNewLabel); }

//********************************************************************************
// CONTROL: ctlSelectCommon - ABTSRACT BASE CLASS
//********************************************************************************
function ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sName) {
	this.base			= new ctlCommon(sID, bRequired, bReadonly, bVisible);
	this.lOID			= lOID;
	this.sName			= sName;
}
ctlSelectCommon.prototype.getOID = function () { return this.lOID; }
ctlSelectCommon.prototype.setOID = function (lNewOID) { this.lOID = lNewOID; this.change(); }
ctlSelectCommon.prototype.getName = function () { return this.sName; }
ctlSelectCommon.prototype.setName = function (sNewName) {
	this.sName = sNewName.replace(/#124;/g,'\|');
	document.getElementById('txt' + this.getID()).value = this.getName();
	this.change();
}
// Inherited...
ctlSelectCommon.prototype.toString = function () {
	var str = this.base.toString();
	str += "<INPUT type=\"text\" style=\"width:305px;" + (!this.isVisible() ? "display:none;" : "") + "\" "
			+ (this.isReadonly() ? "class=\"INPUTREADONLY\"" : this.isRequired() ? "class=\"INPUTREQUIRED\"" : "") + " "
			+ "readonly "
			+ "tabindex=\"-1\" "
			+ "id=\"txt" + this.getID() + "\" " 
			+ "value=\"" + this.getName() + "\" "
			+ (this.isRequired() ? "required" : "") + " />";
	str += "<BUTTON "
			+ "id=\"btn" + this.getID() + "\" "
			+ "onfocus=\"" + this.getID() + ".focus();\" "
			+ "onblur=\"" + this.getID() + ".blur();\" "
			+ "onclick=\"" + this.getID() + ".click();return false;\" "
			+ (this.isReadonly() || !this.isVisible() ? "disabled=1 style=\"visibility:hidden;\"" : "") + ">";
	str += "<IMG align=\"middle\" style=\"cursor:pointer;\" SRC=\"../images/icons/find.png\"/>";
	str += "</BUTTON>";
	return str;
}
ctlSelectCommon.prototype.focus = function () { 
	if (!this.isReadonly()) {
		document.getElementById('txt' + this.getID()).className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
		document.getElementById('btn' + this.getID()).focus();
		return this.base.focus(); 
	}
}
ctlSelectCommon.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oTXT = document.getElementById('txt' + this.getID());
		oTXT.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectCommon.prototype.click = function () { return this.base.click(); }
ctlSelectCommon.prototype.change = function () { 
	if (!this.isReadonly()) {
		var oTXT = document.getElementById('txt' + this.getID());
		oTXT.className = (this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.change();
	}
}
ctlSelectCommon.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectCommon.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectCommon.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectCommon.prototype.isValid = function () { return (this.isRequired() && !this.isReadonly() ? this.lOID > 0 || this.lOID == -1 || this.lOID == -2 || this.lOID == -3 : true ); }
ctlSelectCommon.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectCommon.prototype.clear = function () { return this.base.clear(); }
ctlSelectCommon.prototype.show = function (bVal) { document.getElementById('txt' + this.getID()).style.display=(bVal?'block':'none');return this.base.show(bVal); }
ctlSelectCommon.prototype.readonly = function (bVal) {
	document.getElementById('btn' + this.getID()).style.visibility = (!bVal ? "visible" : "hidden");
	document.getElementById('btn' + this.getID()).disabled = bVal;

	var oTXT = document.getElementById('txt' + this.getID());
	oTXT.readOnly = bVal;
	oTXT.className = (bVal ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');

	return this.base.readonly(bVal);
}
ctlSelectCommon.prototype.required = function (bVal) {
	this.base.required(bVal);
	if (!this.isReadonly() && this.isValid()) {
		var oTXT = document.getElementById('txt' + this.getID());
		oTXT.className = (bVal ? 'INPUTREQUIRED' : '');
	}
}
ctlSelectCommon.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectCommon.prototype.getID = function () { return this.base.getID(); }
ctlSelectCommon.prototype.getLabel = function () { return this.base.getLabel(); }
ctlSelectCommon.prototype.setLabel = function (sNewLabel) { return this.base.setLabel(sNewLabel); }

//********************************************************************************
// CONTROL: ctlSelectProjectTask
//********************************************************************************
function ctlSelectProjectTask(sID, sTaskName, lProjectOID, lOID, bRequired, bReadonly, bVisible) {
	this.base			= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sTaskName);
	this.lProjectOID	= lProjectOID;
	zControls[zControls.length] = this;
}
ctlSelectProjectTask.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectProjectTask.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectProjectTask.prototype.getName = function () { return this.base.getName(); }
ctlSelectProjectTask.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectProjectTask.prototype.toString = function () { return this.base.toString(); }
ctlSelectProjectTask.prototype.focus = function () { return this.base.focus(); }
ctlSelectProjectTask.prototype.blur = function () { return this.base.blur(); }
function ctlSelectProjectTask_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectProjectTask.prototype.click = function () {
	ShowPopUp('../choosers/chooseprojecttask.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID() + '&PROJOID=' + this.lProjectOID,255,265, 'parent.ctlSelectProjectTask_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectProjectTask.prototype.change = function () { return this.base.change(); }
ctlSelectProjectTask.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectProjectTask.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectProjectTask.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectProjectTask.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectProjectTask.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectProjectTask.prototype.clear = function () { return this.base.clear(); }
ctlSelectProjectTask.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectProjectTask.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectProjectTask.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectProjectTask.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectProjectTask.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectUserTask
//********************************************************************************
function ctlSelectUserTask(sID, sClientName, sProjectName, sTaskName, lOID, bRequired, bReadonly, bVisible, lTSUserOID) {
	this.base			= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sTaskName);
	this.sClientName	= sClientName;
	this.sProjectName	= sProjectName;
	this.lTSUserOID		= lTSUserOID;
	zControls[zControls.length] = this;
}
ctlSelectUserTask.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectUserTask.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectUserTask.prototype.getName = function () { return this.base.getName(); }
ctlSelectUserTask.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectUserTask.prototype.setClient = function (sNewClient) {
	this.sClientName = sNewClient;
	document.getElementById('spnClient' + this.getID()).innerText = this.sClientName;
}
ctlSelectUserTask.prototype.setProject = function (sNewProject) {
	this.sProjectName = sNewProject;
	document.getElementById('spnProject' + this.getID()).innerText = this.sProjectName;
}
ctlSelectUserTask.prototype.toString = function () { return '<span style="font-weight:bold;font-style:italic;" id="spnClient' + this.getID() + '">' + this.sClientName + '</span><br/><span style="font-weight:bold;font-style:italic;" id="spnProject' + this.getID() + '">' + this.sProjectName + '</span><br/>' + this.base.toString(); }
ctlSelectUserTask.prototype.focus = function () { return this.base.focus(); }
ctlSelectUserTask.prototype.blur = function () { return this.base.blur(); }
function ctlSelectUserTask_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
		oCtl.setClient(zChoice[2]);
		oCtl.setProject(zChoice[3]);
	}
}
ctlSelectUserTask.prototype.click = function () {
	ShowPopUp('../choosers/chooseusertask.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID() + '&TSUSEROID=' + this.lTSUserOID,255,265, 'parent.ctlSelectUserTask_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectUserTask.prototype.change = function () { return this.base.change(); }
ctlSelectUserTask.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectUserTask.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectUserTask.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectUserTask.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectUserTask.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectUserTask.prototype.clear = function () { return this.base.clear(); }
ctlSelectUserTask.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectUserTask.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectUserTask.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectUserTask.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectUserTask.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectUserProject
//********************************************************************************
function ctlSelectUserProject(sID, sProjectName, lOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sProjectName, false);
	zControls[zControls.length] = this;
}
ctlSelectUserProject.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectUserProject.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectUserProject.prototype.getName = function () { return this.base.getName(); }
ctlSelectUserProject.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
//	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectUserProject.prototype.toString = function () { return this.base.toString(); }
ctlSelectUserProject.prototype.focus = function () { return this.base.focus(); }
ctlSelectUserProject.prototype.blur = function () { return this.base.blur(); }
function ctlSelectUserProject_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectUserProject.prototype.click = function () {
	ShowPopUp('../choosers/chooseuserproject.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID(),255,265, 'parent.ctlSelectUserProject_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectUserProject.prototype.change = function () { return this.base.change(); }
ctlSelectUserProject.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectUserProject.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectUserProject.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectUserProject.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectUserProject.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectUserProject.prototype.clear = function () { return this.base.clear(); }
ctlSelectUserProject.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectUserProject.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectUserProject.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectUserProject.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectUserProject.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectStation
//********************************************************************************
function ctlSelectStation(sID, sStationName, lOID, lForUserID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sStationName, false);
	this.lForUserID = lForUserID;
	zControls[zControls.length] = this;
}
ctlSelectStation.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectStation.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectStation.prototype.getName = function () { return this.base.getName(); }
ctlSelectStation.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectStation.prototype.toString = function () { return this.base.toString(); }
ctlSelectStation.prototype.focus = function () { return this.base.focus(); }
ctlSelectStation.prototype.blur = function () { return this.base.blur(); }
function ctlSelectStation_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectStation.prototype.click = function () {
	ShowPopUp('../choosers/choosestation.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID() + '&USERID=' + this.lForUserID,255,265, 'parent.ctlSelectStation_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectStation.prototype.change = function () { return this.base.change(); }
ctlSelectStation.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectStation.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectStation.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectStation.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectStation.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectStation.prototype.clear = function () { return this.base.clear(); }
ctlSelectStation.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectStation.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectStation.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectStation.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectStation.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectClient
//********************************************************************************
function ctlSelectClient(sID, sClientName, lOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sClientName, false);
	zControls[zControls.length] = this;
}
ctlSelectClient.prototype.getValue = function () { return this.getOID(); }
ctlSelectClient.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectClient.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectClient.prototype.getName = function () { return this.base.getName(); }
ctlSelectClient.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectClient.prototype.toString = function () { return this.base.toString(); }
ctlSelectClient.prototype.focus = function () { return this.base.focus(); }
ctlSelectClient.prototype.blur = function () { return this.base.blur(); }
function ctlSelectClient_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectClient.prototype.click = function () {
	ShowPopUp('../choosers/chooseclient.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID(),255,265, 'parent.ctlSelectClient_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectClient.prototype.change = function () { return this.base.change(); }
ctlSelectClient.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectClient.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectClient.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectClient.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectClient.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectClient.prototype.clear = function () { return this.base.clear(); }
ctlSelectClient.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectClient.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectClient.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectClient.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectClient.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectSite
//********************************************************************************
function ctlSelectSite(sID, sSiteName, lOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sSiteName, false);
	zControls[zControls.length] = this;
}
ctlSelectSite.prototype.getValue = function () { return this.getOID(); }
ctlSelectSite.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectSite.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectSite.prototype.getName = function () { return this.base.getName(); }
ctlSelectSite.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectSite.prototype.toString = function () { return this.base.toString(); }
ctlSelectSite.prototype.focus = function () { return this.base.focus(); }
ctlSelectSite.prototype.blur = function () { return this.base.blur(); }
function ctlSelectSite_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectSite.prototype.click = function () {
	ShowPopUp('../choosers/choosesite.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID() + '&RQD=' + (this.base.isRequired()?1:0),255,265, 'parent.ctlSelectSite_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectSite.prototype.change = function () { return this.base.change(); }
ctlSelectSite.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectSite.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectSite.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectSite.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectSite.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectSite.prototype.clear = function () { return this.base.clear(); }
ctlSelectSite.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectSite.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectSite.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectSite.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectSite.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectEmployee
//********************************************************************************
function ctlSelectEmployee(sID, sEmployeeName, lOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sEmployeeName, false);
	zControls[zControls.length] = this;
}
ctlSelectEmployee.prototype.getValue = function () { return this.getOID(); }
ctlSelectEmployee.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectEmployee.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectEmployee.prototype.getName = function () { return this.base.getName(); }
ctlSelectEmployee.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
//	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectEmployee.prototype.toString = function () { return this.base.toString(); }
ctlSelectEmployee.prototype.focus = function () { return this.base.focus(); }
ctlSelectEmployee.prototype.blur = function () { return this.base.blur(); }
function ctlSelectEmployee_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectEmployee.prototype.click = function () {
	ShowPopUp('../choosers/chooseemployee.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID(),255,265, 'parent.ctlSelectEmployee_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectEmployee.prototype.change = function () { return this.base.change(); }
ctlSelectEmployee.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectEmployee.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectEmployee.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectEmployee.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectEmployee.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectEmployee.prototype.clear = function () { return this.base.clear(); }
ctlSelectEmployee.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectEmployee.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectEmployee.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectEmployee.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectEmployee.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectEmployeeForStation
//********************************************************************************
function ctlSelectEmployeeForStation(sID, sEmployeeName, lOID, lStationOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sEmployeeName, false);
	this.lStationOID = lStationOID;
	zControls[zControls.length] = this;
}
ctlSelectEmployeeForStation.prototype.getValue = function () { return this.getOID(); }
ctlSelectEmployeeForStation.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectEmployeeForStation.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectEmployeeForStation.prototype.getStationOID = function () { return this.lStationOID; }
ctlSelectEmployeeForStation.prototype.setStationOID = function (lNewOID) { this.lStationOID = lNewOID; }
ctlSelectEmployeeForStation.prototype.getName = function () { return this.base.getName(); }
ctlSelectEmployeeForStation.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectEmployeeForStation.prototype.toString = function () { return this.base.toString(); }
ctlSelectEmployeeForStation.prototype.focus = function () { return this.base.focus(); }
ctlSelectEmployeeForStation.prototype.blur = function () { return this.base.blur(); }
function ctlSelectEmployeeForStation_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectEmployeeForStation.prototype.click = function () {
	ShowPopUp('../choosers/chooseemployeeforstation.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID() + '&STATIONOID=' + this.lStationOID,255,265, 'parent.ctlSelectEmployeeForStation_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectEmployeeForStation.prototype.change = function () { return this.base.change(); }
ctlSelectEmployeeForStation.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectEmployeeForStation.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectEmployeeForStation.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectEmployeeForStation.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectEmployeeForStation.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectEmployeeForStation.prototype.clear = function () { return this.base.clear(); }
ctlSelectEmployeeForStation.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectEmployeeForStation.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectEmployeeForStation.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectEmployeeForStation.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectEmployeeForStation.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectDeletedEmployee
//********************************************************************************
function ctlSelectDeletedEmployee(sID, sEmployeeName, lOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sEmployeeName, false);
	zControls[zControls.length] = this;
}
ctlSelectDeletedEmployee.prototype.getValue = function () { return this.getOID(); }
ctlSelectDeletedEmployee.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectDeletedEmployee.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectDeletedEmployee.prototype.getName = function () { return this.base.getName(); }
ctlSelectDeletedEmployee.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectDeletedEmployee.prototype.toString = function () { return this.base.toString(); }
ctlSelectDeletedEmployee.prototype.focus = function () { return this.base.focus(); }
ctlSelectDeletedEmployee.prototype.blur = function () { return this.base.blur(); }
function ctlSelectDeletedEmployee_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectDeletedEmployee.prototype.click = function () {
	ShowPopUp('../choosers/choosedeletedemployee.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID(),255,265, 'parent.ctlSelectDeletedEmployee_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectDeletedEmployee.prototype.change = function () { return this.base.change(); }
ctlSelectDeletedEmployee.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectDeletedEmployee.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectDeletedEmployee.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectDeletedEmployee.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectDeletedEmployee.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectDeletedEmployee.prototype.clear = function () { return this.base.clear(); }
ctlSelectDeletedEmployee.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectDeletedEmployee.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectDeletedEmployee.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectDeletedEmployee.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectDeletedEmployee.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectDeletedSite
//********************************************************************************
function ctlSelectDeletedSite(sID, sSiteName, lOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sSiteName, false);
	zControls[zControls.length] = this;
}
ctlSelectDeletedSite.prototype.getValue = function () { return this.getOID(); }
ctlSelectDeletedSite.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectDeletedSite.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectDeletedSite.prototype.getName = function () { return this.base.getName(); }
ctlSelectDeletedSite.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectDeletedSite.prototype.toString = function () { return this.base.toString(); }
ctlSelectDeletedSite.prototype.focus = function () { return this.base.focus(); }
ctlSelectDeletedSite.prototype.blur = function () { return this.base.blur(); }
function ctlSelectDeletedSite_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectDeletedSite.prototype.click = function () {
	ShowPopUp('../choosers/choosedeletedsite.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID(),255,265, 'parent.ctlSelectDeletedSite_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectDeletedSite.prototype.change = function () { return this.base.change(); }
ctlSelectDeletedSite.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectDeletedSite.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectDeletedSite.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectDeletedSite.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectDeletedSite.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectDeletedSite.prototype.clear = function () { return this.base.clear(); }
ctlSelectDeletedSite.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectDeletedSite.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectDeletedSite.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectDeletedSite.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectDeletedSite.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectDeletedProject
//********************************************************************************
function ctlSelectDeletedProject(sID, sProjectName, lOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sProjectName, false);
	zControls[zControls.length] = this;
}
ctlSelectDeletedProject.prototype.getValue = function () { return this.getOID(); }
ctlSelectDeletedProject.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectDeletedProject.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectDeletedProject.prototype.getName = function () { return this.base.getName(); }
ctlSelectDeletedProject.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectDeletedProject.prototype.toString = function () { return this.base.toString(); }
ctlSelectDeletedProject.prototype.focus = function () { return this.base.focus(); }
ctlSelectDeletedProject.prototype.blur = function () { return this.base.blur(); }
function ctlSelectDeletedProject_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectDeletedProject.prototype.click = function () {
	ShowPopUp('../choosers/choosedeletedproject.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID(),510,265, 'parent.ctlSelectDeletedProject_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectDeletedProject.prototype.change = function () { return this.base.change(); }
ctlSelectDeletedProject.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectDeletedProject.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectDeletedProject.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectDeletedProject.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectDeletedProject.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectDeletedProject.prototype.clear = function () { return this.base.clear(); }
ctlSelectDeletedProject.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectDeletedProject.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectDeletedProject.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectDeletedProject.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectDeletedProject.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectEmployeeWithRotation
//********************************************************************************
function ctlSelectEmployeeWithRotation(sID, sEmployeeName, lOID, lRotationOID, iStartWeek, lExcludeUserOID, bRequired, bReadonly, bVisible) {
	this.base				= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lOID, sEmployeeName, false);
	this.lRotationOID		= lRotationOID;
	this.iStartWeek			= iStartWeek;
	this.lExcludeUserOID	= lExcludeUserOID;
	this.lStartRotationWeek	= 1;
	zControls[zControls.length] = this;
}
ctlSelectEmployeeWithRotation.prototype.getValue = function () { return this.getOID(); }
ctlSelectEmployeeWithRotation.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectEmployeeWithRotation.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectEmployeeWithRotation.prototype.setExcludeUserOID = function (lNewOID) { this.lExcludeUserOID=lNewOID;this.setOID(0);this.setName(''); }
ctlSelectEmployeeWithRotation.prototype.setRotationOID = function (lNewOID) { this.lRotationOID=lNewOID;this.setOID(0);this.setName(''); }
ctlSelectEmployeeWithRotation.prototype.setStartWeek = function (iNewStartWeek) { this.iStartWeek=iNewStartWeek; }
ctlSelectEmployeeWithRotation.prototype.getName = function () { return this.base.getName(); }
ctlSelectEmployeeWithRotation.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectEmployeeWithRotation.prototype.getStartRotationWeek = function () { return this.lStartRotationWeek; }
ctlSelectEmployeeWithRotation.prototype.toString = function () { return this.base.toString(); }
ctlSelectEmployeeWithRotation.prototype.focus = function () { return this.base.focus(); }
ctlSelectEmployeeWithRotation.prototype.blur = function () { return this.base.blur(); }
function ctlSelectEmployeeWithRotation_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectEmployeeWithRotation.prototype.click = function () {
	ShowPopUp('../choosers/chooseemployeewithrotation.jsp;jsessionid=' + sSessionID + '?OID=' + this.lExcludeUserOID + '&ROTOID=' + this.lRotationOID + '&STARTWEEK=' + this.iStartWeek,255,265, 'parent.ctlSelectEmployeeWithRotation_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectEmployeeWithRotation.prototype.change = function () { return this.base.change(); }
ctlSelectEmployeeWithRotation.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectEmployeeWithRotation.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectEmployeeWithRotation.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectEmployeeWithRotation.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectEmployeeWithRotation.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectEmployeeWithRotation.prototype.clear = function () { return this.base.clear(); }
ctlSelectEmployeeWithRotation.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectEmployeeWithRotation.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectEmployeeWithRotation.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectEmployeeWithRotation.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectEmployeeWithRotation.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectEmployees
//********************************************************************************
function ctlSelectEmployees(sID, sEmployeeNames, sOIDs, bRequired, bReadonly, bVisible, iBaseEntity) {
	this.base			= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, 0, sEmployeeNames, false);
	this.sOIDs			= sOIDs;
	this.iBaseEntity	= iBaseEntity;
	zControls[zControls.length] = this;
}
ctlSelectEmployees.prototype.getValue = function () { return this.getOID(); }
ctlSelectEmployees.prototype.getOIDs = function () { return this.sOIDs; }
ctlSelectEmployees.prototype.getName = function () { return this.base.getName(); }
ctlSelectEmployees.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectEmployees.prototype.toString = function () { return this.base.toString(); }
ctlSelectEmployees.prototype.focus = function () { return this.base.focus(); }
ctlSelectEmployees.prototype.blur = function () { return this.base.blur(); }
function ctlSelectEmployees_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sSubDelimiter);
		var oCtl = eval(sID);
		oCtl.sOIDs = zChoice[0];
		oCtl.setName(zChoice[1].replace(/&#59/g,';').replace(/#124;/g, '\|'));
		oCtl.change();
	}
}
ctlSelectEmployees.prototype.click = function () {
	ShowPopUp('../choosers/chooseemployees.jsp;jsessionid=' + sSessionID + '?BASE=' + this.iBaseEntity + '&OIDS=' + this.sOIDs,300,300, 'parent.ctlSelectEmployees_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectEmployees.prototype.change = function () { return this.base.change(); }
ctlSelectEmployees.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectEmployees.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectEmployees.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectEmployees.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectEmployees.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectEmployees.prototype.clear = function () { return this.base.clear(); }
ctlSelectEmployees.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectEmployees.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectEmployees.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectEmployees.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectEmployees.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectEmployeesForStation
//********************************************************************************
function ctlSelectEmployeesForStation(sID, sEmployeeNames, sOIDs, lStationID, bRequired, bReadonly, bVisible) {
	this.base			= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, 0, sEmployeeNames, false);
	this.sOIDs			= sOIDs;
	this.lStationID		= lStationID;
	zControls[zControls.length] = this;
}
ctlSelectEmployeesForStation.prototype.getValue = function () { return this.getOID(); }
ctlSelectEmployeesForStation.prototype.getOIDs = function () { return this.sOIDs; }
ctlSelectEmployeesForStation.prototype.getName = function () { return this.base.getName(); }
ctlSelectEmployeesForStation.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectEmployeesForStation.prototype.getStationOID = function () { return this.lStationID; }
ctlSelectEmployeesForStation.prototype.setStationOID = function (lNewOID) { this.lStationID = lNewOID; }
ctlSelectEmployeesForStation.prototype.toString = function () { return this.base.toString(); }
ctlSelectEmployeesForStation.prototype.focus = function () { return this.base.focus(); }
ctlSelectEmployeesForStation.prototype.blur = function () { return this.base.blur(); }
function ctlSelectEmployeesForStation_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sSubDelimiter);
		var oCtl = eval(sID);
		oCtl.sOIDs = zChoice[0];
		oCtl.setName(zChoice[1].replace(/&#59/g,';').replace(/#124;/g, '\|'));
		oCtl.change();
	}
}
ctlSelectEmployeesForStation.prototype.click = function () {
	ShowPopUp('../choosers/chooseemployeesforstation.jsp;jsessionid=' + sSessionID + '?STATIONOID=' + this.lStationID + '&OIDS=' + this.sOIDs,300,300, 'parent.ctlSelectEmployeesForStation_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectEmployeesForStation.prototype.change = function () { return this.base.change(); }
ctlSelectEmployeesForStation.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectEmployeesForStation.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectEmployeesForStation.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectEmployeesForStation.prototype.isValid = function () { return (this.isRequired() && !this.isReadonly() ? this.sOIDs.length > 0 : true ); }
ctlSelectEmployeesForStation.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectEmployeesForStation.prototype.clear = function () { return this.base.clear(); }
ctlSelectEmployeesForStation.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectEmployeesForStation.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectEmployeesForStation.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectEmployeesForStation.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectEmployeesForStation.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectSites
//********************************************************************************
function ctlSelectSites(sID, sSiteNames, sOIDs, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, 0, sSiteNames, false);
	this.sOIDs	= sOIDs;
	zControls[zControls.length] = this;
}
ctlSelectSites.prototype.getValue = function () { return this.getOID(); }
ctlSelectSites.prototype.getOIDs = function () { return this.sOIDs; }
ctlSelectSites.prototype.getName = function () { return this.base.getName(); }
ctlSelectSites.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectSites.prototype.toString = function () { return this.base.toString(); }
ctlSelectSites.prototype.focus = function () { return this.base.focus(); }
ctlSelectSites.prototype.blur = function () { return this.base.blur(); }
function ctlSelectSites_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sSubDelimiter);
		var oCtl = eval(sID);
		oCtl.sOIDs = zChoice[0];
		oCtl.setName(zChoice[1].replace(/&#59/g,';').replace(/#124;/g, '\|'));
		oCtl.change();
	}
}
ctlSelectSites.prototype.click = function () {
	ShowPopUp('../choosers/choosesites.jsp;jsessionid=' + sSessionID + '?OIDS=' + this.sOIDs,300,300, 'parent.ctlSelectSites_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectSites.prototype.change = function () { return this.base.change(); }
ctlSelectSites.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectSites.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectSites.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectSites.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectSites.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectSites.prototype.clear = function () { return this.base.clear(); }
ctlSelectSites.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectSites.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectSites.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectSites.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectSites.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectStations
//********************************************************************************
function ctlSelectStations(sID, sStationNames, sOIDs, bRequired, bReadonly, bVisible) {
	this.base		= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, 0, sStationNames, false);
	this.sOIDs		= sOIDs;
	this.sSiteOIDs	= '';
	zControls[zControls.length] = this;
}
ctlSelectStations.prototype.getValue = function () { return this.getOID(); }
ctlSelectStations.prototype.getOIDs = function () { return this.sOIDs; }
ctlSelectStations.prototype.getName = function () { return this.base.getName(); }
ctlSelectStations.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectStations.prototype.setSiteOIDs = function (sNewSiteOIDs) {
	this.sSiteOIDs = sNewSiteOIDs;
}
ctlSelectStations.prototype.toString = function () { return this.base.toString(); }
ctlSelectStations.prototype.focus = function () { return this.base.focus(); }
ctlSelectStations.prototype.blur = function () { return this.base.blur(); }
function ctlSelectStations_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sSubDelimiter);
		var oCtl = eval(sID);
		oCtl.sOIDs = zChoice[0];
		oCtl.setName(zChoice[1].replace(/&#59/g,';').replace(/#124;/g, '\|'));
		oCtl.change();
	}
}
ctlSelectStations.prototype.click = function () {
	ShowPopUp('../choosers/choosestations.jsp;jsessionid=' + sSessionID + '?OIDS=' + this.sOIDs + '&SITEOIDS=' + this.sSiteOIDs,300,300, 'parent.ctlSelectStations_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectStations.prototype.change = function () { return this.base.change(); }
ctlSelectStations.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectStations.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectStations.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectStations.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectStations.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectStations.prototype.clear = function () { return this.base.clear(); }
ctlSelectStations.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectStations.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectStations.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectStations.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectStations.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectProjects
//********************************************************************************
function ctlSelectProjects(sID, sProjectNames, sOIDs, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, 0, sProjectNames, false);
	this.sOIDs	= sOIDs;
	zControls[zControls.length] = this;
}
ctlSelectProjects.prototype.getValue = function () { return this.getOID(); }
ctlSelectProjects.prototype.getOIDs = function () { return this.sOIDs; }
ctlSelectProjects.prototype.getName = function () { return this.base.getName(); }
ctlSelectProjects.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectProjects.prototype.toString = function () { return this.base.toString(); }
ctlSelectProjects.prototype.focus = function () { return this.base.focus(); }
ctlSelectProjects.prototype.blur = function () { return this.base.blur(); }
function ctlSelectProjects_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sSubDelimiter);
		var oCtl = eval(sID);
		oCtl.sOIDs = zChoice[0];
		oCtl.setName(zChoice[1].replace(/&#59/g,';').replace(/#124;/g, '\|'));
		oCtl.change();
	}
}
ctlSelectProjects.prototype.click = function () {
	ShowPopUp('../choosers/chooseprojects.jsp;jsessionid=' + sSessionID + '?OIDS=' + this.sOIDs,300,300, 'parent.ctlSelectProjects_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectProjects.prototype.change = function () { return this.base.change(); }
ctlSelectProjects.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectProjects.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectProjects.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectProjects.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectProjects.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectProjects.prototype.clear = function () { return this.base.clear(); }
ctlSelectProjects.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectProjects.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectProjects.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectProjects.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectProjects.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectClients
//********************************************************************************
function ctlSelectClients(sID, sClientNames, sOIDs, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, 0, sClientNames, false);
	this.sOIDs	= sOIDs;
	zControls[zControls.length] = this;
}
ctlSelectClients.prototype.getValue = function () { return this.getOID(); }
ctlSelectClients.prototype.getOIDs = function () { return this.sOIDs; }
ctlSelectClients.prototype.getName = function () { return this.base.getName(); }
ctlSelectClients.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectClients.prototype.toString = function () { return this.base.toString(); }
ctlSelectClients.prototype.focus = function () { return this.base.focus(); }
ctlSelectClients.prototype.blur = function () { return this.base.blur(); }
function ctlSelectClients_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sSubDelimiter);
		var oCtl = eval(sID);
		oCtl.sOIDs = zChoice[0];
		oCtl.setName(zChoice[1].replace(/&#59/g,';').replace(/#124;/g, '\|'));
		oCtl.change();
	}
}
ctlSelectClients.prototype.click = function () {
	ShowPopUp('../choosers/chooseclients.jsp;jsessionid=' + sSessionID + '?OIDS=' + this.sOIDs,300,300, 'parent.ctlSelectClients_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectClients.prototype.change = function () { return this.base.change(); }
ctlSelectClients.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectClients.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectClients.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectClients.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectClients.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectClients.prototype.clear = function () { return this.base.clear(); }
ctlSelectClients.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectClients.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectClients.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectClients.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectClients.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectDepartments
//********************************************************************************
function ctlSelectDepartments(sID, sDepartmentNames, sOIDs, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, 0, sDepartmentNames, false);
	this.sOIDs	= sOIDs;
	zControls[zControls.length] = this;
}
ctlSelectDepartments.prototype.getValue = function () { return this.getOID(); }
ctlSelectDepartments.prototype.getOIDs = function () { return this.sOIDs; }
ctlSelectDepartments.prototype.getName = function () { return this.base.getName(); }
ctlSelectDepartments.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectDepartments.prototype.toString = function () { return this.base.toString(); }
ctlSelectDepartments.prototype.focus = function () { return this.base.focus(); }
ctlSelectDepartments.prototype.blur = function () { return this.base.blur(); }
function ctlSelectDepartments_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sSubDelimiter);
		var oCtl = eval(sID);
		oCtl.sOIDs = zChoice[0];
		oCtl.setName(zChoice[1].replace(/&#59/g,';').replace(/#124;/g, '\|'));
		oCtl.change();
	}
}
ctlSelectDepartments.prototype.click = function () {
	ShowPopUp('../choosers/choosedepartments.jsp;jsessionid=' + sSessionID + '?OIDS=' + this.sOIDs,300,300, 'parent.ctlSelectDepartments_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectDepartments.prototype.change = function () { return this.base.change(); }
ctlSelectDepartments.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectDepartments.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectDepartments.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectDepartments.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectDepartments.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectDepartments.prototype.clear = function () { return this.base.clear(); }
ctlSelectDepartments.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectDepartments.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectDepartments.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectDepartments.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectDepartments.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectShiftGroups
//********************************************************************************
function ctlSelectShiftGroups(sID, sShiftGroupNames, sOIDs, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, 0, sShiftGroupNames, false);
	this.sOIDs	= sOIDs;
	zControls[zControls.length] = this;
}
ctlSelectShiftGroups.prototype.getValue = function () { return this.getOID(); }
ctlSelectShiftGroups.prototype.getOIDs = function () { return this.sOIDs; }
ctlSelectShiftGroups.prototype.getName = function () { return this.base.getName(); }
ctlSelectShiftGroups.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectShiftGroups.prototype.toString = function () { return this.base.toString(); }
ctlSelectShiftGroups.prototype.focus = function () { return this.base.focus(); }
ctlSelectShiftGroups.prototype.blur = function () { return this.base.blur(); }
function ctlSelectShiftGroups_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sSubDelimiter);
		var oCtl = eval(sID);
		oCtl.sOIDs = zChoice[0];
		oCtl.setName(zChoice[1].replace(/&#59/g,';').replace(/#124;/g, '\|'));
		oCtl.change();
	}
}
ctlSelectShiftGroups.prototype.click = function () {
	ShowPopUp('../choosers/chooseshiftgroups.jsp;jsessionid=' + sSessionID + '?OIDS=' + this.sOIDs,300,300, 'parent.ctlSelectShiftGroups_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectShiftGroups.prototype.change = function () { return this.base.change(); }
ctlSelectShiftGroups.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectShiftGroups.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectShiftGroups.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectShiftGroups.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectShiftGroups.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectShiftGroups.prototype.clear = function () { return this.base.clear(); }
ctlSelectShiftGroups.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectShiftGroups.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectShiftGroups.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectShiftGroups.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectShiftGroups.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectEmployeeTypes
//********************************************************************************
function ctlSelectEmployeeTypes(sID, sTypeNames, sOIDs, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, 0, sTypeNames, false);
	this.sOIDs	= sOIDs;
	zControls[zControls.length] = this;
}
ctlSelectEmployeeTypes.prototype.getValue = function () { return this.getOID(); }
ctlSelectEmployeeTypes.prototype.getOIDs = function () { return this.sOIDs; }
ctlSelectEmployeeTypes.prototype.getName = function () { return this.base.getName(); }
ctlSelectEmployeeTypes.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectEmployeeTypes.prototype.toString = function () { return this.base.toString(); }
ctlSelectEmployeeTypes.prototype.focus = function () { return this.base.focus(); }
ctlSelectEmployeeTypes.prototype.blur = function () { return this.base.blur(); }
function ctlSelectEmployeeTypes_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sSubDelimiter);
		var oCtl = eval(sID);
		oCtl.sOIDs = zChoice[0];
		oCtl.setName(zChoice[1].replace(/&#59/g,';').replace(/#124;/g, '\|'));
		oCtl.change();
	}
}
ctlSelectEmployeeTypes.prototype.click = function () {
	ShowPopUp('../choosers/chooseemployeetypes.jsp;jsessionid=' + sSessionID + '?OIDS=' + this.sOIDs,300,300, 'parent.ctlSelectEmployeeTypes_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectEmployeeTypes.prototype.change = function () { return this.base.change(); }
ctlSelectEmployeeTypes.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectEmployeeTypes.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectEmployeeTypes.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectEmployeeTypes.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectEmployeeTypes.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectEmployeeTypes.prototype.clear = function () { return this.base.clear(); }
ctlSelectEmployeeTypes.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectEmployeeTypes.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectEmployeeTypes.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectEmployeeTypes.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectEmployeeTypes.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectTimeOffTypes
//********************************************************************************
function ctlSelectTimeOffTypes(sID, sTypeNames, sOIDs, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, 0, sTypeNames, false);
	this.sOIDs	= sOIDs;
	zControls[zControls.length] = this;
}
ctlSelectTimeOffTypes.prototype.getValue = function () { return this.getOID(); }
ctlSelectTimeOffTypes.prototype.getOIDs = function () { return this.sOIDs; }
ctlSelectTimeOffTypes.prototype.getName = function () { return this.base.getName(); }
ctlSelectTimeOffTypes.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectTimeOffTypes.prototype.toString = function () { return this.base.toString(); }
ctlSelectTimeOffTypes.prototype.focus = function () { return this.base.focus(); }
ctlSelectTimeOffTypes.prototype.blur = function () { return this.base.blur(); }
function ctlSelectTimeOffTypes_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sSubDelimiter);
		var oCtl = eval(sID);
		oCtl.sOIDs = zChoice[0];
		oCtl.setName(zChoice[1].replace(/&#59/g,';').replace(/#124;/g, '\|'));
		oCtl.change();
	}
}
ctlSelectTimeOffTypes.prototype.click = function () {
	ShowPopUp('../choosers/choosetimeofftypes.jsp;jsessionid=' + sSessionID + '?OIDS=' + this.sOIDs,300,300, 'parent.ctlSelectTimeOffTypes_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectTimeOffTypes.prototype.change = function () { return this.base.change(); }
ctlSelectTimeOffTypes.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectTimeOffTypes.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectTimeOffTypes.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectTimeOffTypes.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectTimeOffTypes.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectTimeOffTypes.prototype.clear = function () { return this.base.clear(); }
ctlSelectTimeOffTypes.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectTimeOffTypes.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectTimeOffTypes.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectTimeOffTypes.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectTimeOffTypes.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectProjectStaff
//********************************************************************************
function ctlSelectProjectStaff(sID, sEmployeeName, lProjectOID, lStaffOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lStaffOID, sEmployeeName, false);
	this.lProjectOID = lProjectOID;
	zControls[zControls.length] = this;
}
ctlSelectProjectStaff.prototype.getValue = function () { return this.getOID(); }
ctlSelectProjectStaff.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectProjectStaff.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectProjectStaff.prototype.getName = function () { return this.base.getName(); }
ctlSelectProjectStaff.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectProjectStaff.prototype.toString = function () { return this.base.toString(); }
ctlSelectProjectStaff.prototype.focus = function () { return this.base.focus(); }
ctlSelectProjectStaff.prototype.blur = function () { return this.base.blur(); }
function ctlSelectProjectStaff_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectProjectStaff.prototype.click = function () {
	ShowPopUp('../choosers/chooseprojectstaff.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID() + '&PROJOID=' + this.lProjectOID,255,265, 'parent.ctlSelectProjectStaff_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectProjectStaff.prototype.change = function () { return this.base.change(); }
ctlSelectProjectStaff.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectProjectStaff.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectProjectStaff.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectProjectStaff.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectProjectStaff.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectProjectStaff.prototype.clear = function () { return this.base.clear(); }
ctlSelectProjectStaff.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectProjectStaff.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectProjectStaff.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectProjectStaff.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectProjectStaff.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectExpenseAccount
//********************************************************************************
function ctlSelectExpenseAccount(sID, sName, lAccountOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlSelectCommon(sID, bRequired, bReadonly, bVisible, lAccountOID, sName, false);
	this.lAccountOID = lAccountOID;
	zControls[zControls.length] = this;
}
ctlSelectExpenseAccount.prototype.getValue = function () { return this.getOID(); }
ctlSelectExpenseAccount.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectExpenseAccount.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectExpenseAccount.prototype.getName = function () { return this.base.getName(); }
ctlSelectExpenseAccount.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectExpenseAccount.prototype.toString = function () { return this.base.toString(); }
ctlSelectExpenseAccount.prototype.focus = function () { return this.base.focus(); }
ctlSelectExpenseAccount.prototype.blur = function () { return this.base.blur(); }
function ctlSelectExpenseAccount_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectExpenseAccount.prototype.click = function () {
	ShowPopUp('../choosers/chooseexpenseaccount.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID(),255,265, 'parent.ctlSelectExpenseAccount_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectExpenseAccount.prototype.change = function () { return this.base.change(); }
ctlSelectExpenseAccount.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectExpenseAccount.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectExpenseAccount.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectExpenseAccount.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectExpenseAccount.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectExpenseAccount.prototype.clear = function () { return this.base.clear(); }
ctlSelectExpenseAccount.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectExpenseAccount.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectExpenseAccount.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectExpenseAccount.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectExpenseAccount.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectSecurityRole
//********************************************************************************
function ctlSelectSecurityRole(sID, lID, sRoles, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	this.zRoles = sRoles.split(sDelimiter);
	zControls[zControls.length] = this;
}
ctlSelectSecurityRole.prototype.getText = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.selectedIndex > -1 ? oSEL.options[oSEL.selectedIndex].text : '';
}
ctlSelectSecurityRole.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectSecurityRole.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
// Inherited...
ctlSelectSecurityRole.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	for (var x = 0; x < this.zRoles.length; x++) {
		var zRole = this.zRoles[x].split(sSubDelimiter);
		str += "<OPTION value=\"" + zRole[0] + "\" " + (this.lID == zRole[0] ? "selected" : "") + ">" + zRole[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
	}
	str += "</SELECT>";
	return str;
}
ctlSelectSecurityRole.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectSecurityRole.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectSecurityRole.prototype.isValid = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		if (this.isRequired() && this.getValue() == 0) {
			oSEL.className = 'INPUTERROR';
			return false;
		}
		else {
			oSEL.className = (this.isReadonly() ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');
			return true;
		}
	}
	else {
		return true;
	}
}
ctlSelectSecurityRole.prototype.change = function () { return this.base.change(); }
ctlSelectSecurityRole.prototype.click = function () { return this.base.click(); }
ctlSelectSecurityRole.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectSecurityRole.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectSecurityRole.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectSecurityRole.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectSecurityRole.prototype.clear = function () { return this.base.clear(); }
ctlSelectSecurityRole.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectSecurityRole.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectSecurityRole.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectSecurityRole.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectSecurityRole.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectApprovalList
//********************************************************************************
function ctlSelectApprovalList(sID, lID, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	zControls[zControls.length] = this;
}
ctlSelectApprovalList.prototype.getText = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.selectedIndex > -1 ? oSEL.options[oSEL.selectedIndex].text : '';
}
ctlSelectApprovalList.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectApprovalList.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectApprovalList.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " style=\"display:" + (this.isVisible()?"block":"none") + "\""
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	str += getApprovalListOptions(this.lID);
	str += "</SELECT>";
	return str;
}
ctlSelectApprovalList.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectApprovalList.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectApprovalList.prototype.isValid = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		if (this.isRequired() && this.getValue() == 0) {
			oSEL.className = 'INPUTERROR';
			return false;
		}
		else {
			oSEL.className = (this.isReadonly() ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');
			return true;
		}
	}
	else {
		return true;
	}
}
ctlSelectApprovalList.prototype.change = function () { return this.base.change(); }
ctlSelectApprovalList.prototype.click = function () { return this.base.click(); }
ctlSelectApprovalList.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectApprovalList.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectApprovalList.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectApprovalList.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectApprovalList.prototype.clear = function () { return this.base.clear(); }
ctlSelectApprovalList.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectApprovalList.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectApprovalList.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectApprovalList.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectApprovalList.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectEmployeeType
//********************************************************************************
function ctlSelectEmployeeType(sID, lID, sTypes, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	this.zTypes = sTypes.split(sDelimiter);
	zControls[zControls.length] = this;
}
ctlSelectEmployeeType.prototype.getText = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.selectedIndex > -1 ? oSEL.options[oSEL.selectedIndex].text : '';
}
ctlSelectEmployeeType.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectEmployeeType.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectEmployeeType.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	for (var x = 0; x < this.zTypes.length; x++) {
		var zType = this.zTypes[x].split(sSubDelimiter);
		str += "<OPTION value=\"" + zType[0] + "\" " + (this.lID == zType[0] ? "selected" : "") + ">" + zType[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
	}
	str += "</SELECT>";
	return str;
}
ctlSelectEmployeeType.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectEmployeeType.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectEmployeeType.prototype.isValid = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		if (this.isRequired() && this.getValue() == 0) {
			oSEL.className = 'INPUTERROR';
			return false;
		}
		else {
			oSEL.className = (this.isReadonly() ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');
			return true;
		}
	}
	else {
		return true;
	}
}
ctlSelectEmployeeType.prototype.change = function () { return this.base.change(); }
ctlSelectEmployeeType.prototype.click = function () { return this.base.click(); }
ctlSelectEmployeeType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectEmployeeType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectEmployeeType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectEmployeeType.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectEmployeeType.prototype.clear = function () { return this.base.clear(); }
ctlSelectEmployeeType.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectEmployeeType.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectEmployeeType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectEmployeeType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectEmployeeType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectContactType
//********************************************************************************
function ctlSelectContactType(sID, lID, sTypes, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	this.zTypes = sTypes.split(sDelimiter);
	zControls[zControls.length] = this;
}
ctlSelectContactType.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectContactType.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectContactType.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	for (var x = 0; x < this.zTypes.length; x++) {
		var zType = this.zTypes[x].split(sSubDelimiter);
		str += "<OPTION value=\"" + zType[0] + "\" " + (this.lID == zType[0] ? "selected" : "") + ">" + zType[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
	}
	str += "</SELECT>";
	return str;
}
ctlSelectContactType.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectContactType.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectContactType.prototype.isValid = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		if (this.isRequired() && this.getValue() == 0) {
			oSEL.className = 'INPUTERROR';
			return false;
		}
		else {
			oSEL.className = (this.isReadonly() ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');
			return true;
		}
	}
	else {
		return true;
	}
}
ctlSelectContactType.prototype.change = function () { return this.base.change(); }
ctlSelectContactType.prototype.click = function () { return this.base.click(); }
ctlSelectContactType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectContactType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectContactType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectContactType.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectContactType.prototype.clear = function () { return this.base.clear(); }
ctlSelectContactType.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectContactType.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectContactType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectContactType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectContactType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectCertification
//********************************************************************************
function ctlSelectCertification(sID, lID, sTypes, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	this.zTypes = sTypes.split(sDelimiter);
	zControls[zControls.length] = this;
}
ctlSelectCertification.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectCertification.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectCertification.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	for (var x = 0; x < this.zTypes.length; x++) {
		var zType = this.zTypes[x].split(sSubDelimiter);
		str += "<OPTION value=\"" + zType[0] + "\" " + (this.lID == zType[0] ? "selected" : "") + ">" + zType[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
	}
	str += "</SELECT>";
	return str;
}
ctlSelectCertification.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectCertification.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectCertification.prototype.isValid = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		if (this.isRequired() && this.getValue() == 0) {
			oSEL.className = 'INPUTERROR';
			return false;
		}
		else {
			oSEL.className = (this.isReadonly() ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');
			return true;
		}
	}
	else {
		return true;
	}
}
ctlSelectCertification.prototype.change = function () { return this.base.change(); }
ctlSelectCertification.prototype.click = function () { return this.base.click(); }
ctlSelectCertification.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectCertification.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectCertification.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectCertification.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectCertification.prototype.clear = function () { return this.base.clear(); }
ctlSelectCertification.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectCertification.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectCertification.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectCertification.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectCertification.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectShiftType
//********************************************************************************
function ctlSelectShiftType(sID, lID, sTypes, sTimes, bRequired, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, bRequired, bReadonly, bVisible);
	this.lID	= lID;
	this.zTypes = sTypes.length > 0 ? sTypes.split(sDelimiter) : '';
	this.zTimes = sTimes.length > 0 ? sTimes.split(sDelimiter) : '';
	zControls[zControls.length] = this;
}
ctlSelectShiftType.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectShiftType.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectShiftType.prototype.getStartTime = function () {
	var sReturn = '';
	var oSEL = document.getElementById('sel' + this.getID());
	var lValue = oSEL.value;
	for (var x = 0; x < this.zTypes.length; x++) {
		var zType = this.zTypes[x].split(sSubDelimiter);
		if (zType[0] == lValue) {
			var zTime = this.zTimes[x].split(sSubDelimiter);
			sReturn = zTime[0];
			break;
		}
	}
	return sReturn;
}
ctlSelectShiftType.prototype.getEndTime = function () {
	var sReturn = '';
	var oSEL = document.getElementById('sel' + this.getID());
	var lValue = oSEL.value;
	for (var x = 0; x < this.zTypes.length; x++) {
		var zType = this.zTypes[x].split(sSubDelimiter);
		if (zType[0] == lValue) {
			var zTime = this.zTimes[x].split(sSubDelimiter);
			sReturn = zTime[1];
			break;
		}
	}
	return sReturn;
}
ctlSelectShiftType.prototype.getDuration = function () {
	return getDuration(TimeToJSTime(this.getStartTime()), TimeToJSTime(this.getEndTime()));
}
ctlSelectShiftType.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	for (var x = 0; x < this.zTypes.length; x++) {
		var zType = this.zTypes[x].split(sSubDelimiter);
		str += "<OPTION value=\"" + zType[0] + "\" " + (this.lID == zType[0] ? "selected" : "") + ">" + zType[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
	}
	str += "</SELECT>";
	return str;
}
ctlSelectShiftType.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectShiftType.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectShiftType.prototype.isValid = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		if (this.isRequired() && this.getValue() == 0) {
			oSEL.className = 'INPUTERROR';
			return false;
		}
		else {
			oSEL.className = (this.isReadonly() ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');
			return true;
		}
	}
	else {
		return true;
	}
}
ctlSelectShiftType.prototype.change = function () { return this.base.change(); }
ctlSelectShiftType.prototype.click = function () { return this.base.click(); }
ctlSelectShiftType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectShiftType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectShiftType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectShiftType.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectShiftType.prototype.clear = function () { return this.base.clear(); }
ctlSelectShiftType.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectShiftType.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectShiftType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectShiftType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectShiftType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectReAssignReason
//********************************************************************************
function ctlSelectReAssignReason(sID, lID, sReasons, bRequired, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, bRequired, bReadonly, bVisible);
	this.lID	= lID;
	this.zReasons = sReasons.length > 0 ? sReasons.split(sDelimiter) : '';
	zControls[zControls.length] = this;
}
ctlSelectReAssignReason.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectReAssignReason.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectReAssignReason.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	for (var x = 0; x < this.zReasons.length; x++) {
		var zReason = this.zReasons[x].split(sSubDelimiter);
		str += "<OPTION value=\"" + zReason[0] + "\" " + (this.lID == zReason[0] ? "selected" : "") + ">" + zReason[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
	}
	str += "</SELECT>";
	return str;
}
ctlSelectReAssignReason.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectReAssignReason.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectReAssignReason.prototype.isValid = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		if (this.isRequired() && this.getValue() == 0) {
			oSEL.className = 'INPUTERROR';
			return false;
		}
		else {
			oSEL.className = (this.isReadonly() ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');
			return true;
		}
	}
	else {
		return true;
	}
}
ctlSelectReAssignReason.prototype.change = function () { return this.base.change(); }
ctlSelectReAssignReason.prototype.click = function () { return this.base.click(); }
ctlSelectReAssignReason.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectReAssignReason.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectReAssignReason.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectReAssignReason.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectReAssignReason.prototype.clear = function () { return this.base.clear(); }
ctlSelectReAssignReason.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectReAssignReason.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectReAssignReason.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectReAssignReason.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectReAssignReason.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectDepartment
//********************************************************************************
function ctlSelectDepartment(sID, lID, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	zControls[zControls.length] = this;
}
ctlSelectDepartment.prototype.getText = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.selectedIndex > -1 ? oSEL.options[oSEL.selectedIndex].text : '';
}
ctlSelectDepartment.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectDepartment.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectDepartment.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	str += getDepartmentOptions(this.lID);
	str += "</SELECT>";
	return str;
}
ctlSelectDepartment.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectDepartment.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectDepartment.prototype.isValid = function () { return true; }
ctlSelectDepartment.prototype.change = function () { return this.base.change(); }
ctlSelectDepartment.prototype.click = function () { return this.base.click(); }
ctlSelectDepartment.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectDepartment.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectDepartment.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectDepartment.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectDepartment.prototype.clear = function () { return this.base.clear(); }
ctlSelectDepartment.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectDepartment.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectDepartment.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectDepartment.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectDepartment.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectTimeOff
//********************************************************************************
function ctlSelectTimeOff(sID, lID, sTimeOffs, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	this.zTimeOffs = sTimeOffs.length > 0 ? sTimeOffs.split(sDelimiter) : "";
	zControls[zControls.length] = this;
}
ctlSelectTimeOff.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectTimeOff.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectTimeOff.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	for (var x = 0; x < this.zTimeOffs.length; x++) {
		var zTimeOff = this.zTimeOffs[x].split(sSubDelimiter);
		str += "<OPTION value=\"" + zTimeOff[0] + "\" " + (this.lID == zTimeOff[0] ? "selected" : "") + ">" + zTimeOff[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
	}
	str += "</SELECT>";
	return str;
}
ctlSelectTimeOff.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectTimeOff.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectTimeOff.prototype.isValid = function () { 
	var oSEL = document.getElementById('sel' + this.getID());
	if (this.getValue() == 0 && this.isRequired()) {
		oSEL.className = 'INPUTERROR';
		return false;
	}
	else {
		oSEL.className = (this.isReadonly() ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return true;
	}
}
ctlSelectTimeOff.prototype.change = function () { return this.base.change(); }
ctlSelectTimeOff.prototype.click = function () { return this.base.click(); }
ctlSelectTimeOff.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectTimeOff.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectTimeOff.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectTimeOff.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectTimeOff.prototype.clear = function () { return this.base.clear(); }
ctlSelectTimeOff.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectTimeOff.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectTimeOff.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectTimeOff.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectTimeOff.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectUserTimeOff
//********************************************************************************
function ctlSelectUserTimeOff(sID, sTimeOffName, lUserOID, lOID, lCategoryOID, bReadonly, bVisible) {
	this.base			= new ctlSelectCommon(sID, true, bReadonly, bVisible, lOID, sTimeOffName);
	this.lUserOID		= lUserOID;
	this.lCategoryOID	= lCategoryOID;
	zControls[zControls.length] = this;
}
ctlSelectUserTimeOff.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectUserTimeOff.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectUserTimeOff.prototype.getCategoryID = function () { return this.lCategoryOID; }
ctlSelectUserTimeOff.prototype.setCategoryID = function (lNewOID) { this.lCategoryOID = lNewOID; }
ctlSelectUserTimeOff.prototype.setUserOID = function (lNewUserOID) {
	if (lNewUserOID != this.lUserOID) {
		this.lUserOID = lNewUserOID;
		this.setOID(0);
		this.setName('');
	}
}
ctlSelectUserTimeOff.prototype.getName = function () { return this.base.getName(); }
ctlSelectUserTimeOff.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectUserTimeOff.prototype.toString = function () { return this.base.toString(); }
ctlSelectUserTimeOff.prototype.focus = function () { return this.base.focus(); }
ctlSelectUserTimeOff.prototype.blur = function () { return this.base.blur(); }
function ctlSelectUserTimeOff_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
		oCtl.setCategoryID(zChoice[2]);
	}
}
ctlSelectUserTimeOff.prototype.click = function () {
	ShowPopUp('../choosers/chooseusertimeoff.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID() + '&USEROID=' + this.lUserOID,255,265, 'parent.ctlSelectUserTimeOff_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectUserTimeOff.prototype.change = function () { return this.base.change(); }
ctlSelectUserTimeOff.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectUserTimeOff.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectUserTimeOff.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectUserTimeOff.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectUserTimeOff.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectUserTimeOff.prototype.clear = function () { return this.base.clear(); }
ctlSelectUserTimeOff.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectUserTimeOff.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectUserTimeOff.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectUserTimeOff.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectUserTimeOff.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectRotation
//********************************************************************************
function ctlSelectRotation(sID, lID, iStartWeek, sRotations, sWeeks, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	this.iStartWeek	= iStartWeek;
	this.sRotations = sRotations;
	this.sWeeks = sWeeks;
	this.zRotations = sRotations.length > 0 ? sRotations.split(sDelimiter) : '';
	this.zWeeks = sWeeks.length > 0 ? sWeeks.split(sDelimiter) : '';
	zControls[zControls.length] = this;
}
ctlSelectRotation.prototype.getText = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.selectedIndex > -1 ? oSEL.options[oSEL.selectedIndex].text : '';
}
ctlSelectRotation.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectRotation.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectRotation.prototype.getStartWeek = function () {
	var oSEL = document.getElementById('selWeek' + this.getID());
	return oSEL.value;
}
ctlSelectRotation.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	if (this.sRotations.length > 0) {
		for (var x = 0; x < this.zRotations.length; x++) {
			var zRotation = this.zRotations[x].split(sSubDelimiter);
			str += "<OPTION value=\"" + zRotation[0] + "\" " + (this.lID == zRotation[0] ? "selected" : "") + ">" + zRotation[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
		}
	}
	str += "</SELECT>";
	str += "&nbsp;&nbsp;Start&nbsp;Week:&nbsp;";
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " id=selWeek" + this.getID()
			+ " onchange=\"" + this.getID() + ".changeWeek()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
//	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	if (this.sWeeks.length > 0) {
		for (var x = 0; x < this.zWeeks.length; x++) {
			var zWeek = this.zWeeks[x].split(sSubDelimiter);
			if (zWeek[0] == this.lID) {
				for (var y = 0; y < zWeek[1]; y++) {
					str += "<OPTION value=\"" + (y+1) + "\" " + (this.iStartWeek == (y+1) ? "selected" : "") + ">" + (y+1);
				}
			}
		}
	}
	str += "</SELECT>";
	return str;
}
ctlSelectRotation.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectRotation.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectRotation.prototype.isValid = function () { return true; }
ctlSelectRotation.prototype.change = function () {
	var iNewWeeks = 0;
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < this.zRotations.length; x++) {
		var zRotation = this.zRotations[x].split(sSubDelimiter);
		if (zRotation[0] == oSEL.value) {
			iNewWeeks = this.zWeeks[x].split(sSubDelimiter)[1];
		}
	}
	var oSELWeek = document.getElementById('selWeek' + this.getID());
	for (var x = oSELWeek.options.length - 1; x >= 0; x--) { 
		oSELWeek.options[x] = null;
	}
	for (var x = 1; x <= iNewWeeks; x++) { 
		oSELWeek.options[x - 1] = new Option(x, x);
	}
	return this.base.change();
}
ctlSelectRotation.prototype.changeWeek = function () { return this.base.change(); }
ctlSelectRotation.prototype.click = function () { return this.base.click(); }
ctlSelectRotation.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectRotation.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectRotation.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectRotation.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectRotation.prototype.clear = function () { return this.base.clear(); }
ctlSelectRotation.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectRotation.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	var oSELWEEK = document.getElementById('selWeek' + this.getID());
	bVal ? oSELWEEK.disabled=true : oSELWEEK.removeAttribute('disabled');
	oSELWEEK.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectRotation.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectRotation.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectRotation.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectTaxCode
//********************************************************************************
function ctlSelectTaxCode(sID, lID, sTaxCodes, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	this.sTaxCodes = sTaxCodes;
	this.zTaxCodes = sTaxCodes.length > 0 ? sTaxCodes.split(sDelimiter) : '';
	zControls[zControls.length] = this;
}
ctlSelectTaxCode.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectTaxCode.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectTaxCode.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	if (this.sTaxCodes.length > 0) {
		for (var x = 0; x < this.zTaxCodes.length; x++) {
			var zTaxCode = this.zTaxCodes[x].split(sSubDelimiter);
			str += "<OPTION value=\"" + zTaxCode[0] + "\" " + (this.lID == zTaxCode[0] ? "selected" : "") + ">" + zTaxCode[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
		}
	}
	str += "</SELECT>";
	return str;
}
ctlSelectTaxCode.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectTaxCode.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectTaxCode.prototype.isValid = function () { return true; }
ctlSelectTaxCode.prototype.change = function () { return this.base.change(); }
ctlSelectTaxCode.prototype.click = function () { return this.base.click(); }
ctlSelectTaxCode.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectTaxCode.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectTaxCode.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectTaxCode.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectTaxCode.prototype.clear = function () { return this.base.clear(); }
ctlSelectTaxCode.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectTaxCode.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectTaxCode.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectTaxCode.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectTaxCode.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectCreditTerms
//********************************************************************************
function ctlSelectCreditTerms(sID, lID, sCreditTerms, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	this.sCreditTerms = sCreditTerms;
	this.zCreditTerms = sCreditTerms.length > 0 ? sCreditTerms.split(sDelimiter) : '';
	zControls[zControls.length] = this;
}
ctlSelectCreditTerms.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectCreditTerms.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectCreditTerms.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	if (this.sCreditTerms.length > 0) {
		for (var x = 0; x < this.zCreditTerms.length; x++) {
			var zCreditTerm = this.zCreditTerms[x].split(sSubDelimiter);
			str += "<OPTION value=\"" + zCreditTerm[0] + "\" " + (this.lID == zCreditTerm[0] ? "selected" : "") + ">" + zCreditTerm[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
		}
	}
	str += "</SELECT>";
	return str;
}
ctlSelectCreditTerms.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectCreditTerms.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectCreditTerms.prototype.isValid = function () { return true; }
ctlSelectCreditTerms.prototype.change = function () { return this.base.change(); }
ctlSelectCreditTerms.prototype.click = function () { return this.base.click(); }
ctlSelectCreditTerms.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectCreditTerms.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectCreditTerms.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectCreditTerms.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectCreditTerms.prototype.clear = function () { return this.base.clear(); }
ctlSelectCreditTerms.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectCreditTerms.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectCreditTerms.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectCreditTerms.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectCreditTerms.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectShiftGroup
//********************************************************************************
function ctlSelectShiftGroup(sID, lID, sGroups, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID		= lID;
	this.sGroups	= sGroups;
	this.zGroups	= sGroups.length > 0 ? sGroups.split(sDelimiter) : '';
	zControls[zControls.length] = this;
}
ctlSelectShiftGroup.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectShiftGroup.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectShiftGroup.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	if (this.sGroups.length > 0) {
		for (var x = 0; x < this.zGroups.length; x++) {
			var zGroup = this.zGroups[x].split(sSubDelimiter);
			str += "<OPTION value=\"" + zGroup[0] + "\" " + (this.lID == zGroup[0] ? "selected" : "") + ">" + zGroup[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
		}
	}
	str += "</SELECT>";
	return str;
}
ctlSelectShiftGroup.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectShiftGroup.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectShiftGroup.prototype.isValid = function () { return true; }
ctlSelectShiftGroup.prototype.change = function () { return this.base.change(); }
ctlSelectShiftGroup.prototype.click = function () { return this.base.click(); }
ctlSelectShiftGroup.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectShiftGroup.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectShiftGroup.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectShiftGroup.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectShiftGroup.prototype.clear = function () { return this.base.clear(); }
ctlSelectShiftGroup.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectShiftGroup.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectShiftGroup.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectShiftGroup.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectShiftGroup.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectSchedule
//********************************************************************************
function ctlSelectSchedule(sID, lID, sSchedules, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID		= lID;
	this.sSchedules	= sSchedules;
	this.zSchedules	= sSchedules.length > 0 ? sSchedules.split(sDelimiter) : '';
	zControls[zControls.length] = this;
}
ctlSelectSchedule.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectSchedule.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectSchedule.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += "<OPTION value=\"0\" " + (this.lID == 0 ? "selected" : "") + ">" + sNoneLabel;
	if (this.sSchedules.length > 0) {
		for (var x = 0; x < this.zSchedules.length; x++) {
			var zSchedule = this.zSchedules[x].split(sSubDelimiter);
			str += "<OPTION value=\"" + zSchedule[0] + "\" " + (this.lID == zSchedule[0] ? "selected" : "") + ">" + zSchedule[1].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
		}
	}
	str += "</SELECT>";
	return str;
}
ctlSelectSchedule.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectSchedule.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectSchedule.prototype.isValid = function () { return (this.isRequired() && !this.isReadonly() ? this.getValue() > 0 : true ); }
ctlSelectSchedule.prototype.change = function () { return this.base.change(); }
ctlSelectSchedule.prototype.click = function () { return this.base.click(); }
ctlSelectSchedule.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectSchedule.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectSchedule.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectSchedule.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectSchedule.prototype.clear = function () { return this.base.clear(); }
ctlSelectSchedule.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectSchedule.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectSchedule.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectSchedule.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectSchedule.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectParentTask
//********************************************************************************
function ctlSelectParentTask(sID, lSelTaskOID, sNames, sOIDs, bReadonly, bVisible) {
	this.base					= new ctlCommon(sID, false, bReadonly, bVisible);
	this.lSelTaskOID			= lSelTaskOID;
	this.sNames					= sNames;
	this.sOIDs					= sOIDs;
	this.zNames					= this.sNames.length > 0 ? this.sNames.split(sDelimiter) : "";
	this.zOIDs					= this.sOIDs.split(sDelimiter);
	zControls[zControls.length]	= this;
}
ctlSelectParentTask.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() ? "" : "disabled=true") + " style=\"width:325px;\" id=sel" + this.getID() + " onchange=\"OnChange('" + this.getID() + "')\">";
	str += "<OPTION value=\"0\" " + (this.lSelTaskOID == 0 ? "selected" : "") + ">" + sNoneLabel;
	for (var x = 0; x < this.zNames.length; x++) {
		str += "<OPTION value=\"" + this.zOIDs[x] + "\" " + (this.lSelTaskOID == this.zOIDs[x] ? "selected" : "") + ">" + this.zNames[x].replace(/#124/g,'\|').replace(/#59/g,'\;').replace(/#39/g,'&#39;').replace(/#34/g,'&#34;');
	}
	str += "</SELECT>";
	return str;
}
ctlSelectParentTask.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectParentTask.prototype.blur = function () { return this.base.blur(); }
ctlSelectParentTask.prototype.change = function () { return this.base.change(); }
ctlSelectParentTask.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectParentTask.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectParentTask.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectParentTask.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectParentTask.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectParentTask.prototype.clear = function () { return this.base.clear(); }
ctlSelectParentTask.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectParentTask.prototype.readonly = function (bVal) {
	var selCtl = document.getElementById('sel' + this.getID());
	selCtl.disabled = bVal;
	this.base.readonly(bVal);
}
ctlSelectParentTask.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectParentTask.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectParentTask.prototype.getID = function () { return this.base.getID(); }
ctlSelectParentTask.prototype.getValue = function () {
	var selCtl = document.getElementById('sel' + this.getID());
	var zOptions = selCtl.options;
	var sReturn = '';
	for (var x = 0; x < zOptions.length; x++) {
		if (zOptions[x].selected) {
			sReturn += (sReturn.length > 0 ? sDelimiter : '') + zOptions[x].value;
		}
	}
	return sReturn;
}

//********************************************************************************
// CONTROL: ctlSelectSecurityRoles
//********************************************************************************
function ctlSelectSecurityRoles(sID, sLabel, sRoles, bReadonly, bVisible) {
	this.base					= new ctlCommon(sID, sLabel, false, bReadonly, bVisible);
	this.sRoles					= sRoles;
	zControls[zControls.length]	= this;
}
// Inherited...
ctlSelectSecurityRoles.prototype.toString = function () {
	var str = this.base.toString();
	str += "<TR id=\"tr" + this.getID() + "\" style=\"display:" + (this.isVisible() ? "block;" : "none;") + "\">";
	str += "<TD class=\"NSLabelBlock\" nowrap>" + (this.getLabel() == "" ? " " : this.getLabel() + ":") + "</TD>";
	str += "<TD class=\"NSInputBlock\">";
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " multiple=1 size=20 style=\"width:325px;\" id=sel" + this.getID() + " onchange=\"OnChange('" + this.getID() + "')\">";
	var zRoles = this.sRoles.length > 0 ? this.sRoles.split(sDelimiter) : '';
	for (var x = 0; x < zRoles.length; x = x + 3) {
		str += "<OPTION value=\"" + zRoles[x + 1] + "\" " + (Number(zRoles[x + 2]) == 1 ? "selected" : "") + ">" + zRoles[x + 0];
	}
	str += "</SELECT>";
	str += "</TD>";
	str += "</TR>";
	return str;
}
ctlSelectSecurityRoles.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectSecurityRoles.prototype.blur = function () { return this.base.blur(); }
ctlSelectSecurityRoles.prototype.change = function () { return this.base.change(); }
ctlSelectSecurityRoles.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectSecurityRoles.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectSecurityRoles.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectSecurityRoles.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectSecurityRoles.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectSecurityRoles.prototype.clear = function () { return this.base.clear(); }
ctlSelectSecurityRoles.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectSecurityRoles.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectSecurityRoles.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectSecurityRoles.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectSecurityRoles.prototype.getID = function () { return this.base.getID(); }
ctlSelectSecurityRoles.prototype.getValue = function () {
	var selCtl = document.getElementById('sel' + this.getID());
	var zOptions = selCtl.options;
	var sReturn = '';
	for (var x = 0; x < zOptions.length; x++) {
		if (zOptions[x].selected) {
			sReturn += (sReturn.length > 0 ? ',' : '') + zOptions[x].value;
		}
	}
	return sReturn;
}
ctlSelectSecurityRoles.prototype.getLabel = function () { return this.base.getLabel(); }
ctlSelectSecurityRoles.prototype.setLabel = function (sNewLabel) {
	this.base.setLabel(sNewLabel);
	document.getElementById('lbl' + this.getID()).innerText = this.base.getLabel();
}

//********************************************************************************
// CONTROL: ctlSelectApprovers
//********************************************************************************
function ctlSelectApprovers(sID, sUsers, bReadonly, bVisible) {
	this.base					= new ctlCommon(sID, false, bReadonly, bVisible);
	this.sUsers					= sUsers;
	this.zUsers					= this.sUsers.length > 0 ? this.sUsers.split(sDelimiter) : '';
	zControls[zControls.length]	= this;
}
// Inherited...
ctlSelectApprovers.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " multiple=1 size=7 style=\"width:325px;\" id=sel" + this.getID() + " onchange=\"OnChange('" + this.getID() + "')\">";
	str += getApproverOptions(this.zUsers);
	str += "</SELECT>";
	return str;
}
ctlSelectApprovers.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectApprovers.prototype.blur = function () { return this.base.blur(); }
ctlSelectApprovers.prototype.change = function () { return this.base.change(); }
ctlSelectApprovers.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectApprovers.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectApprovers.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectApprovers.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectApprovers.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectApprovers.prototype.clear = function () { return this.base.clear(); }
ctlSelectApprovers.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectApprovers.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectApprovers.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectApprovers.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectApprovers.prototype.getID = function () { return this.base.getID(); }
ctlSelectApprovers.prototype.getValue = function () {
	var selCtl = document.getElementById('sel' + this.getID());
	var zOptions = selCtl.options;
	var sReturn = '';
	for (var x = 0; x < zOptions.length; x++) {
		if (zOptions[x].selected) {
			sReturn += (sReturn.length > 0 ? sDelimiter : '') + zOptions[x].value;
		}
	}
	return sReturn;
}

//********************************************************************************
// CONTROL: ctlSelectBillableProjects
//********************************************************************************
function ctlSelectBillableProjects(sID, sProjects, bReadonly, bVisible) {
	this.base					= new ctlCommon(sID, false, bReadonly, bVisible);
	this.sProjects				= sProjects;
	this.zProjects				= this.sProjects.length > 0 ? this.sProjects.split(sDelimiter) : '';
	zControls[zControls.length]	= this;
}
// Inherited...
ctlSelectBillableProjects.prototype.toString = function () {
	var str = this.base.toString();
	str += "<TABLE>";
	str += 	"<TR>";
	str += 		"<TD>";
	str += 			"<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " multiple=1 size=7 style=\"width:325px;\" id=sel" + this.getID() + " onchange=\"OnChange('" + this.getID() + "')\">";
	str += getBillableProjectOptions(this.zProjects);
	str += 			"</SELECT>";
	str += 		"</TD>";
	str += 		"<TD><i>" + sMultiSelect + "</i></TD>";
	str += 	"</TR>";
	str += "</TABLE>";
	return str;
}
ctlSelectBillableProjects.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectBillableProjects.prototype.blur = function () { return this.base.blur(); }
ctlSelectBillableProjects.prototype.change = function () { return this.base.change(); }
ctlSelectBillableProjects.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectBillableProjects.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectBillableProjects.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectBillableProjects.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectBillableProjects.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectBillableProjects.prototype.clear = function () { return this.base.clear(); }
ctlSelectBillableProjects.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectBillableProjects.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectBillableProjects.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectBillableProjects.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectBillableProjects.prototype.getID = function () { return this.base.getID(); }
ctlSelectBillableProjects.prototype.getValue = function () {
	var selCtl = document.getElementById('sel' + this.getID());
	var zOptions = selCtl.options;
	var sReturn = '';
	for (var x = 0; x < zOptions.length; x++) {
		if (zOptions[x].selected) {
			sReturn += (sReturn.length > 0 ? sDelimiter : '') + zOptions[x].value;
		}
	}
	return sReturn;
}

//********************************************************************************
// CONTROL: ctlSelectBillableClients
//********************************************************************************
function ctlSelectBillableClients(sID, sClients, bReadonly, bVisible) {
	this.base					= new ctlCommon(sID, false, bReadonly, bVisible);
	this.sClients				= sClients;
	this.zClients				= this.sClients.length > 0 ? this.sClients.split(sDelimiter) : '';
	zControls[zControls.length]	= this;
}
// Inherited...
ctlSelectBillableClients.prototype.toString = function () {
	var str = this.base.toString();
	str += "<TABLE>";
	str += 	"<TR>";
	str += 		"<TD>";
	str += 			"<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " multiple=1 size=7 style=\"width:325px;\" id=sel" + this.getID() + " onchange=\"OnChange('" + this.getID() + "')\">";
	str += getBillableClientOptions(this.zClients);
	str += 			"</SELECT>";
	str += 		"</TD>";
	str += 		"<TD><i>" + sMultiSelect + "</i></TD>";
	str += 	"</TR>";
	str += "</TABLE>";
	return str;
}
ctlSelectBillableClients.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectBillableClients.prototype.blur = function () { return this.base.blur(); }
ctlSelectBillableClients.prototype.change = function () { return this.base.change(); }
ctlSelectBillableClients.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectBillableClients.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectBillableClients.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectBillableClients.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectBillableClients.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectBillableClients.prototype.clear = function () { return this.base.clear(); }
ctlSelectBillableClients.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectBillableClients.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectBillableClients.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectBillableClients.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectBillableClients.prototype.getID = function () { return this.base.getID(); }
ctlSelectBillableClients.prototype.getValue = function () {
	var selCtl = document.getElementById('sel' + this.getID());
	var zOptions = selCtl.options;
	var sReturn = '';
	for (var x = 0; x < zOptions.length; x++) {
		if (zOptions[x].selected) {
			sReturn += (sReturn.length > 0 ? sDelimiter : '') + zOptions[x].value;
		}
	}
	return sReturn;
}

//********************************************************************************
// CONTROL: ctlSelectStaff
//********************************************************************************
function ctlSelectStaff(sID, sNames, sOIDs, sAssigneds, bReadonly, bVisible) {
	this.base					= new ctlCommon(sID, false, bReadonly, bVisible);
	this.sNames					= sNames;
	this.sOIDs					= sOIDs;
	this.sAssigneds				= sAssigneds;
	this.zNames					= this.sNames.length > 0 ? this.sNames.split(sDelimiter) : '';
	this.zOIDs					= this.sOIDs.length > 0 ? this.sOIDs.split(sDelimiter) : '';
	this.zAssigneds				= this.sAssigneds.length > 0 ? this.sAssigneds.split(sDelimiter) : '';
	zControls[zControls.length]	= this;
}
// Inherited...
ctlSelectStaff.prototype.toString = function () {
	var str = this.base.toString();
	str += "<TABLE><TR><TD>";
	str += "<SELECT " + (!this.isReadonly() ? "" : "disabled=true") + " multiple=1 size=10 style=\"width:325px;\" id=sel" + this.getID() + " onchange=\"OnChange('" + this.getID() + "')\">";
	for (var x = 0; x < this.zNames.length; x++) {
		str += "<OPTION value=\"" + this.zOIDs[x] + "\" " + (this.zAssigneds[x] == 1 ? "selected" : "") + ">" + this.zNames[x].replace(/#124/g,'\|').replace(/#59/g,'\;');
	}
	str += "</SELECT>";
	str += "</TD><TD>Optionally select only those project staff members who can record time to this task.  Use ctr-click to select staff members.</TD></TR></TABLE>";
	return str;
}
ctlSelectStaff.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectStaff.prototype.blur = function () { return this.base.blur(); }
ctlSelectStaff.prototype.change = function () { return this.base.change(); }
ctlSelectStaff.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectStaff.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectStaff.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectStaff.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectStaff.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectStaff.prototype.clear = function () { return this.base.clear(); }
ctlSelectStaff.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectStaff.prototype.readonly = function (bVal) {
	var selCtl = document.getElementById('sel' + this.getID());
	selCtl.disabled = bVal;
	this.base.readonly(bVal);
}
ctlSelectStaff.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectStaff.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectStaff.prototype.getID = function () { return this.base.getID(); }
ctlSelectStaff.prototype.getValue = function () {
	var selCtl = document.getElementById('sel' + this.getID());
	var zOptions = selCtl.options;
	var sReturn = '';
	for (var x = 0; x < zOptions.length; x++) {
		if (zOptions[x].selected) {
			sReturn += (sReturn.length > 0 ? sDelimiter : '') + zOptions[x].value;
		}
	}
	return sReturn;
}

//********************************************************************************
// CONTROL: ctlSelectDayOfWeek
//********************************************************************************
function ctlSelectDayOfWeek(sID, iDayOfWeek, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iDayOfWeek	= iDayOfWeek;
	zControls[zControls.length] = this;
}
ctlSelectDayOfWeek.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectDayOfWeek.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
// Inherited...
ctlSelectDayOfWeek.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iDayOfWeek + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getDayOfWeekOptions(this.iDayOfWeek);
	str += "</SELECT>";
	return str;
}
ctlSelectDayOfWeek.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectDayOfWeek.prototype.change = function () { return this.base.change(); }
ctlSelectDayOfWeek.prototype.blur = function () { return this.base.blur(); }
ctlSelectDayOfWeek.prototype.click = function () { return this.base.click(); }
ctlSelectDayOfWeek.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectDayOfWeek.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectDayOfWeek.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectDayOfWeek.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectDayOfWeek.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectDayOfWeek.prototype.clear = function () { return this.base.clear(); }
ctlSelectDayOfWeek.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectDayOfWeek.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectDayOfWeek.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectDayOfWeek.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectDayOfWeek.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectDurationMode
//********************************************************************************
function ctlSelectDurationMode(sID, iMode, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iMode	= iMode;
	zControls[zControls.length] = this;
}
ctlSelectDurationMode.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectDurationMode.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
// Inherited...
ctlSelectDurationMode.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iMode + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += 	"<OPTION value=\"0\" " + (this.iMode == 0 ? " selected " : "") + ">" + formatFloat(1.5);
	str += 	"<OPTION value=\"1\" " + (this.iMode == 1 ? " selected " : "") + ">01:30";
	str += "</SELECT>";
	return str;
}
ctlSelectDurationMode.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectDurationMode.prototype.change = function () { return this.base.change(); }
ctlSelectDurationMode.prototype.blur = function () { return this.base.blur(); }
ctlSelectDurationMode.prototype.click = function () { return this.base.click(); }
ctlSelectDurationMode.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectDurationMode.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectDurationMode.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectDurationMode.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectDurationMode.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectDurationMode.prototype.clear = function () { return this.base.clear(); }
ctlSelectDurationMode.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectDurationMode.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectDurationMode.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectDurationMode.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectDurationMode.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectWeekHoursCalc
//********************************************************************************
function ctlSelectWeekHoursCalc(sID, iMode, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iMode	= iMode;
	zControls[zControls.length] = this;
}
ctlSelectWeekHoursCalc.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectWeekHoursCalc.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
// Inherited...
ctlSelectWeekHoursCalc.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iMode + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getWeekHoursCalcOptions(this.iMode);
	str += "</SELECT>";
	return str;
}
ctlSelectWeekHoursCalc.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectWeekHoursCalc.prototype.change = function () { return this.base.change(); }
ctlSelectWeekHoursCalc.prototype.blur = function () { return this.base.blur(); }
ctlSelectWeekHoursCalc.prototype.click = function () { return this.base.click(); }
ctlSelectWeekHoursCalc.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectWeekHoursCalc.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectWeekHoursCalc.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectWeekHoursCalc.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectWeekHoursCalc.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectWeekHoursCalc.prototype.clear = function () { return this.base.clear(); }
ctlSelectWeekHoursCalc.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectWeekHoursCalc.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectWeekHoursCalc.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectWeekHoursCalc.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectWeekHoursCalc.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectShiftGender
//********************************************************************************
function ctlSelectShiftGender(sID, iGender, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iGender	= iGender;
	zControls[zControls.length] = this;
}
ctlSelectShiftGender.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectShiftGender.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectShiftGender.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iGender + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getShiftGenderOptions(this.iGender);
	str += "</SELECT>";
	return str;
}
ctlSelectShiftGender.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectShiftGender.prototype.change = function () { return this.base.change(); }
ctlSelectShiftGender.prototype.blur = function () { return this.base.blur(); }
ctlSelectShiftGender.prototype.click = function () { return this.base.click(); }
ctlSelectShiftGender.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectShiftGender.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectShiftGender.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectShiftGender.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectShiftGender.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectShiftGender.prototype.clear = function () { return this.base.clear(); }
ctlSelectShiftGender.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectShiftGender.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectShiftGender.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectShiftGender.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectShiftGender.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectShiftLanguage
//********************************************************************************
function ctlSelectShiftLanguage(sID, iLanguage, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iLanguage	= iLanguage;
	zControls[zControls.length] = this;
}
ctlSelectShiftLanguage.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectShiftLanguage.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectShiftLanguage.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iLanguage + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getShiftLanguageOptions(this.iLanguage);
	str += "</SELECT>";
	return str;
}
ctlSelectShiftLanguage.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectShiftLanguage.prototype.change = function () { return this.base.change(); }
ctlSelectShiftLanguage.prototype.blur = function () { return this.base.blur(); }
ctlSelectShiftLanguage.prototype.click = function () { return this.base.click(); }
ctlSelectShiftLanguage.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectShiftLanguage.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectShiftLanguage.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectShiftLanguage.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectShiftLanguage.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectShiftLanguage.prototype.clear = function () { return this.base.clear(); }
ctlSelectShiftLanguage.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectShiftLanguage.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectShiftLanguage.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectShiftLanguage.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectShiftLanguage.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectAccrualType
//********************************************************************************
function ctlSelectAccrualType(sID, iType, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iType		= iType;
	zControls[zControls.length] = this;
}
ctlSelectAccrualType.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectAccrualType.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectAccrualType.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iLanguage + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getAccrualTypeOptions(this.iType);
	str += "</SELECT>";
	return str;
}
ctlSelectAccrualType.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectAccrualType.prototype.change = function () { return this.base.change(); }
ctlSelectAccrualType.prototype.blur = function () { return this.base.blur(); }
ctlSelectAccrualType.prototype.click = function () { return this.base.click(); }
ctlSelectAccrualType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectAccrualType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectAccrualType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectAccrualType.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectAccrualType.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectAccrualType.prototype.clear = function () { return this.base.clear(); }
ctlSelectAccrualType.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectAccrualType.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectAccrualType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectAccrualType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectAccrualType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectProjectStatus
//********************************************************************************
function ctlSelectProjectStatus(sID, iStatus, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iStatus	= iStatus;
	zControls[zControls.length] = this;
}
ctlSelectProjectStatus.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectProjectStatus.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
// Inherited...
ctlSelectProjectStatus.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iStatus + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getProjectStatusOptions(this.iStatus);
	str += "</SELECT>";
	return str;
}
ctlSelectProjectStatus.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectProjectStatus.prototype.change = function () { return this.base.change(); }
ctlSelectProjectStatus.prototype.blur = function () { return this.base.blur(); }
ctlSelectProjectStatus.prototype.click = function () { return this.base.click(); }
ctlSelectProjectStatus.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectProjectStatus.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectProjectStatus.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectProjectStatus.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectProjectStatus.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectProjectStatus.prototype.clear = function () { return this.base.clear(); }
ctlSelectProjectStatus.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectProjectStatus.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectProjectStatus.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectProjectStatus.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectProjectStatus.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectEmployeeStatus
//********************************************************************************
function ctlSelectEmployeeStatus(sID, iStatus, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iStatus	= iStatus;
	zControls[zControls.length] = this;
}
ctlSelectEmployeeStatus.prototype.getText = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.selectedIndex > -1 ? oSEL.options[oSEL.selectedIndex].text : '';
}
ctlSelectEmployeeStatus.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectEmployeeStatus.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
// Inherited...
ctlSelectEmployeeStatus.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iStatus + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getEmployeeStatusOptions(this.iStatus);
	str += "</SELECT>";
	return str;
}
ctlSelectEmployeeStatus.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectEmployeeStatus.prototype.change = function () { return this.base.change(); }
ctlSelectEmployeeStatus.prototype.blur = function () { return this.base.blur(); }
ctlSelectEmployeeStatus.prototype.click = function () { return this.base.click(); }
ctlSelectEmployeeStatus.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectEmployeeStatus.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectEmployeeStatus.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectEmployeeStatus.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectEmployeeStatus.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectEmployeeStatus.prototype.clear = function () { return this.base.clear(); }
ctlSelectEmployeeStatus.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectEmployeeStatus.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectEmployeeStatus.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectEmployeeStatus.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectEmployeeStatus.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectSeniorityType
//********************************************************************************
function ctlSelectSeniorityType(sID, iType, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iType	= iType;
	zControls[zControls.length] = this;
}
ctlSelectSeniorityType.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectSeniorityType.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectSeniorityType.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iType + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getSeniorityTypeOptions(this.iType);
	str += "</SELECT>";
	return str;
}
ctlSelectSeniorityType.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectSeniorityType.prototype.change = function () { return this.base.change(); }
ctlSelectSeniorityType.prototype.blur = function () { return this.base.blur(); }
ctlSelectSeniorityType.prototype.click = function () { return this.base.click(); }
ctlSelectSeniorityType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectSeniorityType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectSeniorityType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectSeniorityType.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectSeniorityType.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectSeniorityType.prototype.clear = function () { return this.base.clear(); }
ctlSelectSeniorityType.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectSeniorityType.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectSeniorityType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectSeniorityType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectSeniorityType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectChangeField
//********************************************************************************
function ctlSelectChangeField(sID, iType, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iType	= iType;
	zControls[zControls.length] = this;
}
ctlSelectChangeField.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectChangeField.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectChangeField.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iType + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getChangeFieldOptions(this.iType);
	str += "</SELECT>";
	return str;
}
ctlSelectChangeField.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectChangeField.prototype.change = function () { return this.base.change(); }
ctlSelectChangeField.prototype.blur = function () { return this.base.blur(); }
ctlSelectChangeField.prototype.click = function () { return this.base.click(); }
ctlSelectChangeField.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectChangeField.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectChangeField.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectChangeField.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectChangeField.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectChangeField.prototype.clear = function () { return this.base.clear(); }
ctlSelectChangeField.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectChangeField.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectChangeField.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectChangeField.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectChangeField.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectTimeSlipStatus
//********************************************************************************
function ctlSelectTimeSlipStatus(sID, iStatus, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iStatus	= iStatus;
	zControls[zControls.length] = this;
}
ctlSelectTimeSlipStatus.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectTimeSlipStatus.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectTimeSlipStatus.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iStatus + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getTimeSlipStatusOptions(this.iStatus);
	str += "</SELECT>";
	return str;
}
ctlSelectTimeSlipStatus.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectTimeSlipStatus.prototype.change = function () { return this.base.change(); }
ctlSelectTimeSlipStatus.prototype.blur = function () { return this.base.blur(); }
ctlSelectTimeSlipStatus.prototype.click = function () { return this.base.click(); }
ctlSelectTimeSlipStatus.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectTimeSlipStatus.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectTimeSlipStatus.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectTimeSlipStatus.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectTimeSlipStatus.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectTimeSlipStatus.prototype.clear = function () { return this.base.clear(); }
ctlSelectTimeSlipStatus.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectTimeSlipStatus.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectTimeSlipStatus.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectTimeSlipStatus.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectTimeSlipStatus.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectExpenseStatus
//********************************************************************************
function ctlSelectExpenseStatus(sID, iStatus, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iStatus	= iStatus;
	zControls[zControls.length] = this;
}
ctlSelectExpenseStatus.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectExpenseStatus.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectExpenseStatus.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iStatus + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getExpenseStatusOptions(this.iStatus);
	str += "</SELECT>";
	return str;
}
ctlSelectExpenseStatus.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectExpenseStatus.prototype.change = function () { return this.base.change(); }
ctlSelectExpenseStatus.prototype.blur = function () { return this.base.blur(); }
ctlSelectExpenseStatus.prototype.click = function () { return this.base.click(); }
ctlSelectExpenseStatus.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectExpenseStatus.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectExpenseStatus.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectExpenseStatus.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectExpenseStatus.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectExpenseStatus.prototype.clear = function () { return this.base.clear(); }
ctlSelectExpenseStatus.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectExpenseStatus.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectExpenseStatus.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectExpenseStatus.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectExpenseStatus.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectExpenseType
//********************************************************************************
function ctlSelectExpenseType(sID, lOID, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lOID		= lOID;
	zControls[zControls.length] = this;
}
ctlSelectExpenseType.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectExpenseType.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectExpenseType.prototype.isMileage = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options(x).value==oSEL.value) {
			if(oSEL.options(x).getAttribute('MILEAGE')) return true;
			break;
		}
	}
	return false;
}
ctlSelectExpenseType.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.lOID + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += 	"<OPTION value=\"0\" " + (this.lOID == 0 ? " selected " : "") + ">" + sNoneLabel;
	str += getExpenseTypeOptions(this.lOID);
	str += "</SELECT>";
	return str;
}
ctlSelectExpenseType.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectExpenseType.prototype.change = function () { return this.base.change(); }
ctlSelectExpenseType.prototype.blur = function () { return this.base.blur(); }
ctlSelectExpenseType.prototype.click = function () { return this.base.click(); }
ctlSelectExpenseType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectExpenseType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectExpenseType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectExpenseType.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectExpenseType.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectExpenseType.prototype.clear = function () { return this.base.clear(); }
ctlSelectExpenseType.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectExpenseType.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectExpenseType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectExpenseType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectExpenseType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectPaymentType
//********************************************************************************
function ctlSelectPaymentType(sID, lOID, bRequired, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, bRequired, bReadonly, bVisible);
	this.lOID	= lOID;
	zControls[zControls.length] = this;
}
ctlSelectPaymentType.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectPaymentType.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectPaymentType.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" onblur=\"" + this.getID() + ".blur()\" value=\"" + this.lOID + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += 	"<OPTION value=\"0\" " + (this.lOID == 0 ? " selected " : "") + ">" + sNoneLabel;
	str += getPaymentTypeOptions(this.lOID);
	str += "</SELECT>";
	return str;
}
ctlSelectPaymentType.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
		oSEL.style.backgroundColor = (!this.isValid() ? 'yellow' : 'window');
	}
}
ctlSelectPaymentType.prototype.change = function () { return this.base.change(); }
ctlSelectPaymentType.prototype.blur = function () {
//	return this.base.blur();
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
//		oTXT.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
//		return this.base.blur();
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
		oSEL.style.backgroundColor = (!this.isValid() ? 'yellow' : 'window');
	}
}
ctlSelectPaymentType.prototype.click = function () { return this.base.click(); }
ctlSelectPaymentType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectPaymentType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectPaymentType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectPaymentType.prototype.isDirty = function () { return this.base.isDirty(); }
//ctlSelectPaymentType.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectPaymentType.prototype.isValid = function () {
	var bValid = this.isRequired() && !this.isReadonly() ? this.getValue() != 0 : true;
	
	return bValid;
}
ctlSelectPaymentType.prototype.clear = function () { return this.base.clear(); }
ctlSelectPaymentType.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectPaymentType.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectPaymentType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectPaymentType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectPaymentType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectGender
//********************************************************************************
function ctlSelectGender(sID, iGender, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iGender	= iGender;
	zControls[zControls.length] = this;
}
ctlSelectGender.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectGender.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
// Inherited...
ctlSelectGender.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iGender + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getGenderOptions(this.iGender);
	str += "</SELECT>";
	return str;
}
ctlSelectGender.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectGender.prototype.change = function () { return this.base.change(); }
ctlSelectGender.prototype.blur = function () { return this.base.blur(); }
ctlSelectGender.prototype.click = function () { return this.base.click(); }
ctlSelectGender.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectGender.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectGender.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectGender.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectGender.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectGender.prototype.clear = function () { return this.base.clear(); }
ctlSelectGender.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectGender.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectGender.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectGender.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectGender.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectBalanceSheetType
//********************************************************************************
function ctlSelectBalanceSheetType(sID, iType, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iType	= iType;
	zControls[zControls.length] = this;
}
ctlSelectBalanceSheetType.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectBalanceSheetType.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectBalanceSheetType.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iType + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getBalanceSheetTypeOptions(this.iType);
	str += "</SELECT>";
	return str;
}
ctlSelectBalanceSheetType.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectBalanceSheetType.prototype.change = function () { return this.base.change(); }
ctlSelectBalanceSheetType.prototype.blur = function () { return this.base.blur(); }
ctlSelectBalanceSheetType.prototype.click = function () { return this.base.click(); }
ctlSelectBalanceSheetType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectBalanceSheetType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectBalanceSheetType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectBalanceSheetType.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectBalanceSheetType.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectBalanceSheetType.prototype.clear = function () { return this.base.clear(); }
ctlSelectBalanceSheetType.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectBalanceSheetType.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectBalanceSheetType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectBalanceSheetType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectBalanceSheetType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectLanguage
//********************************************************************************
function ctlSelectLanguage(sID, iLanguage, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iLanguage	= iLanguage;
	zControls[zControls.length] = this;
}
ctlSelectLanguage.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectLanguage.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
// Inherited...
ctlSelectLanguage.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iGender + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getLanguageOptions(this.iLanguage);
	str += "</SELECT>";
	return str;
}
ctlSelectLanguage.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectLanguage.prototype.change = function () { return this.base.change(); }
ctlSelectLanguage.prototype.blur = function () { return this.base.blur(); }
ctlSelectLanguage.prototype.click = function () { return this.base.click(); }
ctlSelectLanguage.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectLanguage.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectLanguage.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectLanguage.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectLanguage.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectLanguage.prototype.clear = function () { return this.base.clear(); }
ctlSelectLanguage.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectLanguage.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectLanguage.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectLanguage.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectLanguage.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectCountry
//********************************************************************************
function ctlSelectCountry(sID, sCountry, bRequired, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, bRequired, bReadonly, bVisible);
	this.sCountry	= sCountry;
	zControls[zControls.length] = this;
}
ctlSelectCountry.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectCountry.prototype.setValue = function (sCountry) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == sCountry) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectCountry.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() ? "disabled=true" : "") + " id=sel" + this.getID() + " onblur=\"" + this.getID() + ".blur()\" onchange=\"" + this.getID() + ".change()\" value=\"" + this.sCountry + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += 	"<OPTION value=\"\">" + sNoneLabel;
	str += getCountryOptions(this.sCountry);
	str += "</SELECT>";
	return str;
}
ctlSelectCountry.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectCountry.prototype.change = function () { return this.base.change(); }
ctlSelectCountry.prototype.blur = function () { this.isValid(); return this.base.blur(); }
ctlSelectCountry.prototype.click = function () { return this.base.click(); }
ctlSelectCountry.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectCountry.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectCountry.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectCountry.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectCountry.prototype.isValid = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		if (this.getValue().length == 0 && this.isRequired()) {
			oSEL.className = 'INPUTERROR';
			return false;
		}
		else {
			oSEL.className = (this.isReadonly() ? 'INPUTREADONLY' : this.isRequired() ? 'INPUTREQUIRED' : '');
		}
	}
	return true;
}
ctlSelectCountry.prototype.clear = function () { return this.base.clear(); }
ctlSelectCountry.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectCountry.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectCountry.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectCountry.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectCountry.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectUserTimeOffFromDateType
//********************************************************************************
function ctlSelectUserTimeOffFromDateType(sID, iType, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iType	= iType;
	zControls[zControls.length] = this;
}
ctlSelectUserTimeOffFromDateType.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectUserTimeOffFromDateType.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
// Inherited...
ctlSelectUserTimeOffFromDateType.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (!this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iType + "\" style=\"display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += getUserTimeOffFromDateTypeOptions(this.iType);
	str += "</SELECT>";
	return str;
}
ctlSelectUserTimeOffFromDateType.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectUserTimeOffFromDateType.prototype.change = function () { return this.base.change(); }
ctlSelectUserTimeOffFromDateType.prototype.blur = function () { return this.base.blur(); }
ctlSelectUserTimeOffFromDateType.prototype.click = function () { return this.base.click(); }
ctlSelectUserTimeOffFromDateType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectUserTimeOffFromDateType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectUserTimeOffFromDateType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectUserTimeOffFromDateType.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectUserTimeOffFromDateType.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectUserTimeOffFromDateType.prototype.clear = function () { return this.base.clear(); }
ctlSelectUserTimeOffFromDateType.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectUserTimeOffFromDateType.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectUserTimeOffFromDateType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectUserTimeOffFromDateType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectUserTimeOffFromDateType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectRepeat
//********************************************************************************
var ctlSelectRepeat_Sunday		= 2;
var ctlSelectRepeat_Monday		= 4;
var ctlSelectRepeat_Tuesday		= 8;
var ctlSelectRepeat_Wednesday	= 16;
var ctlSelectRepeat_Thursday	= 32;
var ctlSelectRepeat_Friday		= 64;
var ctlSelectRepeat_Saturday	= 128;
function ctlSelectRepeat(sID, iType, iEvery, iFor, iBy, lOn, sRepeatDate, bReadonly, bVisible) {
	this.base			= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iType			= iType;
	this.iEvery			= iEvery < 1 ? 1 : iEvery;
	this.iFor			= iFor < 1 ? 1 : iFor;
	this.iBy			= iBy < 0 || iBy > 1 ? 0 : iBy;
	this.dtRepeatDate	= DateToJSDate(YYYYMMDDToDate(sRepeatDate));
	this.lOn			= lOn == 0 ? Math.pow(this.dtRepeatDate.getDay()+1,2) : lOn;
	zControls[zControls.length] = this;
}
ctlSelectRepeat.prototype.getType = function () {
	return this.iType;
}
ctlSelectRepeat.prototype.getEvery = function () {
	return this.iEvery;
}
ctlSelectRepeat.prototype.getFor = function () {
	return this.iFor;
}
ctlSelectRepeat.prototype.getBy = function () {
	return this.iBy;
}
ctlSelectRepeat.prototype.getOn = function () {
	return this.lOn;
}
ctlSelectRepeat.prototype.setDateYYYYMMDD = function (sDate) {
	this.dtRepeatDate	= DateToJSDate(YYYYMMDDToDate(sDate));
	this.setDescription();
	this.base.change();
}
ctlSelectRepeat.prototype.setType = function (iValue) {
	this.iType = iValue;
	var tblInterval = document.getElementById("tblInterval" + this.getID());
	for (var i = 0; i < tblInterval.rows[0].cells.length; i++) {
		tblInterval.rows[0].cells[i].setValue(false);
	}
	tblInterval.rows[0].cells[iValue].setValue(true);
	var otrRepeatEvery	= document.getElementById("trRepeatEvery" + this.getID());
	var otdRepeatEvery	= document.getElementById("tdRepeatEvery" + this.getID());
	var otrRepeatFor	= document.getElementById("trRepeatFor" + this.getID());
	var otrRepeatBy		= document.getElementById("trRepeatBy" + this.getID());
	var otrRepeatOn		= document.getElementById("trRepeatOn" + this.getID());
	switch (this.iType) {
		case 0:		// None
			otrRepeatEvery.style.display = "none";
			otrRepeatFor.style.display = "none";
			otrRepeatBy.style.display = "none";
			otrRepeatOn.style.display = "none";
			break;
		case 1:		// Day
			otrRepeatEvery.style.display = "block";
			otdRepeatEvery.innerText = (this.iEvery>1?"Days":"Day");
			otrRepeatFor.style.display = "block";
			otrRepeatBy.style.display = "none";
			otrRepeatOn.style.display = "none";
			break;
		case 2:		// Week
			otrRepeatEvery.style.display = "block";
			otdRepeatEvery.innerText = (this.iEvery>1?"Weeks":"Week");
			otrRepeatFor.style.display = "block";
			otrRepeatBy.style.display = "none";
			otrRepeatOn.style.display = "block";
			break;
		case 3:		// Month
			otrRepeatEvery.style.display = "block";
			otdRepeatEvery.innerText = (this.iEvery>1?"Months":"Month");
			otrRepeatFor.style.display = "block";
			otrRepeatBy.style.display = "block";
			otrRepeatOn.style.display = "none";
			break;
		case 4:		// Year
			otrRepeatEvery.style.display = "block";
			otdRepeatEvery.innerText = (this.iEvery>1?"Years":"Year");
			otrRepeatFor.style.display = "block";
			otrRepeatBy.style.display = "none";
			otrRepeatOn.style.display = "none";
			break;
	}
	this.setDescription();
	this.base.change();
}
ctlSelectRepeat.prototype.setRepeatDay = function (iValue) {
	switch (iValue) {
		case 0:		// Sunday
			this.lOn = this.lOn ^ ctlSelectRepeat_Sunday;
			break;
		case 1:		// Monday
			this.lOn = this.lOn ^ ctlSelectRepeat_Monday;
			break;
		case 2:		// Tuesday
			this.lOn = this.lOn ^ ctlSelectRepeat_Tuesday;
			break;
		case 3:		// Wednesday
			this.lOn = this.lOn ^ ctlSelectRepeat_Wednesday;
			break;
		case 4:		// Thursday
			this.lOn = this.lOn ^ ctlSelectRepeat_Thursday;
			break;
		case 5:		// Friday
			this.lOn = this.lOn ^ ctlSelectRepeat_Friday;
			break;
		case 6:		// Saturday
			this.lOn = this.lOn ^ ctlSelectRepeat_Saturday;
			break;
	}
	this.setDescription();
	this.base.change();
}
ctlSelectRepeat.prototype.toString = function () {
	var str = this.base.toString();
	str += "<DIV id=div" + this.getID() + " style=\"height:110px;display:" + (this.isVisible() ? "block" : "none") + ";\">";
	str += "<TABLE height=\"100%\">";
	str += 	"<TR>";
	str +=		"<TD style=\"width:400px;\" valign=\"top\" align=\"left\">";
	str += "<TABLE class=NSFormTable>";
	str += 	"<TR>";
	str +=		"<TD colspan=3 class=NSInputBlock style=\"text-align:left;\">";
	str += 			"<table cellspacing=0 id=\"tblInterval" + this.getID() + "\" style=\"background-color:buttonface;width:75%;border:1px solid windowframe;\">";
	str += 				"<tr>";
   	str += 					"<td onclick=\"" + this.getID() + ".setType(0)\">None</td>";
   	str += 					"<td onclick=\"" + this.getID() + ".setType(1)\">Day</td>";
   	str += 					"<td onclick=\"" + this.getID() + ".setType(2)\">Week</td>";
   	str += 					"<td onclick=\"" + this.getID() + ".setType(3)\">Month</td>";
   	str += 					"<td onclick=\"" + this.getID() + ".setType(4)\">Year</td>";
	str += 				"</tr>";
	str += 			"</table>";
	str += 			"<script type=\"text/javascript\">";
	str += 				"var table = document.getElementById(\"tblInterval" + this.getID() + "\");";
	str += 				"for (var i = 0; i < table.rows[0].cells.length; i++) {";
   	str += 					"createButton(table.rows[0].cells[i]);";
	str += 					"table.rows[0].cells[i].setToggle(true);";
	str += 					"if (i == " + this.iType + ") table.rows[0].cells[i].setValue(true);";
	str += 				"}";
	str += 			"</script>";
	str +=		"</TD>";
	str += 	"</TR>";
	str += 	"<TR id=\"trRepeatEvery" + this.getID() + "\" style=\"display:" + (this.iType!=0?"block":"none") + ";\">";
	str +=		"<TD class=NSLabelBlock nowrap style=\"width:100px;\">Every:</TD>";
	str +=		"<TD>";
	str += 			"<INPUT type=\"text\" "
						+ "required class=\"INPUTREQUIRED\" "
						+ "id=\"intEvery" + this.getID() + "\" " 
						+ "value=\"" + formatInteger(JSIntegerToString(this.iEvery)) + "\" "
						+ "style=\"width:50px;text-align:right;\" "
						+ "onfocus=\"" + this.getID() + ".focusEvery();\" "
						+ "onblur=\"" + this.getID() + ".blurEvery();\" "
						+ "onchange=\"" + this.getID() + ".changeEvery();\" />";
	str +=		"</TD>";
	str +=		"<TD id=\"tdRepeatEvery" + this.getID() + "\" style=\"width:100%;\">" + this.getEveryText() + "</TD>";
	str += 	"</TR>";
	str += 	"<TR id=\"trRepeatFor" + this.getID() + "\" style=\"display:" + (this.iType!=0?"block":"none") + ";\">";
	str +=		"<TD class=NSLabelBlock nowrap style=\"width:100px;\">End after:</TD>";
	str +=		"<TD>";
	str += 			"<INPUT type=\"text\" "
						+ "required class=\"INPUTREQUIRED\" "
						+ "id=\"intFor" + this.getID() + "\" " 
						+ "value=\"" + formatInteger(JSIntegerToString(this.iFor)) + "\" "
						+ "style=\"width:50px;text-align:right;\" "
						+ "onfocus=\"" + this.getID() + ".focusFor();\" "
						+ "onblur=\"" + this.getID() + ".blurFor();\" "
						+ "onchange=\"" + this.getID() + ".changeFor();\" />";
	str +=		"</TD>";
	str +=		"<TD style=\"width:100%;\">occurrences</TD>";
	str += 	"</TR>";
	str += 	"<TR id=\"trRepeatBy" + this.getID() + "\" style=\"display:" + (this.iType==3?"block":"none") + ";\">";
	str +=		"<TD class=NSLabelBlock nowrap style=\"width:100px;\">By:</TD>";
	str +=		"<TD colspan=2>";
	str +=			"<SELECT id=\"selRepeatBy" + this.getID() + "\" onchange=\"" + this.getID() + ".changeBy()\">";
	str += 				"<OPTION value=\"0\" " + (this.iBy==0?" selected ":"") + ">Day";
	str += 				"<OPTION value=\"1\" " + (this.iBy==1?" selected ":"") + ">Date";
	str +=			"</SELECT>";
	str +=		"</TD>";
	str += 	"</TR>";
	str += 	"<TR id=\"trRepeatOn" + this.getID() + "\" style=\"display:" + (this.iType==2?"block":"none") + ";\">";
	str +=		"<TD class=NSLabelBlock nowrap style=\"width:100px;\">Repeat On:</TD>";
	str +=		"<TD colspan=2>";
	str += 			"<table cellspacing=0 id=\"tblRepeatOn" + this.getID() + "\" bgcolor=buttonface style=\"border:1px solid windowframe;\">";
	str += 				"<tr>";
   	str += 					"<td onclick=\"" + this.getID() + ".setRepeatDay(0)\">Sun</td>";
   	str += 					"<td onclick=\"" + this.getID() + ".setRepeatDay(1)\">Mon</td>";
   	str += 					"<td onclick=\"" + this.getID() + ".setRepeatDay(2)\">Tue</td>";
   	str += 					"<td onclick=\"" + this.getID() + ".setRepeatDay(3)\">Wed</td>";
   	str += 					"<td onclick=\"" + this.getID() + ".setRepeatDay(4)\">Thu</td>";
   	str += 					"<td onclick=\"" + this.getID() + ".setRepeatDay(5)\">Fri</td>";
   	str += 					"<td onclick=\"" + this.getID() + ".setRepeatDay(6)\">Sat</td>";
	str += 				"</tr>";
	str += 			"</table>";
	str += 			"<script type=\"text/javascript\">";
	str += 				"var table = document.getElementById(\"tblRepeatOn" + this.getID() + "\");";
	str += 				"for (var i = 0; i < table.rows[0].cells.length; i++) {";
   	str += 					"createButton(table.rows[0].cells[i]);";
	str += 					"table.rows[0].cells[i].setToggle(true);";
	str +=					"var bOn = false;";
	str +=					"switch (i) {";
	str +=						"case 0: bOn = (" + this.lOn + " & ctlSelectRepeat_Sunday) == ctlSelectRepeat_Sunday; break;";
	str +=						"case 1: bOn = (" + this.lOn + " & ctlSelectRepeat_Monday) == ctlSelectRepeat_Monday; break;";
	str +=						"case 2: bOn = (" + this.lOn + " & ctlSelectRepeat_Tuesday) == ctlSelectRepeat_Tuesday; break;";
	str +=						"case 3: bOn = (" + this.lOn + " & ctlSelectRepeat_Wednesday) == ctlSelectRepeat_Wednesday; break;";
	str +=						"case 4: bOn = (" + this.lOn + " & ctlSelectRepeat_Thursday) == ctlSelectRepeat_Thursday; break;";
	str +=						"case 5: bOn = (" + this.lOn + " & ctlSelectRepeat_Friday) == ctlSelectRepeat_Friday; break;";
	str +=						"case 6: bOn = (" + this.lOn + " & ctlSelectRepeat_Saturday) == ctlSelectRepeat_Saturday; break;";
	str +=					"}";
	str += 					"if (bOn) table.rows[0].cells[i].setValue(true);";
	str += 				"}";
	str += 			"</script>";
	str +=		"</TD>";
	str += 	"</TR>";
	str += "</TABLE>";
	str +=		"</TD>";
	str +=		"<TD valign=\"middle\" align=\"center\">";
	str += 			"<BLOCKQUOTE>";
	str += 				"<SPAN id=\"fld" + this.getID() + "\" style=\"text-align:center;font-weight:bold;color:activecaption;width:100%;\">";
	str += 					this.descriptionText();//"Click one of the selections above to set a repeat interval.";
	str += 				"</SPAN>";
	str += 			"</BLOCKQUOTE>";
	str +=		"</TD>";
	str +=	"</TR>";
	str +=	"</TABLE>";
	str += "</DIV>";
	return str;
}
ctlSelectRepeat.prototype.setDescription = function () {
	var ofld	= document.getElementById("fld" + this.getID());
	ofld.innerText = this.descriptionText();
}
ctlSelectRepeat.prototype.descriptionText = function () {
	var sReturn = "";
	var sEvery	= new String(this.iEvery);
	switch (this.iType) {
		case 0:		// None
			sReturn = "Click one of the selections above to set a repeat interval.";
			break;
		case 1:		// Day
			switch (this.iEvery) {
				case 1:
					sReturn = "Every day";
					break;
				case 2:
					sReturn = "Every other day";
					break;
				case 3:
					sReturn = "Every 3rd day";
					break;
				default:
					sReturn = "Every " + this.iEvery
						+ (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "1" ? "st" : (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "2" ? "nd" : (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "3" ? "rd" : "th")))
						+ " day";
					break;
			}
			break;
		case 2:		// Week
			var sDays = "";
			sDays += (this.lOn & ctlSelectRepeat_Sunday) == ctlSelectRepeat_Sunday ? (sDays.length > 0 ? ", " : "") + "Sunday" : "";
			sDays += (this.lOn & ctlSelectRepeat_Monday) == ctlSelectRepeat_Monday ? (sDays.length > 0 ? ", " : "") + "Monday" : "";
			sDays += (this.lOn & ctlSelectRepeat_Tuesday) == ctlSelectRepeat_Tuesday ? (sDays.length > 0 ? ", " : "") + "Tuesday" : "";
			sDays += (this.lOn & ctlSelectRepeat_Wednesday) == ctlSelectRepeat_Wednesday ? (sDays.length > 0 ? ", " : "") + "Wednesday" : "";
			sDays += (this.lOn & ctlSelectRepeat_Thursday) == ctlSelectRepeat_Thursday ? (sDays.length > 0 ? ", " : "") + "Thursday" : "";
			sDays += (this.lOn & ctlSelectRepeat_Friday) == ctlSelectRepeat_Friday ? (sDays.length > 0 ? ", " : "") + "Friday" : "";
			sDays += (this.lOn & ctlSelectRepeat_Saturday) == ctlSelectRepeat_Saturday ? (sDays.length > 0 ? ", " : "") + "Saturday" : "";
			switch (this.iEvery) {
				case 1:
					sReturn = "Every " + sDays;
					break;
				case 2:
					sReturn = "Every other " + sDays;
					break;
				case 3:
					sReturn = "Every 3rd week on " + sDays;
					break;
				default:
					sReturn = "Every " + this.iEvery
						+ (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "1" ? "st" : (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "2" ? "nd" : (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "3" ? "rd" : "th")))
						+ " week on " + sDays;
					break;
			}
			break;
		case 3:		// Month
			var sDOW = "";
			var sDayNumber = "";
			switch (parseInt(this.iBy)) {
				case 0:		// Day
					var zDayNames = DayNames.split(sDelimiter);
					sDOW = zDayNames[this.dtRepeatDate.getDay()];
					sDayNumber = parseInt(this.dtRepeatDate.getDate() / 7);
					switch (sDayNumber) {
						case 0: 
						case 1: sDayNumber = "1st"; break;
						case 2: sDayNumber = "2nd"; break;
						case 3: sDayNumber = "3rd"; break;
						case 4: sDayNumber = "4th"; break;
						case 5: sDayNumber = "5th"; break;
						case 6: sDayNumber = "6th"; break;
					}
					break;
				case 1:		// Date
					sDayNumber = new String(this.dtRepeatDate.getDate());
					iDayNumber = parseInt(sDayNumber);
					sDayNumber = sDayNumber + (iDayNumber > 20 && sDayNumber.substr(sDayNumber.length-1,1) == "1" ? "st" : (iDayNumber > 20 && sDayNumber.substr(sDayNumber.length-1,1) == "2" ? "nd" : (iDayNumber > 20 && sEvery.substr(sDayNumber.length-1,1) == "3" ? "rd" : "th")));
					break;
			}
			switch (this.iEvery) {
				case 1:
					sReturn = "The " + sDayNumber + " " + sDOW + " of every month";
					break;
				case 2:
					sReturn = "The " + sDayNumber + " " + sDOW + " of every other month";
					break;
				case 3:
					sReturn = "The " + sDayNumber + " " + sDOW + " of every 3rd month";
					break;
				default:
					sReturn = "The " + sDayNumber + " " + sDOW + " of every " + this.iEvery
						+ (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "1" ? "st" : (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "2" ? "nd" : (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "3" ? "rd" : "th")))
						+ " month";
					break;
			}
			break;
		case 4:		// Year
			var zMonths = MonthNames.split(sDelimiter);
			var sMonth = zMonths[this.dtRepeatDate.getMonth()];
			var sDayNumber = this.dtRepeatDate.getDate();
			switch (this.iEvery) {
				case 1:
					sReturn = sMonth + " " + sDayNumber + " every year";
					break;
				case 2:
					sReturn = sMonth + " " + sDayNumber + " every other year";
					break;
				case 3:
					sReturn = sMonth + " " + sDayNumber + " every 3rd year";
					break;
				default:
					sReturn = sMonth + " " + sDayNumber + " every " + this.iEvery
						+ (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "1" ? "st" : (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "2" ? "nd" : (this.iEvery > 20 && sEvery.substr(sEvery.length-1,1) == "3" ? "rd" : "th")))
						+ " year";
					break;
			}
			break;
	}
	return sReturn;
}
ctlSelectRepeat.prototype.focusEvery = function () {
	if (!this.isReadonly()) {
		var oTXT = document.getElementById('intEvery' + this.getID());
		oTXT.className = (!this.isValidEvery() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
		oTXT.style.textAlign = 'left';
		return this.base.focus();
	}
}
ctlSelectRepeat.prototype.blurEvery = function () {
	if (!this.isReadonly()) {
		var oTXT = document.getElementById('intEvery' + this.getID());
		oTXT.className = (!this.isValidEvery() ? 'INPUTERROR' : 'INPUTREQUIRED');
		oTXT.value = formatInteger(oTXT.value);
		oTXT.style.textAlign = 'right';
		this.setDescription();
		return this.base.blur();
	}
}
ctlSelectRepeat.prototype.changeEvery = function () {
	var oTXT = document.getElementById('intEvery' + this.getID());
	this.iEvery = oTXT ? StringToJSInteger(oTXT.value) : this.iEvery;
	var otdRepeatEvery = document.getElementById("tdRepeatEvery" + this.getID());
	otdRepeatEvery.innerText = this.getEveryText();
}
ctlSelectRepeat.prototype.getEveryText = function () {
	var sReturn = "";
	switch (this.iType) {
		case 1:	sReturn = (this.iEvery>1?"Days":"Day"); break;
		case 2:	sReturn = (this.iEvery>1?"Weeks":"Week"); break;
		case 3:	sReturn = (this.iEvery>1?"Months":"Month"); break;
		case 4: sReturn = (this.iEvery>1?"Years":"Year"); break;
	}
	return sReturn;
}
ctlSelectRepeat.prototype.isValidEvery = function () {
	var oTXT = document.getElementById('intEvery' + this.getID());
	if (oTXT.value.length == 0) {
		oTXT.className = 'INPUTERROR';
		return false;
	}
	else if (!isValidInteger(oTXT.value)) {
		oTXT.className = 'INPUTERROR';
		return false;
	}
	else if (StringToJSInteger(oTXT.value) < 1 && this.iType > 0) {
		oTXT.className = 'INPUTERROR';
		return false;
	}
	else {
		oTXT.className = (this.isReadonly() ? 'INPUTREADONLY' : 'INPUTREQUIRED');
		return true;
	}
}
ctlSelectRepeat.prototype.focusFor = function () {
	if (!this.isReadonly()) {
		var oTXT = document.getElementById('intFor' + this.getID());
		oTXT.className = (!this.isValidFor() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
		oTXT.style.textAlign = 'left';
		return this.base.focus();
	}
}
ctlSelectRepeat.prototype.blurFor = function () {
	if (!this.isReadonly()) {
		var oTXT = document.getElementById('intFor' + this.getID());
		oTXT.className = (!this.isValidFor() ? 'INPUTERROR' : 'INPUTREQUIRED');
		oTXT.value = formatInteger(oTXT.value);
		oTXT.style.textAlign = 'right';
		return this.base.blur();
	}
}
ctlSelectRepeat.prototype.changeFor = function () {
	var oTXT = document.getElementById('intFor' + this.getID());
	this.iFor = oTXT ? StringToJSInteger(oTXT.value) : this.iFor;
}
ctlSelectRepeat.prototype.isValidFor = function () {
	var oTXT = document.getElementById('intFor' + this.getID());
	if (oTXT.value.length == 0) {
		oTXT.className = 'INPUTERROR';
		return false;
	}
	else if (!isValidInteger(oTXT.value)) {
		oTXT.className = 'INPUTERROR';
		return false;
	}
	else if (StringToJSInteger(oTXT.value) < 1 && this.iType > 0) {
		oTXT.className = 'INPUTERROR';
		return false;
	}
	else {
		oTXT.className = (this.isReadonly() ? 'INPUTREADONLY' : 'INPUTREQUIRED');
		return true;
	}
}
ctlSelectRepeat.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectRepeat.prototype.change = function () { return this.base.change(); }
ctlSelectRepeat.prototype.changeBy = function () {
	var oSEL = document.getElementById('selRepeatBy' + this.getID());
	this.iBy = oSEL.value;
	this.setDescription();
	return this.base.change();
}
ctlSelectRepeat.prototype.blur = function () { return this.base.blur(); }
ctlSelectRepeat.prototype.click = function () { return this.base.click(); }
ctlSelectRepeat.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectRepeat.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectRepeat.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectRepeat.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectRepeat.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectRepeat.prototype.clear = function () { return this.base.clear(); }
ctlSelectRepeat.prototype.show = function (bVal) {
	document.getElementById('div' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectRepeat.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectRepeat.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectRepeat.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectRepeat.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectScheduleDay
//********************************************************************************
function ctlSelectScheduleDay(sID, iDay, iStartDay, iNumDays, bReadonly, bVisible) {
	this.base		= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iDay		= iDay;
	this.iStartDay	= iStartDay;
	this.iNumDays	= iNumDays;
	zControls[zControls.length] = this;
}
ctlSelectScheduleDay.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectScheduleDay.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectScheduleDay.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iDay + "\">";
	var zDayNames = DayNames.split(sDelimiter);
	for (x = 1; x <= this.iNumDays; x++) {
		str += "<OPTION value=\"" + x + "\" " + (this.iDay == x ? " selected " : "") + ">" + zDayNames[(6 - Math.abs(1 - (7 - (((this.iStartDay+x)-2) % 7))))];
	}
	str += "</SELECT>";
	return str;
}
ctlSelectScheduleDay.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectScheduleDay.prototype.change = function () { return this.base.change(); }
ctlSelectScheduleDay.prototype.blur = function () { return this.base.blur(); }
ctlSelectScheduleDay.prototype.click = function () { return this.base.click(); }
ctlSelectScheduleDay.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectScheduleDay.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectScheduleDay.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectScheduleDay.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectScheduleDay.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectScheduleDay.prototype.clear = function () { return this.base.clear(); }
ctlSelectScheduleDay.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectScheduleDay.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectScheduleDay.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectScheduleDay.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectScheduleDay.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectRank
//********************************************************************************
function ctlSelectRank(sID, iRank, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.iRank	= iRank;
	zControls[zControls.length] = this;
}
ctlSelectRank.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectRank.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
// Inherited...
ctlSelectRank.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID() + " onchange=\"" + this.getID() + ".change()\" value=\"" + this.iRank + "\">";
	for (x = 1; x < 10; x++) {
		str += "<OPTION value=" + x + (this.iRank == x ? " selected " : "") + ">" + x;
	}
	str += "</SELECT>";
	return str;
}
ctlSelectRank.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTHIGHLIGHTERROR' : 'INPUTHIGHLIGHT');
	}
}
ctlSelectRank.prototype.change = function () { return this.base.change(); }
ctlSelectRank.prototype.blur = function () { return this.base.blur(); }
ctlSelectRank.prototype.click = function () { return this.base.click(); }
ctlSelectRank.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectRank.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectRank.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectRank.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectRank.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectRank.prototype.clear = function () { return this.base.clear(); }
ctlSelectRank.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectRank.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectRank.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectRank.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectRank.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectExpenseAccountType
//********************************************************************************
function ctlSelectExpenseAccountType(sID, sTypeName, lOID, bReadonly, bVisible) {
	this.base		= new ctlSelectCommon(sID, true, bReadonly, bVisible, lOID, sTypeName);
	zControls[zControls.length] = this;
}
ctlSelectExpenseAccountType.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectExpenseAccountType.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectExpenseAccountType.prototype.getName = function () { return this.base.getName(); }
ctlSelectExpenseAccountType.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectExpenseAccountType.prototype.toString = function () { return this.base.toString(); }
ctlSelectExpenseAccountType.prototype.focus = function () { return this.base.focus(); }
ctlSelectExpenseAccountType.prototype.blur = function () { return this.base.blur(); }
function ctlSelectExpenseAccountType_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectExpenseAccountType.prototype.click = function () {
	ShowPopUp('../choosers/chooseexpenseaccounttype.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID(),255,265, 'parent.ctlSelectExpenseAccountType_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectExpenseAccountType.prototype.change = function () { return this.base.change(); }
ctlSelectExpenseAccountType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectExpenseAccountType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectExpenseAccountType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectExpenseAccountType.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectExpenseAccountType.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectExpenseAccountType.prototype.clear = function () { return this.base.clear(); }
ctlSelectExpenseAccountType.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectExpenseAccountType.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectExpenseAccountType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectExpenseAccountType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectExpenseAccountType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectAccountType
//********************************************************************************
function ctlSelectAccountType(sID, sTypeName, lOID, bReadonly, bVisible) {
	this.base		= new ctlSelectCommon(sID, true, bReadonly, bVisible, lOID, sTypeName);
	zControls[zControls.length] = this;
}
ctlSelectAccountType.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectAccountType.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectAccountType.prototype.getName = function () { return this.base.getName(); }
ctlSelectAccountType.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectAccountType.prototype.toString = function () { return this.base.toString(); }
ctlSelectAccountType.prototype.focus = function () { return this.base.focus(); }
ctlSelectAccountType.prototype.blur = function () { return this.base.blur(); }
function ctlSelectAccountType_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectAccountType.prototype.click = function () {
	ShowPopUp('../choosers/chooseaccounttype.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID(),255,265, 'parent.ctlSelectAccountType_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectAccountType.prototype.change = function () { return this.base.change(); }
ctlSelectAccountType.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectAccountType.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectAccountType.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectAccountType.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectAccountType.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectAccountType.prototype.clear = function () { return this.base.clear(); }
ctlSelectAccountType.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectAccountType.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectAccountType.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectAccountType.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectAccountType.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectParentAccount
//********************************************************************************
function ctlSelectParentAccount(sID, sTypeName, lOID, lForOID, bReadonly, bVisible) {
	this.base		= new ctlSelectCommon(sID, false, bReadonly, bVisible, lOID, sTypeName);
	this.lForOID	= lForOID;
	zControls[zControls.length] = this;
}
ctlSelectParentAccount.prototype.getOID = function () { return this.base.getOID(); }
ctlSelectParentAccount.prototype.setOID = function (lNewOID) { return this.base.setOID(lNewOID); }
ctlSelectParentAccount.prototype.getName = function () { return this.base.getName(); }
ctlSelectParentAccount.prototype.setName = function (sNewName) {
	this.base.setName(sNewName);
	document.getElementById('txt' + this.getID()).value = this.getName();
}
ctlSelectParentAccount.prototype.toString = function () { return this.base.toString(); }
ctlSelectParentAccount.prototype.focus = function () { return this.base.focus(); }
ctlSelectParentAccount.prototype.blur = function () { return this.base.blur(); }
function ctlSelectParentAccount_clickback(sID) {
	var sChoice = popupReturnValue;
	if (sChoice != '') {
		var zChoice = sChoice.split(sDelimiter);
		var oCtl = eval(sID);
		oCtl.setOID(zChoice[0]);
		oCtl.setName(zChoice[1]);
	}
}
ctlSelectParentAccount.prototype.click = function () {
	ShowPopUp('../choosers/chooseparentaccount.jsp;jsessionid=' + sSessionID + '?OID=' + this.getOID() + '&FOROID=' + this.lForOID,255,265, 'parent.ctlSelectParentAccount_clickback("' + this.getID() + '")');
	this.base.click();
}
ctlSelectParentAccount.prototype.change = function () { return this.base.change(); }
ctlSelectParentAccount.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectParentAccount.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectParentAccount.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectParentAccount.prototype.isValid = function () { return this.base.isValid(); }
ctlSelectParentAccount.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectParentAccount.prototype.clear = function () { return this.base.clear(); }
ctlSelectParentAccount.prototype.show = function (bVal) { this.base.show(bVal); }
ctlSelectParentAccount.prototype.readonly = function (bVal) { this.base.readonly(bVal); }
ctlSelectParentAccount.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectParentAccount.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectParentAccount.prototype.getID = function () { return this.base.getID(); }

//********************************************************************************
// CONTROL: ctlSelectInvoiceFormat
//********************************************************************************
function ctlSelectInvoiceFormat(sID, lID, bReadonly, bVisible) {
	this.base	= new ctlCommon(sID, true, bReadonly, bVisible);
	this.lID	= lID;
	zControls[zControls.length] = this;
}
ctlSelectInvoiceFormat.prototype.getValue = function () {
	var oSEL = document.getElementById('sel' + this.getID());
	return oSEL.value;
}
ctlSelectInvoiceFormat.prototype.setValue = function (lValue) {
	var oSEL = document.getElementById('sel' + this.getID());
	for (var x = 0; x < oSEL.options.length; x++) {
		if (oSEL.options[x].value == lValue) {
			oSEL.selectedIndex = x;
			break;
		}
	}
}
ctlSelectInvoiceFormat.prototype.toString = function () {
	var str = this.base.toString();
	str += "<SELECT " + (this.isReadonly() == false ? "" : "disabled=true") + " id=sel" + this.getID()
			+ " onchange=\"" + this.getID() + ".change()\""
			+ " onfocus=\"" + this.getID() + ".isValid();\" "
			+ " onblur=\"" + this.getID() + ".blur();\">";
	str += getInvoiceFormatOptions(this.lID);
	str += "</SELECT>";
	return str;
}
ctlSelectInvoiceFormat.prototype.focus = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.focus();
	}
}
ctlSelectInvoiceFormat.prototype.blur = function () {
	if (!this.isReadonly()) {
		var oSEL = document.getElementById('sel' + this.getID());
		oSEL.className = (!this.isValid() ? 'INPUTERROR' : this.isRequired() ? 'INPUTREQUIRED' : '');
		return this.base.blur();
	}
}
ctlSelectInvoiceFormat.prototype.isValid = function () { return true; }
ctlSelectInvoiceFormat.prototype.change = function () { return this.base.change(); }
ctlSelectInvoiceFormat.prototype.click = function () { return this.base.click(); }
ctlSelectInvoiceFormat.prototype.isVisible = function () { return this.base.isVisible(); }
ctlSelectInvoiceFormat.prototype.isRequired = function () { return this.base.isRequired(); }
ctlSelectInvoiceFormat.prototype.isReadonly = function () { return this.base.isReadonly(); }
ctlSelectInvoiceFormat.prototype.isDirty = function () { return this.base.isDirty(); }
ctlSelectInvoiceFormat.prototype.clear = function () { return this.base.clear(); }
ctlSelectInvoiceFormat.prototype.show = function (bVal) {
	document.getElementById('sel' + this.getID()).style.display=(bVal?'block':'none');
	return this.base.show(bVal);
}
ctlSelectInvoiceFormat.prototype.readonly = function (bVal) {
	var oSEL = document.getElementById('sel' + this.getID());
	bVal ? oSEL.disabled=true : oSEL.removeAttribute('disabled');
	oSEL.className = (bVal ? 'INPUTREADONLY' : '');
	return this.base.readonly(bVal);
}
ctlSelectInvoiceFormat.prototype.required = function (bVal) { return this.base.required(bVal); }
ctlSelectInvoiceFormat.prototype.getToken = function () { return this.base.getToken(); }
ctlSelectInvoiceFormat.prototype.getID = function () { return this.base.getID(); }
