// JavaScript Document
//FUNCTIONS
//1.initData 2.showProfile 3.clearoldvalues 4.populatedefault 5.setNextOptimal 6.setMemory 7.setDiskSpace 8.setVcpuCount 9.setIops 10.setDvmsLun 11.setServers 12.clearServers 13.setStorage 13.clearStorage
var mDef_Arr = Array();
var bAdvTabCnt = 0;
var mNODvms = '';
var mMemory = '';
var mDiskSpace = '';
var mVcpuCount = '';
var mIops = '';
var mDvmsLun = '';
var mPanoDiscount = '';
var mDesktopPCCost = '';
var mUtilityCostPerKwh = '';
var callcounter = 0;
var bGetTCO;
//var bCallActive = false;

function selUtilityCostPerKwh(objUtilityCostPerKwh){mUtilityCostPerKwh=objUtilityCostPerKwh.value;}
function setUtilityCostPerKwh(objUtilityCostPerKwh){
  objUtilityCostPerKwh.value = chkDecimal(objUtilityCostPerKwh);
  txtUtilityCostPerKwh = objUtilityCostPerKwh.value;

  //document.getElementById("txt_desktop_pc_cost").value = txtDesktopPCCost;

 /*if(txtDiskSpace && txtDiskSpace>0){ //!isNaN(txtDiskSpace)
  document.getElementById("utl_disk_space_gb").value = txtDiskSpace;
 }else{
  document.getElementById("utl_disk_space_gb").value = mDef_Arr['utl_disk_space_gb'];
 }*/
   if(mUtilityCostPerKwh!=txtUtilityCostPerKwh)initData();
}
function selDesktopPCCost(objDesktopPCCost){mDesktopPCCost=objDesktopPCCost.value;}
function setDesktopPCCost(objDesktopPCCost){
  objDesktopPCCost.value = chkDecimal(objDesktopPCCost);
  txtDesktopPCCost = objDesktopPCCost.value;

  //document.getElementById("txt_desktop_pc_cost").value = txtDesktopPCCost;

 /*if(txtDiskSpace && txtDiskSpace>0){ //!isNaN(txtDiskSpace)
  document.getElementById("utl_disk_space_gb").value = txtDiskSpace;
 }else{
  document.getElementById("utl_disk_space_gb").value = mDef_Arr['utl_disk_space_gb'];
 }*/
   if(mDesktopPCCost!=txtDesktopPCCost)initData();
}
function showGraph(){
	//myscr = '<script type="text/javascript">var chart_ = new FusionCharts("FusionCharts/Charts/Pie2D.swf", "cc", "150", "170", "0", "0"); chart_.setTransparent("false"); chart_.setDataXML("<chart palette=\'4\' caption=\'Start-up Capex Breakdown\' decimals=\'0\' enableSmartLabels=\'0\' enableRotation=\'0\' bgColor=\'99CCFF,FFFFFF\' bgAlpha=\'40,100\' bgRatio=\'0,100\' bgAngle=\'360\' showBorder=\'1\' startingAngle=\'70\' showPercentValues=\'1\' baseFont=\'Arial\' baseFontSize =\'7\'  baseFontColor =\'000000\' chartLeftMargin=\'1\' chartRightMargin=\'5\' chartTopMargin=\'1\' chartBottomMargin=\'1\'><set label=\'Servers\' value=\'365.08728179551\' /><set label=\'Storage\' value=\'634.03990024938\' /><set label=\'VMWare\' value=\'483.1421446384\' /><set label=\'Panos\' value=\'2.2194513715711\' /><set label=\'Microsoft\' value=\'0.24937655860349\' /></chart>"); chart_.render("Div");</script>';
       //document.getElementById('td_capex').innerHTML = myscr;
	//document.write(myscr);
	//document.getElementById('td_capex').innerHTML = document.getElementById('td_capex').innerHTML;
       //chart_.render("$chartIdDiv");
	var at_id = document.getElementById("at_id").value;
	var reqdate = document.getElementById('reqdate').value;
 	reqdate = reqdate.replace('/','').replace('/','');
	if(document.getElementById('frmCapex')!=null){
	 document.getElementById('frmCapex').src = 'capex?aid='+at_id;
	 document.getElementById('frmOpex').src = 'opex?aid='+at_id;
	 document.getElementById('frmPayback').src = 'payback?aid='+at_id+'&date='+reqdate;
	}else{
	 document.getElementById('frmPayback').src = 'paybackbasic?aid='+at_id+'&date='+reqdate;
	}
}
function hideGraph(){
	//myscr = '<script type="text/javascript">var chart_ = new FusionCharts("FusionCharts/Charts/Pie2D.swf", "cc", "150", "170", "0", "0"); chart_.setTransparent("false"); chart_.setDataXML("<chart palette=\'4\' caption=\'Start-up Capex Breakdown\' decimals=\'0\' enableSmartLabels=\'0\' enableRotation=\'0\' bgColor=\'99CCFF,FFFFFF\' bgAlpha=\'40,100\' bgRatio=\'0,100\' bgAngle=\'360\' showBorder=\'1\' startingAngle=\'70\' showPercentValues=\'1\' baseFont=\'Arial\' baseFontSize =\'7\'  baseFontColor =\'000000\' chartLeftMargin=\'1\' chartRightMargin=\'5\' chartTopMargin=\'1\' chartBottomMargin=\'1\'><set label=\'Servers\' value=\'365.08728179551\' /><set label=\'Storage\' value=\'634.03990024938\' /><set label=\'VMWare\' value=\'483.1421446384\' /><set label=\'Panos\' value=\'2.2194513715711\' /><set label=\'Microsoft\' value=\'0.24937655860349\' /></chart>"); chart_.render("Div");</script>';
       //document.getElementById('td_capex').innerHTML = myscr;
	//document.write(myscr);
	//document.getElementById('td_capex').innerHTML = document.getElementById('td_capex').innerHTML;
       //chart_.render("$chartIdDiv");
	var at_id = document.getElementById("at_id").value;
	if(document.getElementById('frmCapex')!=null){
	 document.getElementById('frmCapex').src = '';
	 document.getElementById('frmOpex').src = '';
	 document.getElementById('frmPayback').src = '';
	}else{
	 document.getElementById('frmPayback').src = '';
	}
}
function showColors(){
 var divODvms = parseInt(document.getElementById("Optimal_DVM_divisor").innerHTML);
 var objDVMCountIsOpt = document.getElementById('txtDVMCountIsOpt');
 var txtDVMCountIsOpt = parseInt(objDVMCountIsOpt.value);

var i, j, k;
var Gval = new Array();
var green = new Array();
var red = new Array();
var p = new Array();
for(i=1; i<=50; i++)
{
	Gval[i] = i*64;
}
for(j=1; j<Gval.length; j++)
{
	p[j] = Math.ceil(Gval[j] * 0.05);
	for(k=1; k<=p[j] ;k++)
	{
		var alen = green.length+1;
		var blen = red.length+1;
		green[alen] = Gval[j] - k;
		red[blen] = Gval[j] + k;
	}
}
if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length >>> 0;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}
if(Gval.indexOf(txtDVMCountIsOpt)>-1)
objDVMCountIsOpt.className = "step2_input_green";
else if(green.indexOf(txtDVMCountIsOpt)>-1)
objDVMCountIsOpt.className = "step2_input_green";
else if(red.indexOf(txtDVMCountIsOpt)>-1)
objDVMCountIsOpt.className = "step2_input_red";
else
objDVMCountIsOpt.className = "step2_input_yellow";

 var maximum_disks = parseInt(document.getElementById("maximum_disks").innerHTML);
 var objDiskNeededIsOpt = document.getElementById('txtDiskNeededIsOpt');
 var txtDiskNeededIsOpt = parseInt(objDiskNeededIsOpt.value);

 if(txtDiskNeededIsOpt <= maximum_disks)
  objDiskNeededIsOpt.className = "step2_input_green";
 else
  objDiskNeededIsOpt.className = "step2_input_red";

 /*utl_iops = parseInt(document.getElementById("utl_iops").innerHTML);
 objDiskNeededIsOpt = document.getElementById('txtDiskNeededIsOpt');
 txtDiskNeededIsOpt = parseInt(objDiskNeededIsOpt.value);

 if(txtDiskNeededIsOpt < maximum_disks)
  objDiskNeededIsOpt.className = "step2_input_green";
 else
  objDiskNeededIsOpt.className = "step2_input_red";*/

 var txt_utl_disk_space_gb = 0;
 if(document.getElementById("txt_utl_disk_space_gb").value)
  txt_utl_disk_space_gb = parseInt(document.getElementById("txt_utl_disk_space_gb").value);
 else
  txt_utl_disk_space_gb = parseInt(document.getElementById("utl_disk_space_gb").value);
 
 var objMaxGBPerDVMIsOpt = document.getElementById('txtMaxGBPerDVMIsOpt');
 var txtMaxGBPerDVMIsOpt = parseInt(objMaxGBPerDVMIsOpt.value);

 //alert(txt_utl_disk_space_gb); alert(txtMaxGBPerDVMIsOpt);
 //if(txt_utl_disk_space_gb < (objMaxGBPerDVMIsOpt * 80 / 100))
 if(txt_utl_disk_space_gb <= txtMaxGBPerDVMIsOpt) //txtDiskNeededIsOpt == max_gb_per_dvm
  objMaxGBPerDVMIsOpt.className = "step2_input_green";
 else
  objMaxGBPerDVMIsOpt.className = "step2_input_red";

 /*var payback_by_date = document.getElementById('payback_by').value; //2012-10-31 0123-56-89
 var payback_by_yy = payback_by_date.substring(0,4);
 var payback_by_mm = payback_by_date.substring(5,7);
 var payback_by_dd = payback_by_date.substring(8,10);
 var payback_by = payback_by_mm + '/' + payback_by_dd + '/' + payback_by_yy;

 document.getElementById('payback_date').innerHTML = payback_by;
 if(document.getElementById('payback_date2')){
  var monthname = new Array("January","February","March","April","May","Jun","July","August", "September","October","November","December");
  var payback_by2 = monthname[payback_by_mm-1] + ' ' + payback_by_dd + ', ' + payback_by_yy;
  document.getElementById('payback_date2').innerHTML = payback_by2;
 }*/
 document.getElementById('visual_clue').style.visibility = 'hidden';

}

function chkOptimization(){
 var at_id = document.getElementById("at_id").value;
 var reqdate = document.getElementById('reqdate').value;
 reqdate = reqdate.replace('/','').replace('/','');
 var calc_term = document.getElementById("calculation_term").options[document.getElementById("calculation_term").selectedIndex].value;
 url = 'node/301/'+at_id+'/'+reqdate+'/'+calc_term;
 window.open(url,'TestWin');
}

function jsDate(month,day,year){
 month = parseInt(month);
 day   = parseInt(day);
 year  = parseInt('20'+year);

 /*alert(month); //11
 alert(day); //19
 alert(year); //2009*/

 var myDate=new Date();
 myDate.setFullYear(year,month-1,day);

 dd = myDate.getDate();
 mm = myDate.getMonth();
 yy = myDate.getFullYear();

 /*alert(mm+1);
 alert(dd);
 alert(yy);

 alert(mm+1==month);
 alert(dd==day);
 alert(yy==year);*/
 if(dd==day && mm+1==month && year==yy) return true;
}

function chkStartDate(objStartDate){ //mm/dd/yy
 txtSD = objStartDate.value;
 if(txtSD.indexOf('/') > 0){
  dtArr = txtSD.split("/");
  if(!jsDate(dtArr[0],dtArr[1],dtArr[2])){alert('Invalid date specified!');}
  else document.getElementById('visual_clue').visibility = 'visible';
  //getOptimization();
 }else if(txtSD.indexOf('-') > 0){
  dtArr = txtSD.split("-");
  if(!jsDate(dtArr[0],dtArr[1],dtArr[2])){alert('Invalid date specified!');}
  else document.getElementById('visual_clue').visibility = 'visible';
  //getOptimization();
 }else{
  alert("Enter date in format mm/dd/yy");
 }
}

function getOptimization(){
 var at_id = document.getElementById("at_id").value;
 var reqdate = document.getElementById('reqdate').value;
 reqdate = reqdate.replace('/','').replace('/','');
 reqdate = reqdate.replace('-','').replace('-','');
 var calc_term = document.getElementById("calculation_term").options[document.getElementById("calculation_term").selectedIndex].value;
 url = 'node/293/'+at_id+'/'+reqdate+'/'+calc_term;
 bGetTCO = true;
 loadCalcData(url);
}

function showOptimization(mDataSet){
 var mDataArray2 = mDataSet.split('|');
 for(i=0; i < mDataArray2.length; i++){
  mDataPair = mDataArray2[i].split(':');
  //alert(mDataPair[0]+':'+mDataPair[1]);
  //alert(mDataPair[0]);
  if(document.getElementById(mDataPair[0]).type=='text'){
   document.getElementById(mDataPair[0]).value = mDataPair[1];
  }else
   if(mDataPair[0]=="payback_month" || mDataPair[0]=="tco_percent_saving" || mDataPair[0]=="span_calc_term"){
    document.getElementById(mDataPair[0]).innerHTML = mDataPair[1];
   }else{
    document.getElementById(mDataPair[0]).innerHTML = '$' + mDataPair[1];
   }
 }
 showColors();
 showGraph();
 //setTimeout('showColors();', 0);
 //setTimeout('showGraph();', 0);

}

function disablePControls(truefalse){
 if(truefalse){
hideGraph();
showLoadingImage();
  document.getElementById('btnSubmit').style.display = 'none';
  //document.getElementById('btnEmail').style.display = 'none';
  document.getElementById('btnEmail').style.visibility= 'hidden';
  if(document.getElementById('advClick')!=null)
  {
    document.getElementById('advClick').style.visibility = 'hidden';
  }
  if(document.getElementById('basicClick')!=null)
  {
    document.getElementById('basicClick').style.visibility = 'hidden';
  }
  document.getElementById('visual_clue').style.visibility = 'hidden';
 }else{
  //bCallActive = false;
stopLoading();
showGraph();
  document.getElementById('btnSubmit').style.display = 'block';
  //document.getElementById('btnEmail').style.display = 'block';
  document.getElementById('btnEmail').style.visibility= 'hidden';
  if(document.getElementById('advClick')!=null)
  {
    document.getElementById('advClick').style.visibility = 'hidden';
  }
  if(document.getElementById('basicClick')!=null)
  {
    document.getElementById('basicClick').style.visibility = 'hidden';
  }
  document.getElementById('visual_clue').style.visibility= 'visible';
 }
 document.getElementById('user_industry').disabled = truefalse;
 document.getElementById('user_type').disabled = truefalse;
 document.getElementById('user_experience').disabled = truefalse;
 document.getElementById('calculation_term').disabled = truefalse;
 document.getElementById('txt_User_Count').readOnly = truefalse;
 document.getElementById('txt_Number_of_DVMs').readOnly = truefalse;
 document.getElementById('txt_utl_memory_mb').readOnly = truefalse;
 document.getElementById('txt_utl_disk_space_gb').readOnly = truefalse;
 if(document.getElementById('txt_utl_vcpu_count')!=null){
  document.getElementById('txt_utl_vcpu_count').readOnly = truefalse;
  document.getElementById('txt_utl_iops').readOnly = truefalse;
  document.getElementById('txt_utl_dvms_lun').readOnly = truefalse;
 }
 document.getElementById('txt_desktop_pc_cost').readOnly = truefalse;
}

function disableSRControls(truefalse){
 if(document.getElementById('servers') != null)
  document.getElementById('servers').disabled = truefalse;
}

function disableSGControls(truefalse){
 if(document.getElementById('storage') != null)
  document.getElementById('storage').disabled = truefalse;
}

function disableLControls(truefalse){
 if(document.getElementById('vSphereA') != null){
  document.getElementById('vSphereA').disabled = truefalse;
  document.getElementById('vSphereB').disabled = truefalse;
  document.getElementById('vCenterA').disabled = truefalse;
  document.getElementById('vCenterB').disabled = truefalse;
  document.getElementById('WinOS').disabled = truefalse;
  document.getElementById('txt_Pano_Discount').readOnly = truefalse;
 }
}


  function showLoadingImage() {
     document.getElementById('loading_box').style.display= 'block';
     
  }

 function stopLoading() {
    document.getElementById('loading_box').style.display= 'none';
  }

function initData(){
 //bCallActive = true;
 //showLoadingImage();
 disablePControls(true);
 objUT=document.getElementById("user_type");
 //utl_user_count=document.getElementById("User_Count").value;
 utl_user_count=document.getElementById("txt_Number_of_DVMs").value;
//alert(document.getElementById("user_type").value);
txtNODvms = document.getElementById("txt_Number_of_DVMs").value;
if(document.getElementById("user_type").value == 1 || document.getElementById("user_type").value == 2)
{
	if(txtNODvms>3200) {
	document.getElementById("txt_User_Count").value = document.getElementById("txt_Number_of_DVMs").value = 3200;
alert("The user count exceeds the limits of the storage system.\nWhile it is possible to scale the Pano solution to support very large deployments,\nthe TCO calculator makes simplifying assumptions about the storage system.\n\nPlease reduce the user count below the following limits:\n\nTask & Knowledge Workers:\t3200 users\nFinance & Sales:\t\t2400 users\nDevelopers:\t\t1200 users");
	}
}
if(document.getElementById("user_type").value == 3 || document.getElementById("user_type").value == 4)
{
	if(txtNODvms>2400) {
	document.getElementById("txt_User_Count").value = document.getElementById("txt_Number_of_DVMs").value = 2400;
alert("The user count exceeds the limits of the storage system.\nWhile it is possible to scale the Pano solution to support very large deployments,\nthe TCO calculator makes simplifying assumptions about the storage system.\n\nPlease reduce the user count below the following limits:\n\nTask & Knowledge Workers:\t3200 users\nFinance & Sales:\t\t2400 users\nDevelopers:\t\t1200 users");
	}
}
if(document.getElementById("user_type").value == 5)
{
	if(txtNODvms>1200) {
	document.getElementById("txt_User_Count").value = document.getElementById("txt_Number_of_DVMs").value = 1200;
alert("The user count exceeds the limits of the storage system.\nWhile it is possible to scale the Pano solution to support very large deployments,\nthe TCO calculator makes simplifying assumptions about the storage system.\n\nPlease reduce the user count below the following limits:\n\nTask & Knowledge Workers:\t3200 users\nFinance & Sales:\t\t2400 users\nDevelopers:\t\t1200 users");
	}
}
if(document.getElementById("user_type").value >5)
{
	if(txtNODvms>2048) {
	document.getElementById("txt_User_Count").value = document.getElementById("txt_Number_of_DVMs").value = 2048;
	}
}

 var user_type=objUT.options[objUT.selectedIndex].value;
 user_experience_id=document.getElementById("user_experience").options[document.getElementById("user_experience").selectedIndex].value;
 var user_industry = document.getElementById("user_industry").options[document.getElementById("user_industry").selectedIndex].value;
 var txtGeography = document.getElementById("txtGeography").value;

 var at_id = document.getElementById("at_id").value;
 at_id = at_id ? at_id : 0;
 var utl_memory_mb = document.getElementById("txt_utl_memory_mb").value;
 var utl_disk_space_gb = document.getElementById("txt_utl_disk_space_gb").value;
 var txt_desktop_pc_cost = document.getElementById("txt_desktop_pc_cost").value;

 if(document.getElementById("utl_vcpu_count")!=null){
  var utl_vcpu_count = document.getElementById("txt_utl_vcpu_count").value;
  var utl_iops = document.getElementById("txt_utl_iops").value;
  var utl_dvms_lun = document.getElementById("txt_utl_dvms_lun").value;
 }else utl_vcpu_count = utl_iops = utl_dvms_lun = 0;

 var utl_user_count = utl_user_count ? utl_user_count : 0;
 utl_memory_mb = utl_memory_mb ? utl_memory_mb : 0;
 utl_disk_space_gb = utl_disk_space_gb ? utl_disk_space_gb : 0;
 utl_vcpu_count = utl_vcpu_count ? utl_vcpu_count : 0;
 utl_iops = utl_iops ? utl_iops : 0;
 utl_dvms_lun = utl_dvms_lun ? utl_dvms_lun : 0;
 txt_desktop_pc_cost = txt_desktop_pc_cost ? txt_desktop_pc_cost : 0;

 var utility_cost = document.getElementById("txt_utility_cost_per_kwh").value;
 if(utility_cost == '') utility_cost = 0;
 var Next_Optimal_DVM_count = document.getElementById("Next_Optimal_DVM_count").innerHTML;
 if(Next_Optimal_DVM_count == '') Next_Optimal_DVM_count = 0;

 var calc_term = document.getElementById("calculation_term").options[document.getElementById("calculation_term").selectedIndex].value;
 var servers = 0;
 if(document.getElementById("servers")!=null) servers = document.getElementById("servers").options[document.getElementById("servers").selectedIndex].value;
 url_add = at_id+'/'+utl_memory_mb+'/'+utl_disk_space_gb+'/'+utl_vcpu_count+'/'+utl_iops+'/'+utl_dvms_lun+'/'+txt_desktop_pc_cost+"/"+utility_cost+"/"+calc_term+"/"+Next_Optimal_DVM_count+"/"+servers;

 txtGeography = txtGeography ? txtGeography : 0;
 url = 'node/285/'+user_type+'/'+user_experience_id+'/'+utl_user_count+'/'+user_industry+'/'+txtGeography+'/'+(callcounter++)+'/'+url_add;
 mUEChoice = user_experience;
 //clearoldvalues(); //Dont clear values entered by the user
 mUserProfile = true;
 loadCalcData(url);
//stopLoading();
//setNextOptimal();
}

var http = false;

if(navigator.appName == "Microsoft Internet Explorer") {
  http = new ActiveXObject("Microsoft.XMLHTTP");
} else {
  http = new XMLHttpRequest();
}

function updateGeoIndustry()
{
	var geo = document.getElementById('txtGeography').value;
	var industry = document.getElementById('user_industry').value;
	var at_id = document.getElementById("at_id").value;
	var url = 'updategeo?geo='+geo+'&industry='+industry+'&at_id='+at_id;
	http.open("GET", url);
	http.onreadystatechange=function() {
	  if(http.readyState == 4) {
		  if(http.responseText.indexOf("Updated industry and geography") >= 0)
		  {
			
		  }
	  }
	}
	http.send(null);
}

function showStates(){
 var mywindow;
	//window.open('node/289', 'winTitle', 'modal=true, modal=1, height=466, width=292');
 if (document.all) {
	var mState = window.showModalDialog("node/289","mywindow", "dialogWidth:480px; dialogHeight:410px; center:yes; resizable:no; status:no; dialogTop:250; location:no; dialogLeft:350; edge:sunken;");
 }else{
	var mState = window.showModalDialog("node/289","mywindow", "dialogWidth:480px; dialogHeight:410px; center:yes; resizable:no; status:no; dialogTop:250; location:no; dialogLeft:350; edge:sunken;");
 }
if(mState!=null)
{
	document.getElementById('txtGeography').value = mState;
}
	//document.getElementById('txtGeography').value = mState ? mState : '';
	updateGeoIndustry();	
}

function showProfile(mDataSet){
 //alert(mDataSet);
 mDataArray = mDataSet.split('|');
 for(i=0; i < mDataArray.length; i++){
  mDataPair = mDataArray[i].split(':');
  //alert(mDataPair[0]+':'+mDataPair[1]+' ['+(document.getElementById('txt_'+mDataPair[0])!=null?document.getElementById(mDataPair[0]).type:'')+']');
  //if(document.getElementById('txt_'+mDataPair[0])!=null && document.getElementById(mDataPair[0]).type=="text"){
 if(mDataPair[1] && mDataPair[1]!="0"){
  if(document.getElementById(mDataPair[0])!=null && document.getElementById(mDataPair[0]).type=="text"){
   //if(document.getElementById('txt_'+mDataPair[0]).value == ''){
     //alert(mDataPair[0]+':'+mDataPair[1]);
     document.getElementById(mDataPair[0]).value = mDataPair[1];
   //}
  }else{
   //if(document.getElementById(mDataPair[0]).innerHTML == '')
	if(document.getElementById(mDataPair[0]) != null){
		if(mDataPair[0]=="user_type" || mDataPair[0]=="user_industry"){
				document.getElementById(mDataPair[0]).value = mDataPair[1];
		}else
       		document.getElementById(mDataPair[0]).innerHTML = mDataPair[1];
	}
  }
 }
   mDef_Arr[mDataPair[0]] = mDataPair[1];
 }
 callcounter++;
 setServers(0);
 setNextOptimalAgain(document.getElementById('txt_Number_of_DVMs').value);
}
function setNextOptimalAgain(txtNODvms){
 if(txtNODvms=='' || !(parseInt(txtNODvms)>0)) return;
 txtNODvms = parseInt(txtNODvms);//Entered Text Value
 divNODvmcount = parseInt(document.getElementById("Next_Optimal_DVM_count").innerHTML);
 divODvms = parseInt(document.getElementById("Optimal_DVM_divisor").innerHTML);

 if(1){ // && txtNODvms > divNODvms
     NODvms = Math.floor((Math.floor(txtNODvms / divODvms) + 1) * divODvms);

    if((((txtNODvms / divODvms) + 1) * divODvms) != NODvms)
     document.getElementById("Next_Optimal_DVM_count").innerHTML = txtNODvms <= divODvms ? divODvms : NODvms;
    else
     document.getElementById("Next_Optimal_DVM_count").innerHTML = txtNODvms;

 }
}

function clearoldvalues(){
 document.getElementById("User_Count").value= '';
 document.getElementById("Optimal_DVM_divisor").innerHTML = '';
 document.getElementById("Next_Optimal_DVM_count").innerHTML = '';
  document.getElementById("Number_of_DVMs").value= '';

 document.getElementById("utl_memory_mb").value= '';
 document.getElementById("utl_disk_space_gb").value= '';
 if(document.getElementById("utl_vcpu_count")!=null){
 document.getElementById("utl_vcpu_count").value= '';
 document.getElementById("utl_iops").value= '';
 document.getElementById("utl_dvms_lun").value= '';
 }
 document.getElementById("desktop_pc_cost").innerHTML = '';
 //document.getElementById("utility_cost_per_kWh").innerHTML = '';
}

function populatedefault(){
 disablePControls(true);
 var user_count=document.getElementById("User_Count").value;
 user_count = user_count ? user_count : 0;
 var user_type=document.getElementById("user_type").options[document.getElementById("user_type").selectedIndex].value;
 var user_experience_id=document.getElementById("user_experience").options[document.getElementById("user_experience").selectedIndex].value;
 var user_industry = document.getElementById("user_industry").options[document.getElementById("user_industry").selectedIndex].value;
 var txtGeography = document.getElementById("txtGeography").value;

 txtGeography = txtGeography ? txtGeography : 0;
 //url = 'node/285/'+user_type+'/'+user_experience_id+'/'+user_count;
 url = 'node/285/'+user_type+'/'+user_experience_id+'/'+user_count+'/'+user_industry+'/'+txtGeography+'/'+callcounter;
 clearoldvalues();
 mUserProfile = true;
 loadCalcData(url);

 document.getElementById("scwMonths").style.width = "52px";
 document.getElementById("scwYears").style.width = "52px";
}

function chkDecimal(obj){
 u_text = obj.value;
 if(obj.value=='' || isNaN(u_text)){//bCallActive || 
  return '';
 }else{
  return parseInt(u_text) != u_text ? parseFloat(u_text).toFixed(2) : parseInt(u_text);
 }
}

function chkNumeric(obj){
 u_text = obj.value;
 if(obj.value=='' || isNaN(u_text)){
  return '';
 }else{
  return parseInt(u_text);
 }
}

function selNextOptimal(objNODvms){mNODvms=objNODvms.value;}
function setNextOptimal(objNODvms){
  objNODvms.value = chkNumeric(objNODvms);
  txtNODvms = objNODvms.value;
  document.getElementById("txt_User_Count").value = document.getElementById("txt_Number_of_DVMs").value = txtNODvms;

 if(txtNODvms!="" && !isNaN(txtNODvms) && txtNODvms>0){
if(document.getElementById("user_type").value == 1 || document.getElementById("user_type").value == 2)
{
	if(txtNODvms>3200) {
	document.getElementById("txt_User_Count").value = document.getElementById("txt_Number_of_DVMs").value = 3200;
alert("The user count exceeds the limits of the storage system.\nWhile it is possible to scale the Pano solution to support very large deployments,\nthe TCO calculator makes simplifying assumptions about the storage system.\n\nPlease reduce the user count below the following limits:\n\nTask & Knowledge Workers:\t3200 users\nFinance & Sales:\t\t2400 users\nDevelopers:\t\t1200 users");
	}
}
if(document.getElementById("user_type").value == 3 || document.getElementById("user_type").value == 4)
{
	if(txtNODvms>2400) {
	document.getElementById("txt_User_Count").value = document.getElementById("txt_Number_of_DVMs").value = 2400;
alert("The user count exceeds the limits of the storage system.\nWhile it is possible to scale the Pano solution to support very large deployments,\nthe TCO calculator makes simplifying assumptions about the storage system.\n\nPlease reduce the user count below the following limits:\n\nTask & Knowledge Workers:\t3200 users\nFinance & Sales:\t\t2400 users\nDevelopers:\t\t1200 users");
	}
}
if(document.getElementById("user_type").value == 5)
{
	if(txtNODvms>1200) {
	document.getElementById("txt_User_Count").value = document.getElementById("txt_Number_of_DVMs").value = 1200;
alert("The user count exceeds the limits of the storage system.\nWhile it is possible to scale the Pano solution to support very large deployments,\nthe TCO calculator makes simplifying assumptions about the storage system.\n\nPlease reduce the user count below the following limits:\n\nTask & Knowledge Workers:\t3200 users\nFinance & Sales:\t\t2400 users\nDevelopers:\t\t1200 users");
	}
}
if(document.getElementById("user_type").value >5)
{
	if(txtNODvms>2048) {
	document.getElementById("txt_User_Count").value = document.getElementById("txt_Number_of_DVMs").value = 2048;
	}
}
   //document.getElementById("Number_of_DVMs").value = document.getElementById("User_Count").value = document.getElementById("txt_User_Count").value = document.getElementById("txt_Number_of_DVMs").value = txtNODvms;
 }else{
   //document.getElementById("Number_of_DVMs").value = document.getElementById("User_Count").value = document.getElementById("Optimal_DVM_divisor").innerHTML;
   document.getElementById("Next_Optimal_DVM_count").innerHTML = document.getElementById("Optimal_DVM_divisor").innerHTML;

   if(mNODvms!=txtNODvms) initData();

   return;
 }

 txtNODvms = parseInt(txtNODvms);//Entered Text Value
 divNODvmcount = parseInt(document.getElementById("Next_Optimal_DVM_count").innerHTML);
 divODvms = parseInt(document.getElementById("Optimal_DVM_divisor").innerHTML);
 //divNODvms = parseInt(document.getElementById("Number_of_DVMs").value);
 //if(txtNODvms > 0 && txtNODvms != divNODvms){ // && txtNODvms > divNODvms
 if(1){ // && txtNODvms > divNODvms
     NODvms = Math.floor((Math.floor(txtNODvms / divODvms) + 1) * divODvms);

    if((((txtNODvms / divODvms) + 1) * divODvms) != NODvms)
     document.getElementById("Next_Optimal_DVM_count").innerHTML = txtNODvms <= divODvms ? divODvms : NODvms;
    else
     document.getElementById("Next_Optimal_DVM_count").innerHTML = txtNODvms;

    /*if(txtNODvms > 0)
       document.getElementById("User_Count").innerHTML = document.getElementById("Number_of_DVMs").innerHTML = txtNODvms;*/
 }
 if(mNODvms!=txtNODvms) initData();
}

function selMemory(objMemory){mMemory=objMemory.value}
function setMemory(objMemory){
  objMemory.value = chkNumeric(objMemory);
  txtMemory = objMemory.value;

 if(txtMemory && txtMemory>0){ //!isNaN(txtMemory)
  //document.getElementById("utl_memory_mb").value = txtMemory;
  if(txtMemory>4096) document.getElementById("txt_utl_memory_mb").value = 4096;
 }else{
  //document.getElementById("utl_memory_mb").value = mDef_Arr['utl_memory_mb'];
 }
   if(mMemory!=txtMemory)initData();
}

function selDiskSpace(objDiskSpace){mDiskSpace=objDiskSpace.value}
function setDiskSpace(objDiskSpace){
  objDiskSpace.value = chkNumeric(objDiskSpace);
  txtDiskSpace = objDiskSpace.value;

  if(txtDiskSpace && txtDiskSpace>0)
     if(txtDiskSpace>120) document.getElementById("txt_utl_disk_space_gb").value = 120;

 /*if(txtDiskSpace && txtDiskSpace>0){ //!isNaN(txtDiskSpace)
  document.getElementById("utl_disk_space_gb").value = txtDiskSpace;
 }else{
  document.getElementById("utl_disk_space_gb").value = mDef_Arr['utl_disk_space_gb'];
 }*/
   if(mDiskSpace!=txtDiskSpace)initData();
}

function selVcpuCount(objVcpuCount){mVcpuCount=objVcpuCount.value}
function setVcpuCount(objVcpuCount){
  objVcpuCount.value = chkNumeric(objVcpuCount);
  txtVcpuCount = objVcpuCount.value;

  if(txtVcpuCount && txtVcpuCount>0) //!isNaN(txtVcpuCount)
     if(txtVcpuCount>4) document.getElementById("txt_utl_vcpu_count").value = 4;

 /*if(txtVcpuCount && txtVcpuCount>0){ //!isNaN(txtVcpuCount)
  document.getElementById("utl_vcpu_count").value = txtVcpuCount;
 }else{
  document.getElementById("utl_vcpu_count").value = mDef_Arr['utl_vcpu_count'];
 }*/
   if(mVcpuCount!=txtVcpuCount)initData();
}

function selIops(objIops){mIops=objIops.value}
function setIops(objIops){
  objIops.value = chkNumeric(objIops);
  txtIops = objIops.value;

 /*if(txtIops && txtIops>0){ //!isNaN(txtIops)
  document.getElementById("utl_iops").value= txtIops;
 }else{
  document.getElementById("utl_iops").value = mDef_Arr['utl_iops'];
 }*/
   if(mIops!=txtIops)initData();
}

function selDvmsLun(objDvmsLun){mDvmsLun=objDvmsLun.value}
function setDvmsLun(objDvmsLun){
  objDvmsLun.value = chkNumeric(objDvmsLun);
  txtDvmsLun = objDvmsLun.value;

  if(txtDvmsLun && txtDvmsLun>0) //!isNaN(txtDvmsLun)
     if(txtDvmsLun>100) document.getElementById("txt_utl_dvms_lun").value = 100;

 /*if(txtDvmsLun && txtDvmsLun>0){ //!isNaN(txtDvmsLun)
  document.getElementById("utl_dvms_lun").value = txtDvmsLun;
 }else{
  document.getElementById("utl_dvms_lun").value = mDef_Arr['utl_dvms_lun'];
 }*/
   if(mDvmsLun!=txtDvmsLun)initData();
}

function setServers(ssl_id){
 if(document.getElementById("servers")!=null)
    ssl_id = document.getElementById("servers").value;
 else
    ssl_id = 0;
 //ssl_id = ssl_id ? ssl_id : 0;
 var user_count=document.getElementById("txt_User_Count").value;
 user_count=parseInt(user_count)>0?user_count:document.getElementById("User_Count").value;
 var user_type=document.getElementById("user_type").options[document.getElementById("user_type").selectedIndex].value;
 var user_experience_id=document.getElementById("user_experience").options[document.getElementById("user_experience").selectedIndex].value;
 if(document.getElementById("txt_utl_vcpu_count")!=null){
  var vcpu_count = document.getElementById("txt_utl_vcpu_count").value;
  vcpu_count = parseInt(vcpu_count)>0 ? vcpu_count : document.getElementById("utl_vcpu_count").value;
 }else{
  var vcpu_count = mDef_Arr['utl_vcpu_count'];
 }
 var memory_mb = document.getElementById("txt_utl_memory_mb").value;
 memory_mb = parseInt(memory_mb)>0 ? memory_mb : document.getElementById("utl_memory_mb").value;
;
 var at_id = document.getElementById("at_id").value; //callcounter
 if(document.getElementById("servers")!=null)
  clearServers();

 setTimeout("bAdvTabCnt = 1; loadCalcData('node/286/"+user_type+"/"+user_experience_id+"/"+user_count+"/"+ssl_id+"/"+vcpu_count+"/"+memory_mb+"/"+(callcounter++)+"/"+at_id+"')", 0); //Get Servers
}

function setStorage(testPara){

 var sockets_per_server = document.getElementById('sockets_per_server').innerHTML;
 var cores_per_socket = document.getElementById('cores_per_socket').innerHTML;
 var dvms_per_core = document.getElementById('dvms_per_core').innerHTML;

 var Optimal_DVM_divisor = parseInt(sockets_per_server) * parseInt(cores_per_socket) * parseInt(dvms_per_core);
 document.getElementById('Optimal_DVM_divisor').innerHTML = document.getElementById('Number_of_DVMs').value = document.getElementById('User_Count').value = Optimal_DVM_divisor;
 setNextOptimalAgain((document.getElementById('txt_Number_of_DVMs').value ? document.getElementById('txt_Number_of_DVMs').value : Optimal_DVM_divisor));


 if(document.getElementById("storage")!=null)
    ssl_id = document.getElementById("storage").value;
 else
    ssl_id = 0;

 //ssl_id = ssl_id ? ssl_id : 0;
 var user_count=document.getElementById("txt_User_Count").value;
 user_count=parseInt(user_count)>0?user_count:document.getElementById("User_Count").value;
 var user_type=document.getElementById("user_type").options[document.getElementById("user_type").selectedIndex].value;
 var user_experience_id=document.getElementById("user_experience").options[document.getElementById("user_experience").selectedIndex].value;
 if(document.getElementById("txt_utl_vcpu_count")!=null){
  var vcpu_count = document.getElementById("txt_utl_vcpu_count").value;
  vcpu_count = parseInt(vcpu_count)>0 ? vcpu_count : document.getElementById("utl_vcpu_count").value;
 }else{
  var vcpu_count = mDef_Arr['utl_vcpu_count'];
 }
 var memory_mb = document.getElementById("txt_utl_memory_mb").value;
 memory_mb = parseInt(memory_mb)>0 ? memory_mb : document.getElementById("utl_memory_mb").value;
;
 var disk_space_gb = document.getElementById("txt_utl_disk_space_gb").value;
 disk_space_gb = parseInt(disk_space_gb)>0 ? disk_space_gb : document.getElementById("utl_disk_space_gb").value;
 if(document.getElementById("txt_utl_dvms_lun")!=null){
  var dvms_lun = document.getElementById("txt_utl_dvms_lun").value;
  dvms_lun = parseInt(dvms_lun)>0 ? dvms_lun : document.getElementById("utl_dvms_lun").value;
  var iops = document.getElementById("txt_utl_iops").value;
  iops = parseInt(iops)>0 ? iops : document.getElementById("utl_iops").value;
 }else{
  var dvms_lun = mDef_Arr['utl_dvms_lun'];
  var iops = mDef_Arr['utl_iops'];
 }
 if(document.getElementById("storage")!=null)
  clearStorage();

 var at_id = document.getElementById("at_id").value; //callcounter
 //setTimeout("bAdvTabCnt = 2; loadCalcData('node/210')", 0);
 //alert('node/287/'+user_type+'/'+user_experience_id+'/'+user_count+'/'+ssl_id+'/'+memory_mb+'/'+disk_space_gb+'/'+dvms_lun+'/'+iops);
 var Next_Optimal_DVM_count = document.getElementById("Next_Optimal_DVM_count").innerHTML;
 if(Next_Optimal_DVM_count == '') Next_Optimal_DVM_count = 0;
 setTimeout("bAdvTabCnt = 2; loadCalcData('node/287/"+user_type+"/"+user_experience_id+"/"+user_count+"/"+ssl_id+"/"+memory_mb+"/"+disk_space_gb+"/"+dvms_lun+"/"+iops+"/"+(callcounter++)+"/"+at_id+"/"+Next_Optimal_DVM_count+"/"+testPara+"')", 0); //Get Servers

}

function setLicensing(ssl_id){
 /*if(document.getElementById("vSphereA")==null){
    setTimeout("bAdvTabCnt = 3; loadCalcData('node/285', 0);
    return;
 }*/

 disableSGControls(true);
 var user_count=document.getElementById("txt_User_Count").value;
 user_count = parseInt(user_count) > 0 ? user_count: document.getElementById("User_Count").value;

if(document.getElementById("vSphereA")!=null){
 var pano_discount = document.getElementById("txt_Pano_Discount").value
 pano_discount = pano_discount.replace('%','');
 pano_discount = parseInt(pano_discount) > 0 ? pano_discount : 0;
 var vSphere = document.getElementById("vSphereA").value;
 var vSphereSnS = document.getElementById("vSphereB").value;
 var vCenter = document.getElementById("vCenterA").value;
 var vCenterSnS = document.getElementById("vCenterB").value;
 var WinOS = document.getElementById("WinOS").value;
 var vSphereQty = 1;
 var vCenterQty = 1;
 var WinOSQty   = 1;

 clearLicensing();
}else{
 var pano_discount=vSphere=vSphereSnS=vCenter=vCenterSnS=WinOS=vSphereQty=vCenterQty=WinOSQty=0;
}
 var sockets_per_server = document.getElementById('sockets_per_server').innerHTML;
 var servers_servers = document.getElementById('servers_servers').innerHTML;
 var power_usage_per_server = document.getElementById('power_usage_per_server').innerHTML;
 var san_power_use = document.getElementById('san_power_use').innerHTML;
 var Monthly_kwH_for_servers = (((power_usage_per_server*24/1000)*365)/12)*servers_servers+(((san_power_use*24/1000)*365)/12);
 document.getElementById('Monthly_kwH_for_servers').innerHTML = Monthly_kwH_for_servers.toFixed(1);
 var vSphereQty = parseInt(sockets_per_server) * parseInt(servers_servers);
 var at_id = document.getElementById("at_id").value; //callcounter
 
 var calc_term = 0;
 if(document.getElementById("calculation_term").selectedIndex == -1)
	calc_term = document.getElementById("calculation_term").options[0].value;
 else
 	calc_term = document.getElementById("calculation_term").options[document.getElementById("calculation_term").selectedIndex].value;
 setTimeout("bAdvTabCnt = 3; loadCalcData('node/288/"+user_count+"/"+pano_discount+"/"+vSphere+"/"+vSphereSnS+"/"+vCenter+"/"+vCenterSnS+"/"+WinOS+"/"+vSphereQty+"/"+vCenterQty+"/"+WinOSQty+"/"+(callcounter++)+"/"+at_id+"/"+calc_term+"')", 0); //Get Servers
}

function clearServers(){
document.getElementById("sockets_per_server").innerHTML='&nbsp;';
document.getElementById("cores_per_socket").innerHTML='&nbsp;';
document.getElementById("dvms_per_core").innerHTML='&nbsp;';
document.getElementById("base_cost").innerHTML='&nbsp;';
document.getElementById("total_cores_needed").innerHTML='&nbsp;';
document.getElementById("total_ram_needed").innerHTML='&nbsp;';
document.getElementById("ram_per_server").innerHTML='&nbsp;';
document.getElementById("servers_servers").innerHTML='&nbsp;';
document.getElementById("servers_ram").innerHTML='&nbsp;';
document.getElementById("servers_for_cores").innerHTML='&nbsp;';
document.getElementById("servers_for_ram").innerHTML='&nbsp;';
document.getElementById("total_servers_needed").innerHTML='&nbsp;';
document.getElementById("power_usage_per_server").innerHTML='&nbsp;';
document.getElementById("servers_servers_cost").innerHTML='&nbsp;';
document.getElementById("servers_servers_total").innerHTML='&nbsp;';
document.getElementById("servers_ram_cost").innerHTML='&nbsp;';
document.getElementById("servers_ram_total").innerHTML='&nbsp;';
}

function clearStorage(){
 document.getElementById("target_dvm_disk_size").innerHTML='&nbsp;';
 document.getElementById("target_dvms_per_lun").innerHTML='&nbsp;';
 document.getElementById("target_iops_per_dvm").innerHTML='&nbsp;';
 document.getElementById("maximum_disks").innerHTML='&nbsp;';
 document.getElementById("disks_per_lun").innerHTML='&nbsp;';
 document.getElementById("iops_per_lun").innerHTML='&nbsp;';
 document.getElementById("san_power_use").innerHTML='&nbsp;';
 document.getElementById("lun_size").innerHTML='&nbsp;';
 document.getElementById("total_luns_needed").innerHTML='&nbsp;';
 document.getElementById("disks_per_tray").innerHTML='&nbsp;';
 document.getElementById("disks_needed").innerHTML='&nbsp;';
 document.getElementById("iops_per_dvm").innerHTML='&nbsp;';
 document.getElementById("max_gb_per_dvm").innerHTML='&nbsp;';
 document.getElementById("disks_needed_2").innerHTML='&nbsp;';
 document.getElementById("disks_needed_2_cost").innerHTML='&nbsp;';
 document.getElementById("disks_needed_2_total").innerHTML='&nbsp;';
 document.getElementById("additional_trays").innerHTML='&nbsp;';
 document.getElementById("additional_trays_cost").innerHTML='&nbsp;';
 document.getElementById("additional_trays_total").innerHTML='&nbsp;';
 document.getElementById("base_san_head").innerHTML='&nbsp;';
 document.getElementById("base_san_head_cost").innerHTML='&nbsp;';
 document.getElementById("base_san_head_total").innerHTML='&nbsp;';
}

function clearLicensing(){
 document.getElementById("vSphere_Edition_Cost").innerHTML='&nbsp;';
 document.getElementById("vSphere_SnS_Edition_Cost").innerHTML='&nbsp;';
 document.getElementById("vCenter_Edition_Cost").innerHTML='&nbsp;';
 document.getElementById("vCenter_SnS_Edition_Cost").innerHTML='&nbsp;';
 document.getElementById("Windows_OS_Edition_Cost").innerHTML='&nbsp;';
 document.getElementById("vSphere_Edition_Qty").innerHTML='&nbsp;';
 document.getElementById("vSphere_SnS_Edition_Qty").innerHTML='&nbsp;';
 document.getElementById("vCenter_Edition_Qty").innerHTML='&nbsp;';
 document.getElementById("vCenter_SnS_Edition_Qty").innerHTML='&nbsp;';
 document.getElementById("Windows_OS_Edition_Qty").innerHTML='&nbsp;';
 document.getElementById("vSphere_Edition_Total").innerHTML='&nbsp;';
 document.getElementById("vSphere_SnS_Edition_Total").innerHTML='&nbsp;';
 document.getElementById("vCenter_Edition_Total").innerHTML='&nbsp;';
 document.getElementById("vCenter_SnS_Edition_Total").innerHTML='&nbsp;';
 document.getElementById("Windows_OS_Edition_Total").innerHTML='&nbsp;';
 document.getElementById("pano_devices_cost").innerHTML='&nbsp;';
 document.getElementById("pano_devices_qty").innerHTML='&nbsp;';
 document.getElementById("pano_devices_total").innerHTML='&nbsp;';
 document.getElementById("pano_support_cost").innerHTML='&nbsp;';
 document.getElementById("pano_support_qty").innerHTML='&nbsp;';
 document.getElementById("pano_support_total").innerHTML='&nbsp;';
}

function selPanoDiscount(obj){
 txtPanoDiscount = obj.value;
 mPanoDiscount = obj.value;
 if(txtPanoDiscount.indexOf('%')) obj.value = txtPanoDiscount.replace('%','');
}

function chkPanoDiscount(obj){
 txtPanoDiscount = obj.value;

 if(isNaN(txtPanoDiscount)){obj.value = ''; return;}

 if(txtPanoDiscount && parseInt(txtPanoDiscount)>0){
   if(txtPanoDiscount > 100){
    //
   }
   obj.value = obj.value + '%';
 }

 if(txtPanoDiscount!=mPanoDiscount) setTimeout("setLicensing();",0);
}

if(document.all)
 window.onload = populatedefault;
else
 self.onload = populatedefault;

//FUNCTIONS

function wopen(url, name, w, h,mail)
{
	// Fudge factors for window decoration space.
	// In my tests these work well on all platforms & browsers.
	var props ='';
	w += 32;
	h += 96;
	var wleft = (screen.width - w) / 2;
	var wtop = (screen.height - h) / 2;
	var popWindow = window.open(url, name, 'status=0, width=' + w + ', height=' + h + ', left=' + wleft + ', top=' + wtop + ', ' + props);
	// Just in case width and height are ignored
	popWindow.resizeTo(w, h);
	// Just in case left and top are ignored
	popWindow.moveTo(wleft, wtop);
	popWindow.focus();
	popWindow.document.write('TCO Report has been sent to your email '+mail); 
	popWindow.document.title = "Pano Logic Confirmation"; 
} 


