<!--
// When the page is ready
$(document).ready(function(){
	addDefaults();
});
   
   
// Input variables
var company="your company";
var employees="7,000";
var networkManagers="70";
var salary="$86,000";
var calls="7,000";
var callDuration="5";
var resolutionTime="2";
var incidents="6";
var downtime="4";
var impact="100";
var devices="326";

// Output variables
var avoidedHires=0;var productivityIncrease=0;var incidentManagement=0;var otherSavings=0;var efficiencyValue=0;var numberOfCallsReduced=0;var callHoursReduced=0;var helpDeskSavings=0;var staffEfficiencyBenefit=0;var outagesReduced=0;var hoursOutagesReduced=0;var downtimeValue=0;var annualBenefit=0;var yearOneInvestment=0;var costOfHardware=3995;var benefit=0;var investment=0;var maintenance=0;var NPV=0;var ROI=0;var payback=0;
var output="output";

function addDefaults() {
	document.roi.inputCompany.value=company;
	document.roi.inputEmployees.value=employees;
	document.roi.inputNetworkManagers.value=networkManagers;
	document.roi.inputSalary.value=salary;
	document.roi.inputCalls.value=calls;
	document.roi.inputCallDuration.value=callDuration;
	document.roi.inputResolutionTime.value=resolutionTime;
	document.roi.inputIncidents.value=incidents;
	document.roi.inputDowntime.value=downtime;
	document.roi.inputImpact.value=toPercent(impact);
	document.roi.inputDevices.value=devices;
	}

function stringToNumber(x) {
	return(parseFloat(x))
}

function toPercent(x) {
return(x+"%");
}

function toDollars(x) {
	return("$"+x);
}

function addCommas(orginalNumber) {
	orginalNumber += '';
	x = orginalNumber.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


function calculate() {
	// Read in values from form
	company=document.roi.inputCompany.value;
	employees=stringToNumber(document.roi.inputEmployees.value.replace(",", ""));
	networkManagers=stringToNumber(document.roi.inputNetworkManagers.value);
	salary=stringToNumber((document.roi.inputSalary.value.replace("$", "")).replace(",", ""));
	calls=stringToNumber(document.roi.inputCalls.value.replace(",", ""));
	callDuration=stringToNumber(document.roi.inputCallDuration.value.replace(",", ""));
	resolutionTime=stringToNumber(document.roi.inputResolutionTime.value.replace(",", ""));
	incidents=stringToNumber(document.roi.inputIncidents.value.replace(",", ""));
	downtime=stringToNumber(document.roi.inputDowntime.value.replace(",", ""));
	impact=stringToNumber(document.roi.inputImpact.value.replace(",", ""));
	devices=stringToNumber(document.roi.inputDevices.value.replace(",", ""));
	
	
	// Perform operations	avoidedHires = (networkManagers*salary*.01825591);	if (networkManagers<64) {		productivityIncrease=.85;	} else {		productivityIncrease=((networkManagers-63)*.013491+.85);	}	if (networkManagers<64) {		incidentManagement=(salary*.6209);	} else {		incidentManagement=(networkManagers*salary*.00985558);	}	if (networkManagers<64) {		otherSavings=(salary*.2290545);	} else {		otherSavings=(networkManagers*salary*.003635783);	}
	efficiencyValue=(incidentManagement+otherSavings);	numberOfCallsReduced=(calls*.3128);	callHoursReduced=((numberOfCallsReduced*callDuration)/60);	helpDeskSavings=(callHoursReduced*salary*.00053191);	staffEfficiencyBenefit=(helpDeskSavings+efficiencyValue);	outagesReduced=(incidents*.391892);	hoursOutagesReduced=(incidents*44.30556);	downtimeValue=((employees*salary*(impact/100)*0.000223283)+(incidents*downtime*0.001523778*salary));	annualBenefit=(avoidedHires+staffEfficiencyBenefit+downtimeValue);
	if (devices<51) {		yearOneInvestment=((8750+costOfHardware)*1.2);		maintenance=((8750+costOfHardware)*.2);	} else if (devices<101) {		yearOneInvestment=((16950+costOfHardware)*1.2);		maintenance=((16950+costOfHardware)*.2);	} else if (devices<201) {		yearOneInvestment=((32500+costOfHardware)*1.2);		maintenance=((32500+costOfHardware)*.2);	} else if (devices<401) {		yearOneInvestment=((59500+costOfHardware)*1.2);		maintenance=((59500+costOfHardware)*.2);	} else if (devices<601) {		yearOneInvestment=((83500+costOfHardware)*1.2);	} else if (devices<801) {		yearOneInvestment=((105950+costOfHardware)*1.2);	} else if (devices<1001) {		yearOneInvestment=((127750+costOfHardware)*1.2);	} else if (devices<1201) {		yearOneInvestment=((148950+costOfHardware)*1.2);	} else if (devices<1401) {		yearOneInvestment=((169650+costOfHardware)*1.2);	} else if (devices<1601) {		yearOneInvestment=((189750+costOfHardware)*1.2);	} else if (devices<1801) {		yearOneInvestment=((209500+costOfHardware)*1.2);	} else if (devices<2001) {		yearOneInvestment=((228750+costOfHardware)*1.2);	} else if (devices<2501) {		yearOneInvestment=((274500+costOfHardware)*1.2);	} else {
		yearOneInvestment=((((devices*110)+costOfHardware)*1.2)*.85);
	}	benefit=(annualBenefit*3);	investment=((yearOneInvestment/1.2)*1.4);	NPV=(((annualBenefit-maintenance)/(1.12))+((annualBenefit-maintenance)/((1.12)^2))+((annualBenefit-maintenance)/((1.12)^3))-yearOneInvestment);	ROI=(NPV/investment*100);	payback=((yearOneInvestment/annualBenefit)*12);
	
	// Calculate date
	var currentTime = new Date();
	var month = "January";
	var currentMonth = (currentTime.getMonth()+1);
	if (currentMonth == 1) {
		month = "January";
	} else if (currentMonth == 2) {
		month = "February";
	} else if (currentMonth == 3) {
		month = "March";
	} else if (currentMonth == 4) {
		month = "April";
	} else if (currentMonth == 5) {
		month = "May";
	} else if (currentMonth == 6) {
		month = "June";
	} else if (currentMonth == 7) {
		month = "July";
	} else if (currentMonth == 8) {
		month = "August";
	} else if (currentMonth == 9) {
		month = "September";
	} else if (currentMonth == 10) {
		month = "October";
	} else if (currentMonth == 11) {
		month = "November";
	} else if (currentMonth == 12) {
		month = "December";
	}
	var day = currentTime.getDate();
	var year = currentTime.getFullYear();
	var currentDate = (month + " " + day + ", " + year);

	// Compile output
	output = "<html><head><title>NetMRI ROI Analysis Report</title><link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.netcordia.com/includes/css/base.css\" media=\"screen\"/><link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.netcordia.com/includes/css/content.css\" media=\"screen\"/><link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.netcordia.com/includes/css/interface.css\" media=\"screen\"/><link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.netcordia.com/includes/css/roi-calculator.css\" media=\"screen, print\"/><!--[if IE]><script language=\"javascript\" type=\"text/javascript\" src=\"http://www.netcordia.com/includes/js/excanvas.js\"></script><![endif]--><script language=\"javascript\" type=\"text/javascript\" src=\"http://www.netcordia.com/includes/js/jquery.js\"></script><script language=\"javascript\" type=\"text/javascript\" src=\"http://www.netcordia.com/includes/js/jquery.flot.js\"></script></head><body><div id=\"mainContent\"><div id=\"roiOutput\"><img id=\"logo\" src=\"http://www.netcordia.com/img/interface/logo-white-transparent.png\"/><h3>NetMRI ROI Analysis Report for "+company+"<br/>"+currentDate+"</h3><p>This report provides estimates of savings for deploying Netcordia's NetMRI. The calculations are based on data derived from interviews with existing Netcordia customers. The actual customer experience and the savings each realized drive the benefit of NetMRI shown in this analysis.</p><p>By analyzing your current IT organization, recommendations can be made to help reduce costs through avoided hires, increased IT staff efficiency, and reducing the number of outages.</p><ul><li>Today, with an IT staff of "+networkManagers+", "+company+" could save "+toDollars(addCommas(Math.round(avoidedHires)))+" in avoided hires over the next year.</li><li>Greater IT staff efficiency could allow "+company+" to save the equivalent of "+addCommas(Math.round(productivityIncrease*100)/100)+" FTEs annually. The bulk of these savings stems from more effective incident management. Total IT staff efficiency savings may be as high as "+toDollars(addCommas(Math.round(efficiencyValue)))+" per year.</li><li>With "+addCommas(employees)+" employees, you can expect to reduce the number of calls to the help desk by "+addCommas(Math.round(numberOfCallsReduced))+" per month.</li><li>Improved network change and configuration management will help "+company+" avoid "+addCommas(Math.round(outagesReduced*10)/10)+" outages per year, resulting in "+addCommas(Math.round(hoursOutagesReduced))+" hours of improved user productivity.</li></ul><p id=\"chartTitle\">Net Benefit Per Year</p><div id=\"chart\" style=\"width:500px;height:300px;\"><a href=\"javascript:location.reload(true)\">Click here to display graph</a></div><p>The tables below display the annual benefits of Netcordia's NetMRI. Benefits fall into three areas: IT staff optimization, IT efficiency, and increased system availability (reduced downtime):</p><div class=\"outputTables\"><table><tr><th colspan=\"2\">Staff Optimization and Improved Efficiency</th></tr><tr><td>Cost Savings for Avoided Hires:</td><td>"+toDollars(addCommas(Math.round(avoidedHires)))+"</td></tr><tr><td>Total Full Time Equivalent in Productivity Increase:</td><td>"+addCommas(Math.round(productivityIncrease*100)/100)+"</td></tr><tr><td>Improved Incident Management</td><td>"+toDollars(addCommas(Math.round(incidentManagement)))+"</td></tr><tr><td>IT Staff Efficiency Savings:</td><td>"+toDollars(addCommas(Math.round(otherSavings)))+"</td></tr><tr class=\"highlightGray\"><td>Annual IT Staff Efficiency Value:</td><td>"+toDollars(addCommas(Math.round(efficiencyValue)))+"</td></tr><tr><td>Number of Help Desk Calls Reduced per Month:</td><td>"+addCommas(Math.round(numberOfCallsReduced))+"</td></tr><tr><td>Help Desk Call Hours Reduced per Month:</td><td>"+addCommas(Math.round(callHoursReduced))+"</td></tr><tr class=\"highlightGray\"><td>Annual Help Desk Savings Value:</td><td>"+toDollars(addCommas(Math.round(helpDeskSavings)))+"</td></tr><tr class=\"highlightGreen\"><td>Annual IT Staff Efficiency and Help Desk Savings Benefit:</td><td>"+toDollars(addCommas(Math.round(staffEfficiencyBenefit)))+"</td></tr></table><table><tr><th colspan=\"2\">Downtime Reduction Benefit</th></tr><tr><td>Number of Outages Reduced per Year:</td><td>"+(addCommas(Math.round(outagesReduced*10)/10)+" outages")+"</td></tr><tr><td>Reduction in Average Hours of Outage per Year:</td><td>"+(addCommas(Math.round(hoursOutagesReduced))+" hours")+"</td></tr><tr><td>Total Downtime/User Productivity Value per Year:</td><td>"+toDollars(addCommas(Math.round(downtimeValue)))+"</td></tr><tr class=\"highlightGreen\"><td>Total Annual Benefit:</td><td>"+toDollars(addCommas(Math.round(annualBenefit)))+"</td></tr></table></div><p>The results of your analysis show a return on investment of "+toPercent(addCommas(Math.round(ROI)))+" and a payback period of "+addCommas(Math.round(payback*10)/10)+" months.</p><p>The table below shows the complete ROI results:</p><div class=\"outputTables\"><table><tr><th colspan=\"2\">Three Year ROI Analysis</th></tr><tr><td>Three Year Benefit/Cost Savings:</td><td>"+toDollars(addCommas(Math.round(benefit)))+"</td></tr><tr><td>Net Present Value:</td><td>"+toDollars(addCommas(Math.round(NPV)))+"</td></tr><tr><td>ROI (assumes 12% cost of capital):</td><td>"+toPercent(addCommas(Math.round(ROI)))+"</td></tr><tr><td>Months to Payback:</td><td>"+addCommas(Math.round(payback*10)/10)+"</td></tr></table></div>"+"<p>For more details about the interviews of Netcordia customers and the ROI methodology, please download the IDC ROI Whitepaper:</p><div><a id=\"downloadReport\" href=\"http://www.netcordia.com/files/wp-roi-of-netmri.pdf\" target=\"_blank\">Download The IDC ROI Whitepaper</a>&nbsp;&nbsp;&nbsp;<a id=\"printCalculator\" href=\"javascript:window.print()\">Print</a></div><p id=\"disclaimer\">Disclaimer: NOTICE - THIS INFORMATION IS PROVIDED TO YOU AS A TOOL 'AS IS' WITH THE UNDERSTANDING THAT THERE ARE NO REPRESENTATIONS OR WARRANTIES OF ANY KIND EITHER EXPRESS OR IMPLIED. NETCORDIA DISCLAIMS ALL WARRANTIES INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. NETCORDA DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE, VALIDITY, ACCURACY OR RELIABILITY OF THE TOOL OR THE RESULTS OF THE USE OF THE TOOL. IN NO EVENT SHALL NETCORDIA BE LIABLE FOR ANY DAMAGES, INCLUDING THOSE ARISING AS A RESULT OF NETCORDIA'S NEGLIGENCE, WHETHER THOSE DAMAGES ARE DIRECT, CONSEQUENTIAL, INCIDENTAL, OR SPECIAL, FLOWING FROM YOUR USE OF OR INABILITY TO USE THE TOOL OR INFORMATION PROVIDED HEREWITH OR RESULTS OF THE TOOL'S USE, EVEN IF NETCORDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE ULTIMATE RESPONSIBILITY FOR ACHIEVING THE CALCULATED RESULTS REMAINS WITH YOU.</p></div></div><script id=\"source\" language=\"javascript\" type=\"text/javascript\">$(function(){var dataSet = [[1,"+annualBenefit+"], [2,"+(annualBenefit*2)+"], [3,"+(annualBenefit*3)+"]]; $.plot($(\"#chart\"), [{data:dataSet, color:\"rgba(185, 208, 72, 1)\", bars:{show: true, align:\"center\", lineWidth:2, colors:\"rgba(185, 208, 72, 0.5)\", barWidth:.9, fillColor:\"rgba(185, 208, 72, 0.5)\"}}], {xaxis:{min:0, max:4, ticks:[[1, \"Year One\"], [2, \"Year Two\"], [3, \"Year Three\"]]}, yaxis:{min: 0, tickFormatter:function(v, axis){return \"$\" + v.toFixed(axis.tickDecimals)}}, legend:{position:'ne'} });});</script></body></html>";
	
	// Write output
	var outputWindow = window.open("","results","width=700,height=600,menubar=yes,scrollbars=yes,resizable=yes");
	outputWindow.document.open();
	outputWindow.document.write(output);
	outputWindow.document.close();
}
//-->
