﻿
var Page = {
	downloadDocumentFormValidator: {},
	isDownloadDocumentDropDownActive: false,
	isDownloadDocumentDropDownAnimating: false,
	load: function() {
		new SmoothScroll();
		Page.initDownloadDocument();
		Page.initCalc();
	},
	ValidateElem: function(isValitaded, elem, validatorName) {
		if (isValitaded) {
			if (elem.hasClass('FormElemError')) elem.removeClass('FormElemError');
		}
		else {
			if (!elem.hasClass('FormElemError')) elem.addClass('FormElemError');
		}
	},
	initDownloadDocument: function(e) {
		if ($('DownloadDocumentButtonDiv') && $$('#DownloadDocumentButtonDiv a')[0].getProperty('href').indexOf('void') > -1) {
			new ManageLabels('DownoadDocumentSignUpForm');
			$$('#DownloadDocumentButtonDiv a').addEvent('click', Page.animateDownoadDocumentDropDown);
			$('DownoadDocumentSignUpForm').addEvent('submit', Page.downloadDocumentSignUpFormSubmit);
			Page.downloadDocumentFormValidator = new FormValidator('DownoadDocumentSignUpForm', { errorPrefix: '', evaluateFieldsOnBlur: false, onElementValidate: Page.ValidateElem });
		}
	},
	initCalc: function(e) {
		if ($('GuardTraxROICalculatorInputsDiv')) {
			document.addEvent('keypress', Page.procGuardTraxCalc);
			$$('#GuardTraxROICalculatorInputsBodyDiv input, #GuardTraxROICalculatorInputsBodyDiv select').addEvent('blur', Page.procGuardTraxCalc);
		}
		else if ($('VericomROICalculatorInputsDiv')) {
			document.addEvent('keypress', Page.procVericomCalc);
			$$('#VericomROICalculatorInputsBodyDiv input').addEvent('blur', Page.procVericomCalc);
		}
	},
	procGuardTraxCalc: function(e) {
		var weeklyBillableHours = $('WeeklyBillableHoursText').get('value').toInt();
		var averageWeeklyHours = $('AverageWeeklyHoursText').get('value').toInt();
		var averageHourlyRatePerOfficer = $('AverageHourlyRatePerOfficerText').get('value').toFloat();
		var averageHourlyRatePerSupervisorVehicle = $('AverageHourlyRatePerSupervisorVehicleText').get('value').toFloat();
		var overheadHourlyWagePercentage = $('OverheadHourlyWagePercentageText').get('value').toInt();
		var averageWeeklyBillableHoursPerCustomer = $('AverageWeeklyBillableHoursPerCustomerText').get('value').toInt();
		var securityOfficersHavePhones = $('SecurityOfficersHavePhonesDropDown').get('value');
		var averageCostPerMonthPerPhone = $('AverageCostPerMonthPerPhoneText').get('value').toFloat();

		if ($type(weeklyBillableHours) == 'number' && $type(averageWeeklyHours) == 'number') {
			$('EstimatedSecurityOfficersValueDiv').innerHTML = (weeklyBillableHours / averageWeeklyHours).round();
		}
		var approximateTotalAnnualPayroll = '';
		if ($type(weeklyBillableHours) == 'number' && $type(averageHourlyRatePerOfficer) == 'number' && $type(overheadHourlyWagePercentage) == 'number') {
			approximateTotalAnnualPayroll = ((weeklyBillableHours * averageHourlyRatePerOfficer) * (1 - (overheadHourlyWagePercentage * .01)) * 52.5).toInt(); ;
			$('ApproximateTotalAnnualPayrollValueDiv').innerHTML = "$" + addCommas(approximateTotalAnnualPayroll.toInt());
		}
		var officerInefficiencyDollarsLost = '';
		if ($type(approximateTotalAnnualPayroll) == 'number') {
			officerInefficiencyDollarsLost = (approximateTotalAnnualPayroll * .4).toInt();
			$('OfficerInefficiencyDollarsLostValueDiv').innerHTML = '$' + addCommas(officerInefficiencyDollarsLost);
		}
		var lostBusinessDueToPerformance = '';
		if ($type(weeklyBillableHours) == 'number' && $type(averageHourlyRatePerOfficer) == 'number') {
			lostBusinessDueToPerformance = (weeklyBillableHours * averageHourlyRatePerOfficer * 52 * 0.25).toInt();
			$('LostBusinessDueToPerformanceValueDiv').innerHTML = '$' + addCommas(lostBusinessDueToPerformance);
		}
		var totalMobilePhoneUseAndAbuse = '';
		if ($type(weeklyBillableHours) == 'number' && $type(averageWeeklyBillableHoursPerCustomer) == 'number' && $type(averageCostPerMonthPerPhone) == 'number') {
			if (securityOfficersHavePhones == 'yes') {
				totalMobilePhoneUseAndAbuse = ((weeklyBillableHours / averageWeeklyBillableHoursPerCustomer) * (averageCostPerMonthPerPhone * 12 * 1.33)).toInt();
				$('TotalMobilePhoneUseAbuseValueDiv').innerHTML = "$" + addCommas(totalMobilePhoneUseAndAbuse);
			} else {
				totalMobilePhoneUseAndAbuse = 0;
				$('TotalMobilePhoneUseAbuseValueDiv').innerHTML = "$0";
			}
		}
		var fieldSupervisorSiteVisitCostPerShift = '';
		if ($type(weeklyBillableHours) == 'number' && $type(averageWeeklyBillableHoursPerCustomer) == 'number' && $type(averageHourlyRatePerSupervisorVehicle) == 'number') {
			fieldSupervisorSiteVisitCostPerShift = ((weeklyBillableHours / averageWeeklyBillableHoursPerCustomer) * averageHourlyRatePerSupervisorVehicle * 10 * 52).toInt();
			$('FieldSupervisorSiteVisitCostPerShiftValueDiv').innerHTML = "$" + addCommas(fieldSupervisorSiteVisitCostPerShift);
		}
		if ($type(weeklyBillableHours) == 'number' && $type(averageWeeklyBillableHoursPerCustomer) == 'number') {
			$('NumAccountServedValueDiv').innerHTML = addCommas((weeklyBillableHours / averageWeeklyBillableHoursPerCustomer).toInt());
		}
		if ($type(officerInefficiencyDollarsLost) == 'number' && $type(lostBusinessDueToPerformance) == 'number' && $type(totalMobilePhoneUseAndAbuse) == 'number' && $type(fieldSupervisorSiteVisitCostPerShift) == 'number') {
			$('CurrentOperationAnnualInefficienciesCostsValueDiv').innerHTML = "$" + addCommas((officerInefficiencyDollarsLost + lostBusinessDueToPerformance + totalMobilePhoneUseAndAbuse + fieldSupervisorSiteVisitCostPerShift).toInt());
		}

		var annualizedGuardTraxCost = '';
		if ($type(weeklyBillableHours) == 'number' && $type(averageWeeklyBillableHoursPerCustomer) == 'number') {
			annualizedGuardTraxCost = (weeklyBillableHours / averageWeeklyBillableHoursPerCustomer * 119.95 * 12).toInt();
			$('AnnualizedGuardTraxCostValueDiv').innerHTML = "$" + addCommas(annualizedGuardTraxCost);
		}
		var improvedCustomerRetentionOf10Percent = '';
		if ($type(weeklyBillableHours) == 'number' && $type(averageHourlyRatePerOfficer) == 'number') {
			improvedCustomerRetentionOf10Percent = ((weeklyBillableHours * averageHourlyRatePerOfficer * 52.5) * 0.15).toInt();
			$('ImprovedCustomerRetentionOf10PercentValueDiv').innerHTML = "$" + addCommas(improvedCustomerRetentionOf10Percent);
		}
		if ($type(totalMobilePhoneUseAndAbuse) == 'number') {
			$('100PercentEliminationOfMobilePhonesExcessiveChargesValueDiv').innerHTML = "$" + addCommas((totalMobilePhoneUseAndAbuse).toInt());
		}
		var securityOfficer15PercentProductivityImprovement = '';
		if ($type(approximateTotalAnnualPayroll) == 'number') {
			securityOfficer15PercentProductivityImprovement = (((approximateTotalAnnualPayroll * .4) * -1) + (approximateTotalAnnualPayroll * 0.25)).toInt() * -1;
			$('SecurityOfficer15PercentProductivityImprovementValueDiv').innerHTML = "$" + addCommas(securityOfficer15PercentProductivityImprovement);
		}
		var twentyFivePercentReductionInSiteInspectionsByFieldSupervisors = '';
		if ($type(fieldSupervisorSiteVisitCostPerShift) == 'number') {
			twentyFivePercentReductionInSiteInspectionsByFieldSupervisors = (fieldSupervisorSiteVisitCostPerShift * 0.25).toInt();
			$('25PercentReductionInSiteInspectionsByFieldSupervisorsValueDiv').innerHTML = "$" + addCommas(twentyFivePercentReductionInSiteInspectionsByFieldSupervisors);
		}
		if ($type(annualizedGuardTraxCost) == 'number' && $type(improvedCustomerRetentionOf10Percent) == 'number' && $type(totalMobilePhoneUseAndAbuse) == 'number' && $type(securityOfficer15PercentProductivityImprovement) == 'number' && $type(twentyFivePercentReductionInSiteInspectionsByFieldSupervisors) == 'number') {
			$('TotalSavingsWithGuardTraxValueDiv').innerHTML = "$" + addCommas((annualizedGuardTraxCost + improvedCustomerRetentionOf10Percent + totalMobilePhoneUseAndAbuse + securityOfficer15PercentProductivityImprovement + twentyFivePercentReductionInSiteInspectionsByFieldSupervisors).toInt());
		}
	},
	procVericomCalc: function(e) {
		var numVehicles = $('NumVehiclesText').get('value').toInt();
		var numMilesPerVehiclePerMonth = $('NumMilesPerVehiclePerMonthText').get('value').toInt();
		var costPerGallonOfFuel = $('CostPerGallonOfFuelText').get('value').toInt();
		var averageHourlyRateOfDrivers = $('AverageHourlyRateOfDriversText').get('value').toInt();
		var serviceCallFlatRate = $('ServiceCallFlatRateText').get('value').toInt();

		var monthlyMileageSavings = '';
		if ($type(numVehicles) == 'number' && $type(numMilesPerVehiclePerMonth) == 'number') {
			monthlyMileageSavings = ((numVehicles * numMilesPerVehiclePerMonth * 1.5) * .15).round();
			$('MonthlyMileageSavingsValueDiv').innerHTML = "$" + addCommas(monthlyMileageSavings);
		}
		var monthlyIdlingSavings = '';
		if ($type(numVehicles) == 'number' && $type(costPerGallonOfFuel) == 'number') {
			monthlyIdlingSavings = (numVehicles * costPerGallonOfFuel * 4).round();
			$('MonthlyIdlingSavingsValueDiv').innerHTML = "$" + addCommas(monthlyIdlingSavings);
		}
		var monthlyLaborSavings = '';
		if ($type(numVehicles) == 'number' && $type(averageHourlyRateOfDrivers) == 'number') {
			monthlyLaborSavings = (numVehicles * averageHourlyRateOfDrivers * 5).round();
			$('MonthlyLaborSavingsValueDiv').innerHTML = "$" + addCommas(monthlyLaborSavings);
		}
		var monthlyEfficiencySavings = '';
		if ($type(numVehicles) == 'number' && $type(serviceCallFlatRate) == 'number') {
			monthlyEfficiencySavings = (numVehicles * serviceCallFlatRate).round();
			$('MonthlyEfficiencySavingsValueDiv').innerHTML = "$" + addCommas(monthlyEfficiencySavings);
		}
		if ($type(numVehicles) == 'number' && $type(numMilesPerVehiclePerMonth) == 'number') {
			$('IncreasingWorkLoadAndOperationalEfficienciesSavingsValueDiv').innerHTML = "$" + addCommas(((numVehicles * numMilesPerVehiclePerMonth * 1.5) * .15).round());
		}
		if ($type(numVehicles) == 'number' && $type(costPerGallonOfFuel) == 'number') {
			$('LongIdleDurationReductionSavingsValueDiv').innerHTML = "$" + addCommas((numVehicles * costPerGallonOfFuel * 4).round());
		}
		if ($type(numVehicles) == 'number' && $type(averageHourlyRateOfDrivers) == 'number') {
			$('PayrollAndOvertimeReductionSavingsValueDiv').innerHTML = "$" + addCommas((numVehicles * averageHourlyRateOfDrivers * 5).round());
		}
		if ($type(numVehicles) == 'number' && $type(serviceCallFlatRate) == 'number') {
			$('WorkLoadAndOperationalEfficienciesIncreaseValueDiv').innerHTML = "$" + addCommas((numVehicles * serviceCallFlatRate).round());
		}
		var grandTotalSavings = '';
		if ($type(monthlyMileageSavings) == 'number' && $type(monthlyIdlingSavings) == 'number' && $type(monthlyLaborSavings) == 'number' && $type(monthlyEfficiencySavings) == 'number') {
			grandTotalSavings = monthlyMileageSavings + monthlyIdlingSavings + monthlyLaborSavings + monthlyEfficiencySavings;
			$('GrandTotalSavingsValueDiv').innerHTML = "$" + addCommas(grandTotalSavings);
		}
		if ($type(numVehicles) == 'number' && $type(grandTotalSavings) == 'number') {
			$('ReturnOnInvestmentInFirstYearValueDiv').innerHTML = "$" + addCommas((((grandTotalSavings * 12) - ((399 + 100) * numVehicles)) - ((34.99 * 12) * numVehicles)).round());
		}
		if ($type(numVehicles) == 'number' && $type(monthlyIdlingSavings) == 'number' && $type(monthlyLaborSavings) == 'number' && $type(monthlyEfficiencySavings) == 'number') {
			$('ReturnOnInvestmentInThirdYearValueDiv').innerHTML = "$" + addCommas(((grandTotalSavings * 36) - ((399 + 100) * numVehicles)) - ((34.99 * 36) * numVehicles).round());
		}
	},
	animateDownoadDocumentDropDown: function(e) {
		if (!Page.isDownloadDocumentDropDownAnimating) {
			Page.isDownloadDocumentDropDownAnimating = true;
			if (Page.isDownloadDocumentDropDownActive) {
				$('DownloadDocumentDropDownDiv').tween('height', 0).get('tween').chain(function() { Page.isDownloadDocumentDropDownAnimating = false; });
				Page.isDownloadDocumentDropDownActive = false;
			} else {
				Page.isDownloadDocumentDropDownActive = true;
				$('DownloadDocumentDropDownDiv').tween('height', 341).get('tween').chain(function() { Page.isDownloadDocumentDropDownAnimating = false; }); ;
			}
		}
	},
	downloadDocumentSignUpFormSubmit: function(e) {
		e.stop();
		var requestJsonData = new Hash();
		requestJsonData.set('formId', e.target.id);

		if (Page.downloadDocumentFormValidator.validate()) {
			$('UserMessRequiredSpan').setStyle('display', 'none');
			requestJsonData.set('name', $('NameTextBox').get('value'));
			requestJsonData.set('company', $('CompanyTextBox').get('value'));
			requestJsonData.set('location', $('LocationTextBox').get('value'));
			requestJsonData.set('email', $('EmailTextBox').get('value'));
			requestJsonData.set('phone', $('PhoneTextBox').get('value'));
		} else {
			$('UserMessRequiredSpan').setStyle('display', 'block');
		}

		if (requestJsonData.getLength() > 1) { //form is valid, query service
			$('UserMessProcessingSpan').set('opacity', 0).setStyle('display', 'block').fade('in');

			var request = new Request.JSON({
				urlEncoded: false,
				headers: { 'Content-Type': 'application/json; charset=utf-8' },
				url: e.target.get('action'),
				data: JSON.encode(requestJsonData),
				onComplete: Page.onDownloadDocumentSignUpFormComplete
			}).send();
		}
	},
	onDownloadDocumentSignUpFormComplete: function(result) {
		var resultDataItem = result.d;
		if (resultDataItem.status == "success") {
			$('DownloadDocumentFormDiv').fade('out').get('tween').chain(function() {
				$('DownloadDocumentFormDiv').setStyle('display', 'none');
				$('DownloadDocumentConfirmationDiv').set('opacity', 0).setStyle('display', 'block').fade('in');
			});
		} else { //failed
			$('UserMessProcessingSpan').fade('out').get('tween').chain(function() {
				$('UserMessErrorSpan').set('opacity', 0).setStyle('display', 'block').fade('in');
			});
		}
	}
};

window.addEvent('load', Page.load);


