function BPM_ComputeSize(n){var t;return t=n*16,t+=48,t*=WIDTH_BPM}function BPM_AssignBit(n,t,i){var r;if(t==0){for(r=0;r<WIDTH_BPM;r++)n[i]=TRUE,i++;for(r=0;r<WIDTH_BPM;r++)n[i]=FALSE,i++}else{for(r=0;r<WIDTH_BPM;r++)n[i]=FALSE,i++;for(r=0;r<WIDTH_BPM;r++)n[i]=TRUE,i++}return i}function BPM_AssignByte(n,t,i){for(var u,r=7;r>=0;r--)u=t>>r&1,i=BPM_AssignBit(n,u,i);return i}function PWM_ComputeByteWidth(n){for(var f,i,t=0,r=n,u=0;u<8;u++)(r&1)==1&&t++,r>>=1;return i=t*WIDTH_ONE+(8-t)*WIDTH_ZERO,i+=(t&1)==1?WIDTH_ONE:WIDTH_ZERO,i*2}function PWM_ComputeSize(n,t){for(var u=WIDTH_SYNC*2,i=0,r=0;r<n;r++)u+=PWM_ComputeByteWidth(t[r]),i+=t[r];return i&=255,i^=CHECKSUM_MASK,u+=PWM_ComputeByteWidth(i)}function PWM_AssignWidth(n,t,i){for(var r=0;r<t;r++)n[i+r]=TRUE;for(i+=t,r=0;r<t;r++)n[i+r]=FALSE;return i+=t}function PWM_AssignByte(n,t,i){for(var f,u=0,r=7;r>=0;r--)f=t>>r&1,f==1?(u++,i=PWM_AssignWidth(n,WIDTH_ONE,i)):i=PWM_AssignWidth(n,WIDTH_ZERO,i);return i=(u&1)==1?PWM_AssignWidth(n,WIDTH_ONE,i):PWM_AssignWidth(n,WIDTH_ZERO,i)}function HAM_GetCode(n,t){var i;return i=t?n>>3&7:n&7,HammingTable[i]}function HAM_ComputeByteWidth(n){for(var u,t=0,r=n,i=0;i<8;i++)(r&1)==1&&t++,r>>=1;return u=t*WIDTH_ONE+(8-t)*WIDTH_ZERO,u*2}function HAM_ComputeSize(n){var t,r,i;return t=WIDTH_SYNC*2,r=HAM_GetCode(n,TRUE),i=HAM_GetCode(n,FALSE),t+=HAM_ComputeByteWidth(r),t+=HAM_ComputeByteWidth(i)}function HAM_AssignWidth(n,t,i){return PWM_AssignWidth(n,t,i)}function HAM_AssignByte(n,t,i){for(var u,r=7;r>=0;r--)u=t>>r&1,i=u==1?HAM_AssignWidth(n,WIDTH_ONE,i):HAM_AssignWidth(n,WIDTH_ZERO,i);return i}function HexNibble(n){var t;return t=n>="0"&&n<="9"?n-"0":n=="A"||n=="a"?10:n=="B"||n=="b"?11:n=="C"||n=="c"?12:n=="D"||n=="d"?13:n=="E"||n=="e"?14:n=="F"||n=="f"?15:0}function ReadMsgHex(n,t,i){for(var r=0;r<i;r++)n[r]=HexNibble(t.substring(r*2,r*2+1))*16+HexNibble(t.substring(r*2+1,r*2+2))}function DumpMsgBytes(n,t){for(var i=0;i<t;i++);}function DumpSBits(n,t){for(var r="Total SBits="+t+" Bits=",i=0;i<t;i++)r=r+n[i],(i&7)==7&&(r+=" ");alert(r)}function SetErrorCondition(){SBit_Size=1,SBit_Array=new Array(SBit_Size),SBit_Array[0]=TRUE}function OnFlasherTimerImages(){var n=SBit_Array[SBit_Index];SBit_Index=SBit_Index+1,SBit_Index==SBit_Size&&(SBit_Index=0),n!=SBit_Prev&&(imgElement&&(imgElement.src=n==TRUE?imgSourceWhite:imgSourceBlack),SBit_Prev=n)}function OnFlasherTimerBackground(){var t=SBit_Array[SBit_Index],n;SBit_Index=SBit_Index+1,SBit_Index==SBit_Size&&(SBit_Index=0),t!=SBit_Prev&&(n=document.getElementById?document.getElementById("flashingborder"):document.all?document.all.flashingborder:"",n&&(n.style.backgroundColor=t==TRUE?"white":"black"),SBit_Prev=t)}function OnFlasherTimerBasic(){var t=SBit_Array[SBit_Index],n;SBit_Index=SBit_Index+1,SBit_Index==SBit_Size&&(SBit_Index=0),t!=SBit_Prev&&(n=document.getElementById?document.getElementById("flashingborder"):document.all?document.all.flashingborder:"",n&&(n.style.backgroundColor=t==TRUE?"white":"black"),SBit_Prev=t)}function StartTimer(){StopTimer(),timerId=setInterval(TimerCallback,IntervalTime)}function StopTimer(){timerId!=null&&(clearInterval(timerId),timerId=null)}function SetFlasherSpeed(n){IntervalTime=n,StartTimer()}function SlowDownFlasher(){IntervalTime+=5,StartTimer()}function SpeedUpFlasher(){IntervalTime>5&&(IntervalTime-=5),StartTimer()}function ShowBunitFlasher(n,t,i){var l,f,c,o,e,r,s,a,h,u;if(l=n,f=t,c=i,o=new Array(f),ReadMsgHex(o,c,f),l==1)if(f<1)SetErrorCondition();else if(f==1)s=o[0],s==0||s>63?SetErrorCondition():(a=HAM_GetCode(s,TRUE),h=HAM_GetCode(s,FALSE),SBit_Size=HAM_ComputeSize(s),SBit_Array=new Array(SBit_Size),r=0,r=HAM_AssignWidth(SBit_Array,WIDTH_SYNC,r),r=HAM_AssignByte(SBit_Array,a,r),r=HAM_AssignByte(SBit_Array,h,r));else{for(SBit_Size=PWM_ComputeSize(f,o),SBit_Array=new Array(SBit_Size),r=0,e=0,r=PWM_AssignWidth(SBit_Array,WIDTH_SYNC,r),u=0;u<f;u++)r=PWM_AssignByte(SBit_Array,o[u],r),e+=o[u];e&=255,e^=CHECKSUM_MASK,r=PWM_AssignByte(SBit_Array,e,r)}else if(f<2)SetErrorCondition();else{for(SBit_Size=BPM_ComputeSize(f),SBit_Array=new Array(SBit_Size),r=0,e=0,r=BPM_AssignByte(SBit_Array,9,r),u=0;u<f;u++)r=BPM_AssignByte(SBit_Array,o[u],r),e+=o[u];e&=255,r=BPM_AssignByte(SBit_Array,e,r),r=BPM_AssignByte(SBit_Array,0,r)}SBit_Index=0,SBit_Prev=!SBit_Array[0],StartTimer()}var TRUE=1,FALSE=0,WIDTH_ZERO=4,WIDTH_ONE=8,WIDTH_SYNC=16,WIDTH_BPM=10,CHECKSUM_MASK=105,HammingTable=[0,46,90,116,150,184,204,226],MsgBytes,SBit_Array,SBit_Size,SBit_Index,SBit_Prev,imgElement,imgSourceWhite,imgSourceBlack,IntervalTime=15,timerId,TimerCallback,bunit={};bunit.flasher={cleanup:function(n){StopTimer(),$(n).empty()},show:function(n,t,i,r,u,f){var e,o;this.cleanup(n),TimerCallback="OnFlasherTimerBackground()";switch(f){case 1:e=u+"bunit.png";break;case 2:e=u+"bunit2.png"}o="<div class='bunit_background_parent'><div id='flashingborder' class='bunit_background_border' /><img id='imgBunit' src='"+e+"' alt='' /></div>",$(n).append(o),ShowBunitFlasher(t,i,r)},restart:function(){StartTimer()},show_images:function(n,t,i,r,u){this.cleanup(n),TimerCallback="OnFlasherTimerImages()";var o=u+"bunit-black.png",f=u+"bunit-white.png",e="<img id='imgBunit' src='"+f+"' alt='' />";$(n).append(e),imgElement=document.images.imgBunit,imgSourceWhite=f,imgSourceBlack=o,ShowBunitFlasher(t,i,r)},show_imagesV2:function(n,t,i,r,u){StopTimer(),TimerCallback="OnFlasherTimerImages()";var e=u+"bunit-flash-black.png",f=u+"bunit-flash-white.png";imgElement=document.images.bunit_image,imgSourceWhite=f,imgSourceBlack=e,ShowBunitFlasher(t,i,r)},stop:function(){StopTimer()},slower:function(){SlowDownFlasher()},faster:function(){SpeedUpFlasher()},set_speed:function(n){IntervalTime=n},show_basic:function(n,t,i,r){this.cleanup(n),TimerCallback="OnFlasherTimerBasic()";var u="<TABLE id=flashingborder style='margin-left: auto; margin-right: auto; BORDER-RIGHT: 5px solid; BORDER-TOP: 5px solid; BORDER-LEFT: 5px solid; WIDTH: 200px; BORDER-BOTTOM: 5px solid; HEIGHT: 100px'><TR><TD><P align=center style='COLOR: midnightblue'></P></TD></TR></TABLE>";$(n).append(u),ShowBunitFlasher(t,i,r)},show_flash:function(n,t,i,r,u){this.cleanup(n);var f="<div id='swf_container'><p></p></div>";$(n).append(f),swfobject.embedSWF(u+"biphase.swf?ISPWM="+t+"&MSGLEN="+i+"&MSGHEX="+r,"swf_container","191","361","9.0.0")}}