var BALL_WIDTH=25
var BALL_HEIGHT=25
var COL_WIDTH=23
var ROW_HEIGHT=20
var TOP=10
var LEFT=20
var RIGHT=LEFT+15*BALL_WIDTH-BALL_WIDTH/2;var BOMB=6;var PBOMB=200;var ab=false;var bb=false;var cb=new Image();cb.src="snood/blank.gif";var db=new Image();db.src="snood/ghost.gif";var eb=new Array();eb[0]=new Image();eb[0].src="snood/red.gif";eb[1]=new Image();eb[1].src="snood/orange.gif";eb[2]=new Image();eb[2].src="snood/yellow.gif";eb[3]=new Image();eb[3].src="snood/green.gif";eb[4]=new Image();eb[4].src="snood/blue.gif";eb[5]=new Image();eb[5].src="snood/purple.gif";eb[6]=new Image();eb[6].src="snood/bomb.gif";var fb=new Array();fb[0]=new Image();fb[0].src="snood/red1.gif";fb[1]=new Image();fb[1].src="snood/orange1.gif";fb[2]=new Image();fb[2].src="snood/yellow1.gif";fb[3]=new Image();fb[3].src="snood/green1.gif";fb[4]=new Image();fb[4].src="snood/blue1.gif";fb[5]=new Image();fb[5].src="snood/purple1.gif";var gb=new Array();gb[0]=new Image();gb[0].src="snood/rainbow0.gif";gb[1]=new Image();gb[1].src="snood/rainbow1.gif";gb[2]=new Image();gb[2].src="snood/rainbow2.gif";gb[3]=new Image();gb[3].src="snood/blank.gif";var hb=new Array();for(var i=1;i<36;i++){hb[i-1]=new Image();hb[i-1].src="snood/arrow"+(i*5)+".gif";}
var ib=10;var jb=100;var kb=80;var lb=700;var mb=100;var nb=new Array();var ob;var pb;var qb;var rb={i:0,j:0}
;var sb;var tb={x:0,y:0}
;var ub=0;var vb=0;var wb=0;var xb;var yb;var zb;var $b;function Ball(_b,ac,x,y){this.img=_b;this.sym=ac;this.x=x;this.y=y;this.NE=null;this.NW=null;this.E=null;this.W=null;this.SE=null;this.SW=null;this.attached=false;this.needsift=false;this.scored=false;this.radius=100;}
function bc(n){return Math.floor(Math.random()*n);}
var cc=new Array(0,1,2,3,4,5);function dc(){var ec=vb/1500.;if(ec>3)ec=3;var r=bc(6-ec);cc=cc.slice(0,r).concat(cc.slice(r+1)).concat(cc[r]);return(cc[5]);}
function fc(){for(var i=0;i<16;i++){for(var j=0;j<16;j++){if(nb[i][j].sym!=-1){nb[i][j].needsift=true;}
}
}
}
function gc(){for(var i=0;i<16;i++){for(var j=0;j<16;j++){nb[i][j].attached=false;}
}
}
function hc(){for(var i=0;i<16;i++){for(var j=0;j<16;j++){nb[i][j].scored=false;}
}
}
function ic(){for(var i=0;i<16;i++){for(var j=0;j<16;j++){nb[i][j].radius=100;}
}
}
function jc(){if(kc()){return}
;lc();fc();mc();}
function mc(){var nc=false;for(var i=0;i<14;i++){for(var j=0;j<16;j++){if(!nb[i][j].needsift)continue;if(i%2==0){if(nb[i][j].SE!=null)continue;}
else{if(nb[i][j].SW!=null)continue;}
nc=true;nb[i+1][j].img.src=nb[i][j].img.src;nb[i+1][j].sym=nb[i][j].sym;nb[i+1][j].needsift=false;nb[i][j].img.src=cb.src;nb[i][j].sym=-1;nb[i][j].needsift=false;if(nb[i][j].NW!=null){nb[i][j].NW.SE=null}
;if(nb[i][j].NE!=null){nb[i][j].NE.SW=null}
;}
}
if(nc){setTimeout("mc()",jb);}
else{oc();ub=0;setTimeout("ae(0)",kb);}
}
function oc(){var ac;for(j=0;j<16;j++){if(bc(PBOMB)==0){ac=BOMB;}
else{ac=dc();}
nb[0][j].sym=ac;nb[0][j].img.src=eb[ac].src;}
}
function lc(){for(i=0;i<15;i++){for(j=0;j<16;j++){var W=j-1;var E=j+1;var NW=j-1+(i%2);var NE=NW+1;var SW=j-1+(i%2);var SE=SW+1;if(W>=0&&nb[i][W].sym!=-1){nb[i][j].W=nb[i][W];}
else{nb[i][j].W=null;}
if(E<16&&nb[i][E].sym!=-1){nb[i][j].E=nb[i][E];}
else{nb[i][j].E=null;}
if(i>0&&NW>=0&&nb[i-1][NW].sym!=-1){nb[i][j].NW=nb[i-1][NW];}
else{nb[i][j].NW=null;}
if(i>0&&NE<16&&nb[i-1][NE].sym!=-1){nb[i][j].NE=nb[i-1][NE];}
else{nb[i][j].NE=null;}
if(i<15&&SW>=0&&nb[i+1][SW].sym!=-1){nb[i][j].SW=nb[i+1][SW];}
else{nb[i][j].SW=null;}
if(i<15&&SE<16&&nb[i+1][SE].sym!=-1){nb[i][j].SE=nb[i+1][SE];}
else{nb[i][j].SE=null;}
}
}
}
function pc(){for(var i=0;i<15;i++){for(var j=0;j<16;j++){var W=j-1;var E=j+1;var NW=j-1+(i%2);var NE=NW+1;var SW=j-1+(i%2);var SE=SW+1;if(W>=0){nb[i][j].W=nb[i][W];}
else{nb[i][j].W=null;}
if(E<16){nb[i][j].E=nb[i][E];}
else{nb[i][j].E=null;}
if(i>0&&NW>=0){nb[i][j].NW=nb[i-1][NW];}
else{nb[i][j].NW=null;}
if(i>0&&NE<16){nb[i][j].NE=nb[i-1][NE];}
else{nb[i][j].NE=null;}
if(i<15&&SW>=0){nb[i][j].SW=nb[i+1][SW];}
else{nb[i][j].SW=null;}
if(i<15&&SE<16){nb[i][j].SE=nb[i+1][SE];}
else{nb[i][j].SE=null;}
}
}
}
function qc(){for(var i=0;i<15;i++){for(var j=0;j<16;j++){nb[i][j].attached=false;}
}
for(var j=0;j<16;j++){rc(nb[0][j]);}
var sc=false;while(!sc){sc=true;for(var i=0;i<15;i++){for(var j=0;j<16;j++){if(nb[i][j].attached){sc=sc&&rc(nb[i][j].NW)&&rc(nb[i][j].NE)&&rc(nb[i][j].W)&&rc(nb[i][j].E)&&rc(nb[i][j].SE)&&rc(nb[i][j].SW);}
}
}
}
}
function rc(tc){if(tc==null)return true;if(tc.sym==-1)return true;if(tc.attached)return true;tc.attached=true;return false;}
function uc(b){if(b==null)return;b.sym=-1;b.img.src=cb.src;if(b.NW!=null)b.NW.SE=null;if(b.NE!=null)b.NE.SW=null;if(b.W!=null)b.W.E=null;if(b.E!=null)b.E.W=null;if(b.SW!=null)b.SW.NE=null;if(b.SE!=null)b.SE.NW=null;b.NW=b.NE=b.W=b.E=b.SW=b.SE=null;}
function kc(){for(j=0;j<16;j++){if(nb[14][j].sym!=-1){ab=true;nb[14][j].img.src=db.src;}
if(nb[15][j].sym!=-1)alert("Hittade bubblor på ogiltiga positioner!");}
if(ab){vc=1000;setTimeout("se( 14 )",750);return true;}
return false;}
function wc(){if(!kc()){xc();}
}
function yc(zc){if(zc.pageX||zc.pageY){return{x:zc.pageX,y:zc.pageY}
;}
return{x:zc.clientX,y:zc.clientY}
}
function $c(_c,zc){zc=zc||window.event;var ad=yc(zc);return{x:ad.x-tb.x,y:ad.y-tb.y}
;}
function bd(){tb.x=0;tb.y=0;tb=cd(sb);}
function cd(e){var dd=0;var top=0;while(e.offsetParent){dd+=e.offsetLeft;top+=e.offsetTop;e=e.offsetParent;}
dd+=e.offsetLeft;top+=e.offsetTop;return{x:dd-tb.x,y:top-tb.y}
;}
var vc=1000;var ed={x:0,y:0}
;function fd(zc){if(vc>0)return;vc++;zc=zc||window.event;var gd=$c(sb,zc);pb.img.src=cb.src;$b.src=cb.src;ed.x=gd.x-BALL_WIDTH/2-ob.x;ed.y=gd.y-BALL_HEIGHT/2-ob.y;var hd=Math.sqrt(ed.x*ed.x+ed.y*ed.y);ed.x=ed.x/hd;ed.y=ed.y/hd;id();}
function id(){ob.x=ob.x+ed.x*0.25*BALL_WIDTH;ob.y=ob.y+ed.y*0.25*BALL_HEIGHT;if(ob.x>RIGHT){ob.x=RIGHT-(ob.x-RIGHT);ed.x=-ed.x;}
if(ob.x<LEFT){ob.x=LEFT+(LEFT-ob.x);ed.x=-ed.x;}
ob.img.style.left=ob.x+'px';ob.img.style.top=ob.y+'px';if(jd()){kd();}
else{setTimeout("id()",ib);}
}
function jd(){var ld;var md=1000;var nd,od;for(i=0;i<14;i++){for(j=0;j<16;j++){if(nb[i][j].sym!=-1){ld=Math.sqrt(Math.pow(nb[i][j].x-ob.x,2)+Math.pow(nb[i][j].y-ob.y,2));if(ld<md){md=ld;nd=i;od=j;}
}
}
}
if(ob.y<TOP)md=0;if(md<BALL_WIDTH*0.8){md=1000;for(i=0;i<15;i++){for(j=0;j<16;j++){if(nb[i][j].sym==-1){ld=Math.sqrt(Math.pow(nb[i][j].x-ob.x,2)+Math.pow(nb[i][j].y-ob.y,2));if(ld<md){md=ld;nd=i;od=j;}
}
}
}
rb.i=nd;rb.j=od;nb[nd][od].sym=ob.sym;nb[nd][od].img.src=ob.img.src;ob.img.src=cb.src;ob.x=LEFT+8*COL_WIDTH;ob.y=TOP+16*ROW_HEIGHT;ob.img.style.top=ob.y+'px';ob.img.style.left=ob.x+'px';return true;}
return false;}
function kd(){var pd;var i=rb.i;var j=rb.j;var b=nb[i][j];lc();hc();if(qd()){rd();return;}
var n=sd(b,b.sym,0);if(n>=3){vb+=3+n*(n-3)/2;td();ud();}
else{hc();ub++;qb.src=gb[ub].src;if(ub>2){setTimeout("jc()",jb);}
else{wc();}
}
return;}
function qd(){var i=rb.i;var j=rb.j;ic();if(nb[i][j].NW!=null&&nb[i][j].NW.sym==BOMB){pc();vd(nb[i][j].NW,0);}
else if(nb[i][j].NE!=null&&nb[i][j].NE.sym==BOMB){pc();vd(nb[i][j].NE,0);}
else if(nb[i][j].W!=null&&nb[i][j].W.sym==BOMB){pc();vd(nb[i][j].W,0);}
else if(nb[i][j].E!=null&&nb[i][j].E.sym==BOMB){pc();vd(nb[i][j].E,0);}
else if(nb[i][j].SW!=null&&nb[i][j].SW.sym==BOMB){pc();vd(nb[i][j].SW,0);}
else if(nb[i][j].SE!=null&&nb[i][j].SE.sym==BOMB){pc();vd(nb[i][j].SE,0);}
else{return false;}
return true;}
function vd(b,r){if(b==null)return;if(r>2)return;if(r>=b.radius)return;b.scored=true;if(b.sym!=-1)wd(b,BOMB,1);if(b.sym==BOMB)r=0;b.radius=r;vd(b.NW,r+1);vd(b.NE,r+1);vd(b.W,r+1);vd(b.E,r+1);vd(b.SW,r+1);vd(b.SE,r+1);}
function rd(){var xd,p;var nc=false;xd=yd;while(xd!=null){if(xd.level==1){xd.level--;xd.b.img.src=db.src;nc=true;}
else if(xd.level==0){xd.level--;xd.b.img.src=cb.src;xd.b.sym=-1;xd.scored=false;}
xd=xd.next;}
if(nc){setTimeout("rd()",lb);}
else{while(yd!=null){xd=yd;yd=yd.next;xd.next=null;}
zd=null;setTimeout("ae(1)",kb);}
}
function sd(b,ac,r){var $d;if(b==null)return 0;if(b.scored&&r>=b.radius)return 0;if(b.sym!=ac)return 0;if(b.scored){$d=0;}
else{$d=1;}
b.scored=true;b.radius=r;return $d+sd(b.NW,ac,r+1)+sd(b.NE,ac,r+1)+sd(b.W,ac,r+1)+sd(b.E,ac,r+1)+sd(b.SW,ac,r+1)+sd(b.SE,ac,r+1);}
function ud(){for(i=0;i<15;i++){for(j=0;j<16;j++){if(nb[i][j].scored){wd(nb[i][j],nb[i][j].sym,nb[i][j].radius);}
}
}
_d();}
function _d(){var xd,p;var nc=false;xd=yd;while(xd!=null){if(xd.level>0){xd.level--;nc=true;}
else if(xd.level==0){xd.level--;xd.b.img.src=fb[xd.sym].src;nc=true;}
else if(xd.level==-1){xd.level--;xd.b.img.src=cb.src;xd.b.sym=-1;xd.scored=false;}
xd=xd.next;}
if(nc){setTimeout("_d()",kb);}
else{while(yd!=null){xd=yd;yd=yd.next;xd.next=null;}
zd=null;setTimeout("ae(1)",kb);}
}
function ae(pd){var nc;var be=1;lc();qc();for(i=14;i>=0;i--){nc=false;for(j=0;j<16;j++){if(!nb[i][j].attached&&nb[i][j].sym!=-1){ce(nb[i][j],pd,be);nc=true;}
}
if(nc)be++;}
de();}
function de(){var nc=false;var ee=fe;while(ee!=null){if(ee.level>1){ee.level--;nc=true;}
else if(ee.level==1){ee.level--;ee.b.img.style.top=(ee.b.y+BALL_HEIGHT/2)+'px';nc=true;}
else if(ee.level==0){ee.level--;ee.b.img.style.top=(ee.b.y+BALL_HEIGHT)+'px';nc=true;}
else if(ee.level==-1){ee.level--;ee.b.img.src=cb.src;ee.b.img.style.top=ee.b.y+'px';ee.b.sym=-1;nc=true;vb+=ee.sc;td();}
ee=ee.next;}
if(nc){setTimeout("de()",mb);}
else{while(fe!=null){ee=fe;fe=fe.next;ee.next=null;}
ge=null;if(ab){ab=false;if(bb){bb=false;he();}
}
else{setTimeout("wc()",mb);}
}
}
function OList(B,L,pd,ie){this.b=B;this.next=L;this.sc=pd;this.level=ie;return this;}
var fe=null;var ge=null;function ce(B,pd,ie){var je=new OList(B,null,pd,ie);if(fe==null)fe=je;if(ge!=null)ge.next=je;ge=je;}
function DList(B,S,L,ie){this.b=B;this.sym=S;this.next=L;this.level=ie;return this;}
var yd=null;var zd=null;function wd(B,S,ie){var je=new DList(B,S,null,ie);if(yd==null)yd=je;if(zd!=null)zd.next=je;zd=je;}
function ke(zc){if(vc>0)return;zc=zc||window.event;var gd=$c(sb,zc);ed.x=gd.x-BALL_WIDTH/2-ob.x;ed.y=gd.y-BALL_HEIGHT/2-ob.y;var le=Math.round(Math.atan2(-ed.y,ed.x)*180.0/3.14159/5)-1;$b.src=hb[le].src;}
function xc(){ob.sym=pb.sym;ob.img.src=eb[ob.sym].src;var ac=bc(6);pb.sym=ac;qb.src=gb[ub].src;setTimeout("me()",kb);vc--;}
function me(){if(vc>0)return;pb.img.src=fb[pb.sym].src;}
function td(){var i,j;if(vb>wb){wb=vb;ne();}
xb.innerHTML='<p><b>Snood</b></p>'+'<p><u>امتياز</u><br>'+vb+'</p>'+'<p><u>رکورد</u><br>'+wb+'</p>';}
function oe(){var pe="bubble=";var qe=document.cookie.split(';');for(var i=0;i<qe.length;i++){var c=qe[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(pe)==0){wb=parseInt(c.substring(pe.length,c.length));}
}
}
function ne(){var pe="bubble=";var re=new Date();re.setUTCFullYear(1+re.getUTCFullYear());var c=pe+wb+"; expires="+re.toUTCString();document.cookie=c;}
function he(){if(ab){bb=true;return;}
vc=1000;vb=0;td();ub=0;qb.src=gb[ub].src;$b.src=cb.src;ob.img.src=cb.src;pb.img.src=cb.src;for(var i=0;i<16;i++){for(var j=0;j<16;j++){nb[i][j].sym=-1;nb[i][j].img.src=cb.src;}
}
for(i=0;i<8;i++){for(j=0;j<16;j++){if(bc(PBOMB)==0){ac=BOMB;}
else{var ac=dc();}
nb[i][j].img.src=eb[ac].src;nb[i][j].sym=ac;}
}
lc();pb.sym=bc(6);xc();vc=0;ab=false;bb=false;}
function se(n){for(var j=0;j<16;j++){if(nb[n][j].sym!=-1){nb[n][j].img.src=db.src;ce(nb[n][j],0,15-n);}
}
if(n>0){setTimeout("se("+(n-1)+")",mb);}
else{setTimeout("de()",mb);}
}
function te(){if(document.getElementById("hidecursor").checked){document.getElementById("arrowbox").style.cursor="url(snood/blank.cur), crosshair";document.getElementById("clickbox").style.cursor="url(snood/blank.cur), crosshair";}
else
{document.getElementById("arrowbox").style.cursor="crosshair";document.getElementById("clickbox").style.cursor="crosshair";}
}
function sb(){var ue;oe();document.write('<div id="bubble">');document.write('<div id="theboard">');ue=0;for(var i=0;i<16;i++){nb[i]=new Array();for(var j=0;j<16;j++){var ve="ball"+ue;document.write('<img src="snood/blank.gif" width="1" height="1" id="'+ve+'" style="position: absolute; z-index=1">');var Img=document.getElementById(ve);var y=TOP+ROW_HEIGHT*i;var x=LEFT+COL_WIDTH*j+(COL_WIDTH/2)*(i%2);Img.style.width=BALL_WIDTH+'px';Img.style.height=BALL_HEIGHT+'px';Img.style.top=y+'px';Img.style.left=x+'px';nb[i][j]=new Ball(Img,-1,x,y);nb[i][j].sym=-1;ue++;}
}
document.write('</div>');var we=document.getElementById("theboard");we.onmouseover=function(){return true;}
document.write('<img src="snood/blank.gif" width="1" height="1" id="shooter" style="position: absolute">');var Img=document.getElementById("shooter");var x=LEFT+8*COL_WIDTH;var y=TOP+16*ROW_HEIGHT;Img.style.width=BALL_WIDTH+'px';Img.style.height=BALL_HEIGHT+'px';Img.style.top=y+'px';Img.style.left=x+'px';Img.style.zIndex='2';ob=new Ball(Img,-1,x,y);document.write('<img src="snood/blank.gif" width="1" height="1" id="rainbow" style="position: absolute">');qb=document.getElementById("rainbow");qb.style.width=50+'px';qb.style.height=25+'px';qb.style.top=(y-12)+'px';qb.style.left=(LEFT-2)+'px';document.write('<img src="snood/blank.gif" width="1" height="1" id="nextshot" style="position: absolute">');var Img=document.getElementById("nextshot");var x=LEFT;var y=TOP+16*ROW_HEIGHT;Img.style.width=BALL_WIDTH+'px';Img.style.height=BALL_HEIGHT+'px';Img.style.top=y+'px';Img.style.left=(x+12)+'px';pb=new Ball(Img,-1,x,y);document.write('<div id="statusbox"></div>');xb=document.getElementById('statusbox');document.write('<div id="clickbox"></div>');yb=document.getElementById('clickbox');document.write('<div id="arrowbox"><img id="arrow" src="snood/blank.gif"></div>');zb=document.getElementById('arrowbox');$b=document.getElementById('arrow');$b.style.width=100+'px';$b.style.height=50+'px';$b.style.top=ob.y+BALL_HEIGHT/2-50+'px';$b.style.left=ob.x+BALL_WIDTH/2-50+'px';document.write('<div id="buttonbox">');document.write('  <input type="button" id="restartbtn" value="ازنو" onclick="he()">  ');document.write('</div>');document.write('</div>');sb=document.getElementById("bubble");yb.onmouseup=fd;yb.onmousedown=function(){return false}
;yb.onmousemove=ke;yb.onmouseout=function(){$b.src=cb.src}
;bd();oe();td();he();}
