if(!Array.indexOf){Array.prototype.indexOf=function(obj){for(var i=0;i<this.length;i++){if(this[i]===obj){return i;}}return-1;}}
Persist=(function(){var VERSION='0.1.0',P,B,esc,init,empty,ec;ec=(function(){var EPOCH='Thu, 01-Jan-1970 00:00:01 GMT',RATIO=1000*60*60*24,KEYS=['expires','path','domain'],esc=escape,un=unescape,doc=document,me;var get_now=function(){var r=new Date();r.setTime(r.getTime());return r;}
var cookify=function(c_key,c_val){var i,key,val,r=[],opt=(arguments.length>2)?arguments[2]:{};r.push(esc(c_key)+'='+esc(c_val));for(i=0;i<KEYS.length;i++){key=KEYS[i];if(val==opt[key])
r.push(key+'='+val);}
if(opt.secure)
r.push('secure');return r.join('; ');}
var alive=function(){var k='__EC_TEST__',v=new Date();v=v.toGMTString();this.set(k,v);this.enabled=(this.remove(k)==v);return this.enabled;}
me={set:function(key,val){var opt=(arguments.length>2)?arguments[2]:{},now=get_now(),expire_at,cfg={};if(opt.expires){opt.expires*=RATIO;cfg.expires=new Date(now.getTime()+opt.expires);cfg.expires=cfg.expires.toGMTString();}
var keys=['path','domain','secure'];for(i=0;i<keys.length;i++)
if(opt[keys[i]])
cfg[keys[i]]=opt[keys[i]];var r=cookify(key,val,cfg);doc.cookie=r;return val;},has:function(key){key=esc(key);var c=doc.cookie,ofs=c.indexOf(key+'='),len=ofs+key.length+1,sub=c.substring(0,key.length);return((!ofs&&key!=sub)||ofs<0)?false:true;},get:function(key){key=esc(key);var c=doc.cookie,ofs=c.indexOf(key+'='),len=ofs+key.length+1,sub=c.substring(0,key.length),end;if((!ofs&&key!=sub)||ofs<0)
return null;end=c.indexOf(';',len);if(end<0)
end=c.length;return un(c.substring(len,end));},remove:function(k){var r=me.get(k),opt={expires:EPOCH};doc.cookie=cookify(k,'',opt);return r;},keys:function(){var c=doc.cookie,ps=c.split('; '),i,p,r=[];for(i=0;i<ps.length;i++){p=ps[i].split('=');r.push(un(p[0]));}
return r;},all:function(){var c=doc.cookie,ps=c.split('; '),i,p,r=[];for(i=0;i<ps.length;i++){p=ps[i].split('=');r.push([un(p[0]),un(p[1])]);}
return r;},version:'0.2.1',enabled:false};me.enabled=alive.call(me);return me;}());empty=function(){};esc=function(str){return'PS'+str.replace(/_/g,'__').replace(/ /g,'_s');};C={search_order:['gears','localstorage','whatwg_db','globalstorage','flash','ie','cookie'],name_re:/^[a-z][a-z0-9_ -]+$/i,methods:['init','get','set','remove','load','save'],sql:{version:'1',create:"CREATE TABLE IF NOT EXISTS persist_data (k TEXT UNIQUE NOT NULL PRIMARY KEY, v TEXT NOT NULL)",get:"SELECT v FROM persist_data WHERE k = ?",set:"INSERT INTO persist_data(k, v) VALUES (?, ?)",remove:"DELETE FROM persist_data WHERE k = ?"},flash:{div_id:'_persist_flash_wrap',id:'_persist_flash',path:'persist.swf',size:{w:1,h:1},args:{autostart:true}}};B={gears:{size:-1,test:function(){return(window.google&&window.google.gears)?true:false;},methods:{transaction:function(fn){var db=this.db;db.execute('BEGIN').close();fn.call(this,db);db.execute('COMMIT').close();},init:function(){var db;db=this.db=google.gears.factory.create('beta.database');db.open(esc(this.name));db.execute(C.sql.create).close();},get:function(key,fn,scope){var r,sql=C.sql.get;if(!fn)
return;this.transaction(function(t){r=t.execute(sql,[key]);if(r.isValidRow())
fn.call(scope||this,true,r.field(0));else
fn.call(scope||this,false,null);r.close();});},set:function(key,val,fn,scope){var rm_sql=C.sql.remove,sql=C.sql.set,r;this.transaction(function(t){t.execute(rm_sql,[key]).close();t.execute(sql,[key,val]).close();if(fn)
fn.call(scope||this,true,val);});},remove:function(key,fn,scope){var get_sql=C.sql.get;sql=C.sql.remove,r,val;this.transaction(function(t){if(fn){r=t.execute(get_sql,[key]);if(r.isValidRow()){val=r.field(0);t.execute(sql,[key]).close();fn.call(scope||this,true,val);}else{fn.call(scope||this,false,null);}
r.close();}else{t.execute(sql,[key]).close();}});}}},whatwg_db:{size:200*1024,test:function(){var name='PersistJS Test',desc='Persistent database test.';if(!window.openDatabase)
return false;if(!window.openDatabase(name,C.sql.version,desc,B.whatwg_db.size))
return false;return true;},methods:{transaction:function(fn){if(!this.db_created){var sql=C.sql.create;this.db.transaction(function(t){t.executeSql(sql,[],function(){this.db_created=true;});},empty);}
this.db.transaction(fn);},init:function(){var desc,size;desc=this.o.about||"Persistent storage for "+this.name;size=this.o.size||B.whatwg_db.size;this.db=openDatabase(this.name,C.sql.version,desc,size);},get:function(key,fn,scope){var sql=C.sql.get;if(!fn)
return;scope=scope||this;this.transaction(function(t){t.executeSql(sql,[key],function(t,r){if(r.rows.length>0)
fn.call(scope,true,r.rows.item(0)['v']);else
fn.call(scope,false,null);});});},set:function(key,val,fn,scope){var rm_sql=C.sql.remove,sql=C.sql.set;this.transaction(function(t){t.executeSql(rm_sql,[key],function(){t.executeSql(sql,[key,val],function(t,r){if(fn)
fn.call(scope||this,true,val);});});});return val;},remove:function(key,fn,scope){var get_sql=C.sql.get;sql=C.sql.remove;this.transaction(function(t){if(fn){t.executeSql(get_sql,[key],function(t,r){if(r.rows.length>0){var val=r.rows.item(0)['v'];t.executeSql(sql,[key],function(t,r){fn.call(scope||this,true,val);});}else{fn.call(scope||this,false,null);}});}else{t.executeSql(sql,[key]);}});}}},globalstorage:{size:5*1024*1024,test:function(){return window.globalStorage?true:false;},methods:{key:function(key){return esc(this.name)+esc(key);},init:function(){this.store=globalStorage[this.o.domain];},get:function(key,fn,scope){key=this.key(key);if(fn)
fn.call(scope||this,true,this.store.getItem(key));},set:function(key,val,fn,scope){key=this.key(key);this.store.setItem(key,val);if(fn)
fn.call(scope||this,true,val);},remove:function(key,fn,scope){var val;key=this.key(key);val=this.store[key];this.store.removeItem(key);if(fn)
fn.call(scope||this,(val!==null),val);}}},localstorage:{size:-1,test:function(){return window.localStorage?true:false;},methods:{key:function(key){return esc(this.name)+esc(key);},init:function(){this.store=localStorage;},get:function(key,fn,scope){key=this.key(key);if(fn)
fn.call(scope||this,true,this.store.getItem(key));},set:function(key,val,fn,scope){key=this.key(key);this.store.setItem(key,val);if(fn)
fn.call(scope||this,true,val);},remove:function(key,fn,scope){var val;key=this.key(key);val=this.getItem(key);this.store.removeItem(key);if(fn)
fn.call(scope||this,(val!==null),val);}}},ie:{prefix:'_persist_data-',size:64*1024,test:function(){return window.ActiveXObject?true:false;},make_userdata:function(id){var el=document.createElement('div');el.id=id;el.style.display='none';el.addBehavior('#default#userData');document.body.appendChild(el);return el;},methods:{init:function(){var id=B.ie.prefix+esc(this.name);this.el=B.ie.make_userdata(id);if(this.o.defer)
this.load();},get:function(key,fn,scope){var val;key=esc(key);if(!this.o.defer)
this.load();val=this.el.getAttribute(key);if(fn)
fn.call(scope||this,val?true:false,val);},set:function(key,val,fn,scope){key=esc(key);this.el.setAttribute(key,val);if(!this.o.defer)
this.save();if(fn)
fn.call(scope||this,true,val);},load:function(){this.el.load(esc(this.name));},save:function(){this.el.save(esc(this.name));}}},cookie:{delim:':',size:4000,test:function(){return P.Cookie.enabled?true:false;},methods:{key:function(key){return this.name+B.cookie.delim+key;},get:function(key,val,fn,scope){key=this.key(key);val=ec.get(key);if(fn)
fn.call(scope||this,val!=null,val);},set:function(key,val,fn,scope){key=this.key(key);ec.set(key,val,this.o);if(fn)
fn.call(scope||this,true,val);},remove:function(key,val,fn,scope){var val;key=this.key(key);val=ec.remove(key)
if(fn)
fn.call(scope||this,val!=null,val);}}},flash:{test:function(){if(!window.SWFObject||!deconcept||!deconcept.SWFObjectUtil)
return false;var major=deconcept.SWFObjectUtil.getPlayerVersion().major;return(major>=8)?true:false;},methods:{init:function(){if(!B.flash.el){var o,key,el,cfg=C.flash;el=document.createElement('div');el.id=cfg.div_id;document.body.appendChild(el);o=new SWFObject(this.o.swf_path||cfg.path,cfg.id,cfg.size.w,cfg.size.h,'8');for(key in cfg.args)
o.addVariable(key,cfg.args[key]);o.write(el);B.flash.el=document.getElementById(cfg.id);}
this.el=B.flash.el;},get:function(key,fn,scope){var val;key=esc(key);val=this.el.get(this.name,key);if(fn)
fn.call(scope||this,val!==null,val);},set:function(key,val,fn,scope){var old_val;key=esc(key);old_val=this.el.set(this.name,key,val);if(fn)
fn.call(scope||this,true,val);},remove:function(key,fn,scope){var val;key=esc(key);val=this.el.remove(this.name,key);if(fn)
fn.call(scope||this,true,val);}}}};var init=function(){var i,l,b,key,fns=C.methods,keys=C.search_order;for(i=0,l=fns.length;i<l;i++)
P.Store.prototype[fns[i]]=empty;P.type=null;P.size=-1;for(i=0,l=keys.length;!P.type&&i<l;i++){b=B[keys[i]];if(b.test()){P.type=keys[i];P.size=b.size;for(key in b.methods)
P.Store.prototype[key]=b.methods[key];}}
P._init=true;};P={VERSION:VERSION,type:null,size:0,add:function(o){B[o.id]=o;C.search_order=[o.id].concat(C.search_order);init();},remove:function(id){var ofs=C.search_order.indexOf(id);if(ofs<0)
return;C.search_order.splice(ofs,1);delete B[id];init();},Cookie:ec,Store:function(name,o){if(!C.name_re.exec(name))
throw new Error("Invalid name");if(!P.type)
throw new Error("No suitable storage found");o=o||{};this.name=name;o.domain=o.domain||location.hostname||'localhost.localdomain';this.o=o;o.expires=o.expires||365*2;o.path=o.path||'/';this.init();}};init();return P;})();;function confirmSubmit(){var agree=confirm("Are you sure you want to delete this item?");if(agree){return true;}else{return false;}}
function urlencode(str){return escape(str).replace(/\+/g,'%2B').replace(/_/g,'+').replace(/\*/g,'%2A').replace(/\//g,'%2F').replace(/@/g,'%40');}
function popErrorMessage(errorMessage){$("<div class='ui-loader ui-overlay-shadow ui-body-e ui-corner-all'><h1>"+errorMessage+"</h1></div>").css({"display":"block","opacity":0.96,"top":$(window).scrollTop()+100}).appendTo("body").delay(800).fadeOut(400,function(){$(this).remove();});}
Persist.remove('gears');store=new Persist.Store('AV Tools');if(getPersist('distance')==null){store.set('distance','metre');}
if(getPersist('temp')==null){store.set('temp','celcius');}
if(getPersist('cablesize')==null){store.set('cablesize','mm2');}
function getPersist(name){var result;store.get(name,function(ok,val){if(ok){result=val;}else{result=null;}});return result;}
function setUnits(check_page,mobile){dist=getPersist('distance');$('#dist option[value='+dist+']').attr('selected','selected');temp=getPersist('temp');$('#temp option[value='+temp+']').attr('selected','selected');cablesize=getPersist('cablesize');$('#cablesize option[value='+cablesize+']').attr('selected','selected');$('#delayDistanceUnit').html(dist);$('#delayTempUnit').html(temp);if(temp=="celcius"){$('#delayTemp').val("20");}else{$('#delayTemp').val("68");}
$('#waveTempUnit').html(temp);$('#waveDistanceUnit').html(dist);if(temp=="celcius"){$('#waveTemp').val("20");}else{$('#waveTemp').val("68");}
$('#splDistanceUnit').html(dist);$('span.beamDistanceUnit').html(dist);$('#voltageDistanceUnit').html(dist);if(cablesize=="AWG"){$("#vd_cablesize").html('<option value="39.4">17 AWG</option><option value="27">16 AWG</option><option value="16.2">14 AWG</option><option value="10.1">12 AWG</option><option value="6.7">10 AWG</option><option value="3.94">8 AWG</option><option value="2.5">6 AWG</option><option value="1.68">4 AWG</option><option value="1.21">2 AWG</option><option value="0.87">1 AWG</option><option value="0.64">2/0 AWG</option><option value="0.5">3/0 AWG</option><option value="0.4">4/0 AWG</option><option value="0.35">300MCM AWG</option><option value="0.32">350MCM AWG</option><option value="0.26">500MCM AWG</option><option value="0.23">600MCM AWG</option><option value="0.21">750MCM AWG</option><option value="0.18">1000MCM AWG</option>');}else{$("#vd_cablesize").html('<option value="39.4">1 mm2</option><option value="27">1.5 mm2</option><option value="16.2">2.5mm2</option><option value="10.1">4 mm2</option><option value="6.7">6 mm2</option><option value="3.94">10 mm2</option><option value="2.5">16 mm2</option><option value="1.68">25 mm2</option><option value="1.21">35 mm2</option><option value="0.87">50 mm2</option><option value="0.64">70 mm2</option><option value="0.5">95 mm2</option><option value="0.4">120 mm2</option><option value="0.35">150 mm2</option><option value="0.32">185 mm2</option><option value="0.26">240 mm2</option><option value="0.23">300 mm2</option><option value="0.21">400 mm2</option><option value="0.18">500 mm2</option>');}
$("select#vd_cablesize").selectmenu('refresh',true);}
$(document).ready(function(){var ua=navigator.userAgent.toLowerCase();var isAndroid=ua.indexOf("android")>-1;var isIphone=ua.indexOf("iphone")>-1;if(getPersist('avtools_hide_popup')==null){store.set('avtools_hide_popup','true');userInput=null;if(isAndroid){userInput=confirm('AV Tools is available as an app for Android. Click OK to learn more');}else if(isIphone){userInput=confirm('AV Tools is available as an app for iPhone. Click OK to learn more');}
if(userInput){location.href='http://www.embu.co.uk/av-tools/';}}
$.mobile.defaultPageTransition="none";var dist,temp,cablesize,pinout,isPhp;offline=$("#offline").val();if(offline==null){var offline=false;}
if(!offline){if(document.location.hostname!="localhost"){var _gaq=_gaq||[];(function(){var ga=document.createElement('script');ga.type='text/javascript';ga.async=true;ga.src=('https:'==document.location.protocol?'https://ssl':'http://www')+'.google-analytics.com/ga.js';var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ga,s);})();}
window.___gcfg={lang:'en-GB'};$.getScript("https://apis.google.com/js/plusone.js");$("div.ui-page-active div[data-role=footer].footer-docs").show();if(screen.width>728){var ad=$("#adsense").html();}else{var ad='<iframe id="googlead" name="googlead" href="" src="/ad_mobile.html" width="100%" height="90" scrolling="no" frameborder="0" marginwidth="0" marginheight="0"/>';}}
$("[data-role=page]").live("pageshow",function(event,ui){if(!offline){$("div.ui-page-active div[data-role=footer].footer-docs").show();}
var loc=$.mobile.path.parseUrl(location.href);if(loc.hostname!="localhost"){try{_gaq.push(['_setAccount','UA-2373552-19']);_gaq.push(['_trackPageview']);}catch(err){}
if(!offline){window.___gcfg={lang:'en-GB'};$.getScript("https://apis.google.com/js/plusone.js");$('div.ad').html(ad);}}
setUnits(loc.filename,true);});$("img.dip_off").live('click',function(){var state=$(this).attr("src");if(state==="../images/dip_off.png"){$(this).attr("src","../images/dip_on.png");}else{$(this).attr("src","../images/dip_off.png");}});$("a[data-embu-sex=f]").live('click',function(){var name,img;name=$(this).attr("data-embu-image");img="../images/"+name+"_f.png";$(this).addClass("ui-btn-active");$("a[data-embu-sex=m]").removeClass("ui-btn-active");$("img."+name).attr("src",img);return false;});$("a[data-embu-sex=m]").live('click',function(){var name,img;name=$(this).attr("data-embu-image");img="../images/"+name+"_m.png";$(this).addClass("ui-btn-active");$("a[data-embu-sex=f]").removeClass("ui-btn-active");$("img."+name).attr("src",img);return false;});function round(n){return Math.round(n*100+((n*1000)%10>4?1:0))/100;}
function roundPlaces(num,dec){var result=Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);return result;}
$("#settings").live('click',function(){var dist=$("#dist").val();var temp=$("#temp").val();var cablesize=$("#cablesize").val();var pinout=$("#pinout").val();store.set('distance',dist);store.set('temp',temp);store.set('cablesize',cablesize);store.set('pinout',pinout);popErrorMessage('Settings saved');return false;});$('input').live('focus',function(e){$(this).select();e.stopPropagation();});function padDigits(n,totalDigits){n=n.toString();var pd='',i;if(totalDigits>n.length){for(i=0;i<(totalDigits-n.length);i=i+1){pd+='0';}}
return pd+n.toString();}
function strrev(str){if(!str)return'';var revstr='';for(i=str.length-1;i>=0;i--)
revstr+=str.charAt(i)
return revstr;}
function setDips(dividend){count=0;bits=[];remainder=0;while(dividend>=2){remainder=dividend%2;bits.push(remainder);dividend=(dividend-remainder)/2;}
bits.push(dividend);bits.reverse();dmxAddOut=bits.join("");dmxAddOut=padDigits(dmxAddOut,9);dmxAddOut2=strrev(dmxAddOut);$('img.dip_off').each(function(){if(dmxAddOut2.charAt(count)==1){$(this).attr("src","../images/dip_on.png");}else{$(this).attr("src","../images/dip_off.png");}
count++;});return dmxAddOut2;}
$("#dmx_add").live('change',function(){var dmx=parseInt($("#dmx_add").val());var offset=parseInt($("#dmx_offset").val());if(dmx>=1&&dmx<=511){setDips(dmx);}else{popErrorMessage("Value must be between 1 and 511");$("#dmx_add").val(1);}
if(dmx-offset<1){$("#minus").hide();}else if(dmx+offset>=511){$("#plus").hide();}});$("#minus").live('click',function(){var offset=parseInt($("#dmx_offset").val());var dmx=parseInt($("#dmx_add").val());$("#dmx_add").val(dmx-offset);setDips(dmx-offset);if(dmx-(offset*2)<1){$(this).hide();}else{$("#plus").show();}
return false;});$("#plus").live('click',function(){var offset=parseInt($("#dmx_offset").val());var dmx=parseInt($("#dmx_add").val());$("#dmx_add").val(dmx+offset);setDips(dmx+offset);if(dmx+(offset*2)>=511){$(this).hide();}else{$("#minus").show();}
return false;});$("#reset").live('click',function(){var page=$("form").attr("name");$("input").each(function(){var type=this.type,tag=this.tagName.toLowerCase();if(type==="text"||type==="number"||type==="password"||tag==="textarea"){this.value="";}
$(this).removeClass('missing');});if(page=="dmxaddress"){$("#dmx_add").val("1");$("#dmx_offset").val("1");$('img.dip_off').attr("src","../images/dip_off.png");$('img.dip_off').first().attr("src","../images/dip_on.png");}
var TempUnits=getPersist('temp');if(TempUnits==="fahrenheit"){temp_val=68;}else{temp_val=20;}
$(".temp").val(temp_val);$(".ui-footer h2").html("");return false;});$("form").live('submit',function(){var page=$(this).attr("name"),result;result=tools(page);$("h2."+page).html(result);return false;});function tools(page){var temp_val;switch(page){case"delaycalculator":var delayImp,delayTempUnits;delayImp=getPersist('distance');delayTempUnits=getPersist('temp');var delayDistance=parseFloat($('#delayDistance').val()),delayMs,delayTemp=parseFloat($('#delayTemp').val()),speed_of_sound;if(delayDistance&&delayTemp){if(delayImp==="feet"){delayDistance=delayDistance*0.3048;}
if(delayTempUnits==="fahrenheit"){temp_val=(delayTemp-32)*5/9;}else{temp_val=delayTemp;}
if(temp_val>=-273){speed_of_sound=331.5*Math.sqrt((temp_val+273.15)/273.15);delayMs=delayDistance*(1000/speed_of_sound);$('#delayDistance').removeClass('missing');$('#delayTemp').removeClass('missing');response="Delay "+round(delayMs)+" mS in dry air at "+delayTemp+" &#176; "+delayTempUnits;}else{response="Temperature must be above absolute zero";}}else{$('#delayDistance').addClass('missing');$('#delayTemp').addClass('missing');response="Please enter a distance and temperature";}
break;case"wavelength":var freqImp,waveTempUnits;freqImp=getPersist('distance');waveTempUnits=getPersist('temp');var freqHz=parseFloat($('#frequency').val()),freqTemp=parseFloat($('#waveTemp').val()),wavelength=parseFloat($('#wavelength').val()),wavelengthM;if(freqHz||wavelength){if(waveTempUnits==="fahrenheit"){temp_val=(freqTemp-32)*5/9;}else{temp_val=freqTemp;}
if(temp_val>=-273){speed_of_sound=331.5*Math.sqrt((temp_val+273.15)/273.15);if(freqHz>0){wavelengthM=speed_of_sound/freqHz;if(freqImp==="feet"){wavelengthM=roundPlaces(wavelengthM/0.3048,4)+" feet";}else{wavelengthM=roundPlaces(wavelengthM,4)+" metres";}
response="Wavelength "+wavelengthM;}else{freqHz=speed_of_sound/wavelength;if(freqImp==="feet"){freqHz=roundPlaces(freqHz/0.3048,0)+" Hz";}else{freqHz=roundPlaces(freqHz,0)+" Hz";}
response="Frequency "+freqHz;}
$('#frequency').removeClass('missing');$('#wavelength').removeClass('missing');$('#waveTemp').removeClass('missing');}else{response="Temperature must be above absolute zero";}}else{$('#frequency').addClass('missing');$('#wavelength').addClass('missing');$('#waveTemp').addClass('missing');response="Please enter either frequency or wavelength";}
break;case"splcalculator":var splDistUnits,dist_val;splDistUnits=getPersist('distance');var powerW=parseFloat($('#spl_power').val()),senseDb=parseFloat($('#spl_sense').val()),distanceM=parseFloat($('#spl_distance').val()),x=0,y=0,splDb;if(powerW&&senseDb&&distanceM){x=Math.log(powerW)/Math.LN10;if(splDistUnits==="feet"){dist_val=distanceM*0.3048;}else{dist_val=distanceM;}
distanceM=1/dist_val;y=Math.log(distanceM)/Math.LN10;splDb=(10*(x)+senseDb)+(20*(y));$('#spl_power,#spl_sense,#spl_distance').removeClass('missing');response="SPL "+round(splDb)+" dB";}else{$('#spl_power,#spl_sense,#spl_distance').addClass('missing');response="Please enter values for all fields";}
break;case"lowimpedance":var impcalcSpkr=[],impcalcConfig=$('#impcalc_config').val(),impcalcOut=0,i;impcalcSpkr[0]=parseFloat($('#impcalc_1').val());impcalcSpkr[1]=parseFloat($('#impcalc_2').val());impcalcSpkr[2]=parseFloat($('#impcalc_3').val());impcalcSpkr[3]=parseFloat($('#impcalc_4').val());if(impcalcSpkr[0]>0){if(impcalcConfig==="parallel"){for(i in impcalcSpkr){if(impcalcSpkr[i]){impcalcOut+=1/impcalcSpkr[i];}else{impcalcSpkr[i]=1;}}
impcalcOut=1/impcalcOut;}else{for(i in impcalcSpkr){if(impcalcSpkr[i]){impcalcOut+=impcalcSpkr[i];}else{impcalcSpkr[i]=0;}}}
$('#impcalc_1').removeClass('missing');response="Total Impedance: "+round(impcalcOut)+"&#937;";}else{$('#impcalc_1').addClass('missing');response="Please enter an impedance for speaker 1";}
break;case"dbuconverter":var dbu=parseFloat($('#dbuDbu').val()),dbv=parseFloat($('#dbuDbv').val()),dbuOut;if(dbu){dbuOut=Math.pow(10,(dbu/20))*0.775;response="Voltage "+round(dbuOut)+" volts";}else if(dbv){dbuOut=Math.pow(10,dbv/20);response="Voltage "+round(dbuOut)+" volts";}else{response="Please enter 1 value";}
break;case"a100vline":var lineImpedance=parseFloat($('#100v_impedance').val()),lineOut;if(lineImpedance){lineOut=10000/lineImpedance;$('#100v_impedance').removeClass('missing');response="Power "+round(lineOut)+" watts";}else{$('#100v_impedance').addClass('missing');response="Please enter an impedance";}
break;case"aspectratio":var arWidth=parseFloat($('#ar_width').val()),arHeight=parseFloat($('#ar_height').val()),arRatio=$('#ar_ratio').val();if(arWidth&&arRatio!=="blank"){if(arRatio==="16x9"){arHeight=(arWidth/16)*9;}else if(arRatio==="16x10"){arHeight=(arWidth/16)*10;}else if(arRatio==="4x3"){arHeight=(arWidth/4)*3;}
response="Height = "+round(arHeight);}else if(arHeight&&arRatio!=="blank"){if(arRatio==="16x9"){arWidth=(arHeight/9)*16;}else if(arRatio==="16x10"){arWidth=(arHeight/10)*16;}else if(arRatio==="4x3"){arWidth=(arHeight/3)*4;}
response="Width = "+round(arWidth);}else if(arHeight&&arWidth){arRatio=arWidth/arHeight;arRatio=round(arRatio);if(arRatio>=1.30&&arRatio<=1.35){arRatio="4:3";}else if(arRatio>=1.74&&arRatio<=1.80){arRatio="16:9";}else if(arRatio>=1.63&&arRatio<=1.69){arRatio="16:10";}else{arRatio=arRatio+":1";}
response="Aspect Ratio = "+arRatio;}else{response="Please enter 2 values";}
break;case"projectiondistance":var projThrow=parseFloat($('#proj_throw').val()),projWidth=parseFloat($('#proj_width').val()),projRatio=parseFloat($('#proj_ratio').val()),projOut;if(projThrow&&projRatio){projOut=projThrow*(1/projRatio);response='Width: '+round(projOut);}else if(projWidth&&projRatio){projOut=projWidth/(1/projRatio);response='Throw: '+round(projOut);}else if(projWidth&&projThrow){projOut=projThrow/projWidth;response='Ratio: '+round(projOut)+':1';}else{response="Please enter 2 values";}
break;case"dmxaddress":var dmxAdd=parseFloat($('#dmx_add').val()),bits,dividend,remainder,dmxAddOut,count;count=0;var bin=1,dmx=0;$('img.dip_off').each(function(){if($(this).attr("src")=="../images/dip_on.png"){dmx=dmx+bin;}
bin=bin*2;});$('#dmx_add').val(dmx);response="";break;case"beamwidth":var bwImp;bwImp=getPersist('distance');var bwAngle=$('#bw_angle').val(),bwDistance=$('#bw_distance').val(),bwBw=$('#bw_bw').val(),bwOut,bwOutstr="";if(bwDistance&&bwAngle||bwDistance&&bwBw||bwAngle&&bwBw){if(bwImp==="feet"){if(bwAngle&&bwDistance){bwOut=round(bwAngle*(0.018*bwDistance));bwOutstr="Beamwidth "+bwOut+" feet";}else if(bwBw&&bwDistance){bwOut=round(bwBw/(bwDistance*0.018));bwOutstr="Angle "+bwOut+"&#186;";}else if(bwBw&&bwAngle){bwOut=round((bwBw/bwAngle)/0.018);bwOutstr="Distance "+bwOut+" feet";}}else{bwDistance=bwDistance/0.3048;if(bwAngle&&bwDistance){bwOut=round(bwAngle*(0.018*bwDistance));bwOutstr="Beamwidth "+bwOut+" metres";}else if(bwBw&&bwDistance){bwOut=round(bwBw/(bwDistance*0.018));bwOutstr="Angle "+bwOut+"&#176;";}else if(bwBw&&bwAngle){bwOut=round(((bwBw/bwAngle)/0.018)*0.3048);bwOutstr="Distance "+bwOut+" metres";}}
response=bwOutstr;}else{response="Please enter 2 values";}
break;case"gelcuts":response="";var numSheets,maxCuts,maxCuts90,totalCost;var sheetWidth=parseFloat($('#gc_sheetwidth').val()),sheetHeight=parseFloat($('#gc_sheetheight').val()),sheetCost=parseFloat($('#gc_sheetcost').val()),cutHeight=parseFloat($('#gc_cutheight').val()),cutWidth=parseFloat($('#gc_cutwidth').val()),cutNum=parseFloat($('#gc_numcuts').val());if(sheetWidth&&sheetHeight&&cutHeight&&cutWidth){maxCuts=(Math.floor(sheetWidth/cutWidth))*(Math.floor(sheetHeight/cutHeight));maxCuts90=(Math.floor(sheetWidth/cutHeight))*(Math.floor(sheetHeight/cutWidth));if(cutNum<1){cutNum=1;}
if(maxCuts90>maxCuts){numSheets=Math.ceil(cutNum/maxCuts90);response="Rotate cut 90&#176; ";}else{numSheets=Math.ceil(cutNum/maxCuts);}
if(isNaN(numSheets)){response="Cut size must be smaller than sheet size";}else{response+="Sheets: "+numSheets;}
if(sheetCost){totalCost=numSheets*sheetCost;response+=" Cost: "+totalCost;}
$('#gc_sheetwidth').removeClass('missing');$('#gc_sheetheight').removeClass('missing');$('#gc_cutheight').removeClass('missing');$('#gc_cutwidth').removeClass('missing');}else{$('#gc_sheetwidth').addClass('missing');$('#gc_sheetheight').addClass('missing');$('#gc_cutheight').addClass('missing');$('#gc_cutwidth').addClass('missing');response="Please enter sheet and cut dimensions";}
break;case"powercalculator":var powerV=parseFloat($('#power_volts').val()),powerA=parseFloat($('#power_amps').val()),power=parseFloat($('#power_watts').val()),powerOut;if(powerV&&powerA){powerOut=powerV*powerA;powerOut="Power "+round(powerOut)+" watts";response=powerOut;}else if(powerV&&power){powerOut=power/powerV;powerOut="Current "+round(powerOut)+" amps";response=powerOut;}else if(powerA&&power){powerOut=power/powerA;powerOut="Voltage "+round(powerOut)+" volts";response=powerOut;}else{response="Please enter 2 values";}
break;case"voltagedrop":var vdImp;vdImp=getPersist('distance');var vdA=parseFloat($('#vd_amps').val()),vdD=parseFloat($('#vd_distance').val()),vdCs=$('#vd_cablesize').val(),vdOut;if(vdA&&vdD){vdCs=parseFloat(vdCs);if(vdImp==="feet"){vdD=vdD*0.3048;}
vdOut=(vdCs*vdA*vdD)/1000;$('#vd_amps, #vd_distance').removeClass('missing');vdOut="Voltage Drop "+round(vdOut)+" volts. Based on p.v.c insulated cables in freespace";response=vdOut;}else{$('#vd_amps, #vd_distance').addClass('missing');response="Please enter all values";}
break;case"dawdiskspace":var dawTrack=parseFloat($('#dawtracks').val()),dawDur=parseFloat($('#dawduration').val()),dawDs=parseFloat($('#dawds').val()),dawConfig=$('#daw_config').val(),dawBitrate=$('#daw_bitrate').val(),dawSampleRate=$('#daw_samplerate').val(),dawOut,tracks_out,duration_out,diskspace_out;if(!dawTrack&&!dawDur&&!dawDs){response="Please enter 2 values";}else if(!dawTrack&&!dawDur){response="Please enter 2 values";}else if(!dawTrack&&!dawDs){response="Please enter 2 values";}else if(!dawDur&&!dawDs){response="Please enter 2 values";}else{if(!dawTrack){duration=dawDur;diskspace=dawDs;if(dawConfig=="mono"){config=1;}else{config=2;}
bitrate=dawBitrate/8;samplerate=dawSampleRate;single_track=((samplerate*bitrate)*config)*(duration*60);tracks_out=(diskspace*1000000000.0)/single_track;response="Max Tracks "+round(tracks_out);}else if(!dawDur){tracks=dawTrack;diskspace=dawDs;if(dawConfig=="mono"){config=1;}else{config=2;}
bitrate=dawBitrate/8;samplerate=dawSampleRate;one_second=((samplerate*bitrate)*config)*tracks;duration_out=(diskspace*1000000000.0)/one_second;response="Max Duration "+formatIntoHHMMSS(duration_out)+" HH:MM:SS";}else if(!dawDs){duration=dawDur;tracks=dawTrack;if(dawConfig=="mono"){config=1;}else{config=2;}
bitrate=dawBitrate/8;samplerate=dawSampleRate;diskspace_out=(((samplerate*bitrate)*config)*(duration*60)*tracks);response="Total Diskspace "+bytesToSize(diskspace_out,4);}}
break;}
return response;}
function formatIntoHHMMSS(totalSec){hours=parseInt(totalSec/3600)%24;minutes=parseInt(totalSec/60)%60;seconds=parseInt(totalSec%60,10);return(hours<10?"0"+hours:hours)+":"+(minutes<10?"0"+minutes:minutes)+":"+(seconds<10?"0"+seconds:seconds);}
function bytesToSize(bytes,precision)
{var kilobyte=1024;var megabyte=kilobyte*1024;var gigabyte=megabyte*1024;var terabyte=gigabyte*1024;if((bytes>=0)&&(bytes<kilobyte)){return bytes+' B';}else if((bytes>=kilobyte)&&(bytes<megabyte)){return(bytes/kilobyte).toFixed(precision)+' KB';}else if((bytes>=megabyte)&&(bytes<gigabyte)){return(bytes/megabyte).toFixed(precision)+' MB';}else if((bytes>=gigabyte)&&(bytes<terabyte)){return(bytes/gigabyte).toFixed(precision)+' GB';}else if(bytes>=terabyte){return(bytes/terabyte).toFixed(precision)+' TB';}else{return bytes+' B';}}});
