",options:{disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this.bindings=t(),this.hoverable=t(),this.focusable=t(),s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(i,s){var n,o,a,r=i;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof i)if(r={},n=i.split("."),i=n.shift(),n.length){for(o=r[i]=t.widget.extend({},this.options[i]),a=0;n.length-1>a;a++)o[n[a]]=o[n[a]]||{},o=o[n[a]];if(i=n.pop(),1===arguments.length)return o[i]===e?null:o[i];o[i]=s}else{if(1===arguments.length)return this.options[i]===e?null:this.options[i];r[i]=s}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!e).attr("aria-disabled",e),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var o,a=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=o=t(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,o=this.widget()),t.each(n,function(n,r){function h(){return i||a.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?a[r]:r).apply(a,arguments):e}"string"!=typeof r&&(h.guid=r.guid=r.guid||h.guid||t.guid++);var l=n.match(/^(\w+)\s*(.*)$/),c=l[1]+a.eventNamespace,u=l[2];u?o.delegate(u,c,h):s.bind(c,h)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(e).undelegate(e)},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}})})(jQuery);(function(t){var e=!1;t(document).mouseup(function(){e=!1}),t.widget("ui.mouse",{version:"1.10.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.bind("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).bind("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!e){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,a="string"==typeof this.options.cancel&&i.target.nodeName?t(i.target).closest(this.options.cancel).length:!1;return n&&!a&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===t.data(i.target,this.widgetName+".preventClickEvent")&&t.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return s._mouseMove(t)},this._mouseUpDelegate=function(t){return s._mouseUp(t)},t(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),e=!0,!0)):!0}},_mouseMove:function(e){return t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button?this._mouseUp(e):this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){return t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),!1},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(t){var e=5;t.widget("ui.slider",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="
",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)o.push(a);this.handles=n.add(t(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e)})},_createRange:function(){var e=this.options,i="";e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=t("
").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===e.range||"max"===e.range?" ui-slider-range-"+e.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){var t=this.handles.add(this.range).filter("a");this._off(t),this._on(t,this._handleEvents),this._hoverable(t),this._focusable(t)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,a,o,r,l,h,u=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-u.values(e));(n>i||n===i&&(e===u._lastChangedValue||u.values(e)===c.min))&&(n=i,a=t(this),o=e)}),r=this._start(e,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),l=a.offset(),h=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-l.left-a.width()/2,top:e.pageY-l.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,a;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("start",t,i)},_slide:function(t,e,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(e?0:1),2===this.options.values.length&&this.options.range===!0&&(0===e&&i>s||1===e&&s>i)&&(i=s),i!==this.values(e)&&(n=this.values(),n[e]=i,a=this._trigger("slide",t,{handle:this.handles[e],value:i,values:n}),s=this.values(e?0:1),a!==!1&&this.values(e,i))):i!==this.value()&&(a=this._trigger("slide",t,{handle:this.handles[e],value:i}),a!==!1&&this.value(i))},_stop:function(t,e){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("stop",t,i)},_change:function(t,e){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._lastChangedValue=e,this._trigger("change",t,i)}},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(e,i){var s,n,a;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),undefined;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),t.Widget.prototype._setOption.apply(this,arguments),e){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var e,i,s,n,a,o=this.options.range,r=this.options,l=this,h=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((l.values(s)-l._valueMin())/(l._valueMax()-l._valueMin())),u["horizontal"===l.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[h?"animate":"css"](u,r.animate),l.options.range===!0&&("horizontal"===l.orientation?(0===s&&l.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&l.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[h?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[h?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(i){var s,n,a,o,r=t(i.target).data("ui-slider-handle-index");switch(i.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,t(i.target).addClass("ui-state-active"),s=this._start(i,r),s===!1))return}switch(o=this.options.step,n=a=this.options.values&&this.options.values.length?this.values(r):this.value(),i.keyCode){case t.ui.keyCode.HOME:a=this._valueMin();break;case t.ui.keyCode.END:a=this._valueMax();break;case t.ui.keyCode.PAGE_UP:a=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.PAGE_DOWN:a=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===this._valueMax())return;a=this._trimAlignValue(n+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===this._valueMin())return;a=this._trimAlignValue(n-o)}this._slide(i,r,a)},click:function(t){t.preventDefault()},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),t(e.target).removeClass("ui-state-active"))}}})})(jQuery);var CostCalculator = function(global_settings){
var settings = global_settings.engine;
var self = this;
this.metric = (global_settings.system == 'metric');
this.calculate = function(inputs) {
var res = {};
var inpts = {};
$.extend(inpts, inputs);
inpts.poolSize = (Number(inpts.hasSpa) == 1) ?
(inpts.poolSize + global_settings.spaSize)
: inpts.poolSize
;
var std = calcStandard(inpts);
var twoSpd = calcTwoSpeed(inpts);
var varSpd = calcVarSpeed(inpts);
$.extend(res,std,twoSpd,varSpd);
return res;
}
this.setSystem = function(blnMetric, global_settings) {
self.metric = blnMetric;
settings = global_settings.engine;
}
function calcStandard(inpts){
var res = {};
//calculate flow rate
var flowRate = settings.standardPump['_' + inpts.pumpHP][0];
var demand = settings.standardPump['_' + inpts.pumpHP][1];
//calculate turnovers per day
res.stdTurnOvers = getTurnOversPerDay(flowRate, inpts.runTime, inpts.poolSize);
//calculate hours running per day
res.stdRunTime = getHoursPerDay(inpts.runTime, res.stdTurnOvers);
res.stdRunTime = (res.stdRunTime > 24) ? 24 : res.stdRunTime;
//ensure minimum of 1 turnover per day
res.stdTurnOvers = (res.stdTurnOvers < 1) ? 1 : res.stdTurnOvers;
//calculate cost of operation
inpts.stdCostPerDay = inpts.electricCost * demand / 1000 * res.stdRunTime;
res.stdCostPerDay = inpts.stdCostPerDay;
res.stdCostPerYear = inpts.stdCostPerDay * 30.4 * inpts.monthsPerYear;
return res;
}
function calcTwoSpeed(inpts){
var res = {};
var pumpData = getTwoSpeedData(inpts.poolSize, inpts.runTime);
var lowSpeed = pumpData[0];
var highSpeed = pumpData[1];
var minHoursAtMax = settings.minimumHoursHighPumpSpeed;
var minTurnOvers = settings.minimumTurnOversPerDay;
var baseHoursAtLow = inpts.runTime - minHoursAtMax;
var highTurnOversPerDay = highSpeed.flowRate * minHoursAtMax * 60 / inpts.poolSize;
var altLow = (lowSpeed.flowRate * baseHoursAtLow * 60 ) / inpts.poolSize;
var lowTurnOversPerDay = minTurnOvers - highTurnOversPerDay;
lowTurnOversPerDay = (altLow > lowTurnOversPerDay) ? altLow : lowTurnOversPerDay;
var lowFlowRate = inpts.poolSize * lowTurnOversPerDay / baseHoursAtLow / 60;
lowFlowRate = (lowSpeed.flowRate > lowFlowRate) ? lowSpeed.flowRate : lowFlowRate;
var adjFlowRate = (lowFlowRate > highSpeed.flowRate) ? highSpeed.flowRate : lowFlowRate;
var lowRunTime = (lowTurnOversPerDay * inpts.poolSize / adjFlowRate / 60);
res.twoSpdRunTime = minHoursAtMax + lowRunTime;
res.twoSpdRunTime = (res.twoSpdRunTime > 24) ? 24 : res.twoSpdRunTime;
//Curve A
/*var lowDemand =
-0.002603 * Math.pow(adjFlowRate,3)
+ 0.5057 * Math.pow(adjFlowRate,2)
+ 18.149 * adjFlowRate
- 591.82
;*/
//Curve C
var lowDemand =
- 0.0053917 * Math.pow(adjFlowRate,3)
+ 1.0814209 * Math.pow(adjFlowRate,2)
- 28.45458 * adjFlowRate
+ 130.253
;
var averageFlow = ( minHoursAtMax * highSpeed.flowRate + lowRunTime * adjFlowRate) / res.twoSpdRunTime;
var averagePowerDemand = (minHoursAtMax * highSpeed.powerDemand + lowRunTime * lowDemand) / res.twoSpdRunTime;
var powerUsage =
(
(minHoursAtMax * highSpeed.powerDemand)
+ (lowRunTime * lowSpeed.powerDemand)
) / res.twoSpdRunTime
;
res.twoSpdTurnOvers = averageFlow * res.twoSpdRunTime * 60 / inpts.poolSize;
var costPerDay = inpts.electricCost * averagePowerDemand / 1000 * res.twoSpdRunTime;
res.twoSpdCostPerDay = costPerDay;
res.twoSpdSvngsPerDay = inpts.stdCostPerDay - costPerDay;
res.twoSpdCostPerYear = costPerDay * 30.4 * inpts.monthsPerYear;
res.twoSpdSvngsPerYear = res.twoSpdSvngsPerDay * 30.4 * inpts.monthsPerYear;
res.twoSpdSvngsPct = res.twoSpdSvngsPerDay / inpts.stdCostPerDay * 100;
return res;
}
function calcVarSpeed(inpts){
var res = {};
//calculate flow rate
var flowRate = inpts.pumpSpeed / (self.metric ? 9.279 : 35.12);
//calculate run time
var adjFlowRate = getVariableFlowRate(inpts.poolSize, inpts.runTime, inpts.currentPump);
res.varSpdRunTime = ((inpts.poolSize / adjFlowRate) - (inpts.runTime * 60))/60 + inpts.runTime;
res.varSpdRunTime = (res.varSpdRunTime > 24) ? 24 : res.varSpdRunTime;
//calculate turnovers per day
var turnOvers = getTurnOversPerDay(adjFlowRate, res.varSpdRunTime, inpts.poolSize);
var adjTurnOvers = flowRate * 60 * res.varSpdRunTime / inpts.poolSize;
res.varSpdRunTime = (adjTurnOvers
24) ? 24 : res.varSpdRunTime;
res.varSpdTurnOvers = getTurnOversPerDay(flowRate, res.varSpdRunTime, inpts.poolSize);
//calculate savings per day
var equation = settings.variableSpeedPump[inpts.currentPump].equation;
var powerUsage = calcPowerUsage(flowRate, equation);
var costPerDay = inpts.electricCost * powerUsage / 1000 * res.varSpdRunTime;
res.varSpdCostPerDay = costPerDay;
res.varSpdSvngsPerDay = inpts.stdCostPerDay - costPerDay;
//calculate savings per year
res.varSpdSvngsPerYear = res.varSpdSvngsPerDay * 30.4 * inpts.monthsPerYear;
res.varSpdCostPerYear = costPerDay * 30.4 * inpts.monthsPerYear;
//calculate savings percentage
res.varSpdSvngsPct = res.varSpdSvngsPerDay / inpts.stdCostPerDay * 100;
return res;
}
function getVariableFlowRate(poolSize, runTime, currentPump){
var reqFlow = (poolSize / (runTime * 60));
var maxFlow = settings.variableSpeedPump[currentPump].maxFlow;
return (reqFlow > maxFlow) ? maxFlow : reqFlow;
}
function getTwoSpeedData(poolSize, runTime){
var reqFlow = (poolSize/(runTime*60));
var twoSpds = settings.twoSpeedPump;
var pump = null;
for(var i = 0; i < twoSpds.length; i++){
if( reqFlow < twoSpds[i][0].flowRate ){
pump = twoSpds[i];
break;
}
}
if(pump==null) pump = twoSpds[ twoSpds.length - 1 ];
return pump;
}
function getTurnOversPerDay(flowRate, runTime, poolVolume){
return flowRate * runTime * 60 / poolVolume;
}
function getHoursPerDay(runTime,turnOvers){
var min = settings.minimumTurnOversPerDay;
var hours = (turnOvers < min) ? (runTime / turnOvers) : runTime;
return hours;
}
function calcPowerUsage(flowRate, equation){
var result = 0;
var cur = 1;
for (var i = equation.length - 1; i >= 0; i--) {
cur = cur * flowRate / (self.metric ? 3.785 : 1);
result += equation[i] * cur;
}
return result;
}
this.defaultPumpSpeed = function(inpts){
var flow = getVariableFlowRate(inpts.poolSize, inpts.runTime, inpts.currentPump);
var speed = flow * (self.metric ? 9.279 : 35.12);
return (speed < 1000) ? 1000 : speed;
}
this.runTests = function(){
var res = getTurnOversPerDay(73.50,8,52000);
fireunit.ok(res.toFixed(3) == 0.678, "Calculate 0.678 turn overs per day: " + res);
res = getHoursPerDay(8,0.678);
fireunit.ok(res.toFixed(1) == 11.8, "Extend run time to 11.8 hours: " + res);
}
};var url = url || '';
var CostCalculatorUI = function(calculator, settings) {
var self = this;
self.settings = settings;
self.inputs = {};
self.engine = calculator;
self.zipLookup = new ZipLookup();
self.savingsViewed = false;
function init() {
$('#hasSpa').val( self.settings.defaults.hasSpa );
self.inputs.hasSpa = self.settings.defaults.hasSpa;
$('#variableSpeedPump').val( self.settings.defaults.variableSpeedPump );
self.inputs.currentPump = self.settings.defaults.variableSpeedPump;
//preload tab2 bkg image
var bkg = new Image();
bkg.src = url + "images/bkg-your-savings-ie.gif";
initLabels();
buildSliders();
setupEvents();
update();
if (querySt("us") == '0') {
$('#notUsResident').attr('checked',true);
$('#zipCode').attr('disabled',true);
zipCodeLookup();
}
if (self.settings.need_help) {
$('a#need_help')
.attr('href', self.settings.need_help)
.removeAttr('target')
;
}
if (self.settings.learn_more) {
$('a#learn_more')
.attr('href', self.settings.learn_more)
.removeAttr('target')
;
}
}
function setSystem(settings) {
self.settings = settings;
self.inputs = {};
self.savingsViewed = false;
// unbind previous events
$('tdhPage input').each(function() {
$(this).unbind('keypress');
});
$('tdhPage select').unbind('change');
$('tdhPage input').unbind('keyup');
$('[id^=totab],[id^=tab]').unbind('click');
$('#lnkShowTwoSpeed').unbind('click');
$('#lnkHideTwoSpeed').unbind('click');
$('#printBtn').unbind('click');
$('#notUsResident').unbind('click');
init();
$('div.tdhPage a#tab_1').click();
}
function initLabels() {
for(var name in self.settings.labels){
var label = self.settings.labels[name];
$('[name="' + name + '"]').each(function() {
$(this).html(' ' + label);
});
}
}
function querySt(param) {
var qs = window.location.search.substring(1);
qs = qs.split("&");
var i, val;
for (i=0; i < qs.length; i++) {
val = qs[i].split("=");
if (val[0] == param) {
return val[1];
}
}
return null;
}
function buildSliders() {
for(var id in self.settings.sliders) {
var values = self.settings.sliders[ id ];
buildSlider(id, values);
}
}
function buildSlider(id, values) {
var defaultIndex = self.settings.defaults[ id ];
var defaultValue = values[ defaultIndex ];
self.inputs[ id ] = defaultValue;
if(id == "poolSize") changePoolImage(values,defaultIndex);
$('#' + id + 'Span').html( addCommas(defaultValue) );
$('#' + id).slider({
min: 0
,max: values.length - 1
,value: self.settings.defaults[ id ]
,change: function(event,ui) {
var id = event.target.id;
var values = self.settings.sliders[id];
self.inputs[ id ] = values[ ui.value ];
update();
if(id == "poolSize") changePoolImage(values,ui.value);
}
,slide: function(event,ui) {
var id = event.target.id;
var values = self.settings.sliders[id];
var val = (id == "electricCost") ? values[ ui.value ].toFixed(2) : values[ ui.value ];
$('#' + id + 'Span').html( addCommas(val) );
self.inputs[ id ] = val;
update();
}
});
}
function resetSliders() {
for (var id in self.settings.sliders) {
var values = self.settings.sliders[ id ];
var defaultIndex = self.settings.defaults[ id ];
var defaultValue = values[ defaultIndex ];
self.inputs[ id ] = defaultValue;
$('#' + id + 'Span').html( defaultValue );
$('#' + id).slider('option', 'max', values.length - 1);
$('#' + id).slider('option', 'value', defaultIndex);
}
}
function setupEvents() {
$('tdhPage input').each(function() {
$(this).keypress(onNumericKeyPress);
});
$('.tdhPage select').on('change', function() {
var val = Number(this.value);
self.inputs[ this.id ] = val;
var size = self.inputs.poolSize;
var image =
url + 'images/pools' + (self.engine.metric ? '_metric' : '_english')
+ '/' + size
+ (self.inputs.hasSpa == 1 ? "_spa" : '')
+ '.jpg'
;
$('#poolImg').attr('src', image);
update();
});
$('.tdhPage input').on('keyup', zipCodeLookup);
$('[id^=totab],[id^=tab]').on('click', function() {
if (validZip()){
if (!self.savingsViewed) setDefaults();
updatePrintView();
var tabId = Number(this.id.split('_')[1]);
tabSwitch(tabId, 2, 'tab_', 'page');
update();
} else {
alert(langStrings.tdhLangPleaseEnterValidZipCode);
}
});
$('#lnkShowTwoSpeed').on('click', function() {
$('#varspeed').removeClass('left80');
$('#twospeed').show();
$('#lnkShowTwoSpeed').hide();
$('#lnkHideTwoSpeed').show();
});
$('#lnkHideTwoSpeed').on('click', function() {
$('#twospeed').hide();
$('#varspeed').addClass('left80');
$('#lnkHideTwoSpeed').hide();
$('#lnkShowTwoSpeed').show();
});
$('#variableSpeedPump').change(function() {
self.inputs.currentPump = $(this).val();
$('#variableSpeedPumpLabel').html(this.options[$(this).val()].text);
update();
});
$('#printBtn').on('click', function() {
updatePrintView();
window.print();
});
$('#notUsResident').on('click', function() {
$('#zipCode').attr('disabled', this.checked);
$('#zipCode').trigger('keyup');
});
}
function updatePrintView() {
$('#poolSizePrintSpan').html(addCommas(self.inputs.poolSize));
$('#zipCodePrintSpan').html($('#zipCode').val());
var spa = (self.inputs.hasSpa == 1) ? "Yes":"No";
$('#hasSpaPrintSpan').html(spa);
}
function setDefaults() {
setDefaultHP();
var spd = self.engine.defaultPumpSpeed(self.inputs);
var spds = self.settings.sliders.pumpSpeed;
var i = 0;
for(i; i < spds.length; i++) {
if (spds[i] >= spd) {
break;
}
}
$('#pumpSpeed').slider('option','value',i);
$('#pumpSpeedSpan').html(addCommas(spd.toFixed(0)));
self.inputs.pumpSpeed = spd;
self.savingsViewed = true;
}
function update() {
if (validZip()) {
var results = self.engine.calculate(self.inputs);
for (var key in results) {
var value = getOutputValue(key, results[key]);
$('#' + key).html(value);
updateLabel(key, value);
}
}
}
function getOutputValue(id, val) {
var value = val;
if (val >= 0) {
var value = setDecimalPlaces(id, value);
value = addCommas(value);
value = setCurrencyPrefix(id, value);
} else {
value = "N/A";
}
return value;
}
function setDecimalPlaces(id, val) {
var defaultVal = self.settings.decimalPlaces['default'];
var decimalPlaces = self.settings.decimalPlaces[id];
if (decimalPlaces == null) decimalPlaces = defaultVal;
return val.toFixed(decimalPlaces);
}
function setCurrencyPrefix(id, val) {
var prefix = self.settings.currencyPrefix || '';
prefix = $('#' + id).eq(0).hasClass('currency') ? prefix : '';
return prefix + " " + val;
}
function updateLabel(id, val) {
if (val=="N/A"){
$("#" + id + "Label").html(" ");
} else {
var labelType = $("#" + id + "Label").attr("name")
var label = self.settings.labels[ (labelType) ? labelType : "" ];
label = (label) ? label : ""
$("#" + id + "Label").html(" " + label);
}
}
function onNumericKeyPress(e) {
var k = e.which;
if (k == 46 || k == 13 || k == 8 || k == 10 || k == 0) return true;
if (k < 48 || k > 57) e.preventDefault();
}
function zipCodeLookup() {
self.savingsViewed = false;
var val = this.value;
var state = self.zipLookup.lookup(this.value);
var vals = ($('#notUsResident').attr('checked'))
? self.settings.stateDefaults['NON-US']
: self.settings.stateDefaults[state]
;
setSliderValues(vals);
update();
}
function setSliderValues(vals) {
var sliders = self.settings.sliders;
if(vals != null){
for(var id in vals) {
var sliderRange = sliders[id];
for(var i = 0; i 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
function displayError(id,msg) {
$(id).html('');
$(id).append(''+msg+'
');
}
function tabSwitch(active, number, tab_prefix, pageprefix) {
for (var i=1; i < number+1; i++) {
document.getElementById(pageprefix+i).style.display = 'none';
document.getElementById(tab_prefix+i).className = '';
}
if (active == 2) {
$('#lnkShowTwoSpeed').show();
$('#twospeed').hide();
$('#varspeed').addClass('left80');
}
document.getElementById(pageprefix+active).style.display = 'block';
document.getElementById(tab_prefix+active).className = 'active';
}
function setDefaultHP() {
var flow = self.inputs.poolSize / (self.inputs.runTime * 60);
var hps = self.settings.sliders.pumpHP;
var minHP = self.settings.engine.variableSpeedPump[self.inputs.currentPump].minHP;
var i = hps.length - 1;
var minIndex;
for (i; i >= 0; i--) {
var pumpFlow = self.settings.engine.standardPump[ "_" + hps[i] ][0];
if (pumpFlow < flow || hps[i+1] <= minHP) break;
}
var index = (i >= hps.length - 1) ? hps.length - 1 : i+1;
$('#pumpHP').slider('option','value',index);
$('#pumpHPSpan').html(hps[index]);
self.inputs.pumpHP = hps[index];
}
function changePoolImage(values,index) {
var size = values[index];
var image =
url + 'images/pools' + (self.engine.metric ? '_metric' : '_english') + '/'
+ ((self.inputs.hasSpa == 1) ? (size+"_spa.jpg") : (size + ".jpg"))
;
$('#poolImg').attr('src',image);
}
return {
init: init
,setSystem: setSystem
};
};function ZipLookup(){
var StateZips = {
"AL":[ [350,369] ]
,"AK":[ [995,999] ]
,"AZ":[ [850,865] ]
,"AR":[ [716,729], [755] ]
,"CA":[ [900,966] ]
,"CO":[ [800,816] ]
,"CT":[ ['060','069'] ]
,"DE":[ [197,199] ]
,"DC":[ [200,205] ]
,"FL":[ [320,349] ]
,"GA":[ [300,319], [398,399] ]
,"HI":[ [967,968] ]
,"ID":[ [832,838] ]
,"IL":[ [600,629] ]
,"IN":[ [460,479] ]
,"IA":[ [500,528] ]
,"KS":[ [660,679] ]
,"KY":[ [400,427] ]
,"LA":[ [700,714] ]
,"ME":[ ['039','049'] ]
,"MD":[ [206,219] ]
,"MA":[ [010,027], [055] ]
,"MI":[ [480,499] ]
,"MN":[ [550,567] ]
,"MS":[ [386,397] ]
,"MO":[ [630,658] ]
,"MT":[ [590,599] ]
,"NE":[ [680,693] ]
,"NV":[ [889,898] ]
,"NH":[ ['030','039'] ]
,"NJ":[ ['070','089'] ]
,"NM":[ [870,884] ]
,"NY":[ ['090',149], ['005'], ['063'] ]
,"NC":[ [269,289] ]
,"ND":[ [580,588] ]
,"OH":[ [430,459] ]
,"OK":[ [730,749] ]
,"OR":[ [970,979] ]
,"PA":[ [150,196] ]
,"RI":[ ['028','029'] ]
,"SC":[ [290,299] ]
,"SD":[ [570,577] ]
,"TN":[ [370,385] ]
,"TX":[ [750,799], [885] ]
,"UT":[ [840,847] ]
,"VT":[ ['050','059'] ]
,"VA":[ [220,246], [201] ]
,"WA":[ [980,994] ]
,"WI":[ [530,549] ]
,"WV":[ [247,268] ]
,"WY":[ [820,831] ]
};
this.lookup = function(zip){
var prefix = Number((""+zip).substring(0,3));
for(var key in StateZips){
var ranges = StateZips[key];
for(var i = 0; i < ranges.length; i++){
var min = ranges[i][0];
var max = (ranges[i].length < 2) ? ranges[i][0] : ranges[i][1];
if( prefix >= min && prefix <= max ) return key;
}
}
return null;
}
}var settings = settings || {};
settings.english = {
'system': 'english'
,"sliders": {
"poolSize": [
10000, 11000, 12000, 13000, 14000, 15000, 16000, 17000, 18000, 19000,
20000, 21000, 22000, 23000, 24000, 25000, 26000, 27000, 28000, 29000,
30000, 31000, 32000, 33000, 34000, 35000, 36000, 37000, 38000, 39000,
40000
]
,"electricCost": [
0.05, 0.06, 0.07, 0.08, 0.09,
0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19,
0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29,
0.30, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39,
0.40, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49,
0.50
]
,"runTime": [4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
,"monthsPerYear": [1,2,3,4,5,6,7,8,9,10,11,12]
,"pumpHP": [0.5,0.75,1.0,1.5,2,3]
,"pumpSpeed": [
1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800,
1900, 2000, 2400, 2800, 3200, 3400, 3450
]
}
,"defaults":{
"poolSize": 11
,"electricCost": 6
,"runTime": 7
,"monthsPerYear": 11
,"pumpHP": 5
,"hasSpa": 0
,"variableSpeedPump": 0
}
,'spaSize': 12000
,'labels' : {}
,"engine":{
"minimumTurnOversPerDay": 1
,"minimumHoursHighPumpSpeed": 2
,"standardPump": {
// HP GPM Watts
"_0.5": [ 65.3, 1238 ]
,"_0.75": [ 67, 1400 ]
,"_1": [ 75.5, 1803 ]
,"_1.5": [ 78.1, 2068 ]
,"_2": [ 88.7, 2314 ]
,"_3": [ 101.7, 3052 ]
}
,"twoSpeedPump": [ //Curve C
// LO HI
[ //Curve C
{"flowRate": 44.0, "powerDemand": 499}
,{"flowRate": 88.0, "powerDemand": 2340}
]
,[ //Curve C
{"flowRate": 44.0, "powerDemand": 499}
,{"flowRate": 88.0, "powerDemand": 2340}
]
]
,"variableSpeedPump": [
{
// tdhLangIntelliFloVariableSpeedPump
"maxFlow": 97
,"minHP": 1.5
// ,"equation": [ 0.0000282723, -0.00190405, 0.216045, -0.7646 ]
,"equation": [ 0.0039, -0.1573, 6.7396 ]
}
,{
// tdhLangIntelliFloXFVariableSpeedPump
"maxFlow": 102
,"minHP": 1.5
,"equation": [ 0.0032, -0.0951, 4.4944 ]
}
]
},
"decimalPlaces":{
//Defaults to one
"default": 1
,"stdCostPerDay": 2
,"stdCostPerYear": 0
,"twoSpdCostPerDay": 2
,"twoSpdCostPerYear": 2
,"twoSpdSvngsPerDay": 2
,"twoSpdSvngsPerYear": 0
,"twoSpdSvngsPct": 0
,"varSpdCostPerDay": 2
,"varSpdCostPerYear": 2
,"varSpdSvngsPerDay": 2
,"varSpdSvngsPerYear": 0
,"varSpdSvngsPct": 0
}
,"stateDefaults":{
"AL": {"electricCost":0.09, "runTime":12, "monthsPerYear":8}
,"AK": {"electricCost":0.16, "runTime":6, "monthsPerYear":12}
,"AZ": {"electricCost":0.12, "runTime":8, "monthsPerYear":12}
,"AR": {"electricCost":0.08, "runTime":12, "monthsPerYear":8}
,"CA": {"electricCost":0.32, "runTime":8, "monthsPerYear":12}
,"CO": {"electricCost":0.09, "runTime":12, "monthsPerYear":5}
,"CT": {"electricCost":0.18, "runTime":10, "monthsPerYear":4}
,"DE": {"electricCost":0.13, "runTime":10, "monthsPerYear":5}
,"DC": {"electricCost":0.11, "runTime":10, "monthsPerYear":5}
,"FL": {"electricCost":0.11, "runTime":6, "monthsPerYear":12}
,"GA": {"electricCost":0.08, "runTime":12, "monthsPerYear":7}
,"HI": {"electricCost":0.28, "runTime":8, "monthsPerYear":12}
,"ID": {"electricCost":0.06, "runTime":6, "monthsPerYear":4}
,"IL": {"electricCost":0.10, "runTime":10, "monthsPerYear":4}
,"IN": {"electricCost":0.08, "runTime":10, "monthsPerYear":4}
,"IA": {"electricCost":0.09, "runTime":10, "monthsPerYear":4}
,"KS": {"electricCost":0.07, "runTime":12, "monthsPerYear":5}
,"KY": {"electricCost":0.07, "runTime":12, "monthsPerYear":5}
,"LA": {"electricCost":0.09, "runTime":12, "monthsPerYear":10}
,"ME": {"electricCost":0.15, "runTime":10, "monthsPerYear":4}
,"MD": {"electricCost":0.13, "runTime":10, "monthsPerYear":5}
,"MA": {"electricCost":0.15, "runTime":10, "monthsPerYear":4}
,"MI": {"electricCost":0.10, "runTime":10, "monthsPerYear":4}
,"MN": {"electricCost":0.09, "runTime":10, "monthsPerYear":4}
,"MS": {"electricCost":0.09, "runTime":12, "monthsPerYear":8}
,"MO": {"electricCost":0.07, "runTime":12, "monthsPerYear":6}
,"MT": {"electricCost":0.09, "runTime":6, "monthsPerYear":4}
,"NE": {"electricCost":0.07, "runTime":12, "monthsPerYear":5}
,"NV": {"electricCost":0.12, "runTime":8, "monthsPerYear":12}
,"NH": {"electricCost":0.14, "runTime":10, "monthsPerYear":4}
,"NJ": {"electricCost":0.14, "runTime":10, "monthsPerYear":4}
,"NM": {"electricCost":0.09, "runTime":12, "monthsPerYear":12}
,"NY": {"electricCost":0.17, "runTime":10, "monthsPerYear":4}
,"NC": {"electricCost":0.09, "runTime":12, "monthsPerYear":6}
,"ND": {"electricCost":0.07, "runTime":10, "monthsPerYear":4}
,"OH": {"electricCost":0.09, "runTime":10, "monthsPerYear":4}
,"OK": {"electricCost":0.07, "runTime":12, "monthsPerYear":9}
,"OR": {"electricCost":0.08, "runTime":6, "monthsPerYear":4}
,"PA": {"electricCost":0.11, "runTime":10, "monthsPerYear":4}
,"RI": {"electricCost":0.14, "runTime":10, "monthsPerYear":4}
,"SC": {"electricCost":0.09, "runTime":12, "monthsPerYear":6}
,"SD": {"electricCost":0.08, "runTime":10, "monthsPerYear":4}
,"TN": {"electricCost":0.08, "runTime":12, "monthsPerYear":6}
,"TX": {"electricCost":0.12, "runTime":12, "monthsPerYear":12}
,"UT": {"electricCost":0.08, "runTime":8, "monthsPerYear":5}
,"VT": {"electricCost":0.14, "runTime":10, "monthsPerYear":4}
,"VA": {"electricCost":0.08, "runTime":10, "monthsPerYear":5}
,"WA": {"electricCost":0.08, "runTime":6, "monthsPerYear":5}
,"WI": {"electricCost":0.07, "runTime":10, "monthsPerYear":4}
,"WV": {"electricCost":0.11, "runTime":10, "monthsPerYear":4}
,"WY": {"electricCost":0.08, "runTime":12, "monthsPerYear":4}
,"NON-US": {"electricCost":0.15, "runTime":12, "monthsPerYear":6}
}
};var settings = settings || {};
settings.metric = {
'system': 'metric'
,"sliders": {
"poolSize": [
40000, 44000, 48000, 52000, 56000, 60000, 64000, 68000, 72000, 76000,
80000, 84000, 88000, 92000, 96000, 100000, 104000, 108000, 112000, 116000,
120000, 124000, 128000, 132000, 136000, 140000, 144000, 148000, 152000, 156000,
160000
]
,"electricCost": [
0.05, 0.06, 0.07, 0.08, 0.09,
0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19,
0.20, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29,
0.30, 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39,
0.40, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49,
0.50, 0.60, 0.70, 0.80, 0.90,
1.00, 1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90,
2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80, 2.90,
3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90,
4.00, 4.10, 4.20, 4.30, 4.40, 4.50, 4.60, 4.70, 4.80, 4.90,
5.00, 5.10, 5.20, 5.30, 5.40, 5.50, 5.60, 5.70, 5.80, 5.90,
6.00, 6.10, 6.20, 6.30, 6.40, 6.50, 6.60, 6.70, 6.80, 6.90,
7.00
]
,"runTime": [4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
,"monthsPerYear": [1,2,3,4,5,6,7,8,9,10,11,12]
,"pumpHP": [0.37,0.5,0.75,1.1,1.5,2.2]
,"pumpSpeed": [
1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800,
1900, 2000, 2400, 2800, 3200, 3400, 3450
]
}
,"defaults":{
"poolSize": 10
,"electricCost": 6
,"runTime": 7
,"monthsPerYear": 11
,"pumpHP": 5
,"hasSpa": 0
,"variableSpeedPump": 0
}
,'spaSize': 45000
,'labels' : {}
,"engine":{
"minimumTurnOversPerDay": 1
,"minimumHoursHighPumpSpeed": 2
,"standardPump": {
// HP L/M Watts
"_0.37": [ 247.16, 1238 ]
,"_0.5": [ 253.59, 1400 ]
,"_0.75": [ 285.77, 1803 ]
,"_1.1": [ 295.61, 2068 ]
,"_1.5": [ 335.73, 2314 ]
,"_2.2": [ 384.93, 3052 ]
}
,"twoSpeedPump": [ //Curve C
// LO HI
[ //Curve C
{"flowRate": 166.54, "powerDemand": 499}
,{"flowRate": 333.08, "powerDemand": 2340}
]
,[ //Curve C
{"flowRate": 166.54, "powerDemand": 499}
,{"flowRate": 333.08, "powerDemand": 2340}
]
]
,"variableSpeedPump": [
{
// tdhLangIntelliFloVariableSpeedPump
"maxFlow": 367.14
,"minHP": 1.1
// ,"equation": [ 0.0000282723, -0.00190405, 0.216045, -0.7646 ]
,"equation": [ 0.0039, -0.1573, 6.7396 ]
}
,{
// tdhLangIntelliFloXFVariableSpeedPump
"maxFlow": 386.11
,"minHP": 1.1
,"equation": [ 0.0032, -0.0951, 4.4944 ]
}
]
},
"decimalPlaces":{
//Defaults to one
"default": 1
,"stdCostPerDay": 2
,"stdCostPerYear": 0
,"twoSpdCostPerDay": 2
,"twoSpdCostPerYear": 2
,"twoSpdSvngsPerDay": 2
,"twoSpdSvngsPerYear": 0
,"twoSpdSvngsPct": 0
,"varSpdCostPerDay": 2
,"varSpdCostPerYear": 2
,"varSpdSvngsPerDay": 2
,"varSpdSvngsPerYear": 0
,"varSpdSvngsPct": 0
}
,"stateDefaults":{
"AL": {"electricCost":0.09, "runTime":12, "monthsPerYear":8}
,"AK": {"electricCost":0.16, "runTime":6, "monthsPerYear":12}
,"AZ": {"electricCost":0.12, "runTime":8, "monthsPerYear":12}
,"AR": {"electricCost":0.08, "runTime":12, "monthsPerYear":8}
,"CA": {"electricCost":0.32, "runTime":8, "monthsPerYear":12}
,"CO": {"electricCost":0.09, "runTime":12, "monthsPerYear":5}
,"CT": {"electricCost":0.18, "runTime":10, "monthsPerYear":4}
,"DE": {"electricCost":0.13, "runTime":10, "monthsPerYear":5}
,"DC": {"electricCost":0.11, "runTime":10, "monthsPerYear":5}
,"FL": {"electricCost":0.11, "runTime":6, "monthsPerYear":12}
,"GA": {"electricCost":0.08, "runTime":12, "monthsPerYear":7}
,"HI": {"electricCost":0.28, "runTime":8, "monthsPerYear":12}
,"ID": {"electricCost":0.06, "runTime":6, "monthsPerYear":4}
,"IL": {"electricCost":0.10, "runTime":10, "monthsPerYear":4}
,"IN": {"electricCost":0.08, "runTime":10, "monthsPerYear":4}
,"IA": {"electricCost":0.09, "runTime":10, "monthsPerYear":4}
,"KS": {"electricCost":0.07, "runTime":12, "monthsPerYear":5}
,"KY": {"electricCost":0.07, "runTime":12, "monthsPerYear":5}
,"LA": {"electricCost":0.09, "runTime":12, "monthsPerYear":10}
,"ME": {"electricCost":0.15, "runTime":10, "monthsPerYear":4}
,"MD": {"electricCost":0.13, "runTime":10, "monthsPerYear":5}
,"MA": {"electricCost":0.15, "runTime":10, "monthsPerYear":4}
,"MI": {"electricCost":0.10, "runTime":10, "monthsPerYear":4}
,"MN": {"electricCost":0.09, "runTime":10, "monthsPerYear":4}
,"MS": {"electricCost":0.09, "runTime":12, "monthsPerYear":8}
,"MO": {"electricCost":0.07, "runTime":12, "monthsPerYear":6}
,"MT": {"electricCost":0.09, "runTime":6, "monthsPerYear":4}
,"NE": {"electricCost":0.07, "runTime":12, "monthsPerYear":5}
,"NV": {"electricCost":0.12, "runTime":8, "monthsPerYear":12}
,"NH": {"electricCost":0.14, "runTime":10, "monthsPerYear":4}
,"NJ": {"electricCost":0.14, "runTime":10, "monthsPerYear":4}
,"NM": {"electricCost":0.09, "runTime":12, "monthsPerYear":12}
,"NY": {"electricCost":0.17, "runTime":10, "monthsPerYear":4}
,"NC": {"electricCost":0.09, "runTime":12, "monthsPerYear":6}
,"ND": {"electricCost":0.07, "runTime":10, "monthsPerYear":4}
,"OH": {"electricCost":0.09, "runTime":10, "monthsPerYear":4}
,"OK": {"electricCost":0.07, "runTime":12, "monthsPerYear":9}
,"OR": {"electricCost":0.08, "runTime":6, "monthsPerYear":4}
,"PA": {"electricCost":0.11, "runTime":10, "monthsPerYear":4}
,"RI": {"electricCost":0.14, "runTime":10, "monthsPerYear":4}
,"SC": {"electricCost":0.09, "runTime":12, "monthsPerYear":6}
,"SD": {"electricCost":0.08, "runTime":10, "monthsPerYear":4}
,"TN": {"electricCost":0.08, "runTime":12, "monthsPerYear":6}
,"TX": {"electricCost":0.12, "runTime":12, "monthsPerYear":12}
,"UT": {"electricCost":0.08, "runTime":8, "monthsPerYear":5}
,"VT": {"electricCost":0.14, "runTime":10, "monthsPerYear":4}
,"VA": {"electricCost":0.08, "runTime":10, "monthsPerYear":5}
,"WA": {"electricCost":0.08, "runTime":6, "monthsPerYear":5}
,"WI": {"electricCost":0.07, "runTime":10, "monthsPerYear":4}
,"WV": {"electricCost":0.11, "runTime":10, "monthsPerYear":4}
,"WY": {"electricCost":0.08, "runTime":12, "monthsPerYear":4}
,"NON-US": {"electricCost":0.15, "runTime":12, "monthsPerYear":6}
}
}; var $ = jQuery.noConflict();
$.extend(settings.english.labels, global.labels.english);
settings.english.currencyPrefix = global.CurrencyPrefix;
$.extend(settings.metric.labels, global.labels.metric);
settings.metric.currencyPrefix = global.CurrencyPrefix;
var cost_calculator, calculatorUI;
$(document).ready(function() {
for (var ls in langStrings) {
$('.' + ls).html(langStrings[ls]);
}
cost_calculator = new CostCalculator(settings[global.DefaultMeasurementSystem]);
calculatorUI = new CostCalculatorUI(
cost_calculator
,settings[global.DefaultMeasurementSystem]
);
calculatorUI.init();
});
$('#switchEnglish').on('click', function() {
cost_calculator.setSystem(false, settings.english);
calculatorUI.setSystem(settings.english);
return false;
});
$('#switchMetric').on('click', function() {
cost_calculator.setSystem(true, settings.metric);
calculatorUI.setSystem(settings.metric);
return false;
});
})();