var TILE_BACKSIDE=new Image(100,100);TILE_BACKSIDE.src="sets/tile.gif";var EMPTY_IMAGE=new Image(1,1);EMPTY_IMAGE.src='sets/0.gif';var MODE_PLAY=1;var MODE_FULL_IMAGE=1<<1;var MODE_INIT=1<<2;var MODE_HIGHSCORES=1<<3;var MODE_FINISHED=1<<4;var MODE_INITIALISED=1<<5;var MODE_LOADING=1<<6;var HIGHSCORES_CONTAINER='highscoresContainer';var HIGHSCORES_FRAME='highscores';var TRAIL_COLORS=['#0000ff','#00a0ff'];var ab=0;function PairsImageInfo(bb,cb,db,eb,fb,gb){this.fullImage=new Image();this.fullImage.isLoaded=false;this.fullImage.onload=this.onLoadFullImage;this.fullImageSource=db;this.publisher=eb;this.leftImage=new Image(100,100);this.leftImage.onload=hb;this.leftImage.src=bb;this.rightImage=new Image(100,100);this.rightImage.onload=hb;this.rightImage.src=cb;this.linkColor=fb;this.arrowUrl=gb;}
PairsImageInfo.prototype.onLoadFullImage=function(){this.isLoaded=true;ib();}
function ImageRef(jb,kb){this.imageIndex=jb;this.isLeftImage=kb;}
var lb;var mb;var images;var nb=false;var ob=0;var pb=null;var qb=0;var rb=MODE_PLAY;var TAIL_LENGTH=2;var sb=new Array();var tb=new Array();var ub;var vb=null;var wb=false;function xb(){nb=!nb;alert('cheat: '+nb);}
function ib(){for(var i=0;i<images.length;i++){if(!images[i].fullImage.isLoaded){images[i].fullImage.src=images[i].fullImageSource;return;}
}
}
function yb(){if(wb){zb('loadingImage');}
}
function hb(){ab++;}
function updateLoadingStatus(){var $b=Math.floor(100*ab/(images.length*2));_b("loadingStatus",$b+'%');if(ab>=2*images.length){zb('waitForReady');ib();}
else{window.setTimeout('updateLoadingStatus()',500);}
}
function initGame(ac,bc,cc,dc){rb=MODE_INIT;qb=0;lb=ac;mb=bc;vb='';ob=0;ec();tb=new Array();fc=null;sb=new Array();ub=dc;images=cc;rb=MODE_INITIALISED;updateLoadingStatus();}
function gc(){updateTime();while(sb.length>0){hc(sb.pop());}
var ic="enter_highscore.html?moves="+qb+"&time="+ob+"&proof="+jc();window.open(ic,HIGHSCORES_FRAME);rb=MODE_HIGHSCORES|MODE_FINISHED;kc(HIGHSCORES_CONTAINER);lc();}
function jc(){return encodeURI(vb);}
function dismissHighscores(){window.open("about:blank",HIGHSCORES_FRAME);rb=MODE_FINISHED;zb(HIGHSCORES_CONTAINER);}
function mc(nc){document.images['t'+nc].src=TILE_BACKSIDE.src;hc(nc);}
function oc(i){document.images['t'+i].src=TILE_WHITE.src;}
function flip(nc){if(pc(MODE_INIT||MODE_HIGHSCORES)||ab<images.length*2){return;}
else if(pc(MODE_INITIALISED)){rb=MODE_PLAY;pb=new Date();updateTime();}
if(pc(MODE_FULL_IMAGE)){dismissFullImage();}
var qc=ub[nc];if(rc(qc.imageIndex)){sc(qc.imageIndex);return;}
sb.unshift(nc);var tc=false;if(sb.length>1){var uc=sb[1];if(nc==uc){sb.shift();return;}
vc();var wc=ub[uc].imageIndex;if(wc==qc.imageIndex){if(tb.length>0){vb=vb+'-';}
vb=vb+uc+'-'+nc;xc(qc.imageIndex);_b('foundCounter',tb.length);sc(qc.imageIndex);tc=tb.length>=images.length;}
}
qb++;_b('movesCounter',qb);yc(nc);zc();if(tc){gc();}
}
function sc($c){var _c=images[$c];var ad=new Image();ad.src=_c.fullImageSource;wb=true;document.images['fullImage'].onload=yb;if(bd()){zb('loadingImage');}
else{kc('loadingImage');}
document.images['fullImage'].src=ad.src;var ic="goto_publisher.html?image="+$c;document.getElementById('publisher').href=ic;document.getElementById('publisher').style.color=_c.linkColor?_c.linkColor:lb;document.getElementById('publisher_caption').style.color=_c.linkColor?_c.linkColor:lb;var cd=new Image();cd.src=_c.arrowUrl?_c.arrowUrl:mb;document.images['arrowImage'].src=cd.src;document.getElementById('publisher_arrow').href=ic;_b('publisher_text',images[$c].publisher);kc('fullImageContainer');kc('publisher_caption');rb|=MODE_FULL_IMAGE;}
function vc(){while(sb.length>TAIL_LENGTH){var dd=sb.pop();var ed=sb[sb.length-1];if(fd(dd,ed)){hc(dd);hc(sb.pop());}
else{mc(dd);}
}
}
function zc(){var gd=TRAIL_COLORS[0];var i;for(i=0;i<sb.length;i++){if(i<TRAIL_COLORS.length){gd=TRAIL_COLORS[i];}
hd(sb[i],gd);}
}
function fd(id,jd){var kd=ub[id];var ld=ub[jd];return kd.imageIndex==ld.imageIndex;}
function pc(md){return rb&md;}
function nd(){return pc(MODE_SECOND_TILE);}
function updateTime(){if(pc(MODE_PLAY)){var od=new Date();ob=od.getTime()-pb.getTime();ec();window.setTimeout("updateTime()",1000);}
}
function ec(){var pd=Math.floor(ob/1000);var qd=Math.floor(pd/60);var rd=Math.floor(qd/60);_b("time",sd(rd,2)+':'+sd(qd%60,2)+':'+sd(pd%60,2));}
function sd(td,length){var ud=0;var vd='';while(td>0){vd=td%10+vd;td=Math.floor(td/10);ud++;}
for(;ud<length;ud++){vd='0'+vd;}
return vd;}
function _b(wd,xd){document.getElementById(wd).firstChild.nodeValue=xd;}
function yd(array,element){for(var i=0;i<array.length;i++){if(array[i]===element){return true;}
}
return false;}
function rc(zd){return yd(tb,zd);}
function yc(nc){var qc=ub[nc];var $d=images[qc.imageIndex];var image=qc.isLeftImage?$d.leftImage:$d.rightImage;document.images['t'+nc].src=image.src;}
function hd(nc,_d){document.images['t'+nc].style.borderColor=_d;document.images['t'+nc].style.borderStyle='solid';}
function hc(nc){document.images['t'+nc].style.borderColor='#ffffff';}
function xc($c){tb.push($c);}
function dismissFullImage(){rb=rb&(~MODE_FULL_IMAGE);zb('publisher_caption');zb('fullImageContainer');document.getElementById('publisher').href='';document.getElementById('publisher_arrow').href='';_b('publisher','Loading...');wb=false;document.images['fullImage'].onload=yb;document.images['fullImage'].src=EMPTY_IMAGE.src;}
function lc(){if(tb.length<images.length){throw("Not all images found yet");}
for(var i=0;i<ub.length;i++){ub[i]=new ImageRef(Math.floor(i/2),i%2==0);}
for(var i=0;i<ub.length;i++){yc(i);}
}
function kc(ae){document.getElementById(ae).style.visibility='visible';document.getElementById(ae).style.display='inline';}
function zb(ae){document.getElementById(ae).style.visibility='hidden';document.getElementById(ae).style.display='none';}
function bd(){return window.opera;}
