var threedb={page:null,referer:null,status:null,sources:[],receivers:[],audienceRegions:[],reflectors:[],finishes:[],freq:$w("125 250 500 1000 2000 4000"),freq3:$w("50 63 80 100 125 160 200 250 315 400 500 630 800 1000 1250 1600 2000 2500 3150 4000 5000 6300 8000 10000"),indexphp:{showNewsRSS:function(){var a=new Ajax.Request("google_rss.php",{method:"get",onComplete:function(b){$("acousticsRSS").hide();$("acousticsRSS").innerHTML=b.responseText;threedb.indexphp.formatGoogleCSS();$("acousticsRSS").show()}})},showTwitterRSS:function(){var a=new Ajax.Request("twitter_rss.php",{method:"get",onComplete:function(b){$("twitterRSS").hide();$("twitterRSS").innerHTML=b.responseText;threedb.indexphp.formatTwitterCSS();$("twitterRSS").show()}})},showScienceDailyRSS:function(){var a=new Ajax.Request("sciencedaily_rss.php",{method:"get",onComplete:function(b){$("sciencedailyRSS").hide();$("sciencedailyRSS").innerHTML=b.responseText;threedb.indexphp.formatScienceDailyCSS();$("sciencedailyRSS").show()}})},formatGoogleCSS:function(){$$("nobr").each(function(a){a.setStyle({display:"none"})});$$("div#acousticsRSS table tbody tr td font div").each(function(a){a.setStyle({paddingTop:"0px"})});$$("div#acousticsRSS table tbody tr").each(function(a){a.firstDescendant().setStyle({display:"none"})});$$("div#acousticsRSS table tbody tr td font").each(function(a){a.setStyle({fontSize:"100%"})});$$("div#acousticsRSS table tbody tr td font div font b").each(function(a){a.setStyle({fontWeight:"normal",fontSize:"12px"})});$$("div#acousticsRSS table tbody tr td font div font a").each(function(a){a.setStyle({display:"none"})});$$(".google-date").each(function(a){a.setStyle({color:"gray"});a.innerHTML=humaneDate(a.innerHTML);if(a.innerHTML=="undefined"){a.innerHTML=" "}});$$("div#acousticsRSS table tbody tr td font div font.p").each(function(a){a.previousSiblings().first().setStyle({display:"none"})});$$("div#acousticsRSS table tbody tr td font div img").each(function(a){a.up().setStyle({display:"none"})});$$("div#acousticsRSS table").each(function(a){a.setAttribute("cellspacing","0");a.setAttribute("cellpadding","0");a.setStyle({border:"none",marginBottom:"0"})});$$("div#acousticsRSS table td").each(function(a){a.setStyle({border:"none"})});$$("div#acousticsRSS").each(function(a){a.setStyle({lineHeight:0})});$$("div#acousticsRSS table tbody tr td.j font br:first").each(function(a){a.setStyle({display:"none"})});$$("div#acousticsRSS table").each(function(a){a.setStyle({paddingBottom:0})});$$("div#acousticsRSS table tbody tr td.j").each(function(a){a.setStyle({padding:0})});$$("div#acousticsRSS table tbody tr td.j font div.lh").each(function(a){a.setStyle({fontSize:"12px"})});$$("div#acousticsRSS table tbody tr td.j font div.lh a b").each(function(a){a.setStyle({fontSize:"13px"})})},formatTwitterCSS:function(){$$("div#twitterRSS p").each(function(a){a.setStyle({textAlign:"left"})});$$(".twitter-handle").each(function(b){var a=b.innerHTML;b.innerHTML=a.sub("@twitter.com","")});$$("div#twitterRSS table tr td a b").each(function(a){a.setStyle({fontWeight:"normal"})});$$(".twitter-date").each(function(a){a.setStyle({color:"gray"});a.innerHTML=humaneDate(a.innerHTML);if(a.innerHTML=="undefined"){a.innerHTML=" "}});$$("div#twitterRSS table tbody tr td img").each(function(a){a.setStyle({width:"48px",height:"48px"})})},formatScienceDailyCSS:function(){$$("div#sciencedailyRSS p").each(function(a){a.setStyle({textAlign:"left"})});$$(".sciencedaily-date").each(function(a){a.setStyle({color:"gray"});a.innerHTML=humaneDate(a.innerHTML);if(a.innerHTML=="undefined"){a.innerHTML=" "}})},init:function(){if(page==="/index.php"){threedb.indexphp.showNewsRSS();threedb.indexphp.showScienceDailyRSS();threedb.indexphp.showTwitterRSS();setInterval(threedb.indexphp.showTwitterRSS,5*60*1000);setInterval(threedb.indexphp.showNewsRSS,60*60*1000);setInterval(threedb.indexphp.showScienceDailyRSS,60*60*1000)}}},rt:{addSurface:{render:function(b){var a=b.index;threedb.debug.log("Adding Surface "+a);threedb.user.data.room.surface[a]=new threedb.Surface();threedb.user.data.room.surface[a].index=a;threedb.user.data.room.surface[a].expanded=false;threedb.rt.addSurface.renderHTML("surfaces",a);threedb.rt.addSurface.hideTabs(false,a);$("surfaceNum").setValue(a+1);$("active"+a).setValue("1");$("minimized"+a).setValue("0");if(data){threedb.rt.addSurface.loadSavedData(a)}threedb.rt.addSurface.loadEvents(a);threedb.rt.addSurface.loadAutocomplete(a);threedb.rt.addSurface.setTabEvents(a)},renderHTML:function(b,a){$(b).appendChild(new Element("li",{id:"surface"+a,className:"surface"})).innerHTML=["<div class='surface"+a+" hdg'>","<div class='active-right surface-active"+a+"' id='surface-active"+a+"'>","<img src='../images/glyphicons/glyphicons_199_ban.png' title='Exclude from calculation'>","</div>","<div class='hdg-area'><span id='hdg-area"+a+"'></span>&nbsp;<span class='unit-length'>ft</span><sup>2</sup></div>","<div class='tablist' id='tablist"+a+"'>","<div id='surface-sabins"+a+"' class='surface"+a+" tab'>","Sabins","</div>","<div id='surface-details"+a+"' class='surface"+a+" tab'>","Details","</div>","<div id='surface-edit"+a+"' class='surface"+a+" tab'>","Edit","</div>","</div>","<div class='hdg text surface"+a+"'>","<h3 class='number rt'>"+(a+1)+"</h3>","<h3 class='finish rt' id='finish"+a+"'>&nbsp;</h3>&nbsp;","<h4 class='finish-detail' id='finish-detail"+a+"'><span style='font-style:italic'>Select a surface...</span></h3>","</div>","</div>","<div class='surface"+a+" surface-edit-container'>","<input type='hidden' id='finishId"+a+"' name='finishId"+a+"'>","<input type='hidden' id='active"+a+"' name='active"+a+"'>","<input type='hidden' id='minimized"+a+"' name='minimized"+a+"'>","<table>","<tr>","<td class='edit-search-label'>Search</td>","<td class='edit-search-input'>","<div class='ac-input yui-ac'>","<input class='edit-surface-name yui-ac-input' type='search' id='surfaceName"+a+"' name='surfaceName"+a+"' placeholder='Search finish database...'>","<div id='surfaceList"+a+"' class='edit-surface-list yui-ac-container'></div>","</div>","</td>","</tr>","</table>","<table class='surface-area'>","<tr>","<td class='surface-area-label'>Surface Area</td>","<td class='input-label sidewalls'>Sidewalls, <span class='unit-length'>ft</span><sup>2</sup></td>","<td class='input'><input class='surface-input number' type='text' id='lr"+a+"' name='lr"+a+"'></td>","<td class='input-label'>Front/Rear, <span class='unit-length'>ft</span><sup>2</sup></td>","<td class='input'><input class='surface-input number' type='text' id='fr"+a+"' name='fr"+a+"'></td>","<td class='input-label'>Floor/Ceiling, <span class='unit-length'>ft</span><sup>2</sup></td>","<td class='input'><input class='surface-input number' type='text' id='fc"+a+"' name='fc"+a+"'></td>","</tr>","</table>","</div>","<div class='surface"+a+" surface-details-container'>","<table class='surface-details-container'>","<tr>","<td rowspan='6'><img class='surface-details-image' id='surface-details-image"+a+"'></img></td>","<td class='edit-details-label'>Thickness</td>","<td class='edit-details-value' id='surfaceThickness"+a+"'>&nbsp;</td>","</tr>","<tr>","<td class='edit-details-label'>Density</td>","<td class='edit-details-value' id='surfaceDensity"+a+"'>&nbsp;</td>","</tr>","<tr>","<td class='edit-details-label'>Mounting</td>","<td class='edit-details-value' id='surfaceMounting"+a+"'>&nbsp;</td>","</tr>","<tr>","<td class='edit-details-label'>Additional Info</td>","<td class='edit-details-value'>","<ul id='surfaceInfo"+a+"' class='surfaceInfo'>","</ul>","</td>","</tr>","<tr>","<td class='edit-details-label'>Test report</td>","<td class='edit-details-value' id='surfaceStandard"+a+"'>&nbsp;</td>","</tr>","<tr>","<td class='edit-details-label'>Source</td>","<td class='edit-details-value' id='surfaceSource"+a+"'>&nbsp;</td>","</tr>","</table>","</div>","<div class='surface"+a+" surface-sabins-container'>","<table class='sabin-table surface-sabins'>","<thead>","<tr>","<th class='label'>&nbsp</th>","<th class='area'><span class='unit-length'>ft</span><sup>2</sup></th>","<th class='ob1'>125</th>","<th class='ob2'>250</th>","<th class='ob3'>500</th>","<th class='ob4'>1000</th>","<th class='ob5'>2000</th>","<th class='ob6'>4000</th>","</tr>","</thead>","<tbody>","<tr class='alpha'>","<td class='label alpha'>&alpha;</td>","<td class='alpha' id='surfaceAlpha_"+a+"'>&nbsp;</td>","<td class='alpha' id='surfaceAlpha125_"+a+"'>&nbsp;</td>","<td class='alpha' id='surfaceAlpha250_"+a+"'>&nbsp;</td>","<td class='alpha' id='surfaceAlpha500_"+a+"'>&nbsp;</td>","<td class='alpha' id='surfaceAlpha1000_"+a+"'>&nbsp;</td>","<td class='alpha' id='surfaceAlpha2000_"+a+"'>&nbsp;</td>","<td class='alpha' id='surfaceAlpha4000_"+a+"'>&nbsp;</td>","</tr>","<tr class='sidewalls'>","<td class='label'>Sidewalls</td>","<td id='surfaceLR_"+a+"'>&nbsp;</td>","<td id='surfaceLR125_"+a+"'>&nbsp;</td>","<td id='surfaceLR250_"+a+"'>&nbsp;</td>","<td id='surfaceLR500_"+a+"'>&nbsp;</td>","<td id='surfaceLR1000_"+a+"'>&nbsp;</td>","<td id='surfaceLR2000_"+a+"'>&nbsp;</td>","<td id='surfaceLR4000_"+a+"'>&nbsp;</td>","</tr>","<tr class='frontrear'>","<td class='label'>Front/Rear</td>","<td id='surfaceFR_"+a+"'>&nbsp;</td>","<td id='surfaceFR125_"+a+"'>&nbsp;</td>","<td id='surfaceFR250_"+a+"'>&nbsp;</td>","<td id='surfaceFR500_"+a+"'>&nbsp;</td>","<td id='surfaceFR1000_"+a+"'>&nbsp;</td>","<td id='surfaceFR2000_"+a+"'>&nbsp;</td>","<td id='surfaceFR4000_"+a+"'>&nbsp;</td>","</tr>","<tr class='floorceiling'>","<td class='label'>Floor/Ceiling</td>","<td id='surfaceFC_"+a+"'>&nbsp;</td>","<td id='surfaceFC125_"+a+"'>&nbsp;</td>","<td id='surfaceFC250_"+a+"'>&nbsp;</td>","<td id='surfaceFC500_"+a+"'>&nbsp;</td>","<td id='surfaceFC1000_"+a+"'>&nbsp;</td>","<td id='surfaceFC2000_"+a+"'>&nbsp;</td>","<td id='surfaceFC4000_"+a+"'>&nbsp;</td>","</tr>","</tbody>","<tfoot>","<tr class='total'>","<td class='label'>Total</td>","<td id='surfaceSum_"+a+"'>&nbsp;</td>","<td id='surfaceSum125_"+a+"'>&nbsp;</td>","<td id='surfaceSum250_"+a+"'>&nbsp;</td>","<td id='surfaceSum500_"+a+"'>&nbsp;</td>","<td id='surfaceSum1000_"+a+"'>&nbsp;</td>","<td id='surfaceSum2000_"+a+"'>&nbsp;</td>","<td id='surfaceSum4000_"+a+"'>&nbsp;</td>","</tr>","</tfoot>","</table>","</div>"].join("")
},setTabEvents:function(a){$$("li#surface"+a+" .tablist").each(function(b){if(threedb.user.data.room.surface[a].expanded===false){b.hide()}b.up().up().observe("mouseenter",function(c){b.up().down("div.hdg.text").setStyle({width:"310px",display:"inline-block"});b.up().down("div.hdg.text").down("h4.finish-detail").setStyle({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});b.show()});b.up().up().observe("mouseleave",function(c){if(threedb.user.data.room.surface[a].expanded===false){b.hide();if(BrowserDetect.browser==="Firefox"){b.up().down("div.hdg.text").setStyle({width:"440px",height:"inherit",display:"block"})}else{b.up().down("div.hdg.text").setStyle({width:"440px",height:"inherit",display:"inline-block"})}}})})},hideTabs:function(b,a){$$(".tab .active").each(function(c){if(c.hasClassName("surface"+a)){c.removeClassName("active")}});$$(".surface-edit-container",".surface-details-container",".surface-sabins-container").each(function(c){if(c.hasClassName("surface"+a)){if(b){Effect.BlindUp(c,{duration:0.2})}else{c.hide()}}});$$(".tablist .active").each(function(c){if(c.hasClassName("surface"+a)){c.removeClassName("active");c.up().up().down("div.tablist").hide();c.up().up().down("div.hdg.text").setStyle({width:"440px",display:"block"})}});threedb.user.data.room.surface[a].expanded=false;$("surface"+a).setStyle({borderBottom:"solid 1px #e4e4e4"})},switchTab:function(d,c,b){if(d){var a=(BrowserDetect.browser="Firefox")?d.target:d.srcElement.id}else{var a=false}if(a&&$(a).hasClassName("active")){threedb.rt.addSurface.hideTabs(true,b)}else{$$(".tablist .active").each(function(e){if(e.hasClassName("surface"+b)){e.removeClassName("active")}});$$(".surface-edit-container",".surface-details-container",".surface-sabins-container").each(function(e){if(e.hasClassName("surface"+b)){e.hide()}});$(c+b).addClassName("active");threedb.user.data.room.surface[b].expanded=true;$$("."+c+"-container").each(function(e){if(e.hasClassName("surface"+b)){e.show();e.up().down("div.hdg.text").setStyle({width:"310px",display:"block"});e.up().down("div.hdg.text").down("h4.finish-detail").setStyle({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})}});$("surface"+b).setStyle({borderBottom:"none"})}},loadSavedData:function(a){if(data){if(data.surfaces.length>0){if(data.surfaces[a].active===0){$("active"+a).setValue(0)}else{$("active"+a).setValue(1)}if(data.surfaces[a].minimized===1){$("minimized"+a).setValue(1)}else{$("minimized"+a).setValue(0)}}}else{$$(".surface-edit-container").each(function(b){if(b.hasClassName("surface"+a)){b.show()}$("surface-edit"+a).addClassName("active")})}threedb.rt.addSurface.callbacks.calcSabin(null,a)},loadSurfaceData:function(b,d){$("hdg-area"+b).innerHTML=accounting.formatNumber(parseFloat($F("lr"+b))+parseFloat($F("fr"+b))+parseFloat($F("fc"+b)));$("finishId"+b).setValue(d.finishid);$("surfaceName"+b).setValue(d.name);var c=[];if((d.manufacturer)&&(d.model)){c.push("<span>"+d.manufacturer+" "+d.model+"</span>")}if((d.manufacturer)&&!(d.model)){c.push("<span>"+d.manufacturer+"</span>")}if((d.manufacturer)&&(d.desc)){c.push(" ("+d.desc+")</span>")}if(!(d.manufacturer)&&(d.desc)){c.push("<span>"+d.desc+"</span>")}$("finish"+b).innerHTML=c.join("");var a=[];if(d.mounting){a.push("Type "+d.mounting+" mounting")}if(d.thickness){a.push(d.thickness+" thick")}if(d.density){a.push(d.density+" density")}if(d.feat1){a.push(d.feat1)}if(d.feat2){a.push(d.feat2)}if(d.feat3){a.push(d.feat3)}if(d.feat4){a.push(d.feat4)}if(d.feat5){a.push(d.feat5)}if(d.leed===true){a.push("LEED")}$("finish-detail"+b).innerHTML=a.join(", ");if(d.imageurl){$("surface-details-image"+b).show();$("surface-details-image"+b).setAttribute("src","./images/finishes/"+d.imageurl)}else{$("surface-details-image"+b).hide()}if(d.thickness){$("surfaceThickness"+b).innerHTML=d.thickness}else{$("surfaceThickness"+b).innerHTML=""}if(d.density){$("surfaceDensity"+b).innerHTML=d.density}else{$("surfaceDensity"+b).innerHTML=""}if(d.mounting){$("surfaceMounting"+b).innerHTML="Type "+d.mounting}else{$("surfaceMounting"+b).innerHTML=""}$("surfaceInfo"+b).innerHTML="";if(d.feat1){$("surfaceInfo"+b).appendChild(new Element("li",{className:"surface-desc"})).appendChild(document.createTextNode(d.feat1))}if(d.feat2){$("surfaceInfo"+b).appendChild(new Element("li",{className:"surface-desc"})).appendChild(document.createTextNode(d.feat2))}if(d.feat3){$("surfaceInfo"+b).appendChild(new Element("li",{className:"surface-desc"})).appendChild(document.createTextNode(d.feat3))}if(d.feat4){$("surfaceInfo"+b).appendChild(new Element("li",{className:"surface-desc"})).appendChild(document.createTextNode(d.feat4))}if(d.feat5){$("surfaceInfo"+b).appendChild(new Element("li",{className:"surface-desc"})).appendChild(document.createTextNode(d.feat5))}threedb.rt.freq.each(function(g,e){threedb.user.data.room.surface[b].alpha[e]=parseFloat(d["a"+threedb.rt.freq[e]]);$("surfaceAlpha"+g+"_"+b).innerHTML=threedb.user.data.room.surface[b].alpha[e];$("surfaceLR"+g+"_"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[b].sabinsLR(e));
$("surfaceFR"+g+"_"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[b].sabinsFR(e));$("surfaceFC"+g+"_"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[b].sabinsFC(e));$("surfaceSum"+g+"_"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[b].sabinsSum(e))});if(d.standard&&d.standardurl){YAHOO.util.Dom.get("surfaceStandard"+b).innerHTML='<a href="'+d.standardurl+'">'+d.standard+"</a>"}else{if(d.standard){YAHOO.util.Dom.get("surfaceStandard"+b).innerHTML=d.standard}else{YAHOO.util.Dom.get("surfaceStandard"+b).innerHTML="Unavailable"}}if((d.source)&&(d.sourceurl)){document.getElementById("surfaceSource"+b).innerHTML='<a href="'+d.sourceurl+'">'+d.source+"</a>"}else{if(d.source){document.getElementById("surfaceSource"+b).innerHTML=d.source}else{document.getElementById("surfaceSource"+b).innerHTML=""}}},setSparkline:function(a){var c=[];for(var b=0;b<threedb.rt.freq.length;b++){c[b]=accounting.formatNumber(threedb.user.data.room.surface[a].sabinsSum(b)/threedb.user.data.room.sabinGoal(b),2)}$("surface-sparkline"+a).setStyle("width","80px").innerHTML="";$("surface-sparkline"+a).appendChild(new Element("img",{src:threedb.draw.surfaceSparkline(c)}))},callbacks:{deleteSurface:function(b,a){threedb.user.data.room.surface[a].active=false;$("surface"+a).addClassName("hide");$("active"+a).setValue(0);threedb.rt.calcRTs();threedb.rt.suggestFinish();threedb.rt.showRTs();threedb.rt.showGraphs()},calcSabin:function(b,a){console.log("calcSabinCallback (Surface"+a+")");threedb.rt.getSurfaceAreas();threedb.rt.freq.each(function(d,c){threedb.user.data.room.surface[a].alpha[c]=parseFloat($("surfaceAlpha"+d+"_"+a).innerHTML)||0;$("surfaceLR"+d+"_"+a).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[a].sabinsLR(c));$("surfaceFR"+d+"_"+a).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[a].sabinsFR(c));$("surfaceFC"+d+"_"+a).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[a].sabinsFC(c));$("surfaceSum"+d+"_"+a).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[a].sabinsSum(c))});$("surfaceLR_"+a).innerHTML=threedb.user.data.room.surface[a].areaLR;$("surfaceFR_"+a).innerHTML=threedb.user.data.room.surface[a].areaFR;$("surfaceFC_"+a).innerHTML=threedb.user.data.room.surface[a].areaFC;$("surfaceSum_"+a).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[a].areaSum);$("hdg-area"+a).innerHTML=accounting.formatNumber(accounting.formatNumber(threedb.user.data.room.surface[a].areaSum));if(threedb.rt.graphs.objects.allowUpdates){threedb.rt.calcRTs();threedb.rt.suggestFinish();threedb.rt.showRTs();threedb.rt.showGraphs()}}},loadEvents:function(a){$("surface-edit"+a).observe("click",function(b){threedb.rt.addSurface.switchTab(b,"surface-edit",a)});$("surface-details"+a).observe("click",function(b){threedb.rt.addSurface.switchTab(b,"surface-details",a)});$("surface-sabins"+a).observe("click",function(b){threedb.rt.addSurface.switchTab(b,"surface-sabins",a)});$("surface-active"+a).observe("click",function(b){threedb.rt.callbacks.toggleActiveCallback(b,"surface"+a,"surface-active",a)});Event.observe("surfaceName"+a,"blur",function(){threedb.rt.addSurface.callbacks.calcSabin(null,a)});["lr","fr","fc"].each(function(b){$(b+a).observe("change",function(d){if(this.value.charAt(0)=="="){this.title=this.value;var c=owenge.equation.parse(this.value.substr(1));this.value=c.answer}threedb.rt.addSurface.callbacks.calcSabin(null,a)})})},loadAutocomplete:function(a){threedb.user.data.room.surface[a].autoComplete=function(){var b=new YAHOO.util.LocalDataSource(threedb.finishes);b.responseSchema={fields:["name","finishid","desc","manufacturer","model","thickness","density","feat1","feat2","feat3","feat4","feat5","mounting","leed","a125","a250","a500","a1000","a2000","a4000","category","source","sourceurl","standard","standardurl","logourl","imageurl"]};var d=new YAHOO.widget.AutoComplete("surfaceName"+a,"surfaceList"+a,b);d.prehighlightClassName="yui-ac-prehighlight";d.useShadow=false;d.animVert=true;d.maxResultsDisplayed=20;d.forceSelection=false;d.resultTypeList=false;d.applyLocalFilter=true;d.queryMatchCase=false;d.queryMatchContains=true;d.allowBrowserAutocomplete=false;d.setFooter("<hr><span style='margin-left:4px;'>"+(threedb.finishes.length+1)+" finishes in database</span>");d.formatResult=function(g,l,f){var k=f;var j=k.substr(0,l.length);var h=k.substr(l.length);var e=["<div id='ysearchresult'>","<div style='float: right;'>",threedb.draw.nrcSparkline(g),"</div>","<div style='float: right;'>NRC ",threedb.calc.nrc(g),"&nbsp;&nbsp;","</div>","<div style='text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-right:8px;'><span style='font-weight:normal'>",j,"</span>",h,"</div>","</div>"];return(e.join(""))};var c=function(j,h){var g=h[0];var e=h[1];var f=h[2];threedb.rt.addSurface.loadSurfaceData(a,f)};d.itemSelectEvent.subscribe(c);return{datasource:b,autocomplete:d}}()}},addAudienceArea:{render:function(b){var a=b.index;
threedb.debug.log("Adding Audience Area "+a);threedb.user.data.room.audience[a]=new threedb.AudienceArea();threedb.user.data.room.audience[a].index=a;threedb.user.data.room.audience[a].expanded=false;threedb.rt.addAudienceArea.renderHTML("audienceareas",a);threedb.rt.addAudienceArea.populateFinishBrowser(a);threedb.user.data.room.audience[a].audienceGraphVisible=false;threedb.rt.addAudienceArea.hideTabs(false,a);$("audienceNum").setValue(a+1);$("a_active"+a).setValue("1");$("a_minimized"+a).setValue("0");if(data){threedb.rt.addAudienceArea.loadSavedData(b.index,b.data)}threedb.rt.addAudienceArea.loadEvents(b.index);threedb.rt.addAudienceArea.initAudienceGraph(b.index);threedb.rt.addAudienceArea.setTabEvents(a);if(!Modernizr.inputtypes.range){$("audience-range"+a).remove()}},renderHTML:function(b,a){$(b).appendChild(new Element("li",{id:"audiencearea"+a,className:"audiencearea"})).innerHTML=["<div class='audiencearea"+a+" hdg'>","<div class='active-right audiencearea-active"+a+"' id='audiencearea-active"+a+"'>","<img src='../images/glyphicons/glyphicons_199_ban.png' title='Exclude from calculation'>","</div>","<div class='hdg-area'><span id='a_hdg-area"+a+"'></span>&nbsp;<span class='unit-length'>ft</span><sup>2</sup></div>","<div class='tablist' id='tablist"+a+"'>","<div id='audiencearea-sabins"+a+"' class='audiencearea"+a+" tab'>","Sabins","</div>","<div id='audiencearea-edit"+a+"' class='audiencearea"+a+" tab'>","Edit","</div>","</div>","<div class='hdg text audiencearea"+a+"' style='width:310px'>","<h3 class='number rt'>"+(a+1)+"</h3>","<h3 class='atype rt' id='atype"+a+"'><span style='font-style:italic;font-weight:normal;'>Select an audience type...</span></h3>&nbsp;","</div>","</div>","<div class='audiencearea"+a+" audiencearea-edit-container'>","<input type='hidden' id='a_finishId"+a+"' name='a_finishId"+a+"'>","<input type='hidden' id='a_active"+a+"' name='a_active"+a+"'>","<input type='hidden' id='a_minimized"+a+"' name='a_minimized"+a+"'>","<input type='hidden' id='a_name"+a+"' name='a_name"+a+"'>","<table class='audiencearea-edit-input'>","<tr>","<td colspan='2'>","<div class=''>","<select id='audience-selector"+a+"' name='audience-selector"+a+"'></select>","</div>","</td>","<td rowspan='7'><div class='audience-graph' id='audienceGraph"+a+"' style='width:260px;height:180px;'></div></td>","</tr>","<tr>","<td colspan='2' class='audience-section-header'>Audience Area Dimensions</td>","</tr>","<tr>","<td class='input-label r'>Width, <span class='unit-length'>ft</span></td>","<td class='input'><input class='audience-input number' type='text' id='aw"+a+"' name='aw"+a+"' value='0'></td>","</tr>","<tr>","<td class='input-label r'>Length, <span class='unit-length'>ft</span></td>","<td class='input'><input class='audience-input number' type='text' id='al"+a+"' name='al"+a+"'value='0'></td>","</tr>","<tr>","<td class='input-label r'>Height, <span class='unit-length'>ft</span></td>","<td class='input'><input class='audience-input number' type='text' id='ah"+a+"' name='ah"+a+"' value='3.5'></td>","</tr>","<tr>","<td class='input-label r'>Occupancy, %</td>","<td class='input'><input class='audience-input number' type='text' id='pctOcc"+a+"' name='pctOcc"+a+"' value='100'></td>","</tr>","<tr>","<td colspan='2'><input id='audience-range"+a+"' class='audience-range' type='range' min='0' max='100' step='1' value='100'></td>","</tr>","</table>","</div>","<div class='audiencearea"+a+" audiencearea-sabins-container'>","<table class='sabin-table audiencearea-sabins'>","<thead>","<tr>","<th class='label'>&nbsp</th>","<th class='area'><span class='unit-length'>ft</span><sup>2</sup></th>","<th class='ob1'>125</th>","<th class='ob2'>250</th>","<th class='ob3'>500</th>","<th class='ob4'>1000</th>","<th class='ob5'>2000</th>","<th class='ob6'>4000</th>","</tr>","</thead>","<tbody>","<tr class='alpha unoccupied'>","<td class='label alpha'>&alpha;<sub>UNOCCUPIED</sub></td>","<td>&nbsp;</td>","<td class='alpha' id='audienceAlphaUnocc125_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlphaUnocc250_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlphaUnocc500_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlphaUnocc1000_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlphaUnocc2000_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlphaUnocc4000_"+a+"'>&nbsp;</td>","</tr>","<tr class='alpha interpolated'>","<td class='label alpha'>&alpha;<sub>INTERPOLATED</sub></td>","<td>&nbsp;</td>","<td class='alpha' id='audienceAlpha125_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlpha250_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlpha500_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlpha1000_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlpha2000_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlpha4000_"+a+"'>&nbsp;</td>","</tr>","<tr class='alpha occupied'>","<td class='label alpha'>&alpha;<sub>OCCUPIED</sub></td>","<td>&nbsp;</td>","<td class='alpha' id='audienceAlphaOcc125_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlphaOcc250_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlphaOcc500_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlphaOcc1000_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlphaOcc2000_"+a+"'>&nbsp;</td>","<td class='alpha' id='audienceAlphaOcc4000_"+a+"'>&nbsp;</td>","</tr>","<tr>","<td class='label'>Sidewalls</td>","<td id='audienceLR_"+a+"'>&nbsp;</td>","<td id='audienceLR125_"+a+"'>&nbsp;</td>","<td id='audienceLR250_"+a+"'>&nbsp;</td>","<td id='audienceLR500_"+a+"'>&nbsp;</td>","<td id='audienceLR1000_"+a+"'>&nbsp;</td>","<td id='audienceLR2000_"+a+"'>&nbsp;</td>","<td id='audienceLR4000_"+a+"'>&nbsp;</td>","</tr>","<tr>","<td class='label'>Front/Rear</td>","<td id='audienceFR_"+a+"'>&nbsp;</td>","<td id='audienceFR125_"+a+"'>&nbsp;</td>","<td id='audienceFR250_"+a+"'>&nbsp;</td>","<td id='audienceFR500_"+a+"'>&nbsp;</td>","<td id='audienceFR1000_"+a+"'>&nbsp;</td>","<td id='audienceFR2000_"+a+"'>&nbsp;</td>","<td id='audienceFR4000_"+a+"'>&nbsp;</td>","</tr>","<tr>","<td class='label'>Floor/Ceiling</td>","<td id='audienceFC_"+a+"'>&nbsp;</td>","<td id='audienceFC125_"+a+"'>&nbsp;</td>","<td id='audienceFC250_"+a+"'>&nbsp;</td>","<td id='audienceFC500_"+a+"'>&nbsp;</td>","<td id='audienceFC1000_"+a+"'>&nbsp;</td>","<td id='audienceFC2000_"+a+"'>&nbsp;</td>","<td id='audienceFC4000_"+a+"'>&nbsp;</td>","</tr>","</tbody","<tfoot>","<tr class='total'>","<td class='label'>Total</td>","<td id='audienceSum_"+a+"'>&nbsp;</td>","<td id='audienceSum125_"+a+"'>&nbsp;</td>","<td id='audienceSum250_"+a+"'>&nbsp;</td>","<td id='audienceSum500_"+a+"'>&nbsp;</td>","<td id='audienceSum1000_"+a+"'>&nbsp;</td>","<td id='audienceSum2000_"+a+"'>&nbsp;</td>","<td id='audienceSum4000_"+a+"'>&nbsp;</td>","</tr>","</tfoot>","</table>","</div>"].join("")
},setTabEvents:function(a){$$("li#audiencearea"+a+" .tablist").each(function(b){if(threedb.user.data.room.audience[a].expanded===false){b.hide()}b.up().up().observe("mouseenter",function(c){b.up().down("div.hdg.text").setStyle({width:"310px",display:"block"});b.show()});b.up().up().observe("mouseleave",function(c){if(threedb.user.data.room.audience[a].expanded===false){b.hide()}})})},hideTabs:function(b,a){$$(".tab .active").each(function(c){if(c.hasClassName("audiencearea"+a)){c.removeClassName("active")}});$$(".audiencearea-edit-container",".audiencearea-sabins-container").each(function(c){if(c.hasClassName("audiencearea"+a)){if(b){Effect.BlindUp(c,{duration:0.2})}else{c.hide()}}});$$(".tablist .active").each(function(c){if(c.hasClassName("audiencearea"+a)){c.removeClassName("active")}});threedb.user.data.room.audience[a].expanded=false;$("audiencearea"+a).setStyle({borderBottom:"solid 1px #e4e4e4"});threedb.user.data.room.audience[a].audienceGraphVisible=false},switchTab:function(d,c,b){if(d){var a=(BrowserDetect.browser==="Firefox")?d.target.id:d.srcElement.id}else{var a=false}if(a&&$(a).hasClassName("active")){threedb.rt.addAudienceArea.hideTabs(true,b)}else{$$(".tablist .active").each(function(e){if(e.hasClassName("audiencearea"+b)){e.removeClassName("active")}});$$(".audiencearea-edit-container",".audiencearea-sabins-container").each(function(e){if(e.hasClassName("audiencearea"+b)){e.hide()}});$(c+b).addClassName("active");threedb.user.data.room.audience[b].expanded=true;$$("."+c+"-container").each(function(e){if(e.hasClassName("audiencearea"+b)){e.show()}});$("audiencearea"+b).setStyle({borderBottom:"none"});if(c=="audiencearea-edit"){threedb.user.data.room.audience[b].audienceGraphVisible=true;threedb.rt.addAudienceArea.updateAudienceGraph(b)}}},loadSavedData:function(b,a){if(a){$("al"+b).setValue(a.l);$("aw"+b).setValue(a.w);$("ah"+b).setValue(a.h);$("pctOcc"+b).setValue(a.pctOcc);$("audience-range"+b).setValue(a.pctOcc);$("audience-selector"+b).value=a.afid;$("a_finishId"+b).setValue(a.afid);if(Modernizr.inputtypes.range){$("audience-range"+b).setValue(a.pctOcc)}threedb.rt.addAudienceArea.callbacks.calcSabin(null,b)}else{$$(".audiencearea-edit-container").each(function(c){if(c.hasClassName("audiencearea"+b)){c.show()}$("audiencearea-edit"+b).addClassName("active")})}threedb.rt.addAudienceArea.callbacks.calcSabin(null,b)},loadAudienceData:function(a,b){$("a_hdg-area"+a).innerHTML=accounting.formatNumber(parseFloat($F("al"+a))+parseFloat($F("aw"+a))+parseFloat($F("ah"+a)));$("a_finishId"+a).setValue(b.finishid);threedb.rt.freq.each(function(d,c){threedb.user.data.room.audiencearea[a].alpha[c]=parseFloat(b["a"+threedb.rt.freq[c]]);$("audienceAlpha"+d+"_"+a).innerHTML=threedb.user.data.room.audiencearea[a].alpha[c];$("audienceLR"+d+"_"+a).innerHTML=accounting.formatNumber(threedb.user.data.room.audiencearea[a].sabinsLR(c));$("audienceFR"+d+"_"+a).innerHTML=accounting.formatNumber(threedb.user.data.room.audiencearea[a].sabinsFR(c));$("audienceFC"+d+"_"+a).innerHTML=accounting.formatNumber(threedb.user.data.room.audiencearea[a].sabinsFC(c));$("audienceSum"+d+"_"+a).innerHTML=accounting.formatNumber(threedb.user.data.room.audiencearea[a].sabinsSum(c))})},setSparkline:function(a){var c=[];for(var b=0;b<threedb.rt.freq.length;b++){c[b]=accounting.formatNumber(threedb.user.data.room.audiencearea[a].sabinsSum(b)/threedb.user.data.room.sabinGoal(b),2)}$("audiencearea-sparkline"+a).setStyle("width","80px").innerHTML="";$("audiencearea-sparkline"+a).appendChild(new Element("img",{src:threedb.draw.surfaceSparkline(c)}))},populateFinishBrowser:function(a){var b=threedb.finishes.findAll(function(c){return(c.category=="Audience")&&(c.feat5=="unoccupied")});b.sortBy(function(c,d){return c.desc});$("audience-selector"+a).appendChild(new Element("option",{value:null})).appendChild(document.createTextNode(""));b.each(function(c,d){$("audience-selector"+a).appendChild(new Element("option",{value:c.finishid})).appendChild(document.createTextNode(c.desc))})},initAudienceGraph:function(a){threedb.user.data.room.audience[a].graph=new Highcharts.Chart({chart:{renderTo:"audienceGraph"+a,defaultSeriesType:"area",backgroundColor:"whiteSmoke",animation:{duration:1000,easing:"swing"},showAxes:"true",style:{fontFamily:"Arial"}},title:{text:null},credits:{enabled:false},exporting:{enabled:false,},tooltip:{formatter:function(){return this.series.name+"<br>("+accounting.formatNumber(this.y,2)+" s @ "+this.x+" Hz)"}},legend:{enabled:false},plotOptions:{area:{marker:{enabled:false,symbol:"circle",radius:2},stacking:"normal",lineWidth:0}},xAxis:{categories:threedb.rt.freq,tickmarkPlacement:"on",title:{text:"Frequency, Hz"},startOnTick:false,showLastLabel:true,minPadding:-0.3,maxPadding:-0},yAxis:{title:{text:"Sabine RT60, s"},min:0,tickInterval:1,minorTickInterval:"auto"},series:[{name:"Unoccupied RT",data:null,fillColor:"rgba(113, 147, 186, 0.5)"},{name:"Interpolated Sabine RT",data:null,fillColor:"rgba(113, 147, 186, 0.5)",lineWidth:2,color:"rgba(113, 147, 186, 1)"},{name:"Occupied RT",data:null,fillColor:"rgba(255, 255, 255, 0)"}]})
},updateAudienceGraph:function(a){threedb.rt.freq.each(function(l,g){var n=threedb.user.data.room.audience[a].alphaUnocc[g];var k=threedb.user.data.room.audience[a].alphaOcc[g];var c=threedb.user.data.room.audience[a].areaSum;var h=threedb.user.data.room.audience[a].alpha[g];var d=threedb.user.data.room.sabineRT(g,(n*c)-(h*c));var e=threedb.user.data.room.sabineRT(g,(k*c)-(h*c));var m=threedb.user.data.room.sabine.rt[g];threedb.user.data.room.audience[a].rtUnocc[g]=[g,d-m];threedb.user.data.room.audience[a].rtInterp[g]=[g,m-e];threedb.user.data.room.audience[a].rtOcc[g]=[g,e]});var b=[];[[threedb.user.data.room.audience[a].rtUnocc,0],[threedb.user.data.room.audience[a].rtInterp,1],[threedb.user.data.room.audience[a].rtOcc,2]].each(function(c){b.clear();threedb.rt.freq.each(function(e,d){b.push(c[0][d]||0)});threedb.user.data.room.audience[a].graph.series[c[1]].setData(b)})},callbacks:{deleteSurface:function(b,a){threedb.user.data.room.audiencearea[a].active=false;$("audiencearea"+a).addClassName("hide");$("active"+a).setValue(0);threedb.rt.calcRTs();threedb.rt.suggestFinish();threedb.rt.showRTs();threedb.rt.showGraphs()},calcSabin:function(d,c){console.log("calcSabinCallback (Audience Area "+c+")");function f(){var g=0;while(parseInt($F("audience-selector"+c))!==parseInt(threedb.finishes[g].finishid)){g++}threedb.rt.freq.each(function(j,h){threedb.user.data.room.audience[c].alphaUnocc[h]=parseFloat(threedb.finishes[g]["a"+j])||0});$("a_finishId"+c).value=g;var e=0;while((threedb.finishes[e].desc!=threedb.finishes[g].desc)&&(threedb.finishes[e].feat5!="occupied")){e++}threedb.rt.freq.each(function(j,h){threedb.user.data.room.audience[c].alphaOcc[h]=parseFloat(threedb.finishes[e]["a"+j])||0})}function b(){threedb.rt.freq.each(function(h,g){var k=parseFloat(threedb.user.data.room.audience[c].alphaOcc[g]);var e=parseFloat(threedb.user.data.room.audience[c].alphaUnocc[g]);var j=parseFloat($F("pctOcc"+c))/100;threedb.user.data.room.audience[c].alpha[g]=accounting.formatNumber(((k*j)+(e*(1-j))),2)})}threedb.rt.getAudienceAreas();f();b();threedb.rt.freq.each(function(g,e){$("audienceAlpha"+g+"_"+c).innerHTML=threedb.user.data.room.audience[c].alpha[e];$("audienceAlphaUnocc"+g+"_"+c).innerHTML=threedb.user.data.room.audience[c].alphaUnocc[e];$("audienceAlphaOcc"+g+"_"+c).innerHTML=threedb.user.data.room.audience[c].alphaOcc[e];$("audienceLR"+g+"_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.audience[c].sabinsLR(e));$("audienceFR"+g+"_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.audience[c].sabinsFR(e));$("audienceFC"+g+"_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.audience[c].sabinsFC(e));$("audienceSum"+g+"_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.audience[c].sabinsSum(e))});$("audienceLR_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.audience[c].areaLR);$("audienceFR_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.audience[c].areaFR);$("audienceFC_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.audience[c].areaFC);$("audienceSum_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.audience[c].areaSum);var a=0;while($("audience-selector"+c).value!=threedb.finishes[a].finishid){a++}$("atype"+c).innerHTML=threedb.finishes[a].desc;$("a_name"+c).value=threedb.finishes[a].desc;$("a_hdg-area"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.audience[c].areaSum);if(threedb.rt.graphs.objects.allowUpdates){threedb.rt.calcRTs();threedb.rt.suggestFinish();threedb.rt.showRTs();threedb.rt.showGraphs();if(threedb.user.data.room.audience[c].audienceGraphVisible){threedb.rt.addAudienceArea.updateAudienceGraph(c)}}}},loadEvents:function(a){$("audiencearea-edit"+a).observe("click",function(b){threedb.rt.addAudienceArea.switchTab(b,"audiencearea-edit",a)});$("audiencearea-sabins"+a).observe("click",function(b){threedb.rt.addAudienceArea.switchTab(b,"audiencearea-sabins",a)});$("audiencearea-active"+a).observe("click",function(b){threedb.rt.callbacks.toggleActiveCallback(b,"audiencearea"+a,"audiencearea-active",a)});Event.observe("audience-selector"+a,"change",function(){threedb.rt.addAudienceArea.callbacks.calcSabin(null,a)});$("aw"+a).observe("change",function(c){if(this.value.charAt(0)=="="){this.title=this.value;var b=owenge.equation.parse(this.value.substr(1));this.value=b.answer}threedb.rt.addAudienceArea.callbacks.calcSabin(null,a)});$("al"+a).observe("change",function(c){if(this.value.charAt(0)=="="){this.title=this.value;var b=owenge.equation.parse(this.value.substr(1));this.value=b.answer}threedb.rt.addAudienceArea.callbacks.calcSabin(null,a)});$("ah"+a).observe("change",function(c){if(this.value.charAt(0)=="="){this.title=this.value;var b=owenge.equation.parse(this.value.substr(1));this.value=b.answer}threedb.rt.addAudienceArea.callbacks.calcSabin(null,a)});Event.observe("pctOcc"+a,"change",function(){if(Modernizr.inputtypes.range){$("audience-range"+a).value=$F("pctOcc"+a)}threedb.rt.addAudienceArea.callbacks.calcSabin(null,a)
});if(Modernizr.inputtypes.range){Event.observe("audience-range"+a,"change",function(){$("pctOcc"+a).value=$F("audience-range"+a);threedb.rt.addAudienceArea.callbacks.calcSabin(null,a)})}}},unsaved:false,freq:$w("125 250 500 1000 2000 4000"),callbacks:{addSurfaceCallback:function(b){console.log("addSurfaceCallback");var a=threedb.user.data.room.surface.length;threedb.rt.addSurface.render({index:a,surface:threedb.user.data.room.surface[a]});threedb.rt.addSurface.switchTab(null,"surface-edit",a);$("surface"+a).setStyle({borderBottom:"none"});$$("li#surface"+a+" .tablist").each(function(c){c.show()})},addAudienceCallback:function(b){console.log("addAudienceCallback");var a=threedb.user.data.room.audience.length;threedb.rt.addAudienceArea.render({index:a,audience:threedb.user.data.room.audience[a]});threedb.rt.addAudienceArea.switchTab(null,"audiencearea-edit",a);$("audiencearea"+a).setStyle({borderBottom:"none"});$$("li#audiencearea"+a+" .tablist").each(function(c){c.show()})},findSurfaceCallback:function(a){},changeCallback:function(){console.log("changeCallback");threedb.rt.unsaved=true;if($("saveRTCalc")){$("saveRTCalc").disabled=false}},dimsCallback:function(){console.log("dimsCallback");threedb.debug.log("Getting Room Properties");threedb.rt.getRoomProps();threedb.debug.log("Calculating dimensions");threedb.rt.showDims();threedb.rt.showCapacity();threedb.rt.showProgress();threedb.debug.log("Calculating Suggested RT goals");threedb.rt.suggestRT();threedb.debug.log("Calculating Room RTs");threedb.rt.calcRTs();threedb.rt.suggestFinish();threedb.debug.log("Updating Room RT graphs");threedb.rt.showGraphs();threedb.debug.log("Displaying Room RTs");threedb.rt.showRTs()},capacityCallback:function(){console.log("capacityCallback");threedb.rt.showCapacity()},unitsCallback:function(){console.log("unitsCallback");if($("toggleUnits").innerHTML=="M"){$("toggleUnits").innerHTML="FT";$("units").setValue("FT");$("units-length").setValue("ft");$("units-area").setValue("ft^2");$("units-volume").setValue("ft^3")}else{if($("toggleUnits").innerHTML=="FT"){$("toggleUnits").innerHTML="M";$("units").setValue("M");$("units-length").setValue("m");$("units-area").setValue("m^2");$("units-volume").setValue("m^3")}}$$(".unit-length").each(function(a){if($("toggleUnits").innerHTML=="FT"){a.innerHTML="ft"}else{a.innerHTML="m"}});threedb.rt.getRoomProps();threedb.rt.showDims();threedb.rt.showProgress();threedb.rt.showCapacity();if($F("roomLength")&&$F("roomWidth")&&$F("roomHeight")&&threedb.user.data.room.sabine.calc.max()>0){threedb.debug.log("Calculating Room RTs");threedb.rt.calcRTs();threedb.rt.suggestFinish();threedb.debug.log("Updating Room RT graphs");threedb.rt.showGraphs()}threedb.debug.log("Displaying Room RTs");threedb.rt.showRTs()},calcRTsCallback:function(){console.log("calcRTsCallback");threedb.rt.showRTGoals();if($F("roomLength")&&$F("roomWidth")&&$F("roomHeight")&&threedb.user.data.room.sabine.calc.max()>0){threedb.debug.log("Calculating Room RTs");threedb.rt.calcRTs();threedb.rt.suggestFinish();threedb.debug.log("Updating Room RT graphs");threedb.rt.showGraphs()}threedb.debug.log("Displaying Room RTs");threedb.rt.showRTs()},rtGoalCallback:function(){console.log("rtGoalCallback");threedb.rt.showRTGoals();if($F("roomLength")&&$F("roomWidth")&&$F("roomHeight")&&threedb.user.data.room.sabine.calc.max()>0){threedb.debug.log("Calculating Room RTs");threedb.rt.calcRTs();threedb.rt.suggestFinish();threedb.debug.log("Updating Room RT graphs");threedb.rt.showGraphs()}threedb.debug.log("Displaying Room RTs");threedb.rt.showRTs()},showFinishesPanelCallback:function(){},toggleActiveCallback:function(d,a,c,b){console.log("toggleActiveCallback");if(threedb.user.data.room.surface[b].active==true){threedb.user.data.room.surface[b].active=false;$(c+b).down().removeClassName("active").setStyle({opacity:0.8});$$("."+a+" .hdg-area").first().setStyle({opacity:0.3});$$("."+a+" .text").first().setStyle({opacity:0.3});threedb.rt.callbacks.calcRTsCallback()}else{threedb.user.data.room.surface[b].active=true;$(c+b).down().addClassName("active").setStyle({opacity:0.3});$$("."+a+" .hdg-area").first().setStyle({opacity:"inherit"});$$("."+a+" .text").first().setStyle({opacity:"inherit"});threedb.rt.callbacks.calcRTsCallback()}}},graphs:{objects:{rt:null,fitzroy:null,fitzroyE:null,rtBySabin:null},data:{rt:{goal:[],sabine:[],eyring:[],fitzroy:[],fitzroyE:[],arau:[],kuttruff:[]},rtBySabin:[]}},io:function(){if(data){$("roomName").setValue(data.roomName);$("roomNumber").setValue(data.roomNumber);if(data.units=="M"){window.onload=threedb.rt.callbacks.unitsCallback}$("roomLength").setValue(data.roomLength);$("roomWidth").setValue(data.roomWidth);$("roomHeight").setValue(data.roomHeight);$("rtGoal").setValue(data.rtGoal);$("roomCapacity").setValue(data.roomCapacity);$("modDate").innerHTML=data.modDate;data.rts.each(function(d){if(d.type=="Multiplier"){threedb.rt.freq.each(function(e){$("rtGoalMultiplier"+e).setValue(d["rt"+e])})}else{if(d.type=="Goal"){threedb.rt.freq.each(function(e){$("rtGoal"+e).setValue(d["rt"+e])
})}}});for(var c=0;c<data.surfaces.length;c++){threedb.rt.addSurface.render({index:threedb.user.data.room.surface.length,surface:threedb.user.data.room.surface[threedb.user.data.room.surface.length]});$("lr"+c).setValue(data.surfaces[c].lr);$("fr"+c).setValue(data.surfaces[c].fr);$("fc"+c).setValue(data.surfaces[c].fc);$("finishId"+c).setValue(data.surfaces[c].fid);var b=0;while(data.surfaces[c].fid!==threedb.finishes[b].finishid){b++}threedb.rt.addSurface.loadSurfaceData(c,threedb.finishes[b]);threedb.rt.getSurfaceAreas();for(var a=0;a<threedb.rt.freq.length;a++){threedb.user.data.room.surface[c].alpha[a]=parseFloat(threedb.finishes[b]["a"+threedb.rt.freq[a]]);$("surfaceAlpha"+threedb.rt.freq[a]+"_"+c).innerHTML=threedb.user.data.room.surface[c].alpha[a];$("surfaceLR"+threedb.rt.freq[a]+"_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[c].sabinsLR(a));$("surfaceFR"+threedb.rt.freq[a]+"_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[c].sabinsFR(a));$("surfaceFC"+threedb.rt.freq[a]+"_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[c].sabinsFC(a));$("surfaceSum"+threedb.rt.freq[a]+"_"+c).innerHTML=accounting.formatNumber(threedb.user.data.room.surface[c].sabinsSum(a))}}data.audienceareas.each(function(d,e){threedb.rt.addAudienceArea.render({index:threedb.user.data.room.audience.length,data:{l:data.audienceareas[e].l,w:data.audienceareas[e].w,h:data.audienceareas[e].h,pctOcc:data.audienceareas[e].occ,note:data.audienceareas[e].note,afid:data.audienceareas[e].afid}})});data=false}else{window.onload=threedb.rt.callbacks.addSurfaceCallback();window.onload=threedb.rt.callbacks.addAudienceCallback()}},csvExport:function(){var a={};a=$("rtcalc").descendants();a.each(function(c,b){if((c.tagName=="td"||c.tagName=="TD"||c.tagName=="SPAN"||c.tagName=="INPUT"||c.tagName=="TEXTAREA"||c.tagName=="SELECT")&&c.id!=""){document.rtcalc.appendChild(new Element("input",{type:"hidden",value:c.innerHTML||null,name:"_"+c.id,id:"_"+c.id,className:"exportTemp"}))}});rid=document.rtcalc.action.substr(document.rtcalc.action.indexOf("?"));document.rtcalc.action="./rt/rt-export.php"+rid;document.rtcalc.submit();document.rtcalc.action="./rt.php"+rid;$$("input.exportTemp").each(function(b){b.remove()})},checkForm:function(){if($F("roomName")&&$F("roomNumber")){return true}else{window.alert("Whoops, enter a room name and number so you can find it again.");return false}},rtConstant:function(){if($("toggleUnits").innerHTML==="FT"){return 0.049}else{if($("toggleUnits").innerHTML==="M"){return 0.161}}},addRTMultiplier:function(){threedb.rt.freq.each(function(b,a){$("rtGoalMultiplier"+b).setValue(threedb.user.data.room.rtGoalSpectrum(a))})},getRoomProps:function(){[["length","roomLength"],["width","roomWidth"],["height","roomHeight"],["capacity","roomCapacity"],["rtGoal","rtGoal"]].each(function(a){if(threedb.util.isDecimal($F(a[1]))){threedb.user.data.room[a[0]]=parseFloat($F(a[1]))}else{$(a[1]).value="Error";threedb.user.data.room[a[0]]=0}})},getSurfaceAreas:function(){threedb.user.data.room.surface.each(function(b,a){if(b.active){b.areaSum=0;[["areaLR","lr"],["areaFR","fr"],["areaFC","fc"]].each(function(c){if(threedb.util.isDecimal($F(c[1]+a))){b[c[0]]=parseFloat($F(c[1]+a))||0;b.areaSum+=b[c[0]]?b[c[0]]:0}else{$(c[1]+a).value="Error";b[c[0]]=0;b.areaSum+=0}})}})},getAudienceAreas:function(){threedb.user.data.room.audience.each(function(b,c){if(b.active){[["areaLR","al","ah"],["areaFR","aw","ah"]].each(function(a){if(!threedb.util.isDecimal($F(a[1]+c))){$(a[1]+c).value="Error"}if(!threedb.util.isDecimal($F(a[2]+c))){$(a[2]+c).value="Error"}b[a[0]]=(2*parseFloat($F(a[1]+c))*parseFloat($F(a[2]+c)))||0});b.areaFC=parseFloat($F("aw"+c)*parseFloat($F("al"+c)))||0;b.areaSum=b.areaLR+b.areaFR+b.areaFC;b.pctOcc=parseFloat($F("pctOcc"+c))||0}})},showDims:function(){[["roomvolume","volume",0],["mfp","mfp",1],["x","fr",0],["y","lr",0],["z","fc",0],["surfacearea","totalsa",0]].each(function(a){$(a[0]).innerHTML=accounting.formatNumber(threedb.user.data.room[a[1]](),a[2])})},showCapacity:function(){$("vpp").innerHTML=accounting.formatNumber(threedb.user.data.room.vpp())},showProgress:function(){[["sidewallProgress",threedb.user.data.room.areaLR(),threedb.user.data.room.lr()],["frontrearProgress",threedb.user.data.room.areaFR(),threedb.user.data.room.fr()],["floorceilingProgress",threedb.user.data.room.areaFC(),threedb.user.data.room.fc()]].each(function(a){$(a[0]).innerHTML="<span>"+accounting.formatNumber((a[1]/a[2])*100)+"%</span>"})},showRTGoals:function(){threedb.rt.freq.each(function(b,a){$("rtGoal"+b).setValue(accounting.formatNumber(parseFloat($F("rtGoal"))*parseFloat($F("rtGoalMultiplier"+b)),1))})},calcRTs:function(){threedb.rt.freq.each(function(b,a){threedb.user.data.room.sabine.delta[a]=threedb.user.data.room.sabinGoal(a)-threedb.user.data.room.sabinsSum(a);threedb.user.data.room.eyring.delta[a]=threedb.user.data.room.sabinGoal(a)-threedb.user.data.room.eyringSabins(a);[["sabine","calc","sabinsSum"],["sabine","rt","sabineRT"],["eyring","calc","eyringSabins"],["eyring","rt","eyringRT"]].each(function(c){threedb.user.data.room[c[0]][c[1]][a]=threedb.user.data.room[c[2]](a)=="Infinity"?0:threedb.user.data.room[c[2]](a)
});[["fitzroy","rt","lr","fitzroyRTLR"],["fitzroy","rt","fr","fitzroyRTFR"],["fitzroy","rt","fc","fitzroyRTFC"],["fitzroy","rt","sum","fitzroyRT"],["fitzroy","calc","lr","sabinsLR"],["fitzroy","calc","fr","sabinsFR"],["fitzroy","calc","fc","sabinsFC"],["fitzroyE","rt","lr","fitzroyERTLR"],["fitzroyE","rt","fr","fitzroyERTFR"],["fitzroyE","rt","fc","fitzroyERTFC"],["fitzroyE","rt","sum","fitzroyERT"],["fitzroyE","calc","lr","sabinsELR"],["fitzroyE","calc","fr","sabinsEFR"],["fitzroyE","calc","fc","sabinsEFC"],["arau","rt","lr","arauRTLR"],["arau","rt","fr","arauRTFR"],["arau","rt","fc","arauRTFC"],["arau","rt","sum","arauRT"]].each(function(c){threedb.user.data.room[c[0]][c[1]][c[2]][a]=threedb.user.data.room[c[3]](a)=="Infinity"?0:threedb.user.data.room[c[3]](a)})})},showGraphs:function(){$w("goal sabine eyring fitzroy fitzroyE arau kuttruff").each(function(c){threedb.rt.graphs.data.rt[c].clear()});var b=[];threedb.rt.freq.each(function(d,c){b.push(parseFloat($F("rtGoal"+d))||0)});threedb.debug.log("Updating RT Goal in main graph");threedb.rt.graphs.objects.rt.series[0].setData(b);var a=[];[[threedb.user.data.room.sabine.rt,1],[threedb.user.data.room.eyring.rt,2],[threedb.user.data.room.fitzroy.rt.sum,3],[threedb.user.data.room.fitzroyE.rt.sum,4],[threedb.user.data.room.arau.rt.sum,5]].each(function(c){a.clear();threedb.rt.freq.each(function(e,d){a.push(c[0][d]||0)});threedb.debug.log("Updating "+c[0]);threedb.rt.graphs.objects.rt.series[c[1]].setData(a)});[["calcGoalRT",0],["calcSabineRT",1],["calcEyringRT",2],["calcFitzroyRT",3],["calcFitzroyERT",4],["calcArauRT",5]].each(function(c){if($F(c[0])){threedb.rt.graphs.objects.rt.series[c[1]].show()}else{threedb.rt.graphs.objects.rt.series[c[1]].hide()}});if($("fitzroyRTDetails").getStyle("display")!=="none"){threedb.rt.showFitzroyGraph()}if($("fitzroyERTDetails").getStyle("display")!=="none"){threedb.rt.showFitzroyEGraph()}if($("arauRTDetails").getStyle("display")!=="none"){threedb.rt.showArauGraph()}},showRTs:function(){threedb.rt.freq.each(function(b,a){$("sabinGoal"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.sabinGoal(a));$("airAbsorption"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.airAbsorption(a));$("avgAlpha"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.avgAlpha(a),2);$("sabineCalc"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.sabine.calc[a]);$("sabineDelta"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.sabine.delta[a]);$("sabineRT"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.sabine.rt[a],1);$("_sabineRT"+b).value=accounting.formatNumber(threedb.user.data.room.sabine.rt[a],1);$("eyringCalc"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.eyring.calc[a]);$("eyringDelta"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.eyring.delta[a]);$("eyringRT"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.eyring.rt[a],1);$("_eyringRT"+b).value=accounting.formatNumber(threedb.user.data.room.eyring.rt[a],1);$("fitzroyRTLR"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroy.rt.lr[a],2);$("fitzroyCalcLR"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroy.calc.lr[a]);$("fitzroyRTFR"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroy.rt.fr[a],2);$("fitzroyCalcFR"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroy.calc.fr[a]);$("fitzroyRTFC"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroy.rt.fc[a],2);$("fitzroyCalcFC"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroy.calc.fc[a]);$("fitzroyRT"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroy.rt.sum[a],1);$("_fitzroyRT"+b).value=accounting.formatNumber(threedb.user.data.room.fitzroy.rt.sum[a],1);$("fitzroyERTLR"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroyE.rt.lr[a],2);$("fitzroyECalcLR"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroyE.calc.lr[a]);$("fitzroyERTFR"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroyE.rt.fr[a],2);$("fitzroyECalcFR"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroyE.calc.fr[a]);$("fitzroyERTFC"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroyE.rt.fc[a],2);$("fitzroyECalcFC"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroyE.calc.fc[a]);$("fitzroyERT"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.fitzroyE.rt.sum[a],1);$("_fitzroyERT"+b).value=accounting.formatNumber(threedb.user.data.room.fitzroyE.rt.sum[a],1);$("arauRTLR"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.arau.rt.lr[a],2);$("arauRTFR"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.arau.rt.fr[a],2);$("arauRTFC"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.arau.rt.fc[a],2);$("arauRT"+b).innerHTML=accounting.formatNumber(threedb.user.data.room.arau.rt.sum[a],1);$("_arauRT"+b).value=accounting.formatNumber(threedb.user.data.room.arau.rt.sum[a],1)
});return true},suggestRT:function(){var a=0;if($("toggleUnits").innerHTML=="FT"){a=1}else{if($("toggleUnits").innerHTML=="M"){a=0.0283168466}}$("speechaud").innerHTML=accounting.formatNumber(((0.112*threedb.math.log10(threedb.user.data.room.volume()*a))+0.318),1);$("recstudio").innerHTML=accounting.formatNumber(((0.267*threedb.math.log10(threedb.user.data.room.volume()*a))-0.405),1);$("tvstudio").innerHTML=accounting.formatNumber(((0.304*threedb.math.log10(threedb.user.data.room.volume()*a))-0.879),1);$("churchs_lb").innerHTML=accounting.formatNumber(((0.27*threedb.math.log10(threedb.user.data.room.volume()*a))-0.13),1);$("churchs_ub").innerHTML=accounting.formatNumber(((0.38*threedb.math.log10(threedb.user.data.room.volume()*a))-0.28),1);$("churchm_lb").innerHTML=accounting.formatNumber(((0.38*threedb.math.log10(threedb.user.data.room.volume()*a))-0.28),1);$("churchm_ub").innerHTML=accounting.formatNumber((Math.pow((0.2*threedb.math.log10(threedb.user.data.room.volume()*a)),3.6)+1.6),1);$("opera_lb").innerHTML=accounting.formatNumber(((0.2*threedb.math.log10(threedb.user.data.room.volume()*a))-0.07),1);$("opera_ub").innerHTML=accounting.formatNumber(((0.3*threedb.math.log10(threedb.user.data.room.volume()*a))-0.04),1);$("symphony_lb").innerHTML=accounting.formatNumber(((0.3*threedb.math.log10(threedb.user.data.room.volume()*a))-0.04),1);$("symphony_ub").innerHTML=accounting.formatNumber(((0.49*threedb.math.log10(threedb.user.data.room.volume()*a))-0.21),1)},suggestFinish:function(){new Ajax.Request("/rt/rt-suggest.php",{method:"get",parameters:{hz125:Math.round(threedb.user.data.room.sabine.delta[0]),hz250:Math.round(threedb.user.data.room.sabine.delta[1]),hz500:Math.round(threedb.user.data.room.sabine.delta[2]),hz1000:Math.round(threedb.user.data.room.sabine.delta[3]),hz2000:Math.round(threedb.user.data.room.sabine.delta[4]),hz4000:Math.round(threedb.user.data.room.sabine.delta[5])},onSuccess:function(a){$("suggestedfinishes").descendants().each(function(b){b.stopObserving()});$("suggestedfinishes").innerHTML="";a.responseJSON.each(function(h,f){var b=[];if((h.manufacturer)&&(h.model)){b.push("<span>"+h.manufacturer+" "+h.model+"</span>")}if((h.manufacturer)&&!(h.model)){b.push("<span>"+h.manufacturer+"</span>")}if((h.manufacturer)&&(h.desc)){b.push(" ("+h.desc+")</span>")}if(!(h.manufacturer)&&(h.desc)){b.push("<span>"+h.desc+"</span>")}var g=[];if(h.mounting){g.push("Type "+h.mounting+" mounting")}if(h.thickness){g.push(h.thickness+" thick")}if(h.density){g.push(h.density+" density")}if(h.feat1){g.push(h.feat1)}if(h.feat2){g.push(h.feat2)}if(h.feat3){g.push(h.feat3)}if(h.feat4){g.push(h.feat4)}if(h.feat5){g.push(h.feat5)}if(h.leed===true){g.push("LEED")}var j=$("toggleUnits").innerHTML.toLowerCase();$("suggestedfinishes").appendChild(new Element("li",{id:"suggestedfinish"+f,className:"suggestedfinish"})).innerHTML=['<div class="suggestedfinish'+f+' hdg">',"<div class='add-right suggestedfinish-active"+f+"' id='suggestedfinish-add"+f+"'>","<img src='../images/glyphicons/glyphicons_190_circle_plus.png'>","</div>",'<div class="hdg-area"><span id="s_hdg-area'+f+'" title="'+h.score+'"">'+accounting.formatNumber(h.area)+'</span> <span class="unit-length">'+j+"</span><sup>2</sup></div>","<div class='tablist' id='sf_tablist"+f+"'>","<div id='suggestedfinish-details"+f+"' class='suggestedfinish"+f+" tab'>","Details","</div>","</div>",'<div id="suggestedfinish'+f+'text" class="hdg text" style="">','<h3 class="number rt">'+(f+1)+"</h3>",'<h3 class="finish rt">'+b.join("")+"</h3>&nbsp;",'<h4 class="finish-detail" title="'+g.join(", ")+'">'+g.join(", ")+"</h4>","</div>","</div>","<div class='suggestedfinish"+f+" suggestedfinish-details-container'>","<table class='suggestedfinish-details-container'>","<tr>","<td rowspan='6'><img class='suggestedfinish-details-image' id='suggestedfinish-details-image"+f+"'></img></td>","<td class='edit-details-label'>Thickness</td>","<td class='edit-details-value' id='suggestedfinishThickness"+f+"'>&nbsp;</td>","</tr>","<tr>","<td class='edit-details-label'>Density</td>","<td class='edit-details-value' id='suggestedfinishDensity"+f+"'>&nbsp;</td>","</tr>","<tr>","<td class='edit-details-label'>Mounting</td>","<td class='edit-details-value' id='suggestedfinishMounting"+f+"'>&nbsp;</td>","</tr>","<tr>","<td class='edit-details-label'>Additional Info</td>","<td class='edit-details-value'>","<ul id='suggestedfinishInfo"+f+"' class='suggestedfinishInfo'>","</ul>","</td>","</tr>","<tr>","<td class='edit-details-label'>Test report</td>","<td class='edit-details-value' id='suggestedfinishStandard"+f+"'>&nbsp;</td>","</tr>","<tr>","<td class='edit-details-label'>Source</td>","<td class='edit-details-value' id='suggestedfinishSource"+f+"'>&nbsp;</td>","</tr>","</table>","</div>"].join("");function k(m,l){if(l.imageurl){$("suggestedfinish-details-image"+m).show();$("suggestedfinish-details-image"+m).setAttribute("src","./images/finishes/"+l.imageurl)}else{$("suggestedfinish-details-image"+m).hide()
}if(l.thickness){$("suggestedfinishThickness"+m).innerHTML=l.thickness}else{$("suggestedfinishThickness"+m).innerHTML=""}if(l.density){$("suggestedfinishDensity"+m).innerHTML=l.density}else{$("suggestedfinishDensity"+m).innerHTML=""}if(l.mounting){$("suggestedfinishMounting"+m).innerHTML="Type "+l.mounting}else{$("suggestedfinishMounting"+m).innerHTML=""}$("suggestedfinishInfo"+m).innerHTML="";if(l.feat1){$("suggestedfinishInfo"+m).appendChild(new Element("li",{className:"surface-desc"})).appendChild(document.createTextNode(l.feat1))}if(l.feat2){$("suggestedfinishInfo"+m).appendChild(new Element("li",{className:"surface-desc"})).appendChild(document.createTextNode(l.feat2))}if(l.feat3){$("suggestedfinishInfo"+m).appendChild(new Element("li",{className:"surface-desc"})).appendChild(document.createTextNode(l.feat3))}if(l.feat4){$("suggestedfinishInfo"+m).appendChild(new Element("li",{className:"surface-desc"})).appendChild(document.createTextNode(l.feat4))}if(l.feat5){$("suggestedfinishInfo"+m).appendChild(new Element("li",{className:"surface-desc"})).appendChild(document.createTextNode(l.feat5))}if(l.standard&&l.standardurl){YAHOO.util.Dom.get("suggestedfinishStandard"+m).innerHTML='<a href="'+l.standardurl+'">'+l.standard+"</a>"}else{if(l.standard){YAHOO.util.Dom.get("suggestedfinishStandard"+m).innerHTML=l.standard}else{YAHOO.util.Dom.get("suggestedfinishStandard"+m).innerHTML="Unavailable"}}if((l.source)&&(l.sourceurl)){document.getElementById("suggestedfinishSource"+m).innerHTML='<a href="'+l.sourceurl+'">'+l.source+"</a>"}else{if(l.source){document.getElementById("suggestedfinishSource"+m).innerHTML=l.source}else{document.getElementById("suggestedfinishSource"+m).innerHTML=""}}}function c(l){$$("li#suggestedfinish"+l+" .tablist").each(function(m){if(h.expanded===false){m.hide()}m.up().up().observe("mouseenter",function(n){m.up().down("div.hdg.text").setStyle({width:"380px",display:"block"});m.up().down("div.hdg.text").down("h4.finish-detail").setStyle({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});m.show()});m.up().up().observe("mouseleave",function(n){if(h.expanded===false){m.hide();if(BrowserDetect.browser==="Firefox"){m.up().down("div.hdg.text").setStyle({width:"440px",height:"inherit",display:"block"})}else{m.up().down("div.hdg.text").setStyle({width:"440px",height:"inherit",display:"block"})}}})})}function d(m,l){$$(".tab .active").each(function(n){if(n.hasClassName("suggestedfinish"+l)){n.removeClassName("active")}});$$(".suggestedfinish-details-container").each(function(n){if(n.hasClassName("suggestedfinish"+l)){if(m){Effect.BlindUp(n,{duration:0.2})}else{n.hide()}}});$$(".tablist .active").each(function(n){if(n.hasClassName("suggestedfinish"+l)){n.removeClassName("active");n.up().up().down("div.tablist").hide();n.up().up().down("div.hdg.text").setStyle({width:"440px",display:"block"})}});h.expanded=false;$("suggestedfinish"+l).setStyle({borderBottom:"solid 1px #e4e4e4"})}function e(o,n,m){var l;if(o){l=(BrowserDetect.browser="Firefox")?o.target:o.srcElement.id}else{l=false}if(l&&$(l).hasClassName("active")){d(true,m)}else{$$(".tablist .active").each(function(p){if(p.hasClassName("suggestedfinish"+m)){p.removeClassName("active")}});$$(".suggestedfinish-details-container").each(function(p){if(p.hasClassName("suggestedfinish"+m)){p.hide()}});$(n+m).addClassName("active");h.expanded=true;$$("."+n+"-container").each(function(p){if(p.hasClassName("suggestedfinish"+m)){p.show();p.up().down("div.hdg.text").setStyle({width:"400px",display:"block"});p.up().down("div.hdg.text").down("h4.finish-detail").setStyle({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})}});$("suggestedfinish"+m).setStyle({borderBottom:"none"})}}$("suggestedfinish-add"+f).observe("click",function(){var l=threedb.user.data.room.surface.length;threedb.rt.addSurface.render({index:l});$("lr"+l).setValue(Math.round(h.area));$("finishId"+l).setValue(h.fid);threedb.rt.addSurface.loadSurfaceData(l,h);threedb.rt.addSurface.callbacks.calcSabin(null,l)});$("suggestedfinish-details"+f).observe("click",function(l){e(l,"suggestedfinish-details",f)});h.expanded=false;k(f,h);c(f);d(false,f)});if(a.responseJSON.length===0){if(!($F("rtGoal"))){$("suggestedfinishes").appendChild(new Element("li",{className:"suggestedfinish"})).innerHTML='<div class="hdg"><div class="finish-detail" style="margin: 1px 20px;font-style:italic">Don\'t forget to enter an RT goal.</div></div>'}else{if(threedb.user.data.room.sabine.delta.max()<2){$("suggestedfinishes").appendChild(new Element("li",{className:"suggestedfinish"})).innerHTML='<div class="hdg"><div class="finish-detail" style="margin: 1px 20px;font-style:italic">Nice work.  Room meets or exceeds Sabine RT goal.</div></div>'}else{$("suggestedfinishes").appendChild(new Element("li",{className:"suggestedfinish"})).innerHTML='<div class="hdg"><div class="finish-detail" style="margin: 1px 20px;font-style:italic">No suitable finishes found.</div></div>'}}}console.log("Ajax request successful")
},onComplete:function(a){console.log("Ajax request complete")}})},FinishSuggestion:function(){this.html=null;this.graph=null},showFitzroyGraph:function(){var d=[];var b=[];var e=[];var c=[];threedb.rt.freq.each(function(h,g){d[g]=[g,threedb.user.data.room.fitzroy.rt.lr[g]||0];b[g]=[g,threedb.user.data.room.fitzroy.rt.fr[g]||0];e[g]=[g,threedb.user.data.room.fitzroy.rt.fc[g]||0];c[g]=[g,threedb.user.data.room.fitzroy.rt.sum[g]||0]});var a=[];[[d,1],[b,2],[e,3],[c,4]].each(function(f){a.clear();threedb.rt.freq.each(function(h,g){a.push(f[0][g]||0)});threedb.debug.log("Updating Fitzroy Graph data, "+f[0]);threedb.rt.graphs.objects.fitzroy.series[f[1]].setData(a)})},showFitzroyEGraph:function(){var b=[];var a=[];var c=[];var d=[];threedb.rt.freq.each(function(h,g){b[g]=[g,threedb.user.data.room.fitzroyE.rt.lr[g]||0];a[g]=[g,threedb.user.data.room.fitzroyE.rt.fr[g]||0];c[g]=[g,threedb.user.data.room.fitzroyE.rt.fc[g]||0];d[g]=[g,threedb.user.data.room.fitzroyE.rt.sum[g]||0]});var e=[];[[b,1],[a,2],[c,3],[d,4]].each(function(f){e.clear();threedb.rt.freq.each(function(h,g){e.push(f[0][g]||0)});threedb.debug.log("Updating Fitzroy (Eyring) Graph data, "+f[0]);threedb.rt.graphs.objects.fitzroyE.series[f[1]].setData(e)})},showArauGraph:function(){var a=[];var e=[];var b=[];var d=[];threedb.rt.freq.each(function(h,g){a[g]=[g,threedb.user.data.room.arau.rt.lr[g]||0];e[g]=[g,threedb.user.data.room.arau.rt.fr[g]||0];b[g]=[g,threedb.user.data.room.arau.rt.fc[g]||0];d[g]=[g,threedb.user.data.room.arau.rt.sum[g]||0]});var c=[];[[a,1],[e,2],[b,3],[d,4]].each(function(f){c.clear();threedb.rt.freq.each(function(h,g){c.push(f[0][g]||0)});threedb.debug.log("Updating Arau-Pruchades Graph data, "+f[0]);threedb.rt.graphs.objects.arau.series[f[1]].setData(c)})},initCalculationToolTips:function(){[["sabineRT",threedb.user.data.room.sabine.formula,threedb.user.data.room.sabine.definitions,400],["eyringRT",threedb.user.data.room.eyring.formula,threedb.user.data.room.eyring.definitions,300],["fitzroyRT",threedb.user.data.room.fitzroy.formula,threedb.user.data.room.fitzroy.definitions,650],["fitzroyERT",threedb.user.data.room.fitzroyE.formula,threedb.user.data.room.fitzroyE.definitions,800],["arauRT",threedb.user.data.room.arau.formula,threedb.user.data.room.arau.definitions,700]].each(function(b,a){threedb.rt.freq.each(function(d,c){var e=b[0].toString()+d;$(e).observe("mouseover",function(){this.setStyle({cursor:"pointer",color:"#004d73"})});$(e).observe("mouseout",function(){this.setStyle({cursor:"inherit",color:"inherit"})});$(e).observe("click",function(){if($("calculationToolTip-"+e)){$("calculationToolTip-"+e).innerHTML=""}else{document.body.appendChild(new Element("div",{id:"calculationToolTip-"+e}))}$("calculationToolTip-"+e).appendChild(new Element("div")).setStyle({paddingBottom:"8px"}).innerHTML="Formula";$("calculationToolTip-"+e).appendChild(new Element("div",{id:"calculationToolTipFormula-"+e}));$("calculationToolTipFormula-"+e).innerHTML=b[1];$("calculationToolTip-"+e).appendChild(new Element("div")).setStyle({paddingTop:"8px",paddingBottom:"8px"}).innerHTML="whereas,";$("calculationToolTip-"+e).appendChild(new Element("table",{id:"calculationToolTipDefinitions-"+e}));b[2].each(function(g,f){$("calculationToolTipDefinitions-"+e).appendChild(new Element("tr",{id:"calculationToolTipDefinition-"+e+"_"+f}));$("calculationToolTipDefinition-"+e+"_"+f).appendChild(new Element("td",{style:"vertical-align: top;"})).innerHTML=g[0];$("calculationToolTipDefinition-"+e+"_"+f).appendChild(new Element("td",{style:"vertical-align: top;",padding:"0 4px"})).innerHTML="\\( = \\)";$("calculationToolTipDefinition-"+e+"_"+f).appendChild(new Element("td",{style:"vertical-align: top; text-align: left;"})).innerHTML=g[1]});$("calculationToolTip-"+e).appendChild(new Element("div")).setStyle({paddingTop:"8px",paddingBottom:"8px"}).innerHTML="Solution";$("calculationToolTip-"+e).appendChild(new Element("div",{id:"calculationToolTipSolution-"+e}));$("calculationToolTipSolution-"+e).innerHTML=threedb.user.data.room[b[0]+"Solution"](c);hs.htmlExpand(this,{maincontentId:"calculationToolTip-"+e,headingText:"Calculation Details <sub>BETA</sub>"});MathJax.Hub.Queue(["Typeset",MathJax.Hub])})})})},audienceArea:null,panels:[],init:function(){threedb.user.data.room=new threedb.Room();threedb.user.init()},loadCharts:function(){threedb.debug.log("Loading RT Graph");threedb.rt.graphs.objects.rt=new Highcharts.Chart({chart:{renderTo:"rtGraph",defaultSeriesType:"spline",animation:{duration:1000,easing:"swing"},showAxes:"true",style:{fontFamily:"Arial"}},title:{style:{fontSize:"13px"},text:null},credits:{position:"right",verticalAlign:"bottom",text:"wikoustics.org",enabled:false},exporting:{enabled:false,},tooltip:{formatter:function(){return this.series.name+"<br>("+accounting.formatNumber(this.y,2)+" s @ "+this.x+" Hz)"}},legend:{enabled:false},plotOptions:{areaspline:{fillColor:{linearGradient:[0,0,0,300],stops:[[0,"rgb(69, 114, 167)"],[1,"rgba(1,0,0,0)"]]}},spline:{lineWidth:1,marker:{radius:4}}},xAxis:{categories:threedb.rt.freq,tickmarkPlacement:"on",title:{text:"Frequency, Hz"},startOnTick:false,showLastLabel:true,minPadding:-0.3,maxPadding:-0},yAxis:{title:{text:"RT60, s"},min:0,tickInterval:1,minorTickInterval:"auto"},series:[{name:"Goal RT",data:threedb.rt.graphs.data.rt.goal,type:"areaspline",color:"rgba(113, 147, 186, 1)",marker:{enabled:false},dashStyle:"shortdot"},{name:"Sabine RT",data:threedb.rt.graphs.data.rt.sabine},{name:"Eyring RT",data:threedb.rt.graphs.data.rt.eyring},{name:"Fitzroy (Sabine) RT",data:threedb.rt.graphs.data.rt.fitzroy},{name:"Fitzroy (Eyring) RT",data:threedb.rt.graphs.data.rt.fitzroyE},{name:"Arau-Pruchades RT",data:threedb.rt.graphs.data.rt.arau}]});
threedb.debug.log("Loading Fitzroy RT Graph");threedb.rt.graphs.objects.fitzroy=new Highcharts.Chart({chart:{renderTo:"fitzroyGraph",defaultSeriesType:"spline",animation:{duration:1000,easing:"swing"},showAxes:"true",style:{fontFamily:"Arial"}},exporting:{enabled:false,},title:{text:null},credits:{enabled:false},tooltip:{formatter:function(){return this.series.name+"<br>("+accounting.formatNumber(this.y,2)+" s @ "+this.x+" Hz)"}},legend:{enabled:false},plotOptions:{areaspline:{fillColor:{linearGradient:[0,0,0,210],stops:[[0,"rgb(69, 114, 167)"],[1,"rgba(2,0,0,0)"]]}}},xAxis:{categories:threedb.rt.freq,tickmarkPlacement:"on",title:{text:"Frequency, Hz"},startOnTick:false,showLastLabel:true,minPadding:-0.3,maxPadding:-0},yAxis:{title:{text:"RT60, s"},min:0,tickInterval:1,minorTickInterval:"auto"},series:[{name:"Goal RT",data:threedb.rt.graphs.data.rt.goal,type:"areaspline",marker:{enabled:false},dashStyle:"shortdot"},{name:"Left Right RT",data:null},{name:"Front Rear RT",data:null},{name:"Floor Ceiling RT",data:null},{name:"Fitzroy RT",data:null}]});threedb.debug.log("Loading Fitzroy Eyring RT Graph");threedb.rt.graphs.objects.fitzroyE=new Highcharts.Chart({chart:{renderTo:"fitzroyEGraph",defaultSeriesType:"spline",animation:{duration:1000,easing:"swing"},showAxes:"true",style:{fontFamily:"Arial"}},title:{text:null},credits:{enabled:false},exporting:{enabled:false,},tooltip:{formatter:function(){return this.series.name+"<br>("+accounting.formatNumber(this.y,2)+" s @ "+this.x+" Hz)"}},legend:{enabled:false},plotOptions:{areaspline:{fillColor:{linearGradient:[0,0,0,210],stops:[[0,"rgb(69, 114, 167)"],[1,"rgba(2,0,0,0)"]]}}},xAxis:{categories:threedb.rt.freq,tickmarkPlacement:"on",title:{text:"Frequency, Hz"},startOnTick:false,showLastLabel:true,minPadding:-0.3,maxPadding:-0},yAxis:{title:{text:"RT60, s"},min:0,tickInterval:1,minorTickInterval:"auto"},series:[{name:"Goal RT",data:threedb.rt.graphs.data.rt.goal,type:"areaspline",marker:{enabled:false},dashStyle:"shortdot"},{name:"Left Right RT",data:null},{name:"Front Rear RT",data:null},{name:"Floor Ceiling RT",data:null},{name:"Fitzroy RT",data:null}]});threedb.debug.log("Loading Arau-Pruchades RT Graph");threedb.rt.graphs.objects.arau=new Highcharts.Chart({chart:{renderTo:"arauGraph",defaultSeriesType:"spline",animation:{duration:1000,easing:"swing"},showAxes:"true",style:{fontFamily:"Arial"}},title:{text:null},credits:{enabled:false},exporting:{enabled:false,},tooltip:{formatter:function(){return this.series.name+"<br>("+accounting.formatNumber(this.y,2)+" s @ "+this.x+" Hz)"}},legend:{enabled:false},plotOptions:{areaspline:{fillColor:{linearGradient:[0,0,0,210],stops:[[0,"rgb(69, 114, 167)"],[1,"rgba(2,0,0,0)"]]}}},xAxis:{categories:threedb.rt.freq,tickmarkPlacement:"on",title:{text:"Frequency, Hz"},startOnTick:false,showLastLabel:true,minPadding:-0.3,maxPadding:-0},yAxis:{title:{text:"RT60, s"},min:0,tickInterval:1,minorTickInterval:"auto"},series:[{name:"Goal RT",data:threedb.rt.graphs.data.rt.goal,type:"areaspline",marker:{enabled:false},dashStyle:"shortdot"},{name:"Left Right RT",data:null},{name:"Front Rear RT",data:null},{name:"Floor Ceiling RT",data:null},{name:"Arau-Pruchades RT",data:null}]});threedb.rt.graphs.objects.allowUpdates=true},loadEvents:function(){if(page==="/rt.php"){$j(document).ready(function(){threedb.debug.log("Document ready for JavaScript");threedb.rt.init();threedb.rt.io();threedb.rt.initCalculationToolTips();if(threedb.user.loggedin){$("save").observe("click",function(){$("rtcalc").submit(function(){threedb.rt.unsaved=false;document.rtcalc.saveRTCalc.value=true;return true})});if(threedb.user.hasRID){$("export").observe("click",function(){threedb.rt.csvExport()})}}if($("roomName")){$("roomName").observe("focus",function(){$("roomNameTip").appear()})}if($("roomNumber")){$("roomNumber").observe("blur",function(){$("roomNameTip").fade()})}threedb.rt.loadCharts();$w("rtSuggestionBody sabineRTDetails eyringRTDetails fitzroyRTDetails fitzroyERTDetails arauRTDetails").each(function(a){$(a).hide();$(a).previousSiblings()[0].down().down().addClassName("rotate-right")});[{header:"rtSuggestionHeader",body:"rtSuggestionBody",func:function(){return null}},{header:"roomSurfacesHeader",body:"roomSurfacesBody",func:function(){return null}},{header:"roomAudienceAreasHeader",body:"roomAudienceAreasBody",func:function(){return null}},{header:"suggestedfinishesHeader",body:"suggestedfinishesBody",func:function(){return null}},{header:"roomPropertiesHeader",body:"roomPropertiesBody",func:function(){return null}},{header:"roomResultsHeader",body:"roomResultsBody",func:function(){return null}},{header:"sabineRTHeader",body:"sabineRTDetails",func:function(){return null}},{header:"eyringRTHeader",body:"eyringRTDetails",func:function(){return null}},{header:"fitzroyRTHeader",body:"fitzroyRTDetails",func:function(){threedb.rt.showFitzroyGraph()}},{header:"fitzroyERTHeader",body:"fitzroyERTDetails",func:function(){threedb.rt.showFitzroyEGraph()}},{header:"arauRTHeader",body:"arauRTDetails",func:function(){threedb.rt.showArauGraph()
}}].each(function(a){Event.observe(a.header,"click",function(){if($(a.body).getStyle("display")==="none"){$(a.body).show();$(a.header).down().down().removeClassName("rotate-right");a.func()}else{Effect.SlideUp(a.body,{queue:{position:"end",scope:a.header},duration:1});$(a.header).down().down().addClassName("rotate-right")}})});$("rtGoal").observe("focus",function(){$("rtSuggestionBody").show();$("rtSuggestionHeader").down().down().removeClassName("rotate-right")});$("rtGoal").observe("blur",function(){Effect.SlideUp("rtSuggestionBody",{queue:{position:"end",scope:"rtSuggestionHeader"},duration:1});$("rtSuggestionHeader").down().down().addClassName("rotate-right")});[["toggleUnitsButton","click",threedb.rt.callbacks.unitsCallback],["roomLength","change",threedb.rt.callbacks.dimsCallback],["roomWidth","change",threedb.rt.callbacks.dimsCallback],["roomHeight","change",threedb.rt.callbacks.dimsCallback],["roomCapacity","change",threedb.rt.callbacks.dimsCallback],["calcGoalRT","click",threedb.rt.callbacks.calcRTsCallback],["calcSabineRT","click",threedb.rt.callbacks.calcRTsCallback],["calcEyringRT","click",threedb.rt.callbacks.calcRTsCallback],["calcFitzroyRT","click",threedb.rt.callbacks.calcRTsCallback],["calcFitzroyERT","click",threedb.rt.callbacks.calcRTsCallback],["calcArauRT","click",threedb.rt.callbacks.calcRTsCallback],["addSurface","click",threedb.rt.callbacks.addSurfaceCallback],["addAudience","click",threedb.rt.callbacks.addAudienceCallback],["rtGoal","change",threedb.rt.callbacks.rtGoalCallback],["rtGoalMultiplier125","change",threedb.rt.callbacks.calcRTsCallback],["rtGoalMultiplier250","change",threedb.rt.callbacks.calcRTsCallback],["rtGoalMultiplier500","change",threedb.rt.callbacks.calcRTsCallback],["rtGoalMultiplier1000","change",threedb.rt.callbacks.calcRTsCallback],["rtGoalMultiplier2000","change",threedb.rt.callbacks.calcRTsCallback],["rtGoalMultiplier4000","change",threedb.rt.callbacks.calcRTsCallback]].each(function(a){$(a[0]).observe(a[1],a[2])});$$("body").first().observe("change",threedb.rt.callbacks.changeCallback);threedb.rt.callbacks.dimsCallback();if($("modDate")&&$("modDate").innerHTML!="New"){$("modDate").title=$("modDate").innerHTML;$("modDate").innerHTML=humaneDate($("modDate").innerHTML.replace("+00:00","Z"))}$$(".number").each(function(a){a.observe("keyup",function(){var b=/(^-*\d+$)|(^-*\d+\.\d+$)/;if(!((b.test(a.value))||a.value==="")){this.setStyle({backgroundColor:"#FFDBEE"})}else{this.setStyle({backgroundColor:"white"})}});a.observe("blur",function(c){if(a.value.charAt(0)=="="){a.title=a.value;var b=owenge.equation.parse(a.value.substr(1));a.value=b.answer}})});$$(".close").each(function(a){a.observe("click",function(){a.up().shrink();$j.waypoints("refresh")})});$("rtcalc").descendants().each(function(b,a){if((b.tagName=="INPUT"||b.tagName=="SELECT")){}});$j("#results-container").waypoint(function(a,b){$j(this).toggleClass("sticky",b==="down");a.stopPropagation()})})}}()},finishbrowser:null,user:{country:(google.loader.ClientLocation)?google.loader.ClientLocation.address.country:null,countrycode:(google.loader.ClientLocation)?google.loader.ClientLocation.address.country_code:null,metro:(google.loader.ClientLocation)?google.loader.ClientLocation.address.city:null,browser:{name:BrowserDetect.browser,version:BrowserDetect.version},os:BrowserDetect.OS,loggedin:false,ajax:function(){new Ajax.Request("./threedb-ajax.php",{method:"post",parameters:{userdata:true,page:page,referer:referer,country:threedb.user.country,countrycode:threedb.user.countrycode,metro:threedb.user.metro,browser:threedb.user.browser.name,browserversion:threedb.user.browser.version,os:threedb.user.os,screenwidth:screen.width,screenheight:screen.height},onSuccess:function(){threedb.debug.alert("Ajax transmission successful.")},onFailure:function(){threedb.debug.alert("Ajax transmission failed.")}})},data:{room:null},init:function(){}},bands:{f1:$w("16 31.5 63 125 250 500 1000 2000 4000 8000 16000"),f3:$w("12.5 16 20 25 31.5 40 50 63 80 100 125 160 200 250 315 400 500 630 800 1000 1250 1600 2000 2500 3150 4000 5000 6300 8000 10000 12500 16000 20000")},calc:{wavelength:function(a){return 1130/threedb.bands.f1[a]},lw2lp:{freefield:function(c,a,b){if(b=="m"){return c-20*threedb.math.log10(a)-10.9}else{if(b=="ft"){return c-20*threedb.math.log10(a)-0.6}}},reflected:function(c,a,b){if(b=="m"){return c-10*threedb.math.log10(a)+6}else{if(b=="ft"){return c-10*threedb.math.log10(a)+16.3}}},nondiffuse:function(e,a,d,c,b){if(b=="m"){return e-5*threedb.math.log10(a)+3*threedb.math.log10(d)+10*threedb.math.log10(c)-12}else{if(b=="ft"){return e-5*threedb.math.log10(a)+3*threedb.math.log10(d)+10*threedb.math.log10(c)-25}}},reverberant:function(c,b){return c-10*threedb.math.log10(b)+6}},lp:{sabinReduction:function(b,a){return 10*threedb.math.log10(a/b)},loss:function(a,b){if(b===null){b=1}return 20*threedb.math.log10(a/b)},sum:function(b,a){return 10*threedb.math.log10(Math.pow(10,b/10)+Math.pow(10,a/10))}},lw:{w2lw:function(a){return 10*threedb.math.log10(a)+120
}},lp2lw:{byArea:function(a,b){return a+10*threedb.math.log10(b)},direct:function(d,c,b,e,a,f){return d-10*threedb.math.log10(c)+10*threedb.math.log10(b)+10*threedb.math.log10(1+e*a/(8*b))-10*threedb.math.log10(f/1000)-14}},subtractdB:function(b,a){return 10*threedb.math.log10(10*Math.pow(10,b/10)-10*Math.pow(10,a/10))},nrc:function(c){var a=accounting.formatNumber((c.a250+c.a500+c.a1000+c.a2000)*100/4)/100;var b=a.toString();if(b.length==1){b=b+".00"}else{if(b.length==3){b=b+"0"}}return b}},math:{log10:function(a){return Math.log(a)/Math.LN10},tanh:function(a){return(Math.exp(a)-Math.exp(-a))/(Math.exp(a)+Math.exp(-a))},toDegrees:function(a){return a*360/(2*Math.PI)},toRadians:function(a){return a*2*Math.PI/360},distance:function(b,d,a,c){return Math.sqrt(Math.pow(a-b,2)+Math.pow(c-d,2))},slope:function(b,d,a,c){return((c-d)/(a-b))},slopes2angle:function(b,a){return Math.atan((a-b)/(1+b*a))},pathLength:{direct:function(){var d=threedb.reflector.source.distance();var b=threedb.reflector.reflector.distance();var c=threedb.reflector.source.elevation();var a=threedb.reflector.receiver.distance();return Math.sqrt(Math.pow(d+b,2)+Math.pow(a-c,2))},difference:function(){if(threedb.barrier.barrier.elevation()<((threedb.barrier.source.distance()/(threedb.barrier.source.distance()+threedb.barrier.receiver.distance()))*(threedb.barrier.receiver.elevation()-threedb.barrier.source.elevation())+threedb.barrier.source.elevation())){$("warning").innerHTML="No obstruction: barrier provides no attenuation";$("pld").innerHTML="0 ft";return 0}else{$("warning").innerHTML="";var a=threedb.barrier.pathLength.barrier()-threedb.barrier.pathLength.direct();$("pld").innerHTML=accounting.formatNumber(a,2)+" ft";return a}}},sum:function(b){var a;b.each(function(c){a+=c});return a}},graph:{google:{progressBar:function(){var a="http://chart.apis.google.com/chart?"}}},util:{loadHeader:function(b){for(var a=0;a<threedb.bands.f1.length;a++){$(b).appendChild(new Element("th")).appendChild(document.createTextNode(threedb.bands.f1[a]+" Hz"))}},getIndex:function(b){for(var a=0;a<threedb.bands.f1.length;a++){if(b==threedb.bands.f1[a]){return a}}},tab:100,inputcell:function(a,e){var d=$(a);for(var c=0;c<threedb.bands.f1.length;c++){var b=new Element("input",{type:"text",id:a+threedb.bands.f1[c],tabIndex:threedb.util.tab});d.appendChild(new Element("td",{className:"freq"})).appendChild(b);YAHOO.util.Event.addListener(b.id,"blur",e);threedb.util.tab++}},outputspan:function(a){var c=$(a);for(var b=0;b<threedb.bands.f1.length;b++){c.appendChild(new Element("td",{id:a+threedb.bands.f1[b],className:"freq"}))}},fixNaN:function(a){if(isNaN(a)||(a===null)){return a}else{return a}},isDecimal:function(b){var a=RegExp(/^-?\d*(\.\d+)?$/);return a.test(b)},tabOnEnter:function(a){if(window.event&&window.event.keyCode==13){a.focus();return false}else{return true}},parseISO8601:function(g){var e=g.split("T"),b=e[0].split("-"),d=e[1].split("Z"),f=d[0].split(":"),c=f[2].split("."),h=Number(f[0]),a=new Date;a.setUTCFullYear(Number(b[0]));a.setUTCMonth(Number(b[1])-1);a.setUTCDate(Number(b[2]));a.setUTCHours(Number(h));a.setUTCMinutes(Number(f[1]));a.setUTCSeconds(Number(c[0]));if(c[1]){a.setUTCMilliseconds(Number(c[1]))}return a},sha1:function(e){function d(z,y){var j=(z<<y)|(z>>>(32-y));return j}function s(A){var z="";var j;var B;var y;for(j=0;j<=6;j+=2){B=(A>>>(j*4+4))&15;y=(A>>>(j*4))&15;z+=B.toString(16)+y.toString(16)}return z}function u(A){var z="";var y;var j;for(y=7;y>=0;y--){j=(A>>>(y*4))&15;z+=j.toString(16)}return z}function b(y){y=y.replace(/\r\n/g,"\n");var j="";for(var A=0;A<y.length;A++){var z=y.charCodeAt(A);if(z<128){j+=String.fromCharCode(z)}else{if((z>127)&&(z<2048)){j+=String.fromCharCode((z>>6)|192);j+=String.fromCharCode((z&63)|128)}else{j+=String.fromCharCode((z>>12)|224);j+=String.fromCharCode(((z>>6)&63)|128);j+=String.fromCharCode((z&63)|128)}}}return j}var h;var w,v;var c=new Array(80);var n=1732584193;var l=4023233417;var k=2562383102;var g=271733878;var f=3285377520;var t,r,q,p,o;var x;e=b(e);var a=e.length;var m=new Array();for(w=0;w<a-3;w+=4){v=e.charCodeAt(w)<<24|e.charCodeAt(w+1)<<16|e.charCodeAt(w+2)<<8|e.charCodeAt(w+3);m.push(v)}switch(a%4){case 0:w=2147483648;break;case 1:w=e.charCodeAt(a-1)<<24|8388608;break;case 2:w=e.charCodeAt(a-2)<<24|e.charCodeAt(a-1)<<16|32768;break;case 3:w=e.charCodeAt(a-3)<<24|e.charCodeAt(a-2)<<16|e.charCodeAt(a-1)<<8|128;break}m.push(w);while((m.length%16)!=14){m.push(0)}m.push(a>>>29);m.push((a<<3)&4294967295);for(h=0;h<m.length;h+=16){for(w=0;w<16;w++){c[w]=m[h+w]}for(w=16;w<=79;w++){c[w]=d(c[w-3]^c[w-8]^c[w-14]^c[w-16],1)}t=n;r=l;q=k;p=g;o=f;for(w=0;w<=19;w++){x=(d(t,5)+((r&q)|(~r&p))+o+c[w]+1518500249)&4294967295;o=p;p=q;q=d(r,30);r=t;t=x}for(w=20;w<=39;w++){x=(d(t,5)+(r^q^p)+o+c[w]+1859775393)&4294967295;o=p;p=q;q=d(r,30);r=t;t=x}for(w=40;w<=59;w++){x=(d(t,5)+((r&q)|(r&p)|(q&p))+o+c[w]+2400959708)&4294967295;o=p;p=q;q=d(r,30);r=t;t=x}for(w=60;w<=79;w++){x=(d(t,5)+(r^q^p)+o+c[w]+3395469782)&4294967295;
o=p;p=q;q=d(r,30);r=t;t=x}n=(n+t)&4294967295;l=(l+r)&4294967295;k=(k+q)&4294967295;g=(g+p)&4294967295;f=(f+o)&4294967295}var x=u(n)+u(l)+u(k)+u(g)+u(f);return x.toLowerCase()}},debug:{isActive:false,alert:function(a){if(threedb.debug.isActive){window.alert(a)}},log:function(a){if(threedb.debug.isActive){console.log(a)}}},draw:{nrcSparkline:function(c){var b="<img src='http://chart.apis.google.com/chart?chs=40x8&cht=ls&chds=0,1&chco=0077CC&chm=B,E6F2FA,0,0,0&chm=B,76A4FB,0,0,0&chd=t:";var a=c.a250+","+c.a500+","+c.a1000+","+c.a2000+"'>";return b+a},surfaceSparkline:function(c){var b="http://chart.apis.google.com/chart?chf=bg,s,EBEFF9&chs=80x18&cht=ls&chds=0,1&chco=89A9E4&chm=B,89A9E4,0,0,0&chd=t:";var a=c[0]+","+c[1]+","+c[2]+","+c[3]+","+c[4]+","+c[5];return b+a},showToolTip:function(e,h,g,d){var c=e;var b=h;var a=b.cumulativeOffset().left+g;var f=b.cumulativeOffset().top+d;c.style.top=f+"px";c.style.left=a+"px";c.show()}},weighting:{a:function(a){return 2+(20*threedb.math.log10((Math.pow(12200,2)*Math.pow(a,4))/((Math.pow(a,2)+Math.pow(20.6,2))*(Math.sqrt((Math.pow(a,2)+Math.pow(107.7,2))*(Math.pow(a,2)+Math.pow(737.9,2))))*(Math.pow(a,2)+Math.pow(12200,2)))))},dBASum:function(d){var c=0;var a;for(var b=0;b<threedb.bands.f1.length;b++){if(d=="sourceLevel"){a=$F(d+threedb.bands.f1[b])}else{if(d=="receiverLevel"){a=$(d+threedb.bands.f1[b]).innerHTML}}a=parseFloat(a);if(a>0){c=10*threedb.math.log10(Math.pow(10,c/10)+Math.pow(10,(a+threedb.weighting.a(threedb.bands.f1[b]))/10))}}return c},dBZSum:function(d){var c,a;for(var b=0;b<threedb.bands.f1.length;b++){if(d=="sourceLevel"){a=$F(d+threedb.bands.f1[b])}else{if(d=="receiverLevel"){a=$(d+threedb.bands.f1[b]).innerHTML}}a=parseFloat(a);if(a>0){c=10*threedb.math.log10(Math.pow(10,c/10)+Math.pow(10,(a/10)))}}return c}},barrier:{version:"20090805",author:"Rob Miller",website:"http://threedb.com",title:"Barrier Calculation",source:{elevation:function(){return parseFloat($F("sourceElevation"))},distance:function(){return parseFloat($F("sourceDistance"))},q:function(){return parseFloat($F("sourceQ"))}},receiver:{elevation:function(){return parseFloat($F("receiverElevation"))},distance:function(){return parseFloat($F("receiverDistance"))}},barrier:{elevation:function(){return parseFloat($F("barrierElevation"))}},pathLength:{direct:function(){var d=threedb.barrier.source.distance();var b=threedb.barrier.receiver.distance();var c=threedb.barrier.source.elevation();var a=threedb.barrier.receiver.distance();return Math.sqrt(Math.pow(d+b,2)+Math.pow(a-c,2))},barrier:function(){var e=threedb.barrier.source.distance();var c=threedb.barrier.receiver.distance();var d=threedb.barrier.source.elevation();var a=threedb.barrier.receiver.distance();var b=threedb.barrier.barrier.elevation();return Math.sqrt(Math.pow(e,2)+Math.pow(b-d,2))+Math.sqrt(Math.pow(c,2)+Math.pow(b-a,2))},difference:function(){if(threedb.barrier.barrier.elevation()<((threedb.barrier.source.distance()/(threedb.barrier.source.distance()+threedb.barrier.receiver.distance()))*(threedb.barrier.receiver.elevation()-threedb.barrier.source.elevation())+threedb.barrier.source.elevation())){$("warning").innerHTML="No obstruction: barrier provides no attenuation";$("pld").innerHTML="0 ft";return 0}else{$("warning").innerHTML="";var a=threedb.barrier.pathLength.barrier()-threedb.barrier.pathLength.direct();$("pld").innerHTML=accounting.formatNumber(a,2)+" ft";return a}}},fresnelNo:function(a){return(2/threedb.calc.wavelength(a))*threedb.barrier.pathLength.difference()},distanceAtten:{lw:{point:function(){var b=Math.sqrt(Math.pow(threedb.barrier.source.distance()+threedb.barrier.receiver.distance(),2)+Math.pow(threedb.barrier.source.elevation()-threedb.barrier.receiver.elevation(),2));var a=threedb.barrier.source.q();return(20*threedb.math.log10(b))+0.5-(10*threedb.math.log10(a))},line:function(){var b=Math.sqrt(Math.pow(threedb.barrier.source.distance()+threedb.barrier.receiver.distance(),2)+Math.pow(threedb.barrier.source.elevation()-threedb.barrier.receiver.elevation(),2));var a=threedb.barrier.source.q();return(10*threedb.math.log10(b))+2.8-(10*threedb.math.log10(a))}},lp:{point:function(){var c=$F("measDistance");var a=Math.sqrt(Math.pow(threedb.barrier.source.distance()+threedb.barrier.receiver.distance(),2)+Math.pow(threedb.barrier.source.elevation()-threedb.barrier.receiver.elevation(),2));var b=threedb.barrier.source.q();return(20*threedb.math.log10(a/c))+0.5-(10*threedb.math.log10(b))},line:function(){var c=$F("measDistance");var a=Math.sqrt(Math.pow(threedb.barrier.source.distance()+threedb.barrier.receiver.distance(),2)+Math.pow(threedb.barrier.source.elevation()-threedb.barrier.receiver.elevation(),2));var b=threedb.barrier.source.q();return(10*threedb.math.log10(a/c))+2.8-(10*threedb.math.log10(b))}},result:{lw:{point:[],line:[]},lp:{point:[],line:[]}}},simple:{point:function(a){return 10*threedb.math.log10(3+(20*threedb.barrier.fresnelNo(a)))},result:{point:[]}},beranek:{point:function(a){return 20*threedb.math.log10(Math.sqrt(2*Math.PI*threedb.barrier.fresnelNo(a))/threedb.math.tanh(Math.sqrt(2*Math.PI*threedb.barrier.fresnelNo(a))))+5
},line:function(a){return 20*threedb.math.log10(Math.sqrt(2*Math.PI*threedb.barrier.fresnelNo(a))/threedb.math.tanh(Math.sqrt(2*Math.PI*threedb.barrier.fresnelNo(a))))+5},result:{point:[],line:[]}},harris:{point:function(a){return 10*threedb.math.log10(3+(10*threedb.barrier.fresnelNo(a)))},pointThick:function(a){return 10*threedb.math.log10(3+(30*threedb.barrier.fresnelNo(a)))},result:{point:[],pointThick:[],line:[]}},calcBarrier:function(){for(var a=0;a<threedb.bands.f1.length;a++){threedb.barrier.simple.result.point[a]=accounting.formatNumber(threedb.barrier.simple.point(a));$("simplePoint"+threedb.bands.f1[a]).innerHTML=threedb.barrier.simple.result.point[a];threedb.barrier.beranek.result.point[a]=accounting.formatNumber(threedb.barrier.beranek.point(a));$("beranekPoint"+threedb.bands.f1[a]).innerHTML=threedb.barrier.beranek.result.point[a];threedb.barrier.beranek.result.line[a]=accounting.formatNumber(threedb.barrier.beranek.line(a));$("beranekLine"+threedb.bands.f1[a]).innerHTML=threedb.barrier.beranek.result.line[a];threedb.barrier.harris.result.point[a]=accounting.formatNumber(threedb.barrier.harris.point(a));$("harrisPoint"+threedb.bands.f1[a]).innerHTML=threedb.barrier.harris.result.point[a];threedb.barrier.harris.result.pointThick[a]=accounting.formatNumber(threedb.barrier.harris.pointThick(a));$("harrisPointThick"+threedb.bands.f1[a]).innerHTML=threedb.barrier.harris.result.pointThick[a];threedb.barrier.distanceAtten.result.lw.point[a]=accounting.formatNumber(threedb.barrier.distanceAtten.lw.point(a));$("distancePoint"+threedb.bands.f1[a]).innerHTML=threedb.barrier.distanceAtten.result.lw.point[a];threedb.barrier.distanceAtten.result.lw.line[a]=accounting.formatNumber(threedb.barrier.distanceAtten.lw.line(a));$("distanceLine"+threedb.bands.f1[a]).innerHTML=threedb.barrier.distanceAtten.result.lw.line[a]}},calcReceiver:function(){var b=[];for(var a=0;a<threedb.bands.f1.length;a++){b[a]=parseFloat($F("sourceLevel"+threedb.bands.f1[a]))}if(Form.getInputs("barrierCalc","radio","calcThis").find(function(c){return c.checked}).value=="simplePoint"){for(var a=0;a<threedb.bands.f1.length;a++){b[a]-=threedb.barrier.simple.point(a)}}if(Form.getInputs("barrierCalc","radio","calcThis").find(function(c){return c.checked}).value=="beranekPoint"){for(a=0;a<threedb.bands.f1.length;a++){b[a]-=threedb.barrier.beranek.point(a)}}if(Form.getInputs("barrierCalc","radio","calcThis").find(function(c){return c.checked}).value=="beranekLine"){for(a=0;a<threedb.bands.f1.length;a++){b[a]-=threedb.barrier.beranek.line(a)}}if(Form.getInputs("barrierCalc","radio","calcThis").find(function(c){return c.checked}).value=="harrisPoint"){for(a=0;a<threedb.bands.f1.length;a++){b[a]-=threedb.barrier.harris.point(a)}}if(Form.getInputs("barrierCalc","radio","calcThis").find(function(c){return c.checked}).value=="harrisPointThick"){for(a=0;a<threedb.bands.f1.length;a++){b[a]-=threedb.barrier.harris.pointThick(a)}}if(Form.getInputs("barrierCalc","radio","sourceRadiation").find(function(c){return c.checked}).value=="point"){if(Form.getInputs("barrierCalc","radio","sourceType").find(function(c){return c.checked}).value=="lp"){for(a=0;a<threedb.bands.f1.length;a++){b[a]-=threedb.barrier.distanceAtten.lp.point(a)}}if(Form.getInputs("barrierCalc","radio","sourceType").find(function(c){return c.checked}).value=="lw"){for(a=0;a<threedb.bands.f1.length;a++){b[a]-=threedb.barrier.distanceAtten.lw.point(a)}}}if(Form.getInputs("barrierCalc","radio","sourceRadiation").find(function(c){return c.checked}).value=="line"){if(Form.getInputs("barrierCalc","radio","sourceType").find(function(c){return c.checked}).value=="lp"){for(a=0;a<threedb.bands.f1.length;a++){b[a]-=threedb.barrier.distanceAtten.lp.line(a)}}if(Form.getInputs("barrierCalc","radio","sourceType").find(function(c){return c.checked}).value=="lw"){for(a=0;a<threedb.bands.f1.length;a++){b[a]-=threedb.barrier.distanceAtten.lw.line(a)}}}for(a=0;a<threedb.bands.f1.length;a++){$("receiverLevel"+threedb.bands.f1[a]).innerHTML=accounting.formatNumber(b[a])}},calcLevels:function(){threedb.barrier.calcReceiver();if($F("calcdBA")){$("sourceLevel_dBA").innerHTML=accounting.formatNumber(threedb.weighting.dBASum("sourceLevel"))+" dBA";$("receiverLevel_dBA").innerHTML=accounting.formatNumber(threedb.weighting.dBASum("receiverLevel"))+" dBA"}else{$("sourceLevel_dBA").innerHTML="";$("receiverLevel_dBA").innerHTML=""}if($F("calcdBZ")){$("sourceLevel_dBZ").innerHTML=accounting.formatNumber(threedb.weighting.dBZSum("sourceLevel"))+" dBZ";$("receiverLevel_dBZ").innerHTML=accounting.formatNumber(threedb.weighting.dBZSum("receiverLevel"))+" dBZ"}else{$("sourceLevel_dBZ").innerHTML="";$("receiverLevel_dBZ").innerHTML=""}},radiationCallback:function(a){if(Form.getInputs("barrierCalc","radio","sourceRadiation").find(function(b){return b.checked}).value=="point"){$("simplePoint").removeClassName("hide");$("beranekPoint").removeClassName("hide");$("beranekLine").addClassName("hide");$("harrisPoint").removeClassName("hide");
$("harrisPointThick").removeClassName("hide");$("distancePoint").removeClassName("hide");$("distanceLine").addClassName("hide")}if(Form.getInputs("barrierCalc","radio","sourceRadiation").find(function(b){return b.checked}).value=="line"){$("simplePoint").addClassName("hide");$("beranekPoint").addClassName("hide");$("beranekLine").removeClassName("hide");$("harrisPoint").addClassName("hide");$("harrisPointThick").addClassName("hide");$("distancePoint").addClassName("hide");$("distanceLine").removeClassName("hide")}},barrierCallback:function(a){threedb.barrier.calcBarrier();threedb.barrier.calcLevels();if($F("autoUpdateChart")){threedb.barrier.drawChart()}},levelsCallback:function(a){threedb.barrier.calcLevels()},namesCallback:function(a){threedb.barrier.title="Barrier Calculation: "+$F("sourceName");if($F("sourceName")&&$F("receiverName")){threedb.barrier.title+=" to "}if($F("receiverName")){threedb.barrier.title+=$F("receiverName")}document.title="threedB.com | "+threedb.barrier.title;if($F("autoUpdateChart")){threedb.barrier.drawChart()}},tip:function(b){var a=[];a[a.length]="Use <a href='http://www.google.com/chrome'>Google Chrome</a> for snappy calculating (available on the PC only for now)";a[a.length]="Turn off chart autoupdating to speed up your calculation";$("tip").innerhtml="Tip: "+a[accounting.formatNumber(Math.random()*(a.length-1))]},drawChart:function(){var e;var a=[];function c(){function f(h){return((threedb.barrier.barrier.elevation()-threedb.barrier.source.elevation())/(threedb.barrier.source.distance())*h)+threedb.barrier.barrier.elevation()}if(!(isNaN(threedb.barrier.pathLength.difference()))){for(var g=threedb.barrier.source.distance()*-1;g<threedb.barrier.receiver.distance()*2;g++){a.push([g,f(g)])}}}c();var d=[{label:"Source",data:[[(threedb.barrier.source.distance()*-1)||null,threedb.barrier.source.elevation()||null]],points:{show:true},xaxis:1,yaxis:1},{label:"Receiver",data:[[threedb.barrier.receiver.distance()||0,threedb.barrier.receiver.elevation()||null]],points:{show:true},xaxis:1,yaxis:1},{label:"Barrier",data:[[0,threedb.barrier.barrier.elevation()||null]]},{label:"Shadow Zone",color:"#00A8F0",data:a,lines:{show:true,lineWidth:1,fill:true,fillOpacity:0.1}}];var b={title:threedb.barrier.title,subtitle:"Section view",shadowSize:0,defaultType:"bars",HtmlText:false,legend:{show:true,position:"ne"},xaxis:{showLabels:true,title:"Distance from Barrier, ft",tickDecimals:0,min:((threedb.barrier.source.distance()*2)*-1)||null,max:(threedb.barrier.receiver.distance()*2)||null},yaxis:{showLabels:true,title:"Height, ft",tickDecimals:0,min:0,max:(Math.max(Math.max(threedb.barrier.barrier.elevation(),threedb.barrier.receiver.elevation()),threedb.barrier.source.elevation())*2)||null},mouse:{track:true}};Flotr.draw("barrierSection",d,b)}},reflector:{title:"Reflector Calculation",sectionViewChartSeries:[],levelChartSeries:[],delayChartSeries:[],reflectorCalc:function(){threedb.reflector.sectionViewChartSeries.clear();threedb.reflector.levelChartSeries.clear();threedb.reflector.directLevel=[];threedb.reflector.directLevel.clear();threedb.reflector.reflectedLevel=[];threedb.reflector.reflectedLevel.clear();threedb.reflector.totalLevel=[];threedb.reflector.totalLevel.clear();threedb.reflector.totalDelta=[];threedb.reflector.totalDelta.clear();threedb.reflector.delay=[];threedb.reflector.delay.clear();threedb.reflector.aud=[];threedb.reflector.aud.clear();threedb.reflector.data=[];threedb.reflector.data.clear();threedb.reflector.minX=0;threedb.reflector.maxX=0;threedb.reflector.minY=0;threedb.reflector.maxY=0;for(var I=0;I<sources.length;I++){var u=[];u.clear();u.x=sources[I].distance;u.y=sources[I].elevation;u.level=sources[I].level;threedb.reflector.sectionViewChartSeries[threedb.reflector.sectionViewChartSeries.length]={label:"Source",data:[[u.x||null,u.y||null]],points:{show:true,radius:3},xaxis:1,yaxis:1};for(var F=0;F<reflectors.length;F++){var E=reflectors[F].rotation;var B=[];B.clear();B.x=reflectors[F].distance-(reflectors[F].length/2)*Math.cos(threedb.math.toRadians(E));B.y=reflectors[F].elevation-(reflectors[F].length/2)*Math.sin(threedb.math.toRadians(E));var z=[];z.clear();z.x=reflectors[F].distance+(reflectors[F].length/2)*Math.cos(threedb.math.toRadians(E));z.y=reflectors[F].elevation+(reflectors[F].length/2)*Math.sin(threedb.math.toRadians(E));var G=[];G.clear();G.m=threedb.math.slope(B.x,B.y,z.x,z.y);var J=[];J.clear();J.m=threedb.math.slope(u.y,u.y,z.x,z.y);J.distance=Math.abs(threedb.math.distance(u.x,u.y,z.x,z.y));var N=[];N.clear();N.pqs=threedb.math.slopes2angle(G.m,J.m);N.qsr=threedb.math.toRadians(90)-N.pqs;N.qs0=threedb.math.slopes2angle(0,J.m);var H=[];H.clear();H.distance=Math.sin(N.pqs)*J.distance;var v=[];v.clear();v.x=sources[I].distance+Math.cos(N.qs0+N.qsr)*H.distance;v.y=sources[I].elevation+Math.sin(N.qs0+N.qsr)*H.distance;var K=[];K.clear();K.x=sources[I].distance+(Math.cos(N.qs0+N.qsr)*H.distance*2);K.y=sources[I].elevation+(Math.sin(N.qs0+N.qsr)*H.distance*2);threedb.reflector.rearline=[];
var g=[];g.clear();g.m=threedb.math.slope(K.x,K.y,z.x,z.y);g.b=K.y-(K.x*g.m);for(var n=z.y;n>0;--n){threedb.reflector.rearline.push([(n-g.b)/g.m||null,n||null])}threedb.reflector.frontline=[];var h=[];g.clear();h.m=threedb.math.slope(K.x,K.y,B.x,B.y);h.b=K.y-(K.x*h.m);for(n=B.y;n>0;--n){threedb.reflector.frontline.push([(n-h.b)/h.m||null,n||null])}var e=[];e.clear();e.m=h.m;e.b=K.y-(K.x*e.m);var t=[];t.clear();t.m=g.m;t.b=K.y-(K.x*t.m);threedb.reflector.sectionViewChartSeries[threedb.reflector.sectionViewChartSeries.length]={data:[[u.x,u.y||null],[z.x,z.y||null]],color:"#D3D3D3",lines:{show:true,lineWidth:1},xaxis:1,yaxis:1};threedb.reflector.sectionViewChartSeries[threedb.reflector.sectionViewChartSeries.length]={data:[[B.x||null,B.y||null],[z.x||null,z.y||null]],color:"#D22D2D",lines:{show:true,lineWidth:4},xaxis:1,yaxis:1};threedb.reflector.sectionViewChartSeries[threedb.reflector.sectionViewChartSeries.length]={data:[[u.x,u.y||null],[B.x,B.y||null]],color:"#D3D3D3",lines:{show:true,lineWidth:1},xaxis:1,yaxis:1};threedb.reflector.sectionViewChartSeries[threedb.reflector.sectionViewChartSeries.length]={label:"Virtual Source",data:[[K.x||null,K.y||null]],points:{show:true,radius:3},xaxis:1,yaxis:1};threedb.reflector.sectionViewChartSeries[threedb.reflector.sectionViewChartSeries.length]={data:threedb.reflector.frontline,color:"#808080",lines:{show:true,lineWidth:1},xaxis:1,yaxis:1};threedb.reflector.sectionViewChartSeries[threedb.reflector.sectionViewChartSeries.length]={data:threedb.reflector.rearline,color:"#808080",lines:{show:true,lineWidth:1},xaxis:1,yaxis:1};for(var D=0;D<audienceAreas.length;D++){var M=audienceAreas[D].startDistance;var d=audienceAreas[D].startElevation;var L=audienceAreas[D].endDistance;var c=audienceAreas[D].endElevation;var C=threedb.math.slope(M,d,L,c);var P=d-(M*C);for(var o=M;o<=L;o++){n=C*o+P;threedb.reflector.aud.push([o||null,n||null]);if(!(threedb.reflector.data[o])){threedb.reflector.data[o]=[]}if(!(threedb.reflector.data[o][I])){threedb.reflector.data[o][I]=[]}if(!(threedb.reflector.data[o][I][F])){threedb.reflector.data[o][I][F]=[]}if(!(threedb.reflector.data[o][I][F][D])){threedb.reflector.data[o][I][F][D]=[]}threedb.reflector.data[o][I][F][D].directDistance=threedb.math.distance(u.x,u.y,o,n);threedb.reflector.data[o][I][F][D].directLevel=u.level-threedb.calc.lp.loss(threedb.reflector.data[o][I][F][D].directDistance);if((n>=h.m*o+h.b)&&(n<=g.m*o+g.b)){threedb.reflector.data[o][I][F][D].reflectedDistance=threedb.math.distance(K.x,K.y,o,n);threedb.reflector.data[o][I][F][D].reflectedLevel=u.level-threedb.calc.lp.loss(threedb.reflector.data[o][I][F][D].reflectedDistance);if(threedb.reflector.data[o][I][F][D].delay>0){threedb.reflector.data[o][I][F][D].delay=(threedb.reflector.data[o][I][F][D].reflectedDistance-threedb.reflector.data[o][I][F][D].directDistance)/1130*1000}}}threedb.reflector.minX=Math.min(u.x,Math.min(K.x,Math.min(B.x,Math.min(z.x,Math.min(M,L)))));threedb.reflector.maxX=Math.max(u.x,Math.max(K.x,Math.max(B.x,Math.max(z.x,Math.max(M,L)))));threedb.reflector.minY=Math.min(u.y,Math.min(K.y,Math.min(B.y,Math.min(z.y,Math.min(d,c)))));threedb.reflector.maxY=Math.max(u.y,Math.max(K.y,Math.max(B.y,Math.max(z.y,Math.max(d,c)))))}}}for(o=0;o<threedb.reflector.data.length;o++){if(threedb.reflector.data[o]){var R=null;var O=null;var f=null;var a=null;var Q=null;for(I=0;I<threedb.reflector.data[o].length;I++){for(F=0;F<threedb.reflector.data[o][I].length;F++){for(D=0;D<threedb.reflector.data[o][I][F].length;D++){if(threedb.reflector.data[o][I][F][D].directLevel>0){R=threedb.calc.lp.sum(threedb.reflector.data[o][I][F][D].directLevel,R)}if(threedb.reflector.data[o][I][F][D].reflectedLevel>0){O=threedb.calc.lp.sum(threedb.reflector.data[o][I][F][D].reflectedLevel,O);f=threedb.calc.lp.sum(R,O);a=f-R;Q=threedb.reflector.data[o][I][F][D].delay;if(a===0){a=null}if(Q===0){Q=null}}}}}threedb.reflector.directLevel.push([o,R]);threedb.reflector.reflectedLevel.push([o,O]);threedb.reflector.totalLevel.push([o,f]);threedb.reflector.totalDelta.push([o,a]);threedb.reflector.delay.push([o,Q])}}threedb.reflector.sectionViewChartSeries[threedb.reflector.sectionViewChartSeries.length]={data:threedb.reflector.aud,color:"#00A8F0",lines:{show:true,lineWidth:2},xaxis:1,yaxis:1};threedb.reflector.levelChartSeries[threedb.reflector.levelChartSeries.length]={label:"Direct",data:threedb.reflector.directLevel,bars:{show:true,stacked:true,barWidth:0.5,fillOpacity:0.01},xaxis:1,yaxis:1};threedb.reflector.levelChartSeries[threedb.reflector.levelChartSeries.length]={label:"Total Delta",data:threedb.reflector.totalDelta,bars:{show:true,stacked:true,barWidth:0.5,lineWidth:1,fillOpacity:0.01},xaxis:1,yaxis:1};threedb.reflector.delayChartSeries[threedb.reflector.delayChartSeries.length]={data:threedb.reflector.delay,points:{show:true,radius:1},xaxis:1,yaxis:1};var A=threedb.reflector.maxX-threedb.reflector.minX;var w=threedb.reflector.maxY-threedb.reflector.minY;threedb.reflector.minX=threedb.reflector.minX-A*0.2;
threedb.reflector.maxX=threedb.reflector.maxX+A*0.2;threedb.reflector.minY=threedb.reflector.minY-w*0.2;threedb.reflector.maxY=threedb.reflector.maxY+w*0.2},getInputs:function(){for(var a=0;a<sources.length;a++){sources[a].name=$F("sourceName"+a);sources[a].distance=parseFloat($F("sourceDistance"+a));sources[a].elevation=parseFloat($F("sourceElevation"+a));sources[a].level=parseFloat($F("sourceLevel"+a))}for(var a=0;a<reflectors.length;a++){reflectors[a].distance=parseFloat($F("reflectorDistance"+a));reflectors[a].elevation=parseFloat($F("reflectorElevation"+a));reflectors[a].length=parseFloat($F("reflectorLength"+a));reflectors[a].rotation=parseFloat($F("reflectorRotation"+a))}for(var a=0;a<audienceAreas.length;a++){audienceAreas[a].startElevation=parseFloat($F("audienceStartElevation"+a));audienceAreas[a].startDistance=parseFloat($F("audienceStartDistance"+a));audienceAreas[a].endElevation=parseFloat($F("audienceEndElevation"+a));audienceAreas[a].endDistance=parseFloat($F("audienceEndDistance"+a))}},inputCallback:function(a){threedb.reflector.getInputs();threedb.reflector.reflectorCalc();threedb.reflector.drawCharts()},addSourceCallback:function(a){i=sources.length;sources[i]=new Source(i);sources[i].render(i)},addReflectorCallback:function(a){i=reflectors.length;reflectors[i]=new Reflector(i);reflectors[i].render(i)},addAudienceAreaCallback:function(a){i=audienceAreas.length;audienceAreas[i]=new threedb.AudienceArea(i);audienceAreas[i].render(i)},drawCharts:function(){var c={title:threedb.reflector.title,subtitle:"Section view",shadowSize:0,defaultType:"lines",HtmlText:false,legend:{show:true,position:"ne"},xaxis:{showLabels:true,title:"Distance from Origin, ft",tickDecimals:0,min:threedb.reflector.minX||0,max:threedb.reflector.maxX||100},yaxis:{showLabels:true,title:"Elevation, ft",tickDecimals:0,min:0,max:threedb.reflector.maxY||50,tickFormatter:function(d){if(d<0){return""}else{return d}}},mouse:{track:true,trackFormatter:function(d){return"("+d.x+" ft, "+d.y+" ft)"}}};var b={shadowSize:0,defaultType:"bars",HtmlText:false,legend:{show:true,position:"ne"},xaxis:{showLabels:true,title:"Distance from Origin, ft",tickDecimals:0,min:threedb.reflector.minX||0,max:threedb.reflector.maxX||100},yaxis:{showLabels:true,title:"Sound Level, dB",tickDecimals:0}};var a={shadowSize:0,defaultType:"bars",HtmlText:false,xaxis:{showLabels:true,title:"Distance from Origin, ft",tickDecimals:0,min:threedb.reflector.minX||0,max:threedb.reflector.maxX||100},yaxis:{showLabels:true,title:"Apparent Delay, ms",tickDecimals:0}};threedb.reflector.reflectorSection=Flotr.draw("reflectorSection",threedb.reflector.sectionViewChartSeries,c);threedb.reflector.levelSection=Flotr.draw("levelSection",threedb.reflector.levelChartSeries,b);threedb.reflector.delaySection=Flotr.draw("delaySection",threedb.reflector.delayChartSeries,a)}}};Source=function(a){this.index=a;this.name=null;this.distance=null;this.elevation=null;this.offset=null;this.q=null;this.level=null};Source.prototype.render=function(){sourceTabs.addTab(new YAHOO.widget.Tab({label:"Source "+(this.index+1),content:"<table><tr><td class='dim'>Hide  <input type='checkbox' id='sourceHide"+this.index+"'></td></tr><tr><td class='dim'>Name  <input type='text' id='sourceName"+this.index+"' class='shortinput' value=''></td></tr><tr><td class='dim'>Distance from Origin, ft  <input type='text' id='sourceDistance"+this.index+"' class='shortinput' value=''></td></tr><tr><td class='dim'>Elevation, ft  <input type='text' id='sourceElevation"+this.index+"' class='shortinput' value=''></td></tr><tr><td class='dim'>Sound Level, dB  <input type='text' id='sourceLevel"+this.index+"' class='shortinput' value=''></td></tr>",active:true}));sourceTabs.addListener("change",threedb.reflector.inputCallback);sourceTabs.appendTo("sources")};Source.prototype.hidden=function(){return $F("sourceHide"+this.index)};Source.prototype.drawSource=function(){threedb.reflector.sectionViewChartSeries[threedb.reflector.sectionViewChartSeries.length]={label:"Source",data:[[this.distance||null,this.elevation||null]],points:{show:true,radius:3},xaxis:1,yaxis:1}};var Reflector=function(a){this.index=a;this.distance=null;this.elevation=null;this.length=null;this.rotation=null;this.p=[];this.q=[];this.pq=[];this.sq=[];this.angle=[];this.sr=[];this.r=[];this.i=[];this.iq=[];this.ip=[];this.ipa=[];this.iqa=[]};Reflector.prototype.render=function(){reflectorTabs.addTab(new YAHOO.widget.Tab({label:"Reflector "+(this.index+1),content:"<table><tr><td class='dim'>Hide  <input type='checkbox' id='reflectorHide"+this.index+"'></td></tr><tr><td class='dim'>Distance from Origin, ft  <input type='text' id='reflectorDistance"+this.index+"' class='shortinput' value=''></td></tr><tr><td class='dim'>Elevation, ft  <input type='text' id='reflectorElevation"+this.index+"' class='shortinput' value=''></td></tr><tr><td class='dim'>Length, ft  <input type='text' id='reflectorLength"+this.index+"' class='shortinput' value=''></td></tr><tr><td class='dim'>Rotation, degrees  <input type='text' id='reflectorRotation"+this.index+"' class='shortinput' value=''></td></tr>",active:true}));
reflectorTabs.addListener("change",threedb.reflector.inputCallback);reflectorTabs.appendTo("reflectors")};Reflector.prototype.hidden=function(){return $F("reflectorHide"+this.index)};threedb.AudienceArea=function(a){this.index=a;this.expanded=false;this.active=true;this.startElevation=null;this.startDistance=null;this.endElevation=null;this.endDistance=null;this.areaLR=0;this.areaFR=0;this.areaFC=0;this.areaSum=0;this.pctOcc=0;this.alpha=[];this.alphaOcc=[];this.alphaUnocc=[];this.rtOcc=[];this.rtUnocc=[];this.rtInterp=[];this.graphData=[];this.graph=null;for(i=0;i<threedb.freq.length;i++){this.alpha[i]=0;this.alphaOcc[i]=0;this.alphaUnocc[i]=0}};threedb.AudienceArea.prototype.sabinsLR=function(a){return this.areaLR*this.alpha[a]};threedb.AudienceArea.prototype.sabinsFR=function(a){return this.areaFR*this.alpha[a]};threedb.AudienceArea.prototype.sabinsFC=function(a){return this.areaFC*this.alpha[a]};threedb.AudienceArea.prototype.sabinsSum=function(a){return this.areaSum*this.alpha[a]};threedb.AudienceArea.prototype.render=function(){audienceAreaTabs.addTab(new YAHOO.widget.Tab({label:"Audience Area "+(this.index+1),content:"<table><tr><td class='dim'>Hide  <input type='checkbox' id='audienceHide"+this.index+"'></td></tr><tr><td class='dim'>Starting Elevation, ft  <input type='text' id='audienceStartElevation"+this.index+"' class='shortinput' value=''></td></tr><tr><td class='dim'>Starting Distance from Origin, ft  <input type='text' id='audienceStartDistance"+this.index+"' class='shortinput' value=''></td></tr><tr><td class='dim'>Ending Elevation, ft  <input type='text' id='audienceEndElevation"+this.index+"' class='shortinput' value=''></td></tr><tr><td class='dim'>Ending Distance from Origin, ft  <input type='text' id='audienceEndDistance"+this.index+"' class='shortinput' value=''></td></tr>",active:true}));audienceAreaTabs.addListener("change",threedb.reflector.inputCallback);audienceAreaTabs.appendTo("audienceAreas")};threedb.AudienceArea.prototype.hidden=function(){return $F("audienceHide"+this.index)};threedb.Room=function(){this.length=0;this.width=0;this.height=0;this.capacity=0;this.rtGoal=0;this.surface=[];this.audience=[];this.sabine=[];this.sabine.calc=[];this.sabine.delta=[];this.sabine.rt=[];this.sabine.formula="\\[ RT_{60} = \\frac{c V}{S\\overline{\\alpha} } \\]";this.sabine.definitions=[["\\( RT_{60} \\)","Reverberation time, seconds (s)"],["\\( c \\)","Constant, 0.161 metric, 0.049 imperial"],["\\( V \\)","Room geometric volume, cubic meters (m<sup>3</sup>) or cubic feet (ft<sup>3</sup>)"],["\\( S \\)","Total surface area of room, square meters (m<sup>2</sup>) or square feet (ft<sup>2</sup>)"],["\\( \\overline{\\alpha} \\)","Average absorption coefficient of room surface areas"]];this.sabineRTSolution=function(e){var a=accounting.formatNumber(this.sabineRT(e),1);var h=threedb.rt.rtConstant();var b=this.volume();var d=accounting.formatNumber(this.areaSum());var g=accounting.formatNumber(this.avgAlpha(e),2);return"\\[ "+a+" = \\frac{"+h+" \\cdot "+b+"}{"+d+" \\cdot "+g+"} \\]"};this.eyring=[];this.eyring.calc=[];this.eyring.delta=[];this.eyring.rt=[];this.eyring.formula="\\[ RT_{60} = \\frac{c V}{ -S \\cdot ln(1 - \\overline{\\alpha}) } \\]";this.eyring.definitions=[["\\( RT_{60} \\)","Reverberation time, seconds (s)"],["\\( c \\)","Constant, 0.161 metric, 0.049 imperial"],["\\( V \\)","Room geometric volume, cubic meters (m<sup>3</sup>) or cubic feet (ft<sup>3</sup>)"],["\\( S \\)","Total surface area of room, square meters (m<sup>2</sup>) or square feet (ft<sup>2</sup>)"],["\\( \\overline{\\alpha} \\)","Average absorption coefficient of room surface areas"]];this.eyringRTSolution=function(e){var a=accounting.formatNumber(this.eyringRT(e),1);var h=threedb.rt.rtConstant();var b=this.volume();var d=accounting.formatNumber(this.areaSum());var g=accounting.formatNumber(this.avgAlpha(e),2);return"\\[ "+a+" = \\frac{"+h+" \\cdot "+b+"}{ -"+d+" \\cdot ln( 1 - "+g+")} \\]"};this.fitzroy=[];this.fitzroy.calc=[];this.fitzroy.calc.lr=[];this.fitzroy.calc.fr=[];this.fitzroy.calc.fc=[];this.fitzroy.calc.sum=[];this.fitzroy.rt=[];this.fitzroy.rt.lr=[];this.fitzroy.rt.fr=[];this.fitzroy.rt.fc=[];this.fitzroy.rt.sum=[];this.fitzroy.formula="\\[ RT_{60} = \\left( \\frac{S_x}{S}   \\cdot   \\frac{cV}{S\\overline{\\alpha}_x} \\right)     +     \\left( \\frac{S_y}{S}   \\cdot   \\frac{cV}{S\\overline{\\alpha}_y} \\right)    +    \\left( \\frac{S_z}{S}   \\cdot   \\frac{cV}{S\\overline{\\alpha}_z} \\right) \\]";this.fitzroy.definitions=[["\\( RT_{60} \\)","Reverberation time, seconds (s)"],["\\( c \\)","Constant, 0.161 metric, 0.049 imperial"],["\\( V \\)","Room geometric volume, cubic meters (m<sup>3</sup>) or cubic feet (ft<sup>3</sup>)"],["\\( S \\)","Total surface area of room, square meters (m<sup>2</sup>) or square feet (ft<sup>2</sup>)"],["\\( S_{x,y,z} \\)","Surface area of x, y, or z plane, square meters (m<sup>2</sup>) or square feet (ft<sup>2</sup>)"],["\\( \\overline{\\alpha}_{x,y,z} \\)","Average absorption coefficient of room surface x, y, or z plane"]];
this.fitzroyRTSolution=function(b){var a=accounting.formatNumber(this.fitzroyRT(b),1);var d=threedb.rt.rtConstant();var m=this.volume();var n=accounting.formatNumber(this.areaSum());var k=accounting.formatNumber(this.areaFR());var h=accounting.formatNumber(this.areaLR());var e=accounting.formatNumber(this.areaFC());var l=accounting.formatNumber(this.sabinsLR(b)/this.areaFR(),2);var j=accounting.formatNumber(this.sabinsFR(b)/this.areaLR(),2);var g=accounting.formatNumber(this.sabinsFC(b)/this.areaFC(),2);return"\\["+a+"= \\left( \\frac{"+k+"}{"+n+"}   \\cdot   \\frac{"+d+" \\cdot "+m+"}{"+n+"\\cdot"+l+"} \\right)     +     \\left( \\frac{"+h+"}{"+n+"}   \\cdot   \\frac{"+d+" \\cdot "+m+"}{"+n+"\\cdot"+j+"} \\right)    +    \\left( \\frac{"+e+"}{"+n+"}   \\cdot   \\frac{"+d+" \\cdot "+m+"}{"+n+"\\cdot"+g+"} \\right) \\]"};this.fitzroyE=[];this.fitzroyE.calc=[];this.fitzroyE.calc.lr=[];this.fitzroyE.calc.fr=[];this.fitzroyE.calc.fc=[];this.fitzroyE.calc.sum=[];this.fitzroyE.rt=[];this.fitzroyE.rt.lr=[];this.fitzroyE.rt.fr=[];this.fitzroyE.rt.fc=[];this.fitzroyE.rt.sum=[];this.fitzroyE.formula="\\[ RT_{60} = \\left( \\frac{S_x}{S}   \\cdot   \\frac{cV}{-S \\cdot ln(1-\\overline{\\alpha}_x)} \\right)     +     \\left( \\frac{S_y}{S}   \\cdot   \\frac{cV}{-S \\cdot ln(1-\\overline{\\alpha}_y)} \\right)    +    \\left( \\frac{S_z}{S}   \\cdot   \\frac{cV}{-S \\cdot ln(1-\\overline{\\alpha}_z)} \\right) \\]";this.fitzroyE.definitions=[["\\( RT_{60} \\)","Reverberation time, seconds (s)"],["\\( c \\)","Constant, 0.161 metric, 0.049 imperial"],["\\( V \\)","Room geometric volume, cubic meters (m<sup>3</sup>) or cubic feet (ft<sup>3</sup>)"],["\\( S \\)","Total surface area of room, square meters (m<sup>2</sup>) or square feet (ft<sup>2</sup>)"],["\\( S_{x,y,z} \\)","Surface area of x, y, or z plane, square meters (m<sup>2</sup>) or square feet (ft<sup>2</sup>)"],["\\( \\overline{\\alpha}_{x,y,z} \\)","Average absorption coefficient of room surface x, y, or z plane"]];this.fitzroyERTSolution=function(b){var a=accounting.formatNumber(this.fitzroyRT(b),1);var d=threedb.rt.rtConstant();var m=this.volume();var n=accounting.formatNumber(this.areaSum());var k=accounting.formatNumber(this.areaFR());var h=accounting.formatNumber(this.areaLR());var e=accounting.formatNumber(this.areaFC());var l=accounting.formatNumber(this.sabinsLR(b)/this.areaFR(),2);var j=accounting.formatNumber(this.sabinsFR(b)/this.areaLR(),2);var g=accounting.formatNumber(this.sabinsFC(b)/this.areaFC(),2);return"\\["+a+"= \\left( \\frac{"+k+"}{"+n+"}   \\cdot   \\frac{"+d+" \\cdot "+m+"}{-"+n+"\\cdot ln(1-"+l+")} \\right)     +     \\left( \\frac{"+h+"}{"+n+"}   \\cdot   \\frac{"+d+" \\cdot "+m+"}{-"+n+"\\cdot ln(1-"+j+")} \\right)    +    \\left( \\frac{"+e+"}{"+n+"}   \\cdot   \\frac{"+d+" \\cdot "+m+"}{-"+n+"\\cdot ln(1-"+g+")} \\right) \\]"};this.arau=[];this.arau.rt=[];this.arau.rt.lr=[];this.arau.rt.fr=[];this.arau.rt.fc=[];this.arau.rt.sum=[];this.arau.formula="\\[ RT_{60} = \\left( \\frac{cV}{-S \\cdot ln(1-\\overline{\\alpha}_x)} \\right)^{\\frac{S_x}{S}}  +  \\left( \\frac{cV}{-S \\cdot ln(1-\\overline{\\alpha}_y)} \\right)^{\\frac{S_y}{S}}  +  \\left( \\frac{cV}{-S \\cdot ln(1-\\overline{\\alpha}_z)} \\right)^{\\frac{S_z}{S}}  \\]";this.arau.definitions=[["\\( RT_{60} \\)","Reverberation time, seconds (s)"],["\\( c \\)","Constant, 0.161 metric, 0.049 imperial"],["\\( V \\)","Room geometric volume, cubic meters (m<sup>3</sup>) or cubic feet (ft<sup>3</sup>)"],["\\( S \\)","Total surface area of room, square meters (m<sup>2</sup>) or square feet (ft<sup>2</sup>)"],["\\( S_{x,y,z} \\)","Surface area of x, y, or z plane, square meters (m<sup>2</sup>) or square feet (ft<sup>2</sup>)"],["\\( \\overline{\\alpha}_{x,y,z} \\)","Average absorption coefficient of room surface x, y, or z plane"]];this.arauRTSolution=function(b){var a=accounting.formatNumber(this.fitzroyRT(b),1);var d=threedb.rt.rtConstant();var m=this.volume();var n=accounting.formatNumber(this.areaSum());var k=accounting.formatNumber(this.areaFR());var h=accounting.formatNumber(this.areaLR());var e=accounting.formatNumber(this.areaFC());var l=accounting.formatNumber(this.sabinsLR(b)/this.areaFR(),2);var j=accounting.formatNumber(this.sabinsFR(b)/this.areaLR(),2);var g=accounting.formatNumber(this.sabinsFC(b)/this.areaFC(),2);return"\\["+a+"= \\left( \\frac{"+d+"\\cdot"+m+"}{-"+n+"\\cdot ln(1-"+l+")} \\right)^{\\frac{"+k+"}{"+n+"}}  +  \\left( \\frac{"+d+"\\cdot"+m+"}{-"+n+"\\cdot ln(1-"+j+")} \\right)^{\\frac{"+h+"}{"+n+"}}  +  \\left( \\frac{"+d+"\\cdot"+m+"}{-"+n+"\\cdot ln(1-"+g+")} \\right)^{\\frac{"+e+"}{"+n+"}} \\]"}};threedb.Room.prototype.lr=function(){return 2*this.length*this.height};threedb.Room.prototype.fr=function(){return 2*this.width*this.height};threedb.Room.prototype.fc=function(){return 2*this.length*this.width};threedb.Room.prototype.totalsa=function(){return this.lr()+this.fr()+this.fc()};threedb.Room.prototype.volume=function(){return this.length*this.width*this.height
};threedb.Room.prototype.mfp=function(){return 4*this.volume()/this.totalsa()};threedb.Room.prototype.vpp=function(){return this.volume()/this.capacity};threedb.Room.prototype.rtGoalSpectrum=function(c){var b=[];b[0]=this.rtGoal*1.2;b[1]=this.rtGoal*1.05;b[2]=this.rtGoal*1.01;b[3]=this.rtGoal*1;b[4]=this.rtGoal*1;b[5]=this.rtGoal*1;return b[c]};threedb.Room.prototype.rtBySabins=function(a){return threedb.rt.rtConstant()*this.volume()/(this.totalsa()*a)};threedb.Room.prototype.sabinGoal=function(a){return threedb.rt.rtConstant()*this.volume()/$F("rtGoal"+threedb.freq[a])};threedb.Room.prototype.areaLR=function(){var a=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){a+=this.surface[i].areaLR}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){a+=this.audience[i].areaLR}}return a};threedb.Room.prototype.areaFR=function(){var a=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){a+=this.surface[i].areaFR}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){a+=this.audience[i].areaFR}}return a};threedb.Room.prototype.areaFC=function(){var a=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){a+=this.surface[i].areaFC}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){a+=this.audience[i].areaFC}}return a};threedb.Room.prototype.areaSum=function(){var a=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){a+=this.surface[i].areaSum}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){a+=this.audience[i].areaSum}}return a};threedb.Room.prototype.sabinsLR=function(a){var b=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){b+=this.surface[i].sabinsLR(a)}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){b+=this.audience[i].sabinsLR(a)}}return b};threedb.Room.prototype.sabinsFR=function(a){var b=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){b+=this.surface[i].sabinsFR(a)}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){b+=this.audience[i].sabinsFR(a)}}return b};threedb.Room.prototype.sabinsFC=function(a){var b=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){b+=this.surface[i].sabinsFC(a)}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){b+=this.audience[i].sabinsFC(a)}}return b};threedb.Room.prototype.sabinsSum=function(a){var b=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){b+=this.surface[i].sabinsSum(a)}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){b+=this.audience[i].sabinsSum(a)}}return b+this.airAbsorption(a)};threedb.Room.prototype.sabinsELR=function(a){var b=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){b+=this.surface[i].areaLR*(-1*Math.log(1-(this.surface[i].alpha[a])))}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){b+=this.audience[i].areaLR*(-1*Math.log(1-(this.audience[i].alpha[a])))}}return b};threedb.Room.prototype.sabinsEFR=function(a){var b=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){b+=this.surface[i].areaFR*(-1*Math.log(1-(this.surface[i].alpha[a])))}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){b+=this.audience[i].areaFR*(-1*Math.log(1-(this.audience[i].alpha[a])))}}return b};threedb.Room.prototype.sabinsEFC=function(a){var b=0;for(i=0;i<this.surface.length;i++){if(this.surface[i].active){b+=this.surface[i].areaFC*(-1*Math.log(1-(this.surface[i].alpha[a])))}}for(i=0;i<this.audience.length;i++){if(this.audience[i].active){b+=this.audience[i].areaFC*(-1*Math.log(1-(this.audience[i].alpha[a])))}}return b};threedb.Room.prototype.sabinsESum=function(a){return this.sabinsELR(a)+this.sabinsEFR(a)+this.sabinsEFC(a)+this.airAbsorption(a)};threedb.Room.prototype.airAbsorption=function(c){var b=[];b[0]=this.volume()*0;b[1]=this.volume()*0;b[2]=this.volume()*0;b[3]=this.volume()*0;b[4]=this.volume()*0.003;b[5]=this.volume()*0.008;return b[c]};threedb.Room.prototype.avgAlpha=function(a){return this.sabinsSum(a)/this.areaSum()};threedb.Room.prototype.sabineRT=function(b,a){if(a){return threedb.rt.rtConstant()*this.volume()/(this.sabinsSum(b)+a)}else{return threedb.rt.rtConstant()*this.volume()/this.sabinsSum(b)}};threedb.Room.prototype.eyringSabins=function(a){return(this.airAbsorption(a)-(this.areaSum()*Math.log(1-this.avgAlpha(a))))};threedb.Room.prototype.eyringRT=function(a){return threedb.rt.rtConstant()*this.volume()/(this.airAbsorption(a)-(this.areaSum()*Math.log(1-this.avgAlpha(a))))};threedb.Room.prototype.fitzroyRTLR=function(a){return(threedb.rt.rtConstant()*this.volume()/Math.pow(this.totalsa(),2))*(Math.pow(this.lr(),2)/this.sabinsLR(a))};threedb.Room.prototype.fitzroyRTFR=function(a){return(threedb.rt.rtConstant()*this.volume()/Math.pow(this.totalsa(),2))*(Math.pow(this.fr(),2)/this.sabinsFR(a))};threedb.Room.prototype.fitzroyRTFC=function(a){return(threedb.rt.rtConstant()*this.volume()/Math.pow(this.totalsa(),2))*(Math.pow(this.fc(),2)/this.sabinsFC(a))};threedb.Room.prototype.fitzroyRT=function(a){return this.fitzroyRTLR(a)+this.fitzroyRTFR(a)+this.fitzroyRTFC(a)
};threedb.Room.prototype.fitzroyERTLR=function(a){return(threedb.rt.rtConstant()*this.volume()/(this.areaSum()*(-1*Math.log(1-(this.sabinsLR(a)/this.areaLR())))))*(this.areaLR()/this.areaSum())};threedb.Room.prototype.fitzroyERTFR=function(a){return(threedb.rt.rtConstant()*this.volume()/(this.areaSum()*(-1*Math.log(1-(this.sabinsFR(a)/this.areaFR())))))*(this.areaFR()/this.areaSum())};threedb.Room.prototype.fitzroyERTFC=function(a){return(threedb.rt.rtConstant()*this.volume()/(this.areaSum()*(-1*Math.log(1-(this.sabinsFC(a)/this.areaFC())))))*(this.areaFC()/this.areaSum())};threedb.Room.prototype.fitzroyERT=function(a){return this.fitzroyERTLR(a)+this.fitzroyERTFR(a)+this.fitzroyERTFC(a)};threedb.Room.prototype.kuttruffSabins=function(a){return this.areaSum()*(-1*Math.log(1-this.avgAlpha(a)))*(1+(Math.pow(this.mfp(),2)/2)*Math.log(1-this.avgAlpha(a)))};threedb.Room.prototype.kuttruffRT=function(a){return threedb.rt.rtConstant()*this.volume()/this.kuttruffSabins(a)};threedb.Room.prototype.arauRTLR=function(a){return Math.pow(threedb.rt.rtConstant()*this.volume()/(this.areaSum()*(-1*Math.log(1-(this.sabinsLR(a)/this.areaLR())))),(this.areaLR()/this.areaSum()))};threedb.Room.prototype.arauRTFR=function(a){return Math.pow(threedb.rt.rtConstant()*this.volume()/(this.areaSum()*(-1*Math.log(1-(this.sabinsFR(a)/this.areaFR())))),(this.areaFR()/this.areaSum()))};threedb.Room.prototype.arauRTFC=function(a){return Math.pow(threedb.rt.rtConstant()*this.volume()/(this.areaSum()*(-1*Math.log(1-(this.sabinsFC(a)/this.areaFC())))),(this.areaFC()/this.areaSum()))};threedb.Room.prototype.arauRT=function(a){return this.arauRTLR(a)*this.arauRTFR(a)*this.arauRTFC(a)};threedb.Surface=function(){this.index=null;this.id=null;this.name=null;this.active=true;this.areaLR=0;this.areaFR=0;this.areaFC=0;this.areaSum=0;this.alpha=[];for(i=0;i<threedb.rt.freq.length;i++){this.alpha[i]=0}};threedb.Surface.prototype.sabinsLR=function(a){return this.areaLR*this.alpha[a]};threedb.Surface.prototype.sabinsFR=function(a){return this.areaFR*this.alpha[a]};threedb.Surface.prototype.sabinsFC=function(a){return this.areaFC*this.alpha[a]};threedb.Surface.prototype.sabinsSum=function(a){return this.areaSum*this.alpha[a]};threedb.Finish=function(){this.name=null;this.matid=null;this.desc=null;this.source=null;this.a63=null;this.a125=null;this.a250=null;this.a500=null;this.a1000=null;this.a2000=null;this.a4000=null;this.a8000=null;this.sourceurl=null;this.standard=null;this.standardurl=null};
