/**
*** Javascript Default Routines
*** - Created by Eric Patrick
*** - Last Update 02/02/99
*** Changed Sep 14th 2004.  SCR.  Added parameter to DrawSortBy Function
**/
var jsIE4 = (document.all);
var jsNN4 = (document.layers);
var jsVersion4 = (jsNN4 || jsIE4); 
var jsDateFormat = "MM/DD/YYYY";

var jsMainTitle = "";
var jsPageTitle = "";
var jsPageMessage = "Welcome to Aspen Workflow";
var jsPagePopup = "";
var jsButtonBar = "";
var jsbHelp = 0;
var jsbInsert = 1;
var jsbNote = 2;
var jsbDocument = 3;
var jsbSpreadsheet = 4;
var jsbAudit = 5;
var jsbUpdate = 6;
var jsbField = 7
var jsbWizard = 8;
var jsbCopy = 9;
var jsbAdmin = 10;
var jsbAccounting = 11;
var jsbFavorite = 12;
var jsbWebPage = 13;
var jsbInstruction = 14;
var jsbDesign = 15;
var jsbUpload = 16;
var jsbDownload = 17;
var jsbLookup = 18;
var jsbMultiple = 19;
var jsbCheckin = 20;
var jsbCheckout = 21;
var jsbFolder = 22;
var jsbFolderInsert = 23;

var buttonArray = new Array();
buttonArray[jsbHelp] = "help";
buttonArray[jsbInsert] = "insert";
buttonArray[jsbNote] = "note";
buttonArray[jsbDocument] = "document";
buttonArray[jsbSpreadsheet] = "spreadsheet";
buttonArray[jsbAudit] = "audit";
buttonArray[jsbUpdate] = "update";
buttonArray[jsbField] = "field";
buttonArray[jsbWizard] = "wizard";
buttonArray[jsbCopy] = "copy";
buttonArray[jsbAdmin] = "admin";
buttonArray[jsbAccounting] = "accounting";
buttonArray[jsbFavorite] = "favorite";
buttonArray[jsbWebPage] = "webPage";
buttonArray[jsbInstruction] = "instruction";
buttonArray[jsbDesign] = "design";
buttonArray[jsbUpload] = "upload";
buttonArray[jsbDownload] = "download";
buttonArray[jsbLookup] = "lookup";
buttonArray[jsbMultiple] = "multiple";
buttonArray[jsbCheckin] = "checkin";
buttonArray[jsbCheckout] = "checkout";
buttonArray[jsbFolder] = "folder";
buttonArray[jsbFolderInsert] = "folderInsert";

helpOn = new Image();
helpOn.src = "/common/images/buttons/helpOn.gif";
helpOff = new Image();
helpOff.src = "/common/images/buttons/helpOff.gif";

insertOn = new Image();
insertOn.src = "/common/images/buttons/insertOn.gif";
insertOff = new Image();
insertOff.src = "/common/images/buttons/insertOff.gif";

noteOn = new Image();
noteOn.src = "/common/images/buttons/noteOn.gif";
noteOff = new Image();
noteOff.src = "/common/images/buttons/noteOff.gif";

documentOn = new Image();
documentOn.src = "/common/images/buttons/documentOn.gif";
documentOff = new Image();
documentOff.src = "/common/images/buttons/documentOff.gif";

spreadsheetOn = new Image();
spreadsheetOn.src = "/common/images/buttons/spreadsheetOn.gif";
spreadsheetOff = new Image();
spreadsheetOff.src = "/common/images/buttons/spreadsheetOff.gif";

auditOn = new Image();
auditOn.src = "/common/images/buttons/auditOn.gif";
auditOff = new Image();
auditOff.src = "/common/images/buttons/auditOff.gif";

updateOn = new Image();
updateOn.src = "/common/images/buttons/updateOn.gif";
updateOff = new Image();
updateOff.src = "/common/images/buttons/updateOff.gif";

fieldOn = new Image();
fieldOn.src = "/common/images/buttons/fieldOn.gif";
fieldOff = new Image();
fieldOff.src = "/common/images/buttons/fieldOff.gif";

wizardOn = new Image();
wizardOn.src = "/common/images/buttons/wizardOn.gif";
wizardOff = new Image();
wizardOff.src = "/common/images/buttons/wizardOff.gif";

copyOn = new Image();
copyOn.src = "/common/images/buttons/copyOn.gif";
copyOff = new Image();
copyOff.src = "/common/images/buttons/copyOff.gif";

adminOn = new Image();
adminOn.src = "/common/images/buttons/adminOn.gif";
adminOff = new Image();
adminOff.src = "/common/images/buttons/adminOff.gif";

accountingOn = new Image();
accountingOn.src = "/common/images/buttons/accountingOn.gif";
accountingOff = new Image();
accountingOff.src = "/common/images/buttons/accountingOff.gif";

favoriteOn = new Image();
favoriteOn.src = "/common/images/buttons/favoriteOn.gif";
favoriteOff = new Image();
favoriteOff.src = "/common/images/buttons/favoriteOff.gif";

webPageOn = new Image();
webPageOn.src = "/common/images/buttons/webPageOn.gif";
webPageOff = new Image();
webPageOff.src = "/common/images/buttons/webPageOff.gif";

instructionOn = new Image();
instructionOn.src = "/common/images/buttons/instructionOn.gif";
instructionOff = new Image();
instructionOff.src = "/common/images/buttons/instructionOff.gif";

designOn = new Image();
designOn.src = "/common/images/buttons/designOn.gif";
designOff = new Image();
designOff.src = "/common/images/buttons/designOff.gif";

uploadOn = new Image();
uploadOn.src = "/common/images/buttons/uploadOn.gif";
uploadOff = new Image();
uploadOff.src = "/common/images/buttons/uploadOff.gif";

downloadOn = new Image();
downloadOn.src = "/common/images/buttons/downloadOn.gif";
downloadOff = new Image();
downloadOff.src = "/common/images/buttons/downloadOff.gif";

lookupOn = new Image();
lookupOn.src = "/common/images/buttons/lookupOn.gif";
lookupOff = new Image();
lookupOff.src = "/common/images/buttons/lookupOff.gif";

multipleOn = new Image();
multipleOn.src = "/common/images/buttons/multipleOn.gif";
multipleOff = new Image();
multipleOff.src = "/common/images/buttons/multipleOff.gif";

checkinOn = new Image();
checkinOn.src = "/common/images/buttons/checkinOn.gif";
checkinOff = new Image();
checkinOff.src = "/common/images/buttons/checkinOff.gif";

checkoutOn = new Image();
checkoutOn.src = "/common/images/buttons/checkoutOn.gif";
checkoutOff = new Image();
checkoutOff.src = "/common/images/buttons/checkoutOff.gif";

folderOn = new Image();
folderOn.src = "/common/images/buttons/folderOn.gif";
folderOff = new Image();
folderOff.src = "/common/images/buttons/folderOff.gif";

folderInsertOn = new Image();
folderInsertOn.src = "/common/images/buttons/folderInsertOn.gif";
folderInsertOff = new Image();
folderInsertOff.src = "/common/images/buttons/folderInsertOff.gif";

function setPageTitle() {
	theElement = arguments[0];
	if (arguments.length >= 2) {
		theItem = "<a href=" + arguments[1] + ">" + theElement + "</a>";
	} else {
		theItem = theElement;
	}
	if (jsPageTitle > "") {
		jsPageTitle += " > " + theItem;
		jsMainTitle += " > " + theElement;
	} else {
		jsPageTitle = theItem;
		jsMainTitle = theElement
	}
	document.title = jsMainTitle;
}

function drawHome() {
	document.write("<th rowspan=3><a href=\"/login.asp?logout=true&ReferringPage=default.asp\" target=_top><img border=0 src=/common/images/buttons/leaf.gif align=middle alt=\"Logout\"></a>&nbsp;<br></th>");
}

function drawMainTitle() {
	document.write("<td valign=top align=left nowrap width=0%><img border=0 src=/common/images/aspenHorizontal.gif></td>");
}

function getCookieValue(theName){
	var theCookie = document.cookie.split("; ");
	for (var i=0; i < theCookie.length; i++){
		var theCrumb = theCookie[i].split("=");
		if (theName == theCrumb[0]) return(unescape(theCrumb[1]));
	}
	return(null);
}

function drawMainMenu(theMenu, theLabel) {
	var theProfileMenu = getCookie("ProfileMenu");
	if (theProfileMenu != null) theProfileMenu = getSubstituteString(theProfileMenu, "+", " ");
	else theProfileMenu = "";
	if (theLabel == null) theLabel = "Matter";
	document.write("<td valign=top align=right nowrap class=menu width=100%>");
	if (theMenu == "Training") {
	} else if (theProfileMenu != null && theProfileMenu.length > 0){
		document.write(theProfileMenu);
	} else if (theMenu == "login") {
		document.write("<a href=/login.asp>Login</a>");
	} else if (theMenu == "Design") {
		document.write("<a href=/matter/matterSearch.asp>" + theLabel + "</a>");
		document.write(" | <a href=/manage/myWorkList.asp>Manage</a>");
		document.write(" | <a href=/lookup/index.asp>Lookup</a>");
		document.write(" | <a href=/report/index.asp>Reports</a>");
		document.write(" | <a href=/admin/index.asp>Design</a>");
	} else {
		document.write("<a href=/matter/matterSearch.asp>" + theLabel + "</a>");
		document.write(" | <a href=/manage/myWorkList.asp>Manage</a>");
		document.write(" | <a href=/lookup/index.asp>Lookup</a>");
		document.write(" | <a href=/report/index.asp>Reports</a>");
	}
	document.write("&nbsp;</td>");
}

function drawPageTitle() {
	document.write("<td>&nbsp;" + jsPageTitle + "</td>");	
}

var jsPageMenu = new Array;
var jsPageMenuCount = 0;

function addPageMenu(theName, theURL, isSelected) {
	jsPageMenu[jsPageMenuCount] = new Array;
	jsPageMenu[jsPageMenuCount][0] = theName;
	jsPageMenu[jsPageMenuCount][1] = theURL;
	if (isSelected) jsPageMenu[jsPageMenuCount++][2] = " selected";
	else jsPageMenu[jsPageMenuCount++][2] = "";
}

function drawPageMenu() {
	document.write("<td align=right>");
	if (jsPageMenuCount > 0) {
		document.write("<select name=PageMenu size=1 onChange=\"document.location=this[this.selectedIndex].value;\">");
		for (i=0; i<jsPageMenuCount; i++) {
			document.write("<option value=\"" + jsPageMenu[i][1] + "\"" + jsPageMenu[i][2] + ">" + jsPageMenu[i][0]);
		}
		document.write("</select>");
		//document.write("<input type=image name=go src=/common/images/bullets/go.gif align=absbottom border=0>");
	}
	document.write("</td>");	
}

function changeImages() { 
	if (document.images) { 
		for (var i=0; i<changeImages.arguments.length; i+=2) { 
			document[changeImages.arguments[i]].src = eval(changeImages.arguments[i+1] + ".src"); 
		} 
	} 
} 

function addButton(theType, theURL, theName, theTitle, isPopup) {
	theText = "<a href=" + theURL;
	theText += " onMouseOver=\"changeImages('" + theName + "', '" + buttonArray[theType] + "On');\"";
	theText += " onMouseOut=\"changeImages('" + theName + "', '" + buttonArray[theType] + "Off');\"";
	if (isPopup) theText += " onClick=\"return openPopup(this);\">";
	else theText += ">";
	theText += "<img border=0 src=" + eval(buttonArray[theType] + "Off.src") + " name=" + theName;
	theText += " alt=\"" + theTitle + "\" width=23 height=22></a>";
	jsButtonBar += theText;
}

function drawToolBar() {
	document.write("<td valign=top class=menuBar width=75%>" + "&nbsp;" + jsPageMessage + "</td>");
	document.write("<td valign=top align=right class=menuBar width=25%>" + jsButtonBar + "</td>");
}

function drawHeader(theMenu, theLabel) {
	document.write("<form><table border=0 width=100% cellspacing=0 cellpadding=0 class=menu>");
	document.write("<tr>");
	drawHome();
	drawMainTitle();
	drawMainMenu(theMenu, theLabel);
	document.write("</tr><tr>");
	document.write("<td colspan=2 class=menu>");
	document.write("<table border=0 width=100% cellspacing=0 cellpadding=0 class=menu>");
	document.write("<tr>");
	drawPageTitle();
	drawPageMenu();
	document.write("</tr>");
	document.write("</table>");
	document.write("</tr><tr>");
	drawToolBar();
	document.write("</tr>");
	document.write("</table></form>");
}

function drawFooter() {
	document.write("<table border=0 width=100% cellspacing=0 cellpadding=2 class=footer>");
	document.write("<tr>");
	document.write("<td valign=top class=footer>&nbsp;Connecting Business With Technology</td>");
	document.write("<td valign=top align=right class=footer><a href=\"/login.asp?Logout=1\" target=\"_top\">Logout</a>&nbsp;</td>");
        document.write("</tr>");
        document.write("</table>");
	if ((jsPagePopup != null) && (jsPagePopup > "")) alert(jsPagePopup);
}


jsDisplayList = new Array();
jsDisplayList[0] = 5;
jsDisplayList[1] = 25;
jsDisplayList[2] = 50;
jsDisplayList[3] = 100;
jsDisplayList[4] = 250;
jsDisplayList[5] = 500;
jsDisplayList[6] = 9999999;

function drawDisplay(theSize) {
	document.write("<select name=DisplaySize size=1>");
	for (i=0; i<=5; i++) {
		if (theSize == jsDisplayList[i]) isSelected = " selected";
		else isSelected = "";
		document.write("<option " + isSelected + ">" + jsDisplayList[i]);
	}
	if (theSize == 9999999) document.write("<option value=9999999 selected>All");
	else document.write("<option value=9999999>All");
	document.write("</select>");
}

jsSortByList = new Array();
jsSortByList[0] = "Date";
jsSortByList[1] = "Team";
jsSortByList[2] = "Person";
jsSortByList[3] = "Client";
jsSortByList[4] = "Vendor";
jsSortByList[5] = "Priority";
jsSortByList[6] = "Status";
jsSortByList[7] = "MatterStatus";
jsSortByList[8] = "MatterProcessStatus";
jsSortByList[9] = "MatterContact";


function drawSortBy(theSortBy,theLabel) {
	if (theLabel == null)
		theLabel = "Matter";
	document.write("<select name=SortBy size=1>");
	jsSortByList[10] = theLabel;
	for (i=0; i<jsSortByList.length; i++) {
		if (theSortBy == jsSortByList[i]) isSelected = " selected";
		else isSelected = "";
		document.write("<option " + isSelected + ">" + jsSortByList[i]);
	}
	document.write("</select>");
}

/**
*** Javascript Default Routines
*** - Created by Eric Patrick
*** - Last Update 02/02/99
**/
var jsIE4 = (document.all);
var jsNN4 = (document.layers);
var jsVersion4 = (jsNN4 || jsIE4); 
var myWorkURL = "/manage/personFrame.asp?ReferringPage=personSearch.asp";

// Javascript error trapping
function trapError(theMessage) {
	alert(theMessage);
}

// Set the default value of a drop-down option list
function defaultOption(theField, theValue) {
	if (theField.options) for (i=0; i<theField.options.length; i++) {
		if (theField.options[i].value == theValue) {
			theField.options[i].selected = true; 
			break;
		}
	} else trapError(theField.type + " is not a select field.");
}
// Set the default value of a drop-down option list based on text values
function defaultOptionText(theField, theValue) {
	if (theField.options) for (i=0; i<theField.options.length; i++) {
		if (theField.options[i].text == theValue) {
			theField.options[i].selected = true;
			break;
		}
	} else trapError(theField.type + " is not a select field.");
}
// Set the default value of a check box
function defaultCheck(theField, theValue) {
	if (theValue > "") theField.checked = true;
	else theField.checked = false;
}
// Set the default value of a series of date fields
function defaultDate(theMonth, theDay, theYear, theValue) {
	theDate = new Date(theValue);
	defaultOption(theMonth, theDate.getMonth() + 1);
	defaultOption(theDay, theDate.getDate());
	defaultOption(theYear, 1900 + theDate.getYear());
}
// Set the default value of a text field 
function defaultText(theField, theValue) {
	theField.value = theValue;
}
// Get a form element based on a name
function getFormElement(theForm, theName) {
	for (i=0; i<theForm.elements.length; i++) {
		if (theForm.elements[i].name == theName) return theForm.elements[i];
	}
	return null;
}
// Set default date range
function setDateRange(theForm, theDays) {
	with (theForm) {
		jsBegin = new Date();
		jsEnd = new Date();
		jsEnd.setDate(jsEnd.getDate() + theDays);
		if (theDays < 0) {
			BeginDate.value = getDateString(jsEnd);
			EndDate.value = getDateString(jsBegin);
		} else {
			BeginDate.value = getDateString(jsBegin);
			EndDate.value = getDateString(jsEnd);
		}
		submit();
	}
}
// Set overdue date range
function setDateOverdue(theForm) {
	jsBeginDate = new Date("1/1/1990")
	jsEndDate = new Date()
	with (theForm) {
		BeginDate.value = getDateString(jsBeginDate);
		EndDate.value = getDateString(jsEndDate);
	}
}

function setDateDay(theForm) {
	theDate = new Date();
	with (theForm) {
		BeginDate.value = getDateString(theDate);
		EndDate.value = getDateString(theDate);
	}	
}

function setDateWeek(theForm) {
	theBeginDate = new Date();	
	theBeginDate.setDate(theBeginDate.getDate() - theBeginDate.getDay());
	theEndDate = new Date(theBeginDate);
	theEndDate.setDate(theEndDate.getDate()+6);
	with (theForm) {
		BeginDate.value = getDateString(theBeginDate);
		EndDate.value = getDateString(theEndDate);
	}	
}

function setDateMonth(theForm) {
	theBeginDate = new Date();
	theBeginDate.setDate(1);
	theEndDate = new Date();
	theEndDate.setMonth(theEndDate.getMonth()+1);
	theEndDate.setDate(0);
	with (theForm) {
		BeginDate.value = getDateString(theBeginDate);
		EndDate.value = getDateString(theEndDate);
	}	
}

function setDateLastWeek(theForm) {
	theEndDate = new Date();	
	theBeginDate = new Date(theEndDate);
	theBeginDate.setDate(theBeginDate.getDate()-6);
	with (theForm) {
		BeginDate.value = getDateString(theBeginDate);
		EndDate.value = getDateString(theEndDate);
	}	
}

function setDateLastMonth(theForm) {
	theEndDate = new Date();
	theBeginDate = new Date();
	theBeginDate.setMonth(theBeginDate.getMonth()-1);
	with (theForm) {
		BeginDate.value = getDateString(theBeginDate);
		EndDate.value = getDateString(theEndDate);
	}	
}

// Window status message
function setStatus(theMessage) {
	window.status=theMessage;
	return true;
}
// Popup window
function setPopup(theURL) {
	jsWindow = window.open(theURL, "popupWindow", "toolbar=no,menubar=yes,scrollbars=yes,resizable=yes,width=600,height=500");
	if (jsWindow != null) {
		if (jsWindow.opener == null) jsWindow.opener = self;
	}
	return(jsWindow);
}
// Open popup window based on a link
function openPopup(theLink) {
	setPopup(theLink.href);
	return false;
}
function setWindow(theURL) {
	jsWindow = window.open(escape(theURL), "popupWindow", "menubar=yes,toolbar=no,scrollbars=yes,resizable=yes,width=600,height=500");
	if (jsWindow != null) {
		if (jsWindow.opener == null) jsWindow.opener = self;
	}
}
function setDialog(theURL) {
	alert(theURL);
	jsWindow = window.open(theURL, "dialogWindow", "toolbar=no,scrollbars=no,resizable=no,width=250,height=150");
	if (jsWindow != null) {
		if (jsWindow.opener == null) jsWindow.opener = self;
	}
}
// Toggle checkboxes in a list
checked = false;
function itemSelect(theForm, theName) {
	checked = !checked;
	with (theForm) for (i=0; i<elements.length; i++) {
		if (elements[i].name == theName) elements[i].checked = checked;
	}
}
function itemChecked(theForm, theName) {
	with (theForm) for (i=0; i<elements.length; i++) {
		if (elements[i].name == theName) {
			if (elements[i].checked) return(true);
		}
	}
	return(false);
}
/**
*** Javascript Form Field Validation Routines
*** - Created by Eric Patrick
*** - Last Update 11/8/97
**/
var jsIE4 = (document.all);
var jsNN4 = (document.layers);
var jsVersion4 = (jsNN4 || jsIE4); 

// Declare field validation strings
var jsUpperOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var jsLowerOK = "abcdefghijklmnopqrstuvwxyz";
var jsLetterOK = jsUpperOK + jsLowerOK;
var jsNumberOK =	"0123456789-.";
var jsIntegerOK = "0123456789-";
var jsMoneyOK = "$0123456789,.-()";
var jsDateOK = "0123456789/-";
var jsBracketsOK = "()[]{}_";
var jsWhiteSpaceOK = " \t\r\n\f";
var jsPhoneAreaCode = "415"
var jsPhoneDelimiter = "."
var jsPhoneRE = /^([0-9]{3}\.){2}[0-9]{4}$/;
var jsSSNRE = /^[0-9]{3}\-[0-9]{2}\-[0-9]{4}$/;
var jsEmailRE = /^\w+((\.|\-)\w+)*@\w+(\-\w+)*(\.\w+)+$/;
var jsTimeRE = /^[0-9]{2}:[0-9]{2}$/;
var jsMsPerDay = 1000*60*60*24;
// Date differences
function getDateDiff(theStart, theEnd, thePart) {
	if (thePart.toLowerCase() == 'd') return Math.round((theEnd.getTime() - theStart.getTime()) / jsMsPerDay);
	if (thePart.toLowerCase() == 'm') return (theEnd.getFullYear() - theStart.getFullYear())*12 + (theEnd.getMonth() - theStart.getMonth());
	if (thePart.toLowerCase() == 'y') return (theEnd.getFullYear() - theStart.getFullYear());
}
// Character Date
function getDateString(theDate, theFormat) {
	if (theDate.getMonth() < 9) theMonth = "0" + (theDate.getMonth() + 1);
	else theMonth = (theDate.getMonth() + 1);
	if (theDate.getDate() < 10) theDay = "0" + theDate.getDate();
	else theDay = theDate.getDate();
	theYear = theDate.getFullYear();
	theFormat = jsDateFormat;
	if (theFormat == "DD/MM/YYYY") theString = theDay + "/" + theMonth + "/" + theYear;
	else theString = theMonth + "/" + theDay + "/" + theYear;
	return theString;
}


// Character Time
function getTimeString(theTime) {
	theHours = theTime.getHours();
	theMinutes = theTime.getMinutes();
	theTime = theHours +":"+ theMinutes;
	return theTime;
}

// Date value based on DateFormat system default
function getDateValue(theDate, theFormat) {
	theResult = new String(theDate);
	if (theFormat == null) theFormat = jsDateFormat;
	if (theFormat == "DD/MM/YYYY") theDate = theResult.substring(3,5) + "/" + theResult.substring(0,2) + "/" + theResult.substring(6,10);
	else theDate = theResult;
	return(new Date(theDate));
}

// Split words 
function getSplitString(theString) {
	splitCaps = false;
	theResult = "";
	for (j=0; j<theString.length; j++) {
		if (theString.substr(j, 1) <= 'Z') {
			if (splitCaps) theResult = theResult + " " + theString.substr(j, 1);
			else theResult = theResult + theString.substr(j, 1);
			splitCaps = false;
		} else {
			theResult = theResult + theString.substr(j, 1);
			splitCaps = true;
		}
	}
	return theResult;
}
// Strip String
function getStripString(theString, theContent) {
	theReplacement = "";
	for (i=0; i<theString.length; i++) {
		ch = theString.charAt(i);
		validChar = true;
		for (j=0; j<theContent.length; j++) {
			if (ch == theContent.charAt(j)) { 
				validChar = false;
				break; 
			}
		}
		if (validChar) theReplacement += ch;
	}
	return theReplacement;
}
// Strip Field
function getStripField(theField, theContent) {
	theField.value = getStripString(theField.value, theContent)
	return theField.value;
}
// Substitute String
function getSubstituteString(theString, theChar, theSubstitute) {
	theReplacement = "";
	for (i=0; i<theString.length; i++) {
		if (theString.charAt(i) == theChar) theReplacement = theReplacement += theSubstitute;
		else theReplacement = theReplacement += theString.charAt(i);
	}
	return theReplacement;
}
// Substitute Field
function getSubstituteField(theField, theChar, theSubstitute) {
	theField.value = getSubstituteString(theField.value, theChar, theSubstitute)
	return theField.value;
}
// Validate Content
function isContent(theField, tContent) {
	tFieldValue = theField.value;
	for (i=0; i < tFieldValue.length; i++) {
		ch = tFieldValue.charAt(i);
		for (j=0; j<tContent.length; j++) 
			if (ch == tContent.charAt(j)) break;		
		if (j == tContent.length) {
			theField.focus();
			return false;
		}
	}
	return true;
}
// Validate Percent
function isPercent(theField) {
	if (!isContent(theField, jsNumberOK)) {
		alert("You may only use the following characters for money: " + jsNumberOK);
		theField.value = '';
		return false;
	} else return true;
}
// Validate Number
function isNumeric(theField) {
	if (!isContent(theField, jsNumberOK)) {
		alert("You may only use the following characters for numbers: " + jsNumberOK);
		theField.value = '';
		return false;
	} else return true;
}

// Validate Integer
function isInteger(theField) {
	if (!isContent(theField, jsIntegerOK)) {
		alert("You may only use the following characters for numbers: " + jsIntegerOK);
		theField.value = '';
		return false;
	} else return true;
}

// Validate Money fields
function isMoney(theField) {
	if (theField.value > '' && theField.value != ".") {
		if (!isContent(theField, jsMoneyOK)) {
			alert("You may only use the following characters for money: " + jsMoneyOK);
			theField.value = '';
			return false;
		}
		jsMoney = new Number(getStripString(theField.value, "$,"));
		jsString = '' + Math.round(jsMoney*100)/100;
		for (i=0; i<jsString.length; i++) {
			if (jsString.charAt(i) == '.') break;
		}
		if (i == jsString.length) theField.value = jsString + ".00";
		else if (i == (jsString.length-1)) theField.value = jsString + "00";
		else if (i == (jsString.length-2)) theField.value = jsString + "0";
		else theField.value = jsString;
	} else if(theField.value == "."){
		theField.value = "0.00";
	}
	return theField.value;
}
// Get File Field
function getFile(theField, theMatterID, theMatterProcessID, theMatterTaskID) {
	remote = window.open("/matter/uploadWizardStep1.asp", "UploadWizard", "toolbar=no,scrollbars=no,resizable=yes,width=450,height=250");
	if (remote != null) {
		if (remote.opener == null) remote.opener = self;
		remote.opener.fileField = theField;
	}
	
}
// Date Selection Window
function getDate(theField) {
	remote = window.open("/help/calendarFrame.html", "CalendarWindow", "toolbar=no,scrollbars=no,resizable=yes,width=250,height=200");
	if (remote != null) {
		if (remote.opener == null) remote.opener = self;
		if (remote.dateField == null) remote.dateField = theField;
	}
}
// Validate Date field
function isDate(theField, theFormat) {
	var theDate;
	var theCentury = new Date("1/1/1900");
	theFormat = jsDateFormat;
	if (theField.value != "") {
		if (theField.value == ".") {
			theDate = new Date();
		} else if (theField.value == "?") {
			getDate(theField);
			theField.value = "";
			theField.focus();
			return false;
		} else if ((theField.value.length == 6) && (theField.value.indexOf("/") == -1) && (theField.value.indexOf("-") == -1)) {
			theString = new String(theField.value);
			if (theFormat == "DD/MM/YYYY") {
				theDay = theString.substring(2, 4);
				theMonth = theString.substring(0, 2);
				theYear = new Number(theString.substring(4, 6));
			} else {
				theDay = theString.substring(0, 2);
				theMonth = theString.substring(2, 4);
				theYear = new Number(theString.substring(4, 6));
			}
			if (theYear <= 50) theYear += 2000;
			theDate = new Date(theDay + '/' + theMonth + '/' + theYear);
		} else if ( (theField.value == "2/29/00") || (theField.value == "02/29/00") || (theField.value == "022900") ) {
			theDate = new Date("02/29/2000");
		} else if ( (theField.value == "29/2/00") || (theField.value == "29/02/00") || (theField.value == "290200") ) {
			theDate = new Date("02/29/2000");
		} else {
			theString = getSubstituteString(theField.value, "-", "/")
			if (theFormat == "DD/MM/YYYY") {
				theDay = theString.substring(0, theString.indexOf("/"));
				theString = theString.substring(theString.indexOf("/") + 1, theString.length);
				theMonth = theString.substring(0, theString.indexOf("/"));
			} else {
				theMonth = theString.substring(0, theString.indexOf("/"));
				theString = theString.substring(theString.indexOf("/") + 1, theString.length);
				theDay = theString.substring(0, theString.indexOf("/"));
			}
			theYear = new Number(theString.substring(theString.indexOf("/") + 1, theString.length));
			if (theYear <= 50) theYear += 2000;
			theDate = new Date(theMonth + "/" + theDay + "/" + theYear);
		}
		if ( isNaN(theDate.getMonth()) || (theDate.getTime() < theCentury.getTime()) ) {
			alert("This is an invalid date (" + theField.value + ").");
			theField.value = "";
			theField.focus();
			return false;
		} else {
			theField.value = getDateString(theDate, theFormat);
		}
	}
	return theField;
}
// Validate time fields
function isTime(theField) {
	var theTime = theField.value;
	var theDateTime = new Date("1/1/2000 " + theTime);
	if (isNaN(theDateTime)) {
		alert("This is not a valid time.");
		theField.value = "";
		theField.focus();
		return false;
	} else return true;
}
// Validate DateTime fields
function isDateTime(theField){
	var theTime = new String("");
	var theFormat = jsDateFormat;
	var theCentury = new Date("1/1/1900");
	
	if(theField.value != ""){
		if (theField.value == "."){
			var theDate = new Date();
		}
		else if (theField.value == "?"){
			getDate(theField);
			theField.value = "";
			theField.focus();
			return false;
		}
		else if ((theField.value.length == 6) && (theField.value.indexOf("/") == -1) && (theField.value.indexOf("-") == -1)) {
			theString = new String(theField.value);
			if (theFormat == "DD/MM/YYYY") {
				theDay = theString.substring(2, 4);
				theMonth = theString.substring(0, 2);
				theYear = new Number(theString.substring(4, 6));
			} else {
				theDay = theString.substring(0, 2);
				theMonth = theString.substring(2, 4);
				theYear = new Number(theString.substring(4, 6));
			}
			if (theYear <= 50) theYear += 2000;
			theDate = new Date(theDay + '/' + theMonth + '/' + theYear);
		}
		else {
			theString = getSubstituteString(theField.value, "-", "/")
			if (theFormat == "DD/MM/YYYY") {
				theDay = theString.substring(0, theString.indexOf("/"));
				theString = theString.substring(theString.indexOf("/") + 1, theString.length);
				theMonth = theString.substring(0, theString.indexOf("/"));
			} else {
				theMonth = theString.substring(0, theString.indexOf("/"));
				theString = theString.substring(theString.indexOf("/") + 1, theString.length);
				theDay = theString.substring(0, theString.indexOf("/"));
			}
			if (theField.value.length > 10){
				theTime = new String(theField.value.substring(10, theField.value.length-1));
				theYear = new Number(theString.substring(theString.indexOf("/") + 1, theString.indexOf(" ")));
			}
			else{
				theYear = new Number(theString.substring(theString.indexOf("/") + 1, theString.length));
			}
			if (theYear <= 50) theYear += 2000;
			if (theField.value.length > 10) theTime = new String(theField.value.substring(10, theField.value.length));
			theDate = new Date(theMonth + "/" + theDay + "/" + theYear + theTime);
		}
		if ( isNaN(theDate.getMonth()) || (theDate.getTime() < theCentury.getTime()) ) {
			alert("This is an invalid date (" + theField.value + ").");
			theField.value = "";
			theField.focus();
			return false;
		} else {
			theField.value = getDateString(theDate, theFormat) + " " + getTimeString(theDate);
		}
	}
	return theField;
}
// Validate email fields
function isEmail(theField) {
	if ((theField.value > "") && (!jsEmailRE.test(theField.value))) {
		alert("This is not a valid email address (" + theField.value + ")");
		theField.value = "";
		theField.focus();
		return false;
	} else return theField;
}
// Validate US telephone numbers
function isPhone(theField) {
	return(true);
	theNumber = getStripString(theField.value, "()-");
	if (theNumber.length < 8) theNumber = theNumber.substr(0, 3) + jsPhoneDelimiter + theNumber.substr(3, 4);
	if (theNumber.length < 9) theNumber = jsPhoneAreaCode + jsPhoneDelimiter + theNumber;
	if (theNumber.length < 11) theNumber = theNumber.substr(0, 3) + jsPhoneDelimiter + theNumber.substr(3, 3) + jsPhoneDelimiter + theNumber.substr(6,4);
	if ((theNumber.length < 12) && (theNumber.substr(3, 1) == jsPhoneDelimiter)) theNumber = theNumber.substr(0, 7) + jsPhoneDelimiter + theNumber.substr(7, 4);
	if ((theNumber.length < 12) && (theNumber.substr(6, 1) == jsPhoneDelimiter)) theNumber = theNumber.substr(0, 3) + jsPhoneDelimiter + theNumber.substr(3, 8);
	if ((theNumber > "") && (!jsPhoneRE.test(theNumber))) {
		alert("This is not a valid US telephone number.");
		theField.focus();
		return false;
	} else return (theField.value = theNumber);
}
// Validate social security numbers
function isSSN(theField) {
	theNumber = theField.value;
	if (theNumber.length < 10) theNumber = theNumber.substr(0,3) + "-" + theNumber.substr(3,2) + "-" + theNumber.substr(5,4)
	if ((theNumber.length < 11) && (theNumber.substr(3, 1) == "-")) theNumber = theNumber.substr(0, 6) + "-" + theNumber.substr(6, 4);
	if ((theNumber.length < 11) && (theNumber.substr(5, 1) == "-")) theNumber = theNumber.substr(0, 3) + "-" + theNumber.substr(3, 7);
	if ((theNumber > "") && (!jsSSNRE.test(theNumber))) {
		alert("This is not a valid social security number.");
		theField.focus();
		return false;
	} else return (theField.value = theNumber);
}
// Security role 
function isRole(theRole) {
	var i
	for (i=0; i<jsSecurityList.length; i++)	{
		if (jsSecurityList[i] == theRole) return true;
	}
	return false;
}
// Field Visibility
function isHidden(theField) {
	if (jsIE4) {
		theName = theField.name;
		theValue = eval("FieldValue" + theName);
		if (theValue.style.visibility == "hidden") {
			return true;
		} else {
			return false;
		}
	} else return false;	
}
// Hide Field
function hideField(theField) {
	if ((jsIE4) && (!isHidden(theField))) {
		theName = theField.name;
		theLabel = eval("FieldLabel" + theName);
		theValue = eval("FieldValue" + theName);
		if (theLabel != null) {
			theLabel.style.visibility = "hidden";
			theLabel.oldHeight = theLabel.style.height;
			theLabel.style.height = 0;
		}
		if (theValue != null) {
			theValue.style.visibility = "hidden";
			theValue.oldHeight = theValue.style.height;
			theValue.style.height = 0;
		}
	}
}
// Show Field
function showField(theField) {
	if ((jsIE4) && (isHidden(theField))) {
		theName = theField.name;
		theLabel = eval("FieldLabel" + theName);
		theValue = eval("FieldValue" + theName);
		if (theLabel != null) {
			theLabel.style.height = theLabel.oldHeight;
			theLabel.style.visibility = "visible";
		}
		if (theValue != null) {
			theValue.style.height = theValue.oldHeight;
			theValue.style.visibility = "visible";
		}
	}
}
// Form cancel
function cancelForm(theForm) {
	if (confirm("Are you sure you wish to cancel?")) {
		document.location = theForm.ReferringPage.value;
	}
}

// ***
// ***	Calendar functions
// ***

maxDayIndex = new Array (31,28,31,30,31,30,31,31,30,31,30,31);
monthIndex = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

function monthOption(theMonth, theDate) {
	if (theMonth != theDate.getMonth()) return "<option value=" + theMonth + ">" + monthIndex[theMonth] + "</option>";
	else return "<option value=" + theMonth + " selected>" + monthIndex[theMonth] + "</option>";
}
function yearOption(theYear, defaultYear) {
	if (theYear != defaultYear) return "<option value=" + theYear + ">" + theYear + "</option>";
	else return "<option value=" + theYear + " selected>" + theYear + "</option>";
}
function displayDay(theDay) {
	if (theDay == 0) return "<td style=dull>&nbsp;</td>";
	else return "<td align=right valign=top><a href='javascript:selectDate(" + theDay + ");'>" + theDay + "</a></td>";
}
function displayMonth(theDate) {
	theDate.setDate(1);
	theYear = theDate.getFullYear();
	if (theDate.getFullYear() < 1000) theYear += 1900;
	if ( ( ((theYear%4)==0) && ((theYear%100)!=0) ) || ((theYear%400)==0)) maxDayIndex[1] = 29;
	else maxDayIndex[1] = 28;

	document.write("<table border=1 cellspacing=1>");
	document.write("<tr><td colspan=7 align=center bgcolor=#808080 nowrap>");
	document.write("  <span class='footer'><input type=image src=/common/images/bullets/left.gif name='Back' onClick='goBack();'><select name='Month' size='1' onchange='top.goMonth(this);'>");
	for (i=0; i<=11; i++) document.write(monthOption(i, theDate));
	document.write("  </select><select name='Year' size='1' onchange='top.goYear(this);'>");
	for (i=1971; i<=2019; i++) document.write(yearOption(i, theYear));
	document.write("  </select><input type=image src=/common/images/bullets/right.gif name='Next' onClick='goNext();'></span>");
	document.write("</td></tr>");
	document.write("<tr align=center nowrap><th>S</th><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th></tr>");

	var theDay=theDate.getDay();
	document.write("<tr>\n");
	for (i=0; i<theDay; i++) document.write(displayDay(0));
	for (i=1; i<=maxDayIndex[theDate.getMonth()]; i++) {
		if (theDay++ == 7) {
			document.write("</tr><tr>\n");
			theDay=1;
		}	
		document.write(displayDay(i));
	}
	for (i=theDay; i<7; i++) document.write(displayDay(0));
	document.write("</tr></table>");
}

function goBack() {
	currentDate.setMonth(currentDate.getMonth() - 1);
	displayMonth(currentDate);
}

function goNext() {
	currentDate.setMonth(currentDate.getMonth() + 1);
	displayMonth(currentDate);
}

function goMonth(theMonth) {
	currentDate.setMonth(theMonth.options[theMonth.options.selectedIndex].value);
	displayMonth(currentDate);
}

function goYear(theYear) {
	currentDate.setYear(theYear.options[theYear.options.selectedIndex].value);
	displayMonth(currentDate);
}

currentDate = new Date();

function setWeek(theForm, theDifference) {
	with (theForm) {
		theBeginDate = new Date(BeginDate.value);
		theEndDate = new Date(EndDate.value);	
		theBeginDate.setDate(theBeginDate.getDate() + (7*theDifference));
		theEndDate.setDate(theEndDate.getDate() + (7*theDifference));
		BeginDate.value = getDateString(theBeginDate);
		EndDate.value = getDateString(theEndDate);
	}	
}

/**
*** Javascript Data Retrieval Routines
*** - Created by Eric Patrick
*** - Last Update 02/03/99
*** - Updated by Gideon de Swardt
***		Removed the iFrame and replace it with XMLHTTP Technology
**/
var jsIE4 = (document.all);
var jsNN4 = (document.layers);
var jsVersion4 = (jsNN4 || jsIE4); 
var jsDataBusy;

// Javascript error trapping
function trapError(theMessage) {
	alert(theMessage);
}

// Dynamic data rewrites
function sqlFormObject(tForm) {
	this.theForm = tForm;
	this.theSQL = new Object;
}
// Retrieve a single row from a database
function getObject(theSQL, theObject, theForm) {
	//get Object Data
	try {
		var xmlData = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
	}
	catch(e){
		var xmlData = new ActiveXObject("Microsoft.xmlDOM");
	}
	xmlData.async = false;
	xmlData.load("/common/programs/getADOXML.asp?SQL=" + escape(theSQL));
	
	//set Form Values
	var theNode = xmlData.selectSingleNode("/xml/row[@id = 1]");
	if (theNode != null){
		with(theForm){
			for(index=0; index<elements.length; index++){
				theNode = xmlData.selectSingleNode("/xml/row[@id=1]/" + elements[index].name);
				if(theNode != null){
					if (elements[index].type == "select-one") defaultOption(elements[index], theNode.text);
					else if (elements[index].type == "checkbox") defaultCheck(elements[index], theNode.text);
					else elements[index].value = theNode.text
				}
			}
		}
	}
	theNode = null;
	xmlData = null;
	return true;
}
// Dynamic data rewrites
function sqlListObject(tList) {
	this.theList = tList;
	this.theSQL = null;
}
// Retrieve 1 or more rows from a database
function getList(theSQL, theObject, theList, theURL) {
	/* Get the List */
	try {
		var xmlData = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
	}
	catch(e){
		var xmlData = new ActiveXObject("Microsoft.xmlDOM");
	}
	/* If the URL is blank, default to getList.asp */
	if(theURL == null || theURL == "") theURL = "/common/programs/getListXML.asp"
	xmlData.async = false;
	xmlData.load(theURL + "?SQL=" + escape(theSQL));
	/* Get the Object */
	if (typeof(theObject) == "object") jsObject = theObject;
	else if (eval("top." + theObject) == null && theList != null) jsObject = theList;
	else jsObject = eval("top." + theObject);
	/* Set the Option Object */
	var nodeList = xmlData.selectNodes("/xml/row/@id");
	if (nodeList.length > 0){
		jsObject.length = nodeList.length + 1;
		for (i=0; i < nodeList.length; i++){
			var theNode = xmlData.selectSingleNode("/xml/row[@id = " + nodeList[i].text + "]");
			jsObject[i+1].value = theNode.childNodes.item(0).text;
			jsObject[i+1].text = theNode.childNodes.item(1).text;
		}
		defaultOption(jsObject, jsObject.defaultValue);
	}
	else{
		jsObject.length = 1;
	}
	theNode = null;
	nodeList = null;
	xmlData = null;
	return true;
}

function getListXML(theSQLStatement, theFormElement, theValueElement, theTextElement, theDefaultValue) {
	/* Get the List */
	try {
		try {
			var xmlData = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
		} catch(e){
			var xmlData = new ActiveXObject("Microsoft.xmlDOM");
		}
		if (theDefaultValue == null) theDefaultValue = theFormElement.defaultValue;
		xmlData.async = false;
		xmlData.load("/common/programs/xmlSP.asp?SQL=" + escape(theSQLStatement));
		var nodeList = xmlData.selectNodes("//pRecord");
		if (nodeList.length > 0){
			theFormElement.length = nodeList.length + 1;
			for (i=0; i < nodeList.length; i++) {
				theFormElement[i+1].value = nodeList.item(i).selectSingleNode(theValueElement).text;
				theFormElement[i+1].text = nodeList.item(i).selectSingleNode(theTextElement).text;
			}
			defaultOption(theFormElement, theDefaultValue);
		} else theFormElement.length = 1;
		theNode = null;
		nodeList = null;
		xmlData = null;
	} catch(e) {
		alert("Error trying to re-draw the dropdown list " + theFormElement.name + ".\n\nError is: " + e.description);
	}
	return(true);
}

function setStop(theForm) {
	with (theForm) {
		if (StopTrigger.selectedIndex == 7) {
			getList("EXECUTE pTaskList @SortBy='Label'", "jsTaskID", StopTriggerID);
			StopTriggerID.options[0].text = "Select a task >>";
		} else if (StopTrigger.selectedIndex == 8) {
			getList("EXECUTE pFieldListDate", "jsTaskID", StopTriggerID);
			StopTriggerID.options[0].text = "Select a field >>";
		} else {
			StopTriggerID.options.length = 1;
			StopTriggerID.options[0].text = "Not used";
			StopTriggerID.options[0].value = "";
		}
	}
}

function setStart(theForm) {
	with (theForm) {
		if (StartTrigger.selectedIndex == 7) {
			getList("EXECUTE pTaskList @SortBy='Label'", "jsTaskID", StartTriggerID);
			StartTriggerID.options[0].text = "Select a task >>";
		} else if (StartTrigger.selectedIndex == 8) {
			getList("EXECUTE pFieldListDate", "jsTaskID", StartTriggerID);
			StartTriggerID.options[0].text = "Select a field >>";
		} else {
			StartTriggerID.options.length = 1;
			StartTriggerID.options[0].text = "Not used";
			StartTriggerID.options[0].value = "";
		}
	}
}
function setSearchString(theElement) {
	if (theElement.value == "") theElement.value = '%';
}
function autoNoteInsert(thePrompt) {
	if ((thePrompt <= "") || (thePrompt == null)) thePrompt = "Please document your reason for making this change:";
	theNote = ""
	do
		theNote = prompt(thePrompt, "");
	while ((theNote <= "") && (theNote != null))
	
	if (theNote != null){
		with (document.matterTaskUpdate) {
			theMatterID = MatterID.value;
			theMatterProcessID = MatterProcessID.value;
			theMatterTaskID = MatterTaskID.value;
			theURL = "/common/programs/setNoteXML.asp?MatterID=";
			theURL += MatterID.value + "&MatterProcessID=" + MatterProcessID.value + "&MatterTaskID=" + MatterTaskID.value + "&Person=";
			theURL += getCookie("Person") +  "&NoteType=Private" +  "&Priority=4" +  "&Note=" + escape(theNote);
		}
		try {
			var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
		}
		catch(e){
			var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		xmlHttp.open("POST", theURL, false);
		xmlHttp.send();
		var theHTML = new String(xmlHttp.responseText);
		if (theHTML.indexOf("Note ID: ") > -1) alert("Note was successfully added.\nYou will not see it until after you save this task.");
		xmlHttp = null;
	}
	return true;
}
// Log an event
function autoLogEvent(theTable, theIdentity, theEvent, thePrompt) {
	if ((thePrompt <= "") || (thePrompt == null)) thePrompt = "Please document your reason for this Event:";
	theEvent = ""
	do
		theEvent = prompt(thePrompt, "");
	while ((theEvent <= "") && (theEvent != null))
	
	if (theEvent != null){
		theURL = "/common/programs/setLogXML.asp?TableName=";
		theURL += theTable + "&IdentityID=" + theIdentity +  "&LogRecord=" + escape(theEvent);
		try {
			var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
		}
		catch(e){
			var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		xmlHttp.open("POST", theURL, false);
		xmlHttp.send();
		var theHTML = new String(xmlHttp.responseText);
		if (theHTML.indexOf("Log Record ID: ") > -1) alert("Successfully logged the event.");
		xmlHttp = null;
	}
	return true;
}
// Cookie functions
cookieExpiration = new Date("12/31/99");

function getCookie(name) {
	var cname = name + "=";
	if (document.cookie.length > 0) {              
		begin = document.cookie.indexOf(cname);       
		if (begin != -1) {
			begin += cname.length;       
			end = document.cookie.indexOf(";", begin);
			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(begin, end));
		} 
	}
	return null;
}

function setCookie(name, value, expires, path, domain, secure) {
	document.cookie = name + "=" + escape(value) + 
		((expires == null) ? "" : "; expires=" + expires.toGMTString()) +
		((path == null) ? "" : "; path=" + path) +
		((domain == null) ? "" : "; domain=" + domain) +
		((secure == null) ? "" : "; secure");
}

function deleteCookie (name,path,domain) {
	if (getCookie(name)) {
		document.cookie = name + "=" +
			((path == null) ? "" : "; path=" + path) +
			((domain == null) ? "" : "; domain=" + domain) +
			"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}
if (document.all) {
	var theTables = document.all.tags("TABLE");
	var theRows = document.all.tags("TR");
}

if (document.images) { 
	expand = new Image(); 
	expand.src = "/common/images/bullets/expand.gif"; 
	collapse = new Image(); 
	collapse.src = "/common/images/bullets/collapse.gif";
}

function setDisplay(theTable) {
	for (i=0; i<theTables.length; i++) {
		if (theTables[i].id.indexOf("Tab") >= 0) {
			if (theTables[i].id == "Tab" + theTable) theTables[i].style.display = "inline";
			else theTables[i].style.display = "none";
		}
	}
}
// This toggles all table rows with an id tag named theObject
function toggleDisplay(theObject, theImage) {
	for (i=0; i<theRows.length; i++) {
		if (theRows[i].id == theObject) {
			if (theRows[i].style.display == "inline") {
				theRows[i].style.display = "none";
				if (theImage != null) document[theImage].src = expand.src;
				deleteCookie(theObject);
			} else {
				theRows[i].style.display = "inline";
				if (theImage != null) document[theImage].src = collapse.src;
				setCookie(theObject, "ON");
			}
		}
	}
}
function showRow(theName) {
	for (i=0; i<theRows.length; i++) {
		if (theRows[i].id.indexOf(theName) == 0) {
			theRows[i].style.display = "inline";
		}
	}
}

function hideRow(theName) {
	for (i=0; i<theRows.length; i++) {
		if (theRows[i].id.indexOf(theName) == 0) {
			theRows[i].style.display = "none";
		}
	}
}
function setRow(theName, theState, theCookie) {
	for (i=0; i<theRows.length; i++) {
		if (theRows[i].id.indexOf(theName) == 0) {
			theRows[i].style.display = (theState) ? "inline" : "none";
		}
	}
	if (theCookie != null) {
		if (theState) setCookie(theCookie, "ON");
		else deleteCookie(theCookie);
	}
}
// This pops up a help screen with lookup field information based on a field's 'l' stored procedure
function lookupMatterField(theFieldID, theField, theMatterID, theMatterProcessID, theMatterTaskID) {
	with (document.matterTaskUpdate) {
		if (theField.options.selectedIndex == 0) {
			alert("You cannot look up the value of 'None'.  Please select an option before clicking on the lookup link.");
		} else {
			theURL = "/help/matterFieldSelect.asp?FieldID=" + theFieldID + "&Value=" + escape(theField.value) 
			theURL += "&MatterID=" + theMatterID + "&MatterProcessID=" + theMatterProcessID + "&MatterTaskID=" + theMatterTaskID;
			setPopup(theURL);
		}
	}
}

function toggleField(theField) {
	if (document.all) {
		theFields = document.all.tags("TD");
		for (i=0; i<theFields.length; i++) {
			if (theFields[i].id.indexOf("TabField" + theField) >= 0) {
				if (theFields[i].style.display == "inline") theFields[i].style.display = "none";
				else theFields[i].style.display = "inline";
			} 
		}
		theFields = document.all.tags("TH");
		for (i=0; i<theFields.length; i++) {
			if (theFields[i].id.indexOf("TabField" + theField) >= 0) {
				if (theFields[i].style.display == "inline") theFields[i].style.display = "none";
				else theFields[i].style.display = "inline";
			} 
		}
	}
}
function checkDocument() {
	return(true);
}
function executeMethod(theSP) {
	/* Build Stored Procedure Parameters */
	theURL = "/common/programs/execute.asp?Method=" + escape(theSP);
	for (i=1; i<arguments.length; i++) {
		theURL += "&" + arguments[i];	
	}
	
	try {
		var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
	}
	catch(e){
		var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlHttp.open("POST", theURL, false);
	xmlHttp.send();
	xmlHttp = null;
}

function executeInsertTask(theTask, theBeforeTask, theTeam, thePerson, theStartDate, theStopDate) {
	theURL = "/common/programs/execute.asp?Method=MatterTaskInsert";
	theURL += "&MatterID=" + document.matterTaskUpdate.MatterID.value;
	theURL += "&MatterProcessID=" + document.matterTaskUpdate.MatterProcessID.value;
	theURL += "&Task=" + escape(theTask);
	theURL += "&BeforeTask=" + escape(theBeforeTask);
	if (theTeam != undefined) theURL += "&Team=" + theTeam;
	if (thePerson != undefined) theURL += "&Person=" + thePerson;
	if (theStartDate != undefined) theURL += "&StartProjected=" + theStartDate;
	if (theStopDate != undefined) theURL += "&StopProjected=" + theStopDate;

	try {
		var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
	}
	catch(e){
		var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlHttp.open("POST", theURL, false);
	xmlHttp.send();
	xmlHttp = null;
}

function executeProcessOnhold(theOnholdDate) {
	theURL = "/common/programs/execute.asp?Method=MatterProcessOnhold";
	theURL += "&MatterProcessID=" + document.matterTaskUpdate.MatterProcessID.value;
	if (theOnholdDate != null) theURL += "&OnholdDate=" + escape(theOnholdDate);
	
	try {
		var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
	}
	catch(e){
		var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlHttp.open("POST", theURL, false);
	xmlHttp.send();
	xmlHttp = null;
}

function executeProcessResume(theResumeDate) {
	theURL = "/common/programs/execute.asp?Method=MatterProcessResume";
	theURL += "&MatterProcessID=" + document.matterTaskUpdate.MatterProcessID.value;
	if (theResumeDate != null) theURL += "&ResumeDate=" + escape(theResumeDate);
	
	try {
		var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
	}
	catch(e){
		var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlHttp.open("POST", theURL, false);
	xmlHttp.send();
	xmlHttp = null;
}

function executeProcessClosed(theClosedDate) {
	theURL = "/common/programs/execute.asp?Method=MatterProcessClosed";
	theURL += "&MatterProcessID=" + document.matterTaskUpdate.MatterProcessID.value;
	if (theClosedDate != null) theURL += "&ResumeDate=" + escape(theClosedDate);
	
	try {
		var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
	}
	catch(e){
		var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlHttp.open("POST", theURL, false);
	xmlHttp.send();
	xmlHttp = null;
}

function executeProcessStatus(theStatus) {
	theURL = "/common/programs/execute.asp?Method=MatterProcessStatus";
	theURL += "&MatterProcessID=" + document.matterTaskUpdate.MatterProcessID.value;
	if (theStatus != null) theURL += "&ResumeDate=" + escape(theStatus);
	
	try {
		var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
	}
	catch(e){
		var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlHttp.open("POST", theURL, false);
	xmlHttp.send();
	xmlHttp = null;
}

function validateAction(theForm, theName) {
	with (theForm) {
  		if (Action.selectedIndex == 0) {
	   		alert("You must select an action before clicking Go!");
	   		return(false);
		} else theAction = Action.options[Action.selectedIndex].value;
		isSelected = false;
		for (i=0; i<elements.length; i++) {
			if (elements[i].name == theName) {
				if (isSelected = elements[i].checked) break;
			}
		}
		if (!isSelected) {
			alert("You must check at least one checkbox before clicking Go!");
			return(false);
		}
	}
	return(confirm("Are you sure you want to " + theAction + " these items?"));
}

// dropdown keypress matching routines
var jsListboxBuffer = "";
var jsListboxTimeout = "";
var jsListboxCounter = 0;
var jsListboxCounterLimit = 3;

function listboxKeypress(theField){
	window.clearInterval(jsListboxTimeout)
	var keycode = window.event.keyCode;
	if (keycode >= 32) {
		jsListboxBuffer += String.fromCharCode(keycode).toUpperCase(); 
		listboxFind(theField);
		jsListboxTimeout = window.setInterval("listboxIdle()", 325);  
	}
}

function listboxBlur(theField) {
	window.clearInterval(jsListboxTimeout);
	jsListboxBuffer = "";
	if (theField.onchange) theField.onchange();
}

function listboxIdle(){
	jsListboxCounter += 1
	if(jsListboxCounter > jsListboxCounterLimit) {
		jsListboxBuffer = "";
		jsListboxCounter = 0;
		window.clearInterval(jsListboxTimeout);
	}
}

function listboxFind(theField) {
	var allOptions = theField.options;	
	for (i=0; i < allOptions.length; i++){
		nextOptionText = allOptions(i).text.toUpperCase();
		if(!isNaN(nextOptionText) && !isNaN(jsListboxBuffer) ){
			nextOptionText *= 1;
			jsListboxBuffer *= 1;
		}
		if(jsListboxBuffer == nextOptionText){
			theField.selectedIndex = i;
			window.event.returnValue = false;
			break;
		}
		if(i < allOptions.length-1) {
			lookAheadOptionText = allOptions(i+1).text.toUpperCase() ;
			if ( (jsListboxBuffer > nextOptionText) && (jsListboxBuffer < lookAheadOptionText) ) {
				theField.selectedIndex = i+1;
				window.event.cancelBubble = true;
				window.event.returnValue = false;
				break;
			}
		} else {
			if (jsListboxBuffer > nextOptionText) {
				theField.selectedIndex = allOptions.length-1;
				window.event.cancelBubble = true;
				window.event.returnValue = false;
				break;
			}
		}
	}
}
// DHTML Reordering routines
document.onmouseover = function () {
	try {
		var trValid = ((window.event.srcElement.parentElement.tagName == 'TR') && (window.event.srcElement.parentElement.className == 'reOrderAble')) ? true : false;
		if (trValid) window.self.moveTrTo = window.event.srcElement.parentElement.rowIndex;
		if(window.self.moving) {
			theElement.parentElement.moveRow(theGotIndex,moveTrTo);
			window.self.theGotIndex = moveTrTo;
		}
	} catch(E) {
		
	}
	return(false);
}

document.onmouseup = function () {
	try {
		rowObj = window.event.srcElement.parentElement.childNodes;
			 if (rowObj)
				for (var i=0;i<rowObj.length;i++)
				  if (rowObj[i].style)
				    rowObj[i].style.backgroundColor = ''
		document.onselectstart = function () {return true}
		window.self.moving = false;
		window.self.theGotIndex = null;
	} catch(E) {
		
	}
	return(true);
}



document.onmousedown = function () {
	try {
		var trValid = ((window.event.srcElement.parentElement.tagName == 'TR') && (window.event.srcElement.parentElement.className == 'reOrderAble'))? true : false;
		if (trValid) {
				window.self.moving = true;
				window.self.theGotIndex = window.event.srcElement.parentElement.rowIndex;
				window.self.theElement = window.event.srcElement.parentElement;
				document.onselectstart = function () {return false}
				rowObj = window.event.srcElement.parentElement.childNodes;
				if (rowObj)
				 for (var i=0;i<rowObj.length;i++)
				   if (rowObj[i].style)
				     rowObj[i].style.backgroundColor = '#99FF66'
					
				
		}
	} catch(E) {
		
	}
	return(true);
}

function setRowOrder(theForm, theIdentifier) {
	with (theForm) {
		for (i=0; i<elements.length; i++) {
			if (elements[i].name == theIdentifier) {
				elements[i].checked = true;
				eval(theIdentifier + "Order" + elements[i].value + ".value=" + (elements[i].parentElement.parentElement.rowIndex-1));
			}
		}
	}
}

function twin_onLoad(){
	if (document.forms.length > 0){
		for (frm = 0; frm < document.forms.length; frm++){
			var frmObj = document.forms[frm];
			if(frmObj.elements.length > 0){
				for (itm = 0; itm < frmObj.elements.length; itm++){
					var itmObj = frmObj.elements[itm];
					if(itmObj.twinObject != null){
						var twinObj = frmObj.elements[itmObj.twinObject];
						switch (itmObj.type){
							case "text": 
								itmObj.value = twinObj.value; 
							break;
							case "checkbox": 
								if (itmObj.value == twinObj.value) itmObj.checked = true;
							break;
							case "radio":
								if (itmObj.value == twinObj.value) itmObj.checked = true;
							break;
							case "select-one":
								for (i = 0; i < itmObj.length; i++){
									if (itmObj[i].value == twinObj.value) itmObj.selectedIndex = i;
								}
							break;
							case "textarea":
								itmObj.value = twinObj.value;
							break;
						}
					}
				}
			}
		}
	}
}

function twin_onSave(){
	if (document.forms.length > 0){
		for (frm = 0; frm < document.forms.length; frm++){
			var frmObj = document.forms[frm];
			if(frmObj.elements.length > 0){
				for (itm = 0; itm < frmObj.elements.length; itm++){
					var itmObj = frmObj.elements[itm];
					if(itmObj.twinObject != null){
						var twinObj = frmObj.elements[itmObj.twinObject];
						switch (itmObj.type){
							case "text": 
								twinObj.value = itmObj.value; 
							break;
							case "checkbox": 
								if (itmObj.checked) twinObj.value = itmObj.value
								else twinObj.value = null;
							break;
							case "radio":
								if (itmObj.checked) twinObj.value = itmObj.value;
							break;
							case "select-one":
								twinObj.value = itmObj.value;
							break;
							case "textarea":
								twinObj.value = itmObj.value;
							break;
						}
					}
				}
			}
		}
	}
}

// To enable textares tabbing, set the BODY tag's onMouseUp function to call tabClear();
//		set the textarea onFocus to "window.self.tabFocus=this;" 
//		set the textarea onKeydown to "tabCapture(this);"

function tabClear() {
	if (window.self.tabFocus) {
		window.self.tabFocus.onblur = null;
		window.self.tabFocus = null;
	}
}

function tabCapture (obj) {
	if (!window.self.workingObj) window.self.workingObj  = new Object();
	if (!window.self.workingId) window.self.workingId  = new Object();
	if (!window.self.tabMode) window.self.tabMode = new Object();

	if (new String(tabMode[event.srcElement.id]) == 'undefined') tabMode[event.srcElement.id] = false;
	status = 'TabMode = ' + tabMode[event.srcElement.id]
	window.self.theRange = document.selection.createRange();
	window.self.workingObj[obj.id] = obj;
	window.self.workingId[obj.id] = obj.id;
	
	if (event.keyCode == 9 && tabMode[event.srcElement.id]) {
		workingObj[event.srcElement.id].onblur = function anonymous () {
			this.focus();
			theRange.select();
		}
		theRange.text = "\t";
	}
	if (! tabMode[event.srcElement.id]) {
		if (workingObj[event.srcElement.id]) workingObj[event.srcElement.id].onblur = null;
	}
	if (event.keyCode == 84 && event.ctrlKey) {
		tabMode[event.srcElement.id] = !tabMode[event.srcElement.id];
		status = 'TabMode = ' + tabMode[event.srcElement.id];
	}
}


//convert Value into Money
function convertMoney(theValue){

	jsMoney = new Number(theValue);
	jsString = '' + Math.round(jsMoney*100)/100;

	for (i=0; i<jsString.length; i++) {
		if (jsString.charAt(i) == '.') break;
	}
	if (i == jsString.length) return(jsString + ".00");
	else if (i == (jsString.length-1)) return(jsString + "00");
	else if (i == (jsString.length-2)) return(jsString + "0");
	else return(jsString);
}
// Address object: written By: Kamau Washington - last Data Modified: 09/27/2001
// - instantiation: var variable = new Address("Address string")
// - returns: variable.streetNumber, street, roadType, unit, direction  or  false
function Address (data) {
	if (!data) return false

	//Data Set Main functions...
	var dirArray = new Array('n','s','e','w')
	var dirArray2 = new Array('north','south','east','west')
	var Direction = function () {
		var permute = (new Array).concat(dirArray)
		for (var i=0,j=2;dirArray.length && i<(dirArray.length)/2;i++,j--)
			permute = permute.concat(dirArray[i] + dirArray[i + j],dirArray[i] + dirArray[i + j + 1],
									 dirArray2[i] + dirArray2[i + j],dirArray2[i] + dirArray2[i + j + 1])	
		return permute.concat(dirArray2)
	}
	
	var exists = function (data) {
		var checkData = function (val) {
			val = new String(val)
			return (val.match(/\w{1,}/) || val.match(/\d{1,}/))? true : false
		}
		return (checkData(data))? data : false
	}
	//End Data Set Main functions...
	
	var noData = /(\w*|Re)[\%\$\@\!\+\=\}\{\[\]\:\;\\\)\(\*\^\~]\s*\w*/gi
	data = ((data.replace(/\,/g,' ')).replace(noData,' ')).replace(/\s{2,}/g,' ')
	var unitType = 'SUITE|BLDG|APT|AP|FLR|FL|FLOOR|STE|BLD|apartment|suite|building'
	var roadTypeArrayFull = new Array('AISLE','ALLEY','AVENUE','BOULEVARD','CIRCLE','CENTER','CRESENT','COURT','DALE','DRIVE',
									  'EXPRESSWAY','FREEWAY','GARDEN','GROVE','HILL','HEIGHTS','HIGHWAY','KNOLL','LANE','LOOP',
									  'MALL','OVAL','PATH','PIKE','PARK','PLACE','POINT','PARKWAY','PLAZA','ROAD','RUN','ROW','ROUTE',
									  'SQUARE','STREET','TERRACE','TURNPIKE','TRAIL','THRUWAY','VIADUCT','WALK','WAY')
	var roadTypeArrayShort = new Array('TRL','AL','AV','BV','Blvd','CI','CN','CR','CT','DA','DR','EX','FY','GA','GR','HL','HT','HY',
									   'KN','LN','LP','MA','OV','PA','PI','PK','PL','PT','PY','PZ','RD','RN','RO','RT','SQ',
									   'ST','TE','TP','TR','TY','VI','WK','WY')
	var fullRoad = 'AVENUE,Ave,BOULEVARD,Blvd,CIRCLE,Ci,CENTER,Cn,CRESENT,Cr,COURT,Ct,DALE,Da,Drive,Dr,EXPRESSWAY,Ex,' +
				   'FREEWAY,Fy,GARDEN,Ga,GROVE,Gr,HILL,Hl,HEIGHTS,Ht,HIGHWAY,Hy,KNOLL,Kn,LANE,Ln,LOOP,Lp,MALL,Ml,OVAL,Ov,' +
				   'PATH,Pa,PIKE,Pi,PARK,Pk,PLACE,Pl,POINT,Pt,PARKWAY,Py,PLAZA,Pz,ROAD,Rd,RUN,Rn,ROW,Ro,ROUTE,Rt,SQUARE,' +
				   'Sq,STREET,St,TERRACE,Te,TURNPIKE,Tp,TRAIL,Tr,THRUWAY,Ty,VIADUCT,Vi,WALK,Wk,WAY,Wy,AVENUE,Av,BOULEVARD,Bv'					
	
	var fullRoadArray = (new String(fullRoad)).split(/\,/)
	var RoadObj = new Object
	var me
	for (var i=0;i<fullRoadArray.length;i++) {
		var thisObj = fullRoadArray[++i].toUpperCase()
		var thisString =  new String(fullRoadArray[i-1].toLowerCase())
		if (thisString.match(/^(\w)/)) with (RegExp) {
	  		var thisCase = (new String($1)).toUpperCase()
			RoadObj[thisObj] = thisString.replace($1,thisCase)
		}
	}
	var roadType = (roadTypeArrayFull.concat(roadTypeArrayShort)).join('|')
	
	// Start Unit Gather...
	var unitPPReg = new RegExp('((' + unitType + ')\\.\\s*\#\\s*\\w*\\s*\\d*\\/{1,}\\d*)','i')
	var unitPReg = new RegExp('((' + unitType + ')\\s*\#\\s*\\w*\\s*\\d*\\/{1,}\\d*)','i')
	var unitReg = new RegExp('((' + unitType + ')\\.\\s*\\w*\\s*\\d*\\/{1,}\\d*)','i')
	var nonUnitReg = new RegExp('((' + unitType + ')\\s{1,}\\w*\\s*\\d*\\/{1,}\\d*)','i')
	var unitSingleLongReg = new RegExp('((' + unitType + ')\\.\\s*\\w{1,})','i')
	var unitSinglePoundReg = new RegExp('((' + unitType + ')\\.\\s*\\#\\s*\\w{1,})','i')
	var unitSingleNoPPoundReg = new RegExp('((' + unitType + ')\\s*\\#\\s*\\w{1,})','i')
	var unitSingleNoPPReg = new RegExp('((' + unitType + ')\\s*\\w{1,})','i')
	data += ' '
	with (data) if (match(unitPPReg) || match(unitPReg) || match(unitReg) || match(nonUnitReg) || 
		match(unitSingleLongReg) || match(unitSinglePoundReg) || match(unitSingleNoPPoundReg) || match(unitSingleNoPPReg))
		with (RegExp) {
			data = data.replace($1,'')
			this.unit = exists($1)
			var thisUnit = new String(this.unit)
			if (thisUnit.match(/^(\w){1}/)) with (RegExp) {
				var thisTest = new String($1)
				this.unit = thisUnit.replace($1,thisTest.toUpperCase())
			}
		}
	else this.unit = false 
	// End Unit Gather...

	// Start roadType gather...
	var roadTypePReg = new RegExp('\\s{1,}(' + roadType + ')\\.{0,1}\\s{1,}','i')
	with (data) if (match(roadTypePReg)) with (RegExp) {
		data = data.replace($1,'')
		this.roadType = exists($1)
		if (RoadObj[this.roadType.toUpperCase()]) this.roadType = RoadObj[this.roadType.toUpperCase()]
	} else this.roadType = false			
	//End roadType gather...
	
	var dirList = (new Direction).join('|')
	var streetNum = '(\\d*\\s*\\d*\\/{0,}\\d*)'
	var fullReg = new RegExp('^' + streetNum  + '\\s*[^\\w]*(' + dirList + '){0,1}\\s{1,}(.*)\\s{0,1}','i')

	with (data) if (match(fullReg)) with (RegExp) {
		this.streetNumber = $1
		this.direction = $2
		this.street = $3
		if (!exists(this.street) && exists(this.direction)) with (this) {
			street = direction 
			this.direction = false
		}
		
		var theStreet = new String(this.street)
		
		if (theStreet.match(/\s*(\#\s*\w*)(\s\d*\/\d*){0,1}/)) with (RegExp) {
			this.street = theStreet.replace($1+$2,'')
			this.unit = $1 + $2
		}
		
		
		//Changes direction to letter formatting...
		if (exists(this.direction)) {
			var dirString = new String(this.direction)
			if (dirString.match(/^(\w{1,2})$/i)) this.direction = (new String($1)).toUpperCase();
			else {
				for (var i=0;i<dirArray2.length;i++) {
					var reg = new RegExp('(' + dirArray2[i] + ')','i')
					if (dirString.match(reg))
					  dirString = dirString.replace($1,dirArray[i].toUpperCase())
				}
				this.direction = dirString
			}
		}
	} else {
		this.street = data
		this.direction = false
		this.streetNumber = false
	}
}

function validateRevision(theForm) {
	with (theForm) {
		if (RevisionCode.value <= "") {
			alert("You must enter a revision code."); 
			RevisionCode.focus();
			return(false);
		}
		if (RevisionReason.value <= "") {
			alert("You must enter a revision reason."); 
			RevisionReason.focus();
			return(false);
		}
	}
	return(true);
}

function setAddress(){
}

// timerObject functions
// needs to be global variable
// name property needs to be set to the name of the variable
function startTimer(theObject)
{
	theObject.status = true;
	theObject.occurrence = new Date().getTime() + theObject.interval;
	theObject.trigger();
}

function stopTimer(theObject)
{
	theObject.status = false;
	clearTimeout(theObject.id);
}

function triggerTimer(theObject)
{
	if (theObject.occurrence -  new Date().getTime()<= 0)
	{
		theObject.stop();
		theObject.action();
		if (theObject.freq) theObject.start();
	}
	else if (theObject.status) theObject.id = setTimeout("triggerTimer(" + theObject.name + ")", 1000);
}

function timerObject(theName)
{
	this.status = false;
	this.name = theName
	this.interval = new Number(); //miliseconds
	this.freq = new Boolean(false)//Boolean
	this.occurrence = new Date().getTime();
	this.id = new Number();
	this.action = new Function();
	this.start = new Function("startTimer(this)");
	this.stop = new Function("stopTimer(this)");
	this.trigger = new Function("triggerTimer(this)");
	return(this);
}
function setSortBy(theForm, theSortOrder) {
	with (theForm) {
		SortBy.value = theSortOrder;
		submit();
	}
}

var theHeaders = document.all.tags("TH");

function displaySortBy(theSortOrder) {
	for (var i=0; i<theHeaders.length; i++) {
		try {
			if (theHeaders[i].sortBy == theSortOrder) theHeaders[i].innerHTML += " <font size='-2'>v</font>";
		} catch(e) {
			// do nothing
		}
	}
}

function defaultSubscriberID(theObject, theObjectID, theBase, theElement) {
	if (theElement == null) theElement = window.event.srcElement;
	if (theElement.value == ".") theElement.value = theBase + "-" + theObject + "-" + theObjectID;
	if (theElement.value == "..") theElement.value = theElement.defaultValue;
}

function defaultURL(theObject, theBase, theElement) {
	if (theElement == null) theElement = window.event.srcElement;
	theFile = theObject.replace(/ /g, "");
	if (theElement.value == ".") theElement.value = theBase + theFile;
	if (theElement.value == "..") theElement.value = theElement.defaultValue;
}

function defaultElement(theDefault, theElement) {
	if (theElement == null) theElement = window.event.srcElement;
	if (theElement.value == ".") theElement.value = theDefault;
	if (theElement.value == "..") theElement.value = theElement.defaultValue;
}
function copyToClipboard(theText) {
	if (clipboardtext != null) {
		clipboardtext.innerHTML = theText;
		theTextRange = document.body.createTextRange();
		theTextRange.moveToElementText(clipboardtext);
		theTextRange.select();
		document.execCommand("Copy");
		clipboardtext.innerHTML = "";
	}
}

function getXMLFromURL(theURL, theConnectionString) {
	var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	xmlhttp.Open("GET", theURL, false);
	if (theConnectionString != null) xmlhttp.setRequestHeader("ActionConnectionString", theConnectionString);
	xmlhttp.Send();

	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	xmlDoc.async = false;
	xmlDoc.loadXML(xmlhttp.responseText);
	return(xmlDoc);
}

function renderXML(theXML, theXSL) {
	var theResult = new ActiveXObject("Microsoft.XMLDOM");
	theResult.async = false;
	theResult.loadXML(theXML.transformNode(theXSL));
	return(theResult);
}

//this function checks if the password is in the valid format
function checkPassword(thePassword,theUserName){
var isCharacter = new Number(0),isNumber = new Number(0),isOther = new Number(0);
var jsPassword = new String(thePassword);
	try{
		if(jsPassword.length >= 8 && jsPassword.indexOf(theUserName) < 0){
			for(i=0;i<jsPassword.length;i++){
				var theChar = jsPassword.charAt(i);
				if((theChar >= 'a' && theChar <= 'z' ) || (theChar >= 'A' && theChar <= 'Z'))//if uppercase
					isCharacter ++;
				else if(isNaN(theChar) == false)//if number 
					isNumber ++;
				else isOther ++;//if other
			} 
			if(isCharacter > 0 && isNumber > 0 && isOther > 0){
				return(true);
			} else {
				alert("'" + jsPassword + "' is an invalid password.\nPasswords cannot contain your username and must contain. \n      1. At least 8 characters.\n      2. At least one character letter (A,b,C,d,e,f and so on). \n      3. At least one Number. \n      4. At least one Symbol (characters that are not defined as letters or numerals, such as !, @, #, and so on).");
				return(false);
		    }
		} else {
			alert("Passwords cannot contain your username and must contain at least 8 characters.");
			return(false);
		}
	}catch(e){
		alert(e.description);
		return(false); 
	}
}
function submitXMLToURL(theURL, theXML, theConnectionString) {
	var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	xmlhttp.Open("POST", theURL, false);
	if (theConnectionString != null) xmlhttp.setRequestHeader("ActionConnectionString", theConnectionString);
	xmlhttp.Send(theXML);
	try {
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.loadXML(xmlhttp.responseText);
		if (xmlDoc.xml > "") return(xmlDoc); 
		else return(xmlhttp.responseText);
	} catch(e) {
		return(xmlhttp.responseText);
	}
}

function getADOFromXML(theXML) {
	try {
		var theRS = new ActiveXObject("ADODB.Recordset");
		theRS.open(theXML);
		return(theRS);
	} catch(e) {
		alert("Error from getADOFromXML: " + e.description);
	}
}

function getTextFromURL(theURL, theConnectionString) {
	var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	xmlhttp.Open("GET", theURL, false);
	if (theConnectionString != null) xmlhttp.setRequestHeader("ActionConnectionString", theConnectionString);
	xmlhttp.Send();
	return(xmlhttp.responseText);
}

function addDays(theFieldValue, theDays, exSat, exSun)
{
	try{
		 var theDate = new Date(theFieldValue);
		 var day = new String("");
		 if(theDate.getFullYear() > 2000)
		 {
		 	// for each day, check what day it is
			for(i = 0; i < theDays; i++)
			{
				day = theDate.getDay();
				// if saturday
				//alert(theDate.getDay());
				if(day == 6 && exSat)
				{
					theDate.setDate(theDate.getDate()+(1));
					day = theDate.getDay();						
				}
				//alert(theDate.getDay());
				if(day == 0 && exSun) // if sunday
				{
					theDate.setDate(theDate.getDate()+(1));			
				}					
				//alert(theDate.getDay());
				theDate.setDate(theDate.getDate()+(1));					
			}
			// if day ends up been sunday, skip it
			if(theDate.getDay() == 0) theDate.setDate(theDate.getDate()+(1));	
					
			var MM = theDate.getMonth()+1;
			var DD = theDate.getDate();
			var YY = theDate.getFullYear();
					
			return(getDateString(theDate));
		 }
	}catch(e)
	{
		alert("function error " + e.description);
	}
}

