// global flagvar isIE = false;var sideBarTop;// global request and XML document objectsvar req;var running;// retrieve XML document (reusable generic function);// parameter is URL string (relative or complete) to// an .xml file whose Content-Type is a valid XML// type, such as text/xml; XML source must be from// same domain as HTML filefunction loadXMLDoc(url) {	// branch for native XMLHttpRequest object	if (window.XMLHttpRequest) {		req = new XMLHttpRequest();		req.onreadystatechange = processReqChange;		req.open("GET", url, true);		req.send(null);	// branch for IE/Windows ActiveX version	} else if (window.ActiveXObject) {		isIE = true;		req = new ActiveXObject("Microsoft.XMLHTTP");		if (req) {			req.onreadystatechange = processReqChange;			req.open("GET", url, true);			req.send();		}	}}// handle onreadystatechange event of req objectfunction processReqChange(){	// only if req shows "loaded"	if (req.readyState == 4)	{		// only if "OK"		if (req.status == 200)		{			var results;			// check for errors			results = req.responseXML.getElementsByTagName("error");			var errorMsg = "";			for (var i = 0; i < results.length; i++)			{				if (results[i].childNodes.length > 1) {errorMsg += results[i].childNodes[1].nodeValue;}				else {errorMsg += results[i].firstChild.nodeValue;}			}						if (errorMsg == "")			{				// set proper button state				results = req.responseXML.getElementsByTagName("status");				var status = "";				for (var i = 0; i < results.length; i++)				{					if (results[i].childNodes.length > 1) {status = results[i].childNodes[1].nodeValue;}					else {status = results[i].firstChild.nodeValue;}				}				results = req.responseXML.getElementsByTagName("rowId");				var rowId = "";				for (var i = 0; i < results.length; i++)				{					if (results[i].childNodes.length > 1) {rowId = results[i].childNodes[1].nodeValue;}					else {rowId = results[i].firstChild.nodeValue;}				}				results = req.responseXML.getElementsByTagName("reactorId");				var reactorId = "";				for (var i = 0; i < results.length; i++)				{					if (results[i].childNodes.length > 1) {reactorId = results[i].childNodes[1].nodeValue;}					else {reactorId = results[i].firstChild.nodeValue;}				}								var divName = 'state_' + rowId;				var completeActivityLinkName = 'complete_link_' + rowId;				var hiddenFieldName = 'document.mainForm.reactorId_row_' + rowId;				var buttonName = 'document.mainForm.pause_resume_' + rowId;				if (status == "1")				{					// the activity is now paused					//eval(buttonName + ".value = 'Activate'");					eval(buttonName + ".value = 'Start'");					// get HTML from appropriate DIV tag					var contentObj, html;					if (document.getElementById) {contentObj = document.getElementById(divName);}						else if (document.all) {contentObj = document.all[divName];}										//contentObj.innerHTML = "Paused";					//contentObj.className = "pausedState";										// disable the "complete activity" link					if (document.getElementById) {contentObj = document.getElementById(completeActivityLinkName);}						else if (document.all) {contentObj = document.all[completeActivityLinkName];}											contentObj.href = "javascript:void('');";							}				else if (status == "2")				{					// the activity is now active					//eval(buttonName + ".value = 'Pause'");					eval(buttonName + ".value = 'Stop'");					// get HTML from appropriate DIV tag					var contentObj, html;					if (document.getElementById) {contentObj = document.getElementById(divName);}						else if (document.all) {contentObj = document.all[divName];}										//contentObj.innerHTML = "Active";					//contentObj.className = "activeState";										// enable the "complete activity" link					if (document.getElementById) {contentObj = document.getElementById(completeActivityLinkName);}						else if (document.all) {contentObj = document.all[completeActivityLinkName];}											contentObj.href = "javascript:goToReactorActivityPageFromRow(" + rowId + ");";				}				else				{					eval(buttonName + ".value = 'Unknown'");					eval(buttonName + ".disabled = true");					// get HTML from appropriate DIV tag					var contentObj, html;					if (document.getElementById) {contentObj = document.getElementById(divName);}						else if (document.all) {contentObj = document.all[divName];}										//contentObj.innerHTML = "Unknown";					//contentObj.className = "alert";										// disable the "complete activity" link					if (document.getElementById) {contentObj = document.getElementById(completeActivityLinkName);}						else if (document.all) {contentObj = document.all[completeActivityLinkName];}											contentObj.href = "javascript:void('');";				}								// update the hidden field with the new reactorId				eval(hiddenFieldName + ".value = '" + reactorId + "'");							}			else			{				running = false;				alert(errorMsg);			}						//toggle off!			running = false;					}		else		{			running = false;			alert("There was a problem retrieving the XML data:\n" + req.status + " " + req.statusText);		}			}	}function pause_resume(theButton, rowId){	if (!running)	{ 		running = true;		var reactorId = getReactorIdForRow(rowId);		//if (theButton.value == "Activate")		if (theButton.value == "Start")		{			//theButton.value = "Activating...";			theButton.value = "Starting...";			theButton.className = "stopWorkButton";			loadXMLDoc("/park.xml?command=2&rowId=" + rowId + "&reactorId=" + reactorId);		}		else		{			//theButton.value = "Pausing...";			theButton.value = "Stopping...";			theButton.className = "startWorkButton";			loadXMLDoc("/park.xml?command=1&rowId=" + rowId + "&reactorId=" + reactorId);		}	}}function getReactorIdForRow(rowId){	return eval("document.mainForm.reactorId_row_" + rowId + ".value;");}function goToReactorActivityPageFromRow(rowId){	window.location = buildReactorActivityUriFromRow(rowId);}function buildReactorActivityUriFromRow(rowId){	return 'completeactivity.html?reactorId=' + getReactorIdForRow(rowId);}function clickPaused(){	return false;}							function writeFileUploadField(num){	num++;	var div = getDiv('file' + num + 'Upload');		div.style.display = "block";	div.innerHTML = getFileUploadFieldText(num);	fileUploadCount++;	writeAddRemoveLinks();}function removeFileUploadField(num){	var div = getDiv('file' + num + 'Upload');		div.style.display = "none";	div.innerHTML = "";	fileUploadCount--;	writeAddRemoveLinks();}function getFileUploadFieldText(num){	return ('<input type="file" name="file' + num + '" size="32">');}function writeAddRemoveLinks(){	// get HTML from appropriate DIV tag	var contentObj, html;	if (document.getElementById) {contentObj = document.getElementById('fileUploadLinks');}		else if (document.all) {contentObj = document.all['fileUploadLinks'];}		contentObj.innerHTML = getAddRemoveLinks();}function getAddRemoveLinks(){	var maxUploadFields = 20;	var str = '| ';	if (fileUploadCount < (maxUploadFields - 1)) {str += '<a href="javascript:writeFileUploadField(fileUploadCount);">Add</a> | ';}	if (fileUploadCount > 0) {str += '<a href="javascript:removeFileUploadField(fileUploadCount);">Remove</a> |';}	return str;}		function openAddToDiscussionWindow(uri, window_height){	a_new_window = window.open(uri,"AddToDiscussion",("height=" + window_height + ",width=480,resizable,scrollbars=yes,titlebar=yes"));}function validateCreateWorkOrderForm(myform){	if (myform.workOrderType.selectedIndex == 0)	{		alert("Please select a valid Work Order Type.");		return false;	}	return true;}function changeWorkOrderType(workOrderId, workOrderMenu){	//if changing from Please Select we just let them as we will REQUIRE a valid selection on submit	if (workOrderMenu.selectedIndex == 0) return;				var selectedText = workOrderMenu.options[workOrderMenu.selectedIndex].text	//handle use on Create form where we don't yet have a workOrder ID!	if (workOrderId == 0)		var confirmedAnswer = confirm("Are you sure you want to change the type to \"" + selectedText + "\"?");	else		var confirmedAnswer = confirm("Are you sure you want to change the type of Work Order " + workOrderId + " to \"" + selectedText + "\"?");			if (confirmedAnswer)	{		eval("document.mainForm.prev_" + workOrderMenu.name + ".value = document.mainForm." + workOrderMenu.name + ".selectedIndex");	}	else	{		eval("document.mainForm." + workOrderMenu.name + ".selectedIndex = document.mainForm.prev_" + workOrderMenu.name + ".value");	}		//this.form.submit();}function toggleDetailChecked(theCheckbox, otherCheckboxName, formName, invert){	if (otherCheckboxName == null || otherCheckboxName == "") {otherCheckboxName = theCheckbox.name + "Detailed";}	if (formName == null || formName == "") {formName = "historyForm";}	if (invert == null || invert == "") {invert = false;}		if (theCheckbox.checked == !invert)	{		eval("document." + formName + "." + otherCheckboxName + ".checked = true");		eval("document." + formName + "." + otherCheckboxName + ".disabled = false");	}	else	{		eval("document." + formName + "." + otherCheckboxName + ".checked = false");		eval("document." + formName + "." + otherCheckboxName + ".disabled = true");	}}function toggleEmailDisabled(theCheckbox, elementName, invert){	if (invert == null || invert == "") {invert = false;}		if (theCheckbox.checked == !invert)	{		eval("document.mainForm." + elementName + ".checked = false");		eval("document.mainForm." + elementName + ".disabled = true");	}	else	{		eval("document.mainForm." + elementName + ".disabled = false");	}}function selectBoxes(items, mastercheckbox){	var state = mastercheckbox.checked;	//clear any checkboxes in the bottom part of the form (reassign group)	selectBoxesClearReassignActivity(document.reassignForm.reassignactivity);			if (items != null)	{		if (items.length == null) {items.checked = state}		else {for (i = 0; i < items.length; i++) {items[i].checked = state;}}			// enable/disable activity detail button		document.mainForm.showActivityDetail.disabled = !state;	}}function selectBoxesClearActivity(items){	if (items != null)	{		if (items.length == null) {items.checked = false}		else {for (i = 0; i < items.length; i++) {items[i].checked = false;}}				document.mainForm.showActivityDetail.disabled = true;	}	}function selectBoxesClearReassignActivity(items){	if (items != null)	{		if (items.length == null) {items.checked = false}		else {for (i = 0; i < items.length; i++) {items[i].checked = false;}}			document.reassignForm.reassignAllActivities.disabled = true;		document.reassignForm.reassignToMe.disabled = true;	}	}function selectBoxesReassign(items, mastercheckbox){	var state = mastercheckbox.checked;	//clear any checkboxes in the top part of the form (assigned to user)	selectBoxesClearActivity(document.mainForm.activity);			if (items != null)	{		if (items.length == null) {items.checked = state}		else {for (i = 0; i < items.length; i++) {items[i].checked = state;}}			// enable/disable activity reassign button		document.reassignForm.reassignAllActivities.disabled = !state;		document.reassignForm.reassignToMe.disabled = !state;	}}function showMultipleActivities(myForm){	var doit = checkBoxState(myForm, false);		if (doit)	{ 		myForm.submit(); 	}}function reassignMultipleActivities(myForm){	myForm.submit(); }function checkBoxState(myForm, reassign){	var items;	if (reassign)	{		items = myForm.reassignactivity;		//clear any checkboxes in the top part of the form (assigned to user)		selectBoxesClearActivity(document.mainForm.activity);	}		else	{		items = myForm.activity;		//clear any checkboxes in the bottom part of the form (reassign group)		selectBoxesClearReassignActivity(document.reassignForm.reassignactivity);	}	var anyBoxChecked = false;	var sameTypeByName = true;	var activeActivity = true;	var lastName = "";	var loopCount = 0;				if (items != null)	{		if (items.length == null) {anyBoxChecked = items.checked}		else		{			for (i = 0; i < items.length; i++)			{				// yes, I really want only one equals sign here. It's not a bug.				if (anyBoxChecked = items[i].checked) {break;}			}							//if reassigning we don't care about the activity being the same type					if (!reassign)			{					for (i = 0; i < items.length; i++)				{					//only care about the checked ones					if (items[i].checked)					{						loopCount++;												var pauseresume = 'pause_resume_' + i;												var anrow = 'activityName_row_' + i;						var activityObj;						var activityName;												if (document.getElementById)						{							activityObj = document.getElementById(pauseresume);						}						else if (document.all) 						{							activityObj = document.all[pauseresume];						}																										if (activityObj && (activityObj.value == "Activate"))						{							activeActivity = false;							items[i].checked = false;							alert('The activity cannot be Paused.  Please click the Activate button before selecting this activity');							break;						}																		if (document.getElementById)						{							activityObj = document.getElementById(anrow);						}						else if (document.all) 						{							activityObj = document.all[anrow];						}												activityName = activityObj.value;																//of course the first one will always be different						if (loopCount > 1 && lastName != activityName)						{							sameTypeByName = false;							items[i].checked = false;							break;						}						lastName = activityName;						}									}			}//end if reassign					}	}				// enable/disable activity detail button	if (anyBoxChecked) 	{				if (reassign)		{			document.reassignForm.reassignAllActivities.disabled = false;			document.reassignForm.reassignToMe.disabled = false;		}		else		{			document.mainForm.showActivityDetail.disabled = false;			//all the same name?			if (!sameTypeByName)			{				alert('You can only select Activities that have the exact same name.');			}						//see if we uncheck the only checked box - hence need to disable big button			for (i = 0; i < items.length; i++)			{				// yes, I really want only one equals sign here. It's not a bug.				if (anyBoxChecked = items[i].checked) {break;}			}			if (!anyBoxChecked)			{				document.mainForm.showActivityDetail.disabled = true;			}					}		}	else 	{		if (reassign)		{			document.reassignForm.reassignAllActivities.disabled = true;			document.reassignForm.reassignToMe.disabled = true;		}		else				document.mainForm.showActivityDetail.disabled = true;	}		if (!sameTypeByName || !activeActivity)		return false;	else		return true;}function assignToMe(){	document.mainForm.assignTo.value = document.mainForm.username.value;	document.mainForm.submit();}	function getDiv(divId){	var contentObj;	if (document.getElementById) {contentObj = document.getElementById(divId);}		else if (document.all) {contentObj = document.all[divId];}	return contentObj;}function selectFirstFieldWithData(formName){	if (formName == null || formName == "") {formName = "findForm";}	eval("var theForm = document." + formName + ";");	var selectedField = -1;	for (var i = 0; i < theForm.length; i++)	{		if (theForm[i].value.length > 0 && theForm[i].type != "submit" && theForm[i].type != "button")		{			theForm[i].select();			selectedField = i;			break;		}	}	if (selectedField == -1 && theForm.length > 0) {theForm[0].focus();} // focus on the first field if none of them have data}//custom version to ignore special values for use with Find WO formfunction selectFirstFieldWithDataSkipDates(formName){	if (formName == null || formName == "") {formName = "findForm";}	eval("var theForm = document." + formName + ";");	var selectedField = -1;	for (var i = 0; i < theForm.length; i++)	{		//added skip radio buttons		if (theForm[i].value.length > 0 &&  theForm[i].type != "radio" &&  theForm[i].type != "submit" && theForm[i].type != "button")		{			//ignore Start and End Date values			if ((theForm[i].value != 'Start Date') && (theForm[i].value != 'End Date'))			{				theForm[i].select();				selectedField = i;				break;			}		}	}	if (selectedField == -1 && theForm.length > 0) {theForm[0].focus();} // focus on the first field if none of them have data}function toggleDivDisplay(divId, divDisclosureId, disclosureQualifier){	var div;	var divDisclosure;	if (document.getElementById)	{		div = document.getElementById(divId);		divDisclosure = document.getElementById(divDisclosureId);	}	else if (document.all)	{		div = document.all[divId];		divDisclosure = document.all[divDisclosureId];	}  	var state = div.style.display;  	  	// toggle display of DIV  	if (state == "inline")  	{  		div.style.display = "none";  		divDisclosure.src = "/resources/images/disclosure_" + disclosureQualifier + "closed.gif";  	}  	else  	{  		div.style.display = "inline";  		divDisclosure.src = "/resources/images/disclosure_" + disclosureQualifier + "open.gif";  	}  	  	// save state in cookie so that successive page views match this one  	writeDivStateCookie(divId, div.style.display);}function hideSideBar(sideBarDivId, sideBarRevealerImgId, mainDivId){	var sideBarDiv;	var sideBarRevealerDiv;	var mainDiv;	if (document.getElementById)	{		sideBarDiv = document.getElementById(sideBarDivId);		sideBarRevealerImg = document.getElementById(sideBarRevealerImgId);		mainDiv = document.getElementById(mainDivId);	}	else if (document.all)	{		sideBarDiv = document.all[sideBarDivId];		sideBarRevealerImg = document.all[sideBarRevealerImgId];		mainDiv = document.all[mainDivId];	}  	var state = sideBarDiv.style.display;  	  	// toggle display of DIV  	if (state == "inline" || state == "")  	{  		sideBarDiv.style.display = "none";  		sideBarRevealerImg.src = "/resources/images/right_arrow.gif";  		mainDiv.style.left = 5;  		state = "none";  	}  	else  	{  		sideBarRevealerImg.src = "/resources/images/left_arrow.gif";  		sideBarDiv.style.display = "inline";  		mainDiv.style.left = 215;  		state = "inline";  	}  	  	// save state in cookie so that successive page views match this one  	writeDivStateCookie("sideBarDiv", state);}function writeDivStateCookie(divName, divState){	var cookieText = GetCookie("wos_divState");	//alert(cookieText);	if (cookieText == null || cookieText == "null") {cookieText = "";}	else	{		eval('cookieText = cookieText.replace(/\&?' + divName + '=[^&$]*(&?)/gi, "$1");');		cookieText = cookieText.replace(/&$/, ""); // remove any trailing ampersands		cookieText = cookieText.replace(/^&/, ""); // remove any leading ampersands	}	if (cookieText.length > 0) {cookieText += "&";}	cookieText += divName + "=" + divState;	SetCookie("wos_divState", cookieText, new Date(2030, 11, 31), null, null, false);}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 == true) ? "; secure" : "");}function getCookieVal(offset){	var endstr = document.cookie.indexOf (";", offset);	if (endstr == -1) endstr = document.cookie.length;	return unescape (document.cookie.substring(offset, endstr));}function GetCookie(name){	var arg = name+"=";	var alen = arg.length;	var clen = document.cookie.length;	var i = 0;	while (i < clen)	{		var j = i + alen;		if (document.cookie.substring(i, j) == arg) return getCookieVal(j);		i = document.cookie.indexOf(" ", i) + 1;		if (i == 0) break;	}	return null;}function LimitMultiLineLength(obj){	var eAny_Event = window.event;	var iKey = eAny_Event.keyCode;	if ((obj.value.length >= obj.maxLength) && ((iKey > 33 && iKey < 255) || (iKey > 95 && iKey < 106)) && (iKey != 13))	{		if (obj.ErrorMessage)		{			alert(obj.ErrorMessage);		}		window.event.returnValue=false;	}}function checkMultiLineLength(obj){	if(obj){  		if (obj.value.length >= obj.maxLength)		{			if (obj.ErrorMessage)			{				alert(obj.ErrorMessage);			}			return false;		}		return true;	}else {		return true;	}}function completeActivity(theButton){	eval('document.mainForm.nextActivity.value = document.mainForm.' + theButton.name + 'Value.value;');	document.mainForm.submit();}  function submitReportForm(format) {	document.mainForm.startDate.disabled = false;    document.mainForm.endDate.disabled = false;   	   	   	if(document.mainForm.reportId.selectedIndex == 0)    {    	alert("Please select a Report Name ");	    document.mainForm.reportId.focus();    	return false;    }     	   	if(document.mainForm.startDate.value=="")    	{    	alert("Please enter Start Date");	    document.mainForm.startDate.focus();    	return false;   	} 	if(document.mainForm.endDate.value=="")  	{    	alert("Please enter End Date");	    document.mainForm.endDate.focus();    	return false;    }           if(document.mainForm.organizationalUnit.selectedIndex == 0)    {    	alert("Please select an Organization Unit ");	    document.mainForm.organizationalUnit.focus();    	return false;    }                  	document.mainForm.format.value=format;	  	return true; }   function checkForExceptionalReport(element){  if(element.value){	  if(document.mainForm.reportId.options[element.selectedIndex].text =='Client Work Order And Work Unit Requests Count'){  				 var today = new Date()		     var day = today.getDate()		     var month = today.getMonth() + 1;		     var year = today.getFullYear();             var date = month + "/" + day  + "/"	+ year;	         	     document.mainForm.startDate.disabled = true;		     document.mainForm.endDate.disabled = true;   	 			  	    	 if(document.mainForm.startDate.value==""){				document.mainForm.startDate.value=date;	    	 }    	 		  	    	 if(document.mainForm.endDate.value==""){				document.mainForm.endDate.value=date;	    	 }    	 		   	    }else {    	  document.mainForm.startDate.disabled = false;		  document.mainForm.endDate.disabled = false;  	    }  }else {   		document.mainForm.startDate.disabled = false;	    document.mainForm.endDate.disabled = false;    } }  function submitActivate() { 	document.mainForm.isActivateSubmitted.value='true';	document.mainForm.submit(); }  function update_dateranges(myform, startDateObj, endDateObj) {	var myToDateIndex = myform.workOrderQuickDateSelect.selectedIndex;	var today = new Date();	//note the + 1!	var month = today.getMonth() + 1;	var day = today.getDate();	var year = today.getFullYear();		//Sunday = 0, Saturday = 6;	var weekday = today.getDay();	var offsetDate = new Date();			switch (myToDateIndex) 	{ 		//select please (use as a clear as well because we are nice) and Clear Dates option 		case 0: 		case 8: 			startDateObj.value = "";		  	endDateObj.value = "";		 	break;		 //TODAY		 case 1:		 	startDateObj.value = month + "/" + day + "/" + year ;		  	endDateObj.value = month + "/" + day + "/" + year ;		 	break;		//YESTERDAY		 case 2:	    	offsetDate.setDate(day-1); 			startDateObj.value = (offsetDate.getMonth()+1) + "/" + offsetDate.getDate() + "/" + offsetDate.getYear();		  	endDateObj.value = (offsetDate.getMonth()+1) + "/" + offsetDate.getDate() + "/" + offsetDate.getYear();		 	break;		 		//This WTD 		case 3: 			offsetDate.setDate(day-weekday); 			startDateObj.value = (offsetDate.getMonth()+1) + "/" + offsetDate.getDate() + "/" + offsetDate.getYear();		 			 	endDateObj.value = month + "/" + day + "/" + year ;		 	break;		//Last WTD 		case 4: 			offsetDate.setDate(day-7-weekday); 			startDateObj.value = (offsetDate.getMonth()+1) + "/" + offsetDate.getDate() + "/" + offsetDate.getYear();		 			 	offsetDate = new Date();		 	offsetDate.setDate(day-weekday-1);		 	endDateObj.value = (offsetDate.getMonth()+1) + "/" + offsetDate.getDate() + "/" + offsetDate.getYear();		 	break; 		 	//This MTD		 	case 5:	 		offsetDate.setDate(1);	 		startDateObj.value = (offsetDate.getMonth()+1) + "/" + offsetDate.getDate() + "/" + offsetDate.getYear();	 			 		endDateObj.value = month + "/" + day + "/" + year ;	 		break;	 	//Last MTD		 	case 6:	 		if (month > 1)			{				//month is 1 based for display usage - adjust				offsetDate.setMonth(month-2);			}			else			{				//roll back to december of previous year				offsetDate.setMonth(11);				offsetDate.setYear(year-1);			}			offsetDate.setDate(1);		 		startDateObj.value = (offsetDate.getMonth()+1) + "/" + offsetDate.getDate() + "/" + offsetDate.getYear();	 			 		offsetDate = new Date()	 		offsetDate.setDate(0);	 		endDateObj.value = (offsetDate.getMonth()+1) + "/" + offsetDate.getDate() + "/" + offsetDate.getYear();;	 		break;		 	//YTD		 	case 7:	 		startDateObj.value = "1/1/" + year;	 			 		endDateObj.value = month + "/" + day + "/" + year ;	 		break;	 	 	} 	 }