var CD={Part:{show:function(){var i=[]}},INV:function(n){for(var f=Math.abs(1e-5*n),t=Math.atan(n),i=Math.sin(t),r=Math.cos(t),u=n+1;Math.abs(n-u)>f;)t=t-r*(i-r*(t+n))/(i*i),t=Math.min(t,1.57079),i=Math.sin(t),r=Math.cos(t),u=i/r-t;return t},Unit:{convert:function(n){if(CD.ui.unit&&(n=parseFloat(n),typeof n=="number")){var t=25.4;switch(CD.ui.unit.val()){case"MM":return n*t;case"IN":return n/t}}return n},factor:function(){return CD.ui.unit.val()==="MM"?25.4:1},toFixed:function(n){if(CD.ui.unit&&(n=parseFloat(n),typeof n=="number"))switch(CD.ui.unit.val()){case"MM":return n.toFixed(2);case"IN":return n.toFixed(4)}return n},toDual:function(n){if(CD.ui.unit&&(n=parseFloat(n),typeof n=="number"))switch(CD.ui.unit.val()){case"MM":return n.toFixed(2)+"mm ("+(n/25.4).toFixed(4)+'")';case"IN":return n.toFixed(4)+'" ('+(n*25.4).toFixed(2)+"mm)"}return n}},Ratio:{queue:{array:["N2","N1"],free:"R",push:function(n){switch($.inArray(n,this.array)){case 0:var t=this.array.shift();this.array.push(t);break;case-1:this.array.push(n),this.free=this.array.shift()}}},calculate:function(n){this.queue.push(n);var t=CD.ui,u,r,i;switch(this.queue.free){case"N1":r=parseInt(t.pulley2Number.val()),i=parseFloat(t.ratioDesired.val()),u=r/i,t.pulley1Number.val(u),t.pulley1Number.rematch();break;case"N2":u=parseInt(t.pulley1Number.val()),i=parseFloat(t.ratioDesired.val()),r=u*i,t.pulley2Number.val(r),t.pulley2Number.rematch()}},finalze:function(){var n=CD.ui,r=parseInt(n.pulley1Number.val()),i=parseInt(n.pulley2Number.val()),t=i/r;n.ratioActual.val(t.toFixed(4))}},PartsList:{base:{load:function(){var n={},t;$.each(this.parameters,function(t,i){switch(i[1].text()){case"Inch (in)":n[i[0]]="IN";break;case"Metric (mm)":n[i[0]]="MM";break;default:var r=i[1].text();r=r.replace("*","").replace("*",""),n[i[0]]=r}}),t=this,$.get(window.g_baseUrl+"CenterDistanceDesigner/Parts",n,function(n){$("#divGridContaner").html(n).show("blind",1e3)})},source:function(){return this._source}},create:function(n,t){function r(){}r.prototype=this.base;var i=new r;return i.id="#button"+n,i.parameters=t,i.onDocumentReady=function(){$(this.id).click(function(){i.load()})},i},hide:function(){$("#divGridContaner:visible").hide("blind",1e3)}},Source:{base:{reload:function(){var n={},t;$.each(this.parameters,function(t,i){switch(i[1].text()){case"Inch (in)":n[i[0]]="IN";break;case"Metric (mm)":n[i[0]]="MM";break;default:n[i[0]]=i[1].text()}}),t=this,$.getJSON("https://sdp-si.com/eStore_cd/"+this.url,n,function(n){n&&(n.names||(n.names=n.values),n.values||(n.values=n.names),t._source=n,t.callback())})},source:function(){return this._source}},create:function(n,t,i){function u(){}u.prototype=this.base;var r=new u;return r.url=n,r.parameters=t,r.callback=i,r}},Broker:{base:{_value:null,init:function(n,t,i){this.isDirty=!1,this.id=n,this._value=t,this.callback=i},val:function(n){return n&&this._value!==n&&(this._value=n,this.isDirty=!0),this._value},anaimate:function(){this.isDirty&&($(this.id).animate({color:"#FFCC66",duration:10}).delay(30).animate({color:this.min&&this.val()<=this.min?"red":"#000",duration:10}),this.isDirty=!1)},onChanged:function(n){typeof this.callback=="function"&&this.callback(n)}},createSelect:function(n,t,i){function u(){}u.prototype=this.base;var r=new u;return r.init("#select"+n,t,i),r._text=t,r.source=function(n){r._source=n,r.hasNewSource=!0,r.rematch(!0)},r.rematch=function(){var t,f,r,e,u,i,n;if(this._source)if(t=this.val(),typeof t=="string"&&(t=t.replace("*","").replace("*","")),!isNaN(t)&&this._source.values){if(t=parseInt(t),i=0,t>parseFloat(this._source.values[0]))if(t<parseFloat(this._source.values[this._source.values.length-1]))for(f=parseFloat(this._source.values[0]),r=t-f,n=1;n<this._source.values.length;n++)if(r==0){i=n-1;break}else if(e=parseFloat(this._source.values[n]),u=t-e,r*u<=0){i=Math.abs(r)<=Math.abs(u)?n-1:n;break}else if(n===this._source.values.length-1){i=n;break}else f=e,r=u;else i=this._source.values.length-1;this.val(this._source.values[i]),this.text(this._source.names[i])}else{for(i=0,n=0;n<this._source.values.length;n++)if(this._value===this._source.values[n]){i=n;break}this.val(this._source.values[i]),this.text(this._source.names[i])}},r.text=function(n){return n&&this._text!==n&&(this._text=n,this.isDirty=!0),this._text},r.valueAt=function(n){return this._source.values[n]},r.textAt=function(n){return this._source.names[n]},r.selectedIndex=function(){return $(this.id).prop("selectedIndex")},r.onDocumentReady=function(){$(this.id).focus(function(){CD.PartsList.hide()}).change(function(){var n=r.selectedIndex();r.val(r._source&&r._source.values&&r._source.values[n]?r._source.values[n]:$(r.id).val()),r.text(r._source&&r._source.names&&r._source.names[n]?r._source.names[n]:$(r.id).find(":selected").text());r.onChanged(!0)}),this.render()},r.render=function(){if($(this.id).length>0){if(this.hasNewSource){this.hasNewSource=!1;var t=this._source.names||this._source.values,i=this._source.values||this._source.names,n=$(this.id).find("option").remove().end();$.each(t,function(t,i){n.append($("<option>").text(i))})}this._source?$(this.id).val(this.text()):$(this.id).val(this.val()),this.anaimate()}},r},createInput:function(n,t,i){function u(){}u.prototype=this.base;var r=new u;return r.init("#input"+n,t,i),r.onDocumentReady=function(){$(this.id).focus(function(){$(this).select(),CD.PartsList.hide()}).keyup(function(n){if(n.keyCode===13){var t=$(":focusable");t.eq((t.index(this)+1)%t.length).focus()}}).blur(function(){r.val($(r.id).val());r.onChanged(!0)}),this.render()},r.render=function(){$(this.id).length>0&&(this.isLength?$(this.id).val(CD.Unit.toFixed(this.val())):$(this.id).val(this.val()),this.anaimate())},r},createLabel:function(n,t,i){function u(){}u.prototype=this.base;var r=new u;return r.init("#label"+n,t,i),r.onDocumentReady=function(){this.render()},r.render=function(){$(this.id).length>0&&(this.isLength?$(this.id).text(CD.Unit.toDual(this.val())):$(this.id).text(this.val()),this.anaimate())},r}},UI:function(){var n=this;this.href=$(location).attr("href"),this.href.charAt(this.href.length-1)!=="/"&&(this.href=this.href+"/"),this.onDocumentReady=function(){for(p in this)typeof this[p]=="object"&&typeof this[p].onDocumentReady=="function"&&this[p].onDocumentReady();$(".divButton").hover(function(){$(this).addClass("divButtonHighLight")},function(){$(this).removeClass("divButtonHighLight")}),$("#buttonBeltVsCD").click(this.listBeltsVDCD),$("#buttonPulleyRatio").click(this.listPulleyRatio)},this.reload=function(){for(p in this)typeof this[p]=="object"&&typeof this[p].reload=="function"&&this[p].reload()},this.render=function(){this.calculate();for(p in this)typeof this[p]=="object"&&typeof this[p].render=="function"&&this[p].render()},this.onUnitChanged=function(){n.cd.val(CD.Unit.convert(n.cd.val())),n.cdActual.val(n.cd.val()),n.pitch.val(CD.Unit.convert(n.pitch.val())),n.pitchSource.reload(),n.render()},this.onPitchSourceChanged=function(){n.pitch.source(n.pitchSource.source()),n.render()},this.onPulleyNameSourceChanged=function(){n.pulley1Name.source(n.pulleyNameSource.source()),n.pulley1Name.isDirty&&n.pulley1NumberSource.reload(),n.pulley2Name.source(n.pulleyNameSource.source()),n.pulley2Name.isDirty&&n.pulley2NumberSource.reload(),n.render()},this.onPulley1NumberSourceChanged=function(){n.pulley1Number.source(n.pulley1NumberSource.source()),n.render()},this.onPulley2NumberSourceChanged=function(){n.pulley2Number.source(n.pulley2NumberSource.source()),n.render()},this.onBeltNumberSourceChanged=function(){n.beltNumber.source(n.beltNumberSource.source()),n.render()},this.onPitchChanged=function(){n.pulleyNameSource.reload(),n.pulley1NumberSource.reload(),n.pulley2NumberSource.reload(),n.beltNameSource.reload(),n.beltNumberSource.reload(),n.render()},this.onPulley1NameChanged=function(){n.pulley1NumberSource.reload(),n.render()},this.onPulley2NameChanged=function(){n.pulley2NumberSource.reload(),n.render()},this.onBeltNameSourceChanged=function(){n.beltName.source(n.beltNameSource.source()),n.beltName.isDirty&&n.beltNumberSource.reload(),n.render()},this.onBeltNameChanged=function(){n.beltNumberSource.reload(),n.render()},this.onPulley1NumberChanged=function(t){t&&CD.Ratio.calculate("N1"),n.render(),CD.Ratio.finalze(),n.ratioActual.render()},this.onPulley2NumberChanged=function(t){t&&CD.Ratio.calculate("N2"),n.render(),CD.Ratio.finalze(),n.ratioActual.render()},this.onBeltNumberChanged=function(){n.render()},this.onCDChanged=function(){var i=parseFloat(n.cd.val()),t=n.BeltByCD(i);n.beltNumber.val(t),n.beltNumber.rematch(),n.render()},this.onRatioChanged=function(t){t&&CD.Ratio.calculate("R"),n.render(),CD.Ratio.finalze(),n.ratioActual.render()},this.BeltByCD=function(t){var u=parseFloat(n.pitch.val()),f=parseInt(n.pulley1Number.val()),r=parseInt(n.pulley2Number.val()),i=Math.abs(f-r),e=i*u/2/Math.PI/t;return Math.ceil((f+r)/2+i/Math.PI*Math.asin(e)+Math.sqrt(Math.pow(2*t/u,2)-Math.pow(i/Math.PI,2)))},this.listBeltsVDCD=function(){var y=parseFloat(n.pitch.val()),f=parseInt(n.pulley1Number.val()),h=parseInt(n.pulley2Number.val()),v=Math.abs(f-h),w=n.BeltByCD(n.minimumCenterDistance),p=Math.max(n.beltNumber.selectedIndex()-4,0),s=$("<table>").addClass("List"),o,r,t,u,e,c,l,a;for($("<tr>").append($("<th>").text("Number of Grovess")).append($("<th>").text("Center Distance")).appendTo(s),i=0;i<9;i++)o=p+i,r=n.beltNumber.valueAt(o),r<w?t="Below the Minimum Center Distance":(f==h?(u=Math.PI/2,t=y*(r-f)/2):(e=r-Math.max(f,h),u=CD.INV(Math.PI*e/v),c=Math.PI/4-u/2,l=(Math.sin(c)/Math.cos(c)+u)/Math.PI,t=y*(e+l*v)/2),t=CD.Unit.toDual(t)),$("<tr>").append($("<td>").text(n.beltNumber.textAt(o))).append($("<td>").text(t)).hover(function(){$(this).addClass("HighLight")},function(){$(this).removeClass("HighLight")}).on("click",function(){n.beltNumber.val(this.firstChild.innerText.replace("*","")),n.beltNumber.rematch(),$("#divGridContaner:visible").hide("blind",1e3),n.render()}).appendTo(s);a=$("<div>").addClass("divGrid").append(s),$("#divGridContaner").empty().append(a).show("blind",1e3)},this.listPulleyRatio=function(){var t=[],h=n.pulley1Number._source.values,s=n.pulley2Number._source.values,a=n.ratioDesired.val(),c,r,u,o;for(i=0;i<h.length-1;i++){for(c=h[i],j=0;j<s.length-1;j++){var l=s[j],f=l/c,e=Math.abs(f-a)/f;if(e<.05&&(t.push({delta:e,a:n.pulley1Number._source.names[i],b:n.pulley2Number._source.names[j],r:f}),t.length>=100))break}if(t.length>=100)break}for(t.sort(function(n,t){return n.delta-t.delta}),t=t.slice(0,10),t.sort(function(n,t){return n.r-t.r}),r=$("<table>").addClass("List"),$("<tr>").append($("<th>").text("Number of Grovess Pulley A")).append($("<th>").text("Number of Grovess Pulley B")).append($("<th>").text("Ratio")).appendTo(r),i=0;i<t.length;i++)u=t[i],$("<tr>").append($("<td>").text(u.a)).append($("<td>").text(u.b)).append($("<td>").text(u.r.toFixed(4))).hover(function(){$(this).addClass("HighLight")},function(){$(this).removeClass("HighLight")}).on("click",function(){n.pulley1Number.val(this.firstChild.innerText.replace("**","")),n.pulley1Number.rematch(),n.pulley2Number.val(this.children[1].innerText.replace("**","")),n.pulley2Number.rematch(),n.ratioActual.val(this.children[2].innerText),$("#divGridContaner:visible").hide("blind",1e3),n.render()}).appendTo(r);o=$("<div>").addClass("divGrid").append(r),$("#divGridContaner").empty().append(o).show("blind",1e3)},this.calculate=function(){var o=parseFloat(n.pitch.val()),t=parseInt(n.pulley1Number.val()),i=parseInt(n.pulley2Number.val()),e=parseInt(n.beltNumber.val()),a,r,s,f,u,y,p,h,c,l,v;n.minimumCenterDistance=o*(t+i)/2/Math.PI+.125*CD.Unit.factor(),a=n.BeltByCD(n.minimumCenterDistance),e<a?(n.beltNumber.val(a),n.beltNumber.rematch(),n.calculate()):(t==i?(r=Math.PI/2,s=o*(e-t)/2,f=t/2,u=i/2):(h=Math.abs(t-i),c=e-Math.max(t,i),r=CD.INV(Math.PI*c/h),l=Math.PI/4-r/2,v=(Math.sin(l)/Math.cos(l)+r)/Math.PI,s=o*(c+v*h)/2,t>i?(f=(1-r/Math.PI)*t,u=r/Math.PI*i):(f=r/Math.PI*t,u=(1-r/Math.PI)*i)),y=360/t*f,p=360/i*u,s<n.minimumCenterDistance&&(e=n.BeltByCD(n.minimumCenterDistance),n.beltNumber.val(e),n.beltNumber.rematch(),n.calculate()),n.cdMinimum.val(n.minimumCenterDistance),n.cdActual.val(s),n.pulley1TeethInMesh.val(Math.floor(f)),n.pulley2TeethInMesh.val(Math.floor(u)),n.pulley1Angle.val(y.toFixed(2)),n.pulley2Angle.val(p.toFixed(2)),n.pulley1PitchDiameter.val(t*o/Math.PI),n.pulley2PitchDiameter.val(i*o/Math.PI))},this.unit=CD.Broker.createSelect("Unit","Inch (in)",this.onUnitChanged),this.unit._source={names:["Inch (in)","Metric (mm)"],values:["IN","MM"]},n.unit.val("IN"),this.pitchSource=CD.Source.create("Home/Pitches",[["Unit",this.unit]],this.onPitchSourceChanged),this.pitch=CD.Broker.createSelect("Pitch",'.080" (MXL)',this.onPitchChanged),this.pulleyNameSource=CD.Source.create("Pulley/Names",[["Unit",this.unit],["Pitch",this.pitch]],this.onPulleyNameSourceChanged),this.pulley1Name=CD.Broker.createSelect("Pulley1Name","Metal Timing Pulleys",this.onPulley1NameChanged),this.pulley2Name=CD.Broker.createSelect("Pulley2Name","Metal Timing Pulleys",this.onPulley2NameChanged),this.beltNameSource=CD.Source.create("Belt/Names",[["Unit",this.unit],["Pitch",this.pitch]],this.onBeltNameSourceChanged),this.beltName=CD.Broker.createSelect("BeltName","Timing Belts",this.onBeltNameChanged),this.pulley1NumberSource=CD.Source.create("Pulley/Grooves",[["Unit",this.unit],["Pitch",this.pitch],["Name",this.pulley1Name]],this.onPulley1NumberSourceChanged),this.pulley1Number=CD.Broker.createSelect("Pulley1Number",10,this.onPulley1NumberChanged),this.pulley1PartsLink=CD.PartsList.create("Pulley1Parts",[["Unit",this.unit],["Pitch",this.pitch],["Name",this.pulley1Name],["Grooves",this.pulley1Number]]),this.pulley2NumberSource=CD.Source.create("Pulley/Grooves",[["Unit",this.unit],["Pitch",this.pitch],["Name",this.pulley2Name]],this.onPulley2NumberSourceChanged),this.pulley2Number=CD.Broker.createSelect("Pulley2Number",10,this.onPulley2NumberChanged),this.pulley2PartsLink=CD.PartsList.create("Pulley2Parts",[["Unit",this.unit],["Pitch",this.pitch],["Name",this.pulley2Name],["Grooves",this.pulley2Number]]),this.beltNumberSource=CD.Source.create("Belt/Grooves",[["Unit",this.unit],["Pitch",this.pitch],["Name",this.beltName]],this.onBeltNumberSourceChanged),this.beltNumber=CD.Broker.createSelect("BeltNumber",100,this.onBeltNumberChanged),this.beltPartsLink=CD.PartsList.create("BeltParts",[["Unit",this.unit],["Pitch",this.pitch],["Name",this.beltName],["Grooves",this.beltNumber]]),this.cdMinimum=CD.Broker.createLabel("MinimumCD",5),this.cdMinimum.isLength=!0,this.cd=CD.Broker.createInput("CD",5,this.onCDChanged),this.cdActual=CD.Broker.createLabel("CD",5),this.cdActual.isLength=!0,this.ratioDesired=CD.Broker.createInput("Ratio",1,this.onRatioChanged),this.ratioActual=CD.Broker.createLabel("Ratio",1),this.pulley1PitchDiameter=CD.Broker.createLabel("Pulley1PitchDiameter",0),this.pulley1PitchDiameter.isLength=!0,this.pulley2PitchDiameter=CD.Broker.createLabel("Pulley2PitchDiameter",0),this.pulley2PitchDiameter.isLength=!0,this.pulley1TeethInMesh=CD.Broker.createLabel("Pulley1TeethInMesh",0),this.pulley1TeethInMesh.min=5,this.pulley2TeethInMesh=CD.Broker.createLabel("Pulley2TeethInMesh",0),this.pulley2TeethInMesh.min=5,this.pulley1Angle=CD.Broker.createLabel("Pulley1Angle",0),this.pulley2Angle=CD.Broker.createLabel("Pulley2Angle",0)}};CD.ui=new CD.UI,CD.ui.reload(),$(function(){CD.ui.onDocumentReady()})