
		
			var defaultMAOverhead = 50;
			var defaultASOverhead = 50;
			
			var setMAOverheadDefaultValue = true;
			var setASOverheadDefaultValue = true;
			
			var defaultPSPercents = 20;
			var defaultMAPercents = 40;
			var defaultASPercents = 60;

			var cabinetFloorspace = 3.2;
			var defaultBoxRetrieval = 25;
			var docPCRetrieval = 10;
			var docPCFiling = 15;
			var costCopying = 0.15;
			var docPCCopying = 1.5;
			var costPrinting = 25;


			
			
			/********************************************************************/
			/* we do not want people to copy the text on our web page */

			var browserName=navigator.appName; 
			if (browserName.indexOf("Microsoft")!=-1){
				if (typeof document.onselectstart != "undefined"){
					document.onselectstart=new Function ("return false");
				}
			}	

			var allowedTags=["input", "textarea", "select"]
			allowedTags=allowedTags.join("|");

			function disableselect(e)
			{
				if (allowedTags.indexOf(e.target.tagName.toLowerCase()) == -1){
					return false;
				}

			}

			function reEnable()
			{
				return true;
			}

			function disableIE(e){
				//

				if(!event.srcElement.isTextEdit){
					document.onselectstart = new Function ("return false");
				}else{
					document.onselectstart = new Function ("return true");
				}
				
			}

			if (browserName.indexOf("Microsoft")!=-1){
				document.onmousedown = disableIE;
				document.onmouseup=reEnable;
				
			}else{
				document.onmousedown=disableselect;
				document.onmouseup=reEnable;
			}


			/********************************************************************/

			window.onload = function() {
							populateMAOverHead();
							populateASOverHead();
							resetPercents();
							var form = document.forms[0];
							if(!IsEmpty(form.roiData)  && !IsEmpty(form.grandTotalSavingsData)){
								document.getElementById("grandTotalSavings1").innerHTML = form.grandTotalSavingsData.value;
								document.getElementById("grandTotalSavings2").innerHTML = form.grandTotalSavingsData.value;
								document.getElementById("roi1").innerHTML = form.roiData.value;
								document.getElementById("roi2").innerHTML = form.roiData.value;
							}
						}
			
			function populateMAOverHead() {
				var maOverheadValue = "";
				try{
					maOverheadValue = parseInt(document.getElementById("MAOverheadField").value);
				}catch(Exception){
					setMAOverheadDefaultValue = true;
				}
				
				if(setMAOverheadDefaultValue || isNaN(maOverheadValue)){
					document.getElementById("MAOverheadField").value = defaultMAOverhead;
				}
			}
			
			function populateASOverHead() {
				var asOverheadValue = "";
				try{
					asOverheadValue = parseInt(document.getElementById("ASOverheadField").value);
				}catch(Exception){
					setASOverheadDefaultValue = true;
				}
				if(setASOverheadDefaultValue || isNaN(asOverheadValue)){
					document.getElementById("ASOverheadField").value = defaultASOverhead;
				}
			}


			function maOverHeadChanged(){
				setMAOverheadDefaultValue = false;
			}

			function asOverHeadChanged(){
				setASOverheadDefaultValue = false;
			}

			function resetOverHeadsChanged(){
				setMAOverheadDefaultValue = true;
				setASOverheadDefaultValue = true;
			}


			function validateOverheads(){

				var maOverheadValue = parseInt(document.getElementById("MAOverheadField").value);

				var asOverheadValue = parseInt(document.getElementById("ASOverheadField").value);

				if(maOverheadValue < 0 || maOverheadValue > 99){
					alert("Percent value must be between 0 and 100.");
					document.RoiCalculatorForm.MAOverheadField.focus();
					return false;
				}else if(asOverheadValue < 0 || asOverheadValue > 99){
					alert("Percent value must be between 0 and 100.");
					document.RoiCalculatorForm.ASOverheadField.focus();
					return false;
				}
				return true;
			}
			
			function resetOverheads() {
				
				document.getElementById("MAOverheadField").value = "";
				document.getElementById("ASOverheadField").value = "";
				
				populateMAOverHead();
				populateASOverHead();
				/*****/
				resetOverHeadsChanged();
				/*****/

				calculateMonthlyCosts();
				calculatePerformanceSavins();
			}
			
			function validateStaffCount() {
				var staffCount = document.getElementById("numberOfSField");
				var pStaffCount = document.getElementById("numberOfPSField");
				var maStaffCount = document.getElementById("numberOfMAField");
				var asStaffCount = document.getElementById("numberOfASField");
				var count = parseInt(staffCount.value);
				
				if(isNaN(count)) {
					staffCount.value = 0;
				}
				
				if(isNaN(parseInt(pStaffCount.value))) {
					pStaffCount.value = 0;
				}
				
				if(isNaN(parseInt(maStaffCount.value))) {
					maStaffCount.value = 0;
				}
				
				if(isNaN(parseInt(asStaffCount.value))) {
					asStaffCount.value = 0;
				}
				
				var sum = parseInt(pStaffCount.value) + parseInt(maStaffCount.value) + parseInt(asStaffCount.value);
				if(count > sum) {
					staffCount.value = sum;
				}
			}
			
			function validatePercent(){
				var psDocumentTimePercent = parseInt(document.getElementById("psDocumentTimePercent").value);
				var maDocumentTimePercent = parseInt(document.getElementById("maDocumentTimePercent").value);
				var asDocumentTimePercent = parseInt(document.getElementById("asDocumentTimePercent").value);
				if(psDocumentTimePercent < 0 || psDocumentTimePercent > 100){
					alert("Percent value must be between 0 and 100.");
					document.RoiCalculatorForm.psDocumentTimePercent.focus();
					return false;
				}else if(maDocumentTimePercent < 0 || maDocumentTimePercent > 100){
					alert("Percent value must be between 0 and 100.");
					document.RoiCalculatorForm.maDocumentTimePercent.focus();
					return false;
				}else if(asDocumentTimePercent < 0 || asDocumentTimePercent > 100){
					alert("Percent value must be between 0 and 100.");
					document.RoiCalculatorForm.asDocumentTimePercent.focus();
					return false;
				}
				return true;
			}
			
			// Time spent working with documents
			function resetPercents() {
				document.getElementById("psDocumentTimePercent").value = defaultPSPercents;
				document.getElementById("maDocumentTimePercent").value = defaultMAPercents;
				document.getElementById("asDocumentTimePercent").value = defaultASPercents;
				calculateMonthlyCosts();
			}
			
			function calculateMonthlyCosts() {
				calculatePSMonthlyCost();
				calculateMAMonthlyCost();
				calculateASMonthlyCost();
			}
			
			function calculatePSMonthlyCost() {
				var E17 = parseInt(document.getElementById("psDocumentTimePercent").value);
				if(IsEmpty(document.getElementById("psDocumentTimePercent")) || isNaN(E17)) {
					E17 = 0;
				}	
				
				var E5 = parseInt(document.getElementById("numberOfPSField").value);
				if(IsEmpty(document.getElementById("numberOfPSField")) || isNaN(E5)) {
					E5 = 0;
				}	
				
				var I5 = parseInt(document.getElementById("PSBillableRateField").value); 
				if(IsEmpty(document.getElementById("PSBillableRateField")) || isNaN(I5)) {
					I5 = 0;
				}	
					
				var psMonthlyfactor = 166;
				
				var result = (E17/100)*(E5*I5)*psMonthlyfactor;
				//alert(result + " = " + E17 + "/100 *" + E5 + "*("+I5+") * 166" );
				document.getElementById("psDocumentTimeMonthly").value = result.toFixed(2);
				calculateRetrievingDocumentsField();
			}
			
			function calculateMAMonthlyCost() {
				var E19 = parseInt(document.getElementById("maDocumentTimePercent").value);
				if(IsEmpty(document.getElementById("maDocumentTimePercent")) || isNaN(E19)) {
					E19 = 0;
				}	
				
				var E7 = parseInt(document.getElementById("numberOfMAField").value);
				if(IsEmpty(document.getElementById("numberOfMAField")) || isNaN(E7)) {
					E7 = 0;
				}	
				
				var I7 = parseInt(document.getElementById("MABillableRateField").value); 
				if(IsEmpty(document.getElementById("MABillableRateField")) || isNaN(I7)) {
					I7 = 0;
				}	
				
				var Q7 = parseInt(document.getElementById("MAOverheadField").value); 
				if(IsEmpty(document.getElementById("MAOverheadField")) || isNaN(Q7)) {
					Q7 = 0;
				}	
				
				var maMonthlyfactor = 166;

				if(document.RoiCalculatorForm.MAType[1].checked) {
					maMonthlyfactor = 1/12;
				}

				var tmp = (1 + Q7/100) * I7;
				var result = (E19/100)*(E7*tmp)*maMonthlyfactor;
				//alert(result + " = " + E19 + "/100 *" + E7 + "*("+I7 +"+"+ Q7+"%) * " + maMonthlyfactor );
				document.getElementById("maDocumentTimeMonthly").value = result.toFixed(2);
				calculateRetrievingDocumentsField();
			}
			
			function calculateASMonthlyCost() {
				var E21 = parseInt(document.getElementById("asDocumentTimePercent").value);
				if(IsEmpty(document.getElementById("asDocumentTimePercent")) || isNaN(E21)) {
					E21 = 0;
				}	
				
				var E9 = parseInt(document.getElementById("numberOfASField").value);
				if(IsEmpty(document.getElementById("numberOfASField")) || isNaN(E9)) {
					E9 = 0;
				}	
				
				var I9 = parseInt(document.getElementById("ASBillableRateField").value); 
				if(IsEmpty(document.getElementById("ASBillableRateField")) || isNaN(I9)) {
					I9 = 0;
				}	
				
				var Q9 = parseInt(document.getElementById("ASOverheadField").value); 
				if(IsEmpty(document.getElementById("ASOverheadField")) || isNaN(Q9)) {
					Q9 = 0;
				}	
				
				var asMonthlyfactor = 166;

				if(document.RoiCalculatorForm.ASType[1].checked) {
					asMonthlyfactor = 1/12;
				}
				var tmp = (1 + Q9/100) * I9;
				var result = (E21/100)*(E9*tmp)*asMonthlyfactor;
				//alert(result + " = " + E21 + "/100 *" + E9 + "*("+I9 +"+"+ Q9+"%) * " + asMonthlyfactor );
				document.getElementById("asDocumentTimeMonthly").value = result.toFixed(2);
				calculateRetrievingDocumentsField();
				calculateFilingDocumentsField();
			}
			
			// Document storage.
			function calculateTotalFloorspace() {
				var cabinetsCount = document.getElementById("cabinetsCount").value;
				if(isNaN(cabinetsCount)) {
					cabinetsCount = 0;
					document.getElementById("cabinetsCount").value = 0;
				}
				document.getElementById("floorSpace").value = (cabinetFloorspace*cabinetsCount).toFixed(1);
			}
			
			function updateSpaceCost() {
				var officeSpaceCost = document.getElementById("officeSpaceCost").value;
				if(isNaN(officeSpaceCost)) {
					document.getElementById("officeSpaceCost").value = 5;
				}
			}
			
			
			var isCostOutsideStorageSet = false;
			
			
			var isCostOutsideStorageRetrievalSet = false;
			function setCostOutsideStorageRetrieval() {
				if(isNaN(document.getElementById("costOutsideStorageRetrieval").value)) {
					calculateOutsideStorageRetrieval();
					return;
				}
				isCostOutsideStorageRetrievalSet = true;
			}
			
			function calculateOutsideStorageRetrieval() {

				var numberBoxesRetrievedMonthly = parseInt(document.getElementById("numberBoxesRetrievedMonthly").value);
				var retrievalFees = parseInt(document.getElementById("retrievalFees").value);
				var result = Math.round(numberBoxesRetrievedMonthly * retrievalFees);
				if(!isNaN(result)){
					document.getElementById("costOutsideStorageRetrieval").value = result;
				}

				calculateOutsideStorageMonthly();
			}

			function populateNumberBoxesRetrievedMonthly(){
				if(isNaN(document.getElementById("numberBoxesRetrievedMonthly").value)){
					document.getElementById("numberBoxesRetrievedMonthly").value = 0;
				}
			}

			function populateRetrievalFees(){
				if(isNaN(document.getElementById("retrievalFees").value)){
					document.getElementById("retrievalFees").value = 0;
				}
			}
			
			function calculateMonthlyCostFillingOfficeSpace() {
				var floorSpace = document.getElementById("floorSpace").value;
				if(isNaN(floorSpace)) {
					floorSpace = 0;
					document.getElementById("floorSpace").value = 0;
				}
				var officeSpaceCost = document.getElementById("officeSpaceCost").value;
				var result = Math.round(floorSpace*officeSpaceCost);
				document.getElementById("costFilingCabinet").value = result;
				document.getElementById("officeSpaceSavings").value = result;
				calculateTotalMonthlySavings();
				
				/*if(isNaN(document.getElementById("costOutsideStorage").value) || !isCostOutsideStorageSet) {
					document.getElementById("costOutsideStorage").value = Math.round(floorSpace*officeSpaceCost);
				}*/
			}
			
			var isSavingOutsideStorageset = false;
			function setSavingOutsideStorage() {
				var savingOutsideStorage = document.getElementById("cabinetsCount").value;
				if(!isNaN(savingOutsideStorage)) {
					isSavingOutsideStorageset = true;
					return;
				}
				calculatePerformanceSavins();
			}
			
			function calculatePerformanceSavins() {
				if(isSavingOutsideStorageset) {
					return;
				}
				
				var cabinetsCount = document.getElementById("cabinetsCount").value;
				if(isNaN(cabinetsCount)) {
					cabinetsCount = 0;
				}

				var E39 = parseInt(document.getElementById("numberBoxesRetrievedMonthly").value);
				if(isNaN(E39)) {
					E39 = 0;
				}
				
				var I9 = parseInt(document.getElementById("ASBillableRateField").value);
				if(isNaN(I9)) {
					I9 = 0;
				}
				
				var Q9 = parseInt(document.getElementById("ASOverheadField").value);
				if(isNaN(Q9)) {
					Q9 = 0;
				}
				
				var factor = 1;
				if(document.RoiCalculatorForm.ASType[1].checked) {
					factor = 1/(166 * 12);
				}
				document.getElementById("savingOutsideStorage").value = Math.round(E39 * (1 + Q9/100) * I9 * factor);
				calculateOutsideStorageMonthly();
			}
		
			function calculateOutsideStorageMonthly() {
				var costOutsideStorage = parseInt(document.getElementById("costOutsideStorage").value);
				if(IsEmpty(document.getElementById("costOutsideStorage")) || isNaN(costOutsideStorage)) {
					costOutsideStorage = 0;
				}
				
				var costOutsideStorageRetrieval = parseInt(document.getElementById("costOutsideStorageRetrieval").value);
				if(IsEmpty(document.getElementById("costOutsideStorageRetrieval")) || isNaN(costOutsideStorageRetrieval)) {
					costOutsideStorageRetrieval = 0;
				}
				
				var savingOutsideStorage = parseInt(document.getElementById("savingOutsideStorage").value);
				if(IsEmpty(document.getElementById("costOutsideStorageRetrieval")) || isNaN(savingOutsideStorage)) {
					savingOutsideStorage = 0;
				}
				
				var result = Math.round(costOutsideStorage + costOutsideStorageRetrieval + savingOutsideStorage);
				//costOutsideStorage + costOutsideStorageRetrieval + savingOutsideStorage
				document.getElementById("costOutsideStorageMonthly").value = result;
				document.getElementById("outsideStorageSavings").value = result;
				calculateTotalMonthlySavings();
			}
			
			function resetFees() {
				document.getElementById("retrievalFees").value = defaultBoxRetrieval;
				isCostOutsideStorageSet = false;
				calculateMonthlyCostFillingOfficeSpace();
					
				isCostOutsideStorageRetrievalSet = false;
				calculateOutsideStorageRetrieval();
					
				isSavingOutsideStorageset = false;
				calculatePerformanceSavins();
				
				calculateOutsideStorageMonthly();
			}
			
			//Document handling costs table
			var isRetrievingDocumentsSet = false;
			function calculateRetrievingDocumentsField() {
				if(isRetrievingDocumentsSet) {
					return;
				}
				
				var psDocumentTimeMonthly = document.getElementById("psDocumentTimeMonthly").value;
				if(IsEmpty(document.getElementById("psDocumentTimeMonthly")) || isNaN(psDocumentTimeMonthly)) {
					psDocumentTimeMonthly = 0;
				}
				
				var maDocumentTimeMonthly = document.getElementById("maDocumentTimeMonthly").value;
				if(IsEmpty(document.getElementById("maDocumentTimeMonthly")) || isNaN(maDocumentTimeMonthly)) {
					maDocumentTimeMonthly = 0;
				}
				
				var asDocumentTimeMonthly = document.getElementById("asDocumentTimeMonthly").value;
				if(IsEmpty(document.getElementById("asDocumentTimeMonthly")) || isNaN(asDocumentTimeMonthly)) {
					asDocumentTimeMonthly = 0;
				}
				
				var result = docPCRetrieval*(parseFloat(asDocumentTimeMonthly) + parseFloat(maDocumentTimeMonthly) + parseFloat(psDocumentTimeMonthly))/100;
				document.getElementById("retrievingDocuments").value = Math.round(result);
				calculateDocumentHandlingCost();
			}
			
			function setRetrievingDocuments() {
				/*if(isNaN(document.RoiCalculatorForm.retrievingDocuments.value)){
					document.RoiCalculatorForm.retrievingDocuments.value = 0;
					return;
				}*/
				isRetrievingDocumentsSet = true;
				calculateDocumentHandlingCost();
			}
			
			var isFilingDocumentsSet = false;
			function calculateFilingDocumentsField() {
				if(isFilingDocumentsSet) {
					return;
				}
				
				var asDocumentTimeMonthly = document.getElementById("asDocumentTimeMonthly").value;
				if(IsEmpty(document.getElementById("asDocumentTimeMonthly")) || isNaN(asDocumentTimeMonthly)) {
					asDocumentTimeMonthly = 0;
				}
				
				var result = docPCFiling*(parseFloat(asDocumentTimeMonthly))/100;
				document.getElementById("filingDocuments").value = Math.round(result);
				calculateDocumentHandlingCost();
			}
			
			function setFilingDocuments() {
				isFilingDocumentsSet = true;
				calculateDocumentHandlingCost();
			}
			
			var isPrintingCostsSet = false;
			function calculatePrintingCosts() {
				if(isPrintingCostsSet) {
					return;
				}
				
				var numberOfPSField = document.getElementById("numberOfPSField").value;
				if(IsEmpty(document.getElementById("numberOfPSField")) || isNaN(parseInt(numberOfPSField))) {
					numberOfPSField = 0;
				}
				
				var numberOfMAField = document.getElementById("numberOfMAField").value;
				if(IsEmpty(document.getElementById("numberOfMAField")) || isNaN(parseInt(numberOfMAField))) {
					numberOfMAField = 0;
				}
				
				var numberOfASField = document.getElementById("numberOfASField").value;
				if(IsEmpty(document.getElementById("numberOfASField")) || isNaN(parseInt(numberOfASField))) {
					numberOfASField = 0;
				}
				
				var result = costPrinting*(parseInt(numberOfPSField) + parseInt(numberOfMAField) + parseInt(numberOfASField));
				document.getElementById("printingCosts").value = result;
				calculateDocumentHandlingCost();
			}
			
			function setPrintingCosts() {
				isPrintingCostsSet = true;
				calculateDocumentHandlingCost();
			}
			
			var isCopyingDocumentsSet = false;
			function calculateCopyingDocuments() {
				if(isCopyingDocumentsSet) {
					return;
				}
				
				var cabinetsCount = document.getElementById("cabinetsCount").value;
				if(isNaN(cabinetsCount)) {
					cabinetsCount = 0;
				}
				
				var result = (docPCCopying/100)*10000*parseInt(cabinetsCount)*costCopying;
				if(isNaN(result)) {
					result = 0;
				}
				document.getElementById("copyingDocuments").value = Math.round(result);
				calculateDocumentHandlingCost();
			}
			
			function setCopyingDocuments() {
				isCopyingDocumentsSet = true;
				calculateDocumentHandlingCost();
			}
			
			function calculateDocumentHandlingCost() {
				var copyingDocuments = document.getElementById("copyingDocuments").value;
				if(isNaN(copyingDocuments) || IsEmpty(document.RoiCalculatorForm.copyingDocuments)) {
					copyingDocuments = 0;
				}
				
				var printingCosts = document.getElementById("printingCosts").value;
				if(isNaN(printingCosts) || IsEmpty(document.RoiCalculatorForm.printingCosts)) {
					printingCosts = 0;
				}
				
				var filingDocuments = document.getElementById("filingDocuments").value;
				if(isNaN(filingDocuments) || IsEmpty(document.RoiCalculatorForm.filingDocuments)) {
					filingDocuments = 0;
				}
				
				var retrievingDocuments = document.getElementById("retrievingDocuments").value;
				if(isNaN(retrievingDocuments) || IsEmpty(document.RoiCalculatorForm.retrievingDocuments)) {
					retrievingDocuments = 0;
				}
				var result = parseFloat(copyingDocuments) + parseFloat(printingCosts) + parseFloat(filingDocuments) + parseFloat(retrievingDocuments);
				document.getElementById("documentHandlingCost").value = Math.round(result);
				document.getElementById("documentHandlingSavings").value = Math.round(result);
				calculateTotalMonthlySavings();
			}
			
			function resetCosts() {
				isCopyingDocumentsSet = false;
				calculateCopyingDocuments();
				
				isPrintingCostsSet = false;
				calculatePrintingCosts();
				
				isFilingDocumentsSet = false;
				calculateFilingDocumentsField();
				
				isRetrievingDocumentsSet = false;
				calculateRetrievingDocumentsField();
			}
			
			function calculateTotalMonthlySavings() {
				var officeSpaceSavings = document.getElementById("officeSpaceSavings").value;
				if(IsEmpty(document.RoiCalculatorForm.officeSpaceSavings) || isNaN(officeSpaceSavings)){
					officeSpaceSavings = 0;
				}

				var outsideStorageSavings = document.getElementById("outsideStorageSavings").value;
				if(IsEmpty(document.RoiCalculatorForm.outsideStorageSavings) || isNaN(outsideStorageSavings)){
					outsideStorageSavings = 0;
				}
				var documentHandlingSavings = document.getElementById("documentHandlingSavings").value;
				if(IsEmpty(document.RoiCalculatorForm.documentHandlingSavings) || isNaN(documentHandlingSavings)){
					documentHandlingSavings = 0;
				}
				var result = parseFloat(officeSpaceSavings) + parseFloat(outsideStorageSavings) + parseFloat(documentHandlingSavings);
				document.getElementById("totalMonthlySavings").value = Math.round(result);
			}
			
			var isRemoteWorkerPerformance = false;
			function calculateRemoteWorkerPerformance() {
				if(isRemoteWorkerPerformance) {
					return;
				}
				var numberOfSField = document.getElementById("numberOfSField").value;
				if(isNaN(numberOfSField)) {
					numberOfSField = 0;
				}
				
				var result = 100*numberOfSField;
				document.getElementById("remoteWorkerPerformance").value = result;
				calculateTotalMonthlySavingsGains();
			}
			
			function setRemoteWorkerPerformance() {
				isRemoteWorkerPerformance = true;
				calculateTotalMonthlySavingsGains();
			}
			
			var isCompetativeAdvantages = false;
			function calculateCompetativeAdvantages() {
				if(isCompetativeAdvantages) {
					return;
				}
				
				var cabinetsCount = document.getElementById("cabinetsCount").value;
				if(IsEmpty(document.RoiCalculatorForm.cabinetsCount) || isNaN(cabinetsCount)) {
					cabinetsCount = 0;
				}
				
				var numberOfPSField = document.getElementById("numberOfPSField").value;
				if(IsEmpty(document.RoiCalculatorForm.numberOfPSField) || isNaN(numberOfPSField)) {
					numberOfPSField = 0;
				}
				
				//var result = 100*cabinetsCount*numberOfPSField;
				var sum = 0; 
				var i = 1;
				for(i=1; i<=cabinetsCount; i++){
					sum += 1/i;
				}
				var result = 100*numberOfPSField*sum;
				document.getElementById("competativeAdvantages").value = Math.round(result);
				calculateTotalMonthlySavingsGains();
			}
			
			var isBusinessContinuation = false;
			function updateBusinessContinuation(){
				isBusinessContinuation = true;
			}

			function calculateBusinessContinuation(){
				if(isBusinessContinuation){
					return;
				}
				var E5 = document.getElementById("numberOfPSField");
				var E7 = document.getElementById("numberOfMAField");
				var E9 = document.getElementById("numberOfASField");
				
				if(IsEmpty(E5) || isNaN(parseInt(E5.value))){
					E5 = 0;
				}
				if(IsEmpty(E7) || isNaN(parseInt(E7.value))){
					E7 = 0;
				}
				if(IsEmpty(E9) || isNaN(parseInt(E9.value))){
					E9 = 0;
				}

				var sum = parseInt(E5.value) + parseInt(E7.value) + parseInt(E9.value);
				var result = 0;
				var i=0;
				for(i=1 ;i<=sum; i++){
					result += 1/i;
				}

				document.getElementById("businessContinuation").value = Math.round(50*result);
			}
			
			function setCompetativeAdvantages() {
				isCompetativeAdvantages = true;
				calculateTotalMonthlySavingsGains();
			}
			
			function calculateTotalMonthlySavingsGains() {
			
				var remoteWorkerPerformance = document.getElementById("remoteWorkerPerformance").value;
				if(isNaN(parseFloat(remoteWorkerPerformance))) {
					remoteWorkerPerformance = 0;
				}
				
				var competativeAdvantages = document.getElementById("competativeAdvantages").value;
				if(isNaN(parseFloat(competativeAdvantages))) {
					competativeAdvantages = 0;
				}
				
				var businessContinuation = document.getElementById("businessContinuation").value;
				if(isNaN(parseFloat(businessContinuation))) {
					businessContinuation = 0;
				}
				
				var result = parseFloat(remoteWorkerPerformance) + parseFloat(competativeAdvantages) + parseFloat(businessContinuation);
				document.getElementById("totalMonthlySavingsGains").value = Math.round(result);
			}

			function doCalculateROI(){
				validateOverheads(); 
				calculateTotalSavings();
			}
			
			function calculateTotalSavings() { 
				//document.getElementById("totalTD").className = "tableBorder"; 
				//document.getElementById("total").style.visibility = "visible";
				//document.RoiCalculatorForm.calculateButton.value = "Recalculate";
	
				var totalMonthlySavings = document.getElementById("totalMonthlySavings").value;
				if(IsEmpty(document.RoiCalculatorForm.totalMonthlySavings) || isNaN(parseFloat(totalMonthlySavings))) {
					totalMonthlySavings = 0;
				}
				
				var totalMonthlySavingsGains = document.getElementById("totalMonthlySavingsGains").value;
				if(isNaN(parseFloat(totalMonthlySavingsGains))) {
					totalMonthlySavingsGains = 0;
				}
			
				var total = Math.round(parseFloat(totalMonthlySavingsGains) + parseFloat(totalMonthlySavings));

				document.getElementById("gts1data").width="50%";
				document.getElementById("grandTotalSavings1").innerHTML = "$" + total.toFixed(2);
				document.getElementById("grandTotalSavings2").innerHTML = "$" + total.toFixed(2);
				
				var cabinetsCount = parseInt(document.getElementById("cabinetsCount").value);
				if(IsEmpty(document.getElementById("cabinetsCount")) || isNaN(cabinetsCount)) {
					cabinetsCount = 0;
				}
			
				var numberOfPSField = parseInt(document.getElementById("numberOfPSField").value);
				if(IsEmpty(document.getElementById("numberOfPSField")) || isNaN(numberOfPSField)) {
					numberOfPSField = 0;
				}
				
				var numberOfMAField = parseInt(document.getElementById("numberOfMAField").value);
				if(IsEmpty(document.getElementById("numberOfMAField")) || isNaN(numberOfMAField)) {
					numberOfMAField = 0;
				}
				
				var numberOfASField = parseInt(document.getElementById("numberOfASField").value);
				if(IsEmpty(document.getElementById("numberOfASField")) || isNaN(numberOfASField)) {
					numberOfASField = 0;
				}
								
				var users = numberOfPSField + numberOfMAField + numberOfASField;
				if(users <= 5) {
					users = 5;
				} else if(users < 10) {
					users = 10;
				}
				var result = 0;
				if(users == 5) { /* threshold for basic system */
					result = 5295;
				} else if(cabinetsCount < 25 && users < 15) { /* threshold for large system */
					result = 4845;
				} else {
					result = 14045;
				}
				result += 320*users; /* 20 is CAL @ ratio of 1 per 2 MF users (concurrency) */
				
				/* note 1 yr support/maint included but no tax in calc */
				
				if(total > 0) {
					document.getElementById("roi1").innerHTML = (result/total).toFixed(1) + " months";
					document.getElementById("roi2").innerHTML = (result/total).toFixed(1) + " months";
				} else {
					document.getElementById("roi1").innerHTML = "";
					document.getElementById("roi2").innerHTML = "";
				} 
			}

			function IsEmpty(aTextField) {
				try{
				   if ((aTextField.value.length==0) ||
						(aTextField.value==null)) {
					  return true;
				   }
				}catch(Exception){
					return true;
				}
			   return false;
			}

			function beforeSubmit(){
				var email = document.getElementById("email").value;
				if(!validateEmail(email)){
					alert("Please enter valid email.");
					document.getElementById("email").focus();
					return false;
				}

				var grandTotalSavings1 = document.getElementById("grandTotalSavings1").innerHTML;
				var roi1 = document.getElementById("roi1").innerHTML;
				if(grandTotalSavings1.indexOf("?") != -1
					||roi1.indexOf("Continue") != -1){
					alert("No result!\nPlease, fill out the form to get ROI.")
					return false;
				}
				populateHiddenFields();
				return true;
			}

			function populateHiddenFields(){
				document.RoiCalculatorForm.grandTotalSavingsData.value = document.getElementById("grandTotalSavings1").innerHTML;
				document.RoiCalculatorForm.roiData.value = document.getElementById("roi1").innerHTML;
			}

			function validateEmail(str){
				var at="@";
				var dot=".";
				var lat=str.indexOf(at);
				var lstr=str.length;
				var ldot=str.indexOf(dot);
				if (str.indexOf(at)==-1){
				   return false;
				}

				if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
				   return false;
				}

				if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
					return false;
				}

				 if (str.indexOf(at,(lat+1))!=-1){
					return false;
				 }

				 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
					return false;
				 }

				 if (str.indexOf(dot,(lat+2))==-1){
					return false;
				 }
				
				 if (str.indexOf(" ")!=-1){
					return false;
				 }

				 return true;
			}