/* 

If you like this script and would like to use it on your own site for non-commercial purposes

then please contact me at stewart@puzzlerscave.com just to let me know your using it, and a mention 

on you site that would be great. Commercial use is of this script is permitted as long as 

a link is provided to www.puzzlerscave.com in the vicinity of the crossword. Please contact me

at stewart@puzzlerscave.com if you plan to use it commercially.



Many Thanks 

Stewart



Copyright 2004 www.puzzlerscave.com.

*/



var gT8="focuspcbkgnd"; var AZ8="activepcbkgnd"; var CTg="pcbkgnd"; var wK6="wrongpcbkgnd"; var iLm="focuspc"; var fIw="activepc"; var F05="pc"; var V6I="wrongpc"; var AXU="activeclue"; var nLo="clue"; var aao="Cell"; var _Qq="Text"; var WmE="Clue"; var _hk=40; var Kkr=39; var soP=38; var WbZ=37; var a7E=8; var LyD=46; var BVa=32; var YTx=13; var D7n=1; var OUt=2; var OWn=false; var dOe=-1; var __f=-1; function _5r(){for( var j5c=0;j5c<(nRows*nColumns);j5c++){if( document.getElementById(_Qq+j5c) ){ document.getElementById(aao+j5c).className=CTg; document.getElementById(_Qq+j5c).className=F05; }}OWn=false;} function E5t(KZE,Dz0,Sgv){ var KZE=Number(KZE);if(KZE<0||KZE>(nRows*nColumns)) return;  document.getElementById(_Qq+KZE).className=Dz0;  document.getElementById(aao+KZE).className=Sgv; } function _M2(PqR,mFT,EC6){for(var nLoop=0;nLoop<CA[PqR].length;nLoop+=3)E5t(CA[PqR].substring(nLoop,nLoop+3),mFT,EC6); } function tmV(ONp){ return (ONp%nColumns)+1;} function tSi(Rip){ var ezI=Number("0."+Rip%nColumns); var Hjl=Math.round((Rip/nColumns)-ezI);if(Rip%nColumns!=0)Hjl+=1; return Hjl;} function qdy(oO2){if(oO2<0||oO2>nClueCount-1) return; if((Number(CA[oO2].substring(3,6))-Number(CA[oO2].substring(0,3)))==1)  return D7n; else  return OUt;} function bmG(WuW,Z1A){ var qaU= new Array(); var RSZ= new Array(); var F_H= new Array();if(Z1A&&__f!=-1&&__f!=WuW){for(var nClueId=0;nClueId<nClueCount;nClueId+=1)for(var nCheckCellId=0;nCheckCellId<CA[nClueId].length;nCheckCellId+=3)if(Number(CA[nClueId].substring(nCheckCellId,nCheckCellId+3))==__f) qaU[qaU.length]=nClueId;}for(var nClueId=0;nClueId<nClueCount;nClueId+=1){for(var nCheckCellId=0;nCheckCellId<CA[nClueId].length;nCheckCellId+=3){if(Number(CA[nClueId].substring(nCheckCellId,nCheckCellId+3))==WuW) {RSZ[RSZ.length]=nClueId;F_H[F_H.length]=nCheckCellId;}}}if(Z1A&&qaU.length>0){for(old=0;old<qaU.length;++old)for(clue=0;clue<RSZ.length;++clue)if(qaU[old]==RSZ[clue]&&qaU[old]!=dOe) return qaU[old];}for(i=0;i<F_H.length;++i)if(F_H[i]==0&&RSZ[i]==dOe&&WuW!=__f) return RSZ[i];for(i=0;i<F_H.length;++i)if(F_H[i]==0&&WuW!=__f) return RSZ[i];for(i=0;i<RSZ.length;++i)if(WuW!=__f&&RSZ[i]==dOe) return RSZ[i];for(i=0;i<RSZ.length;++i)if(RSZ[i]!=dOe) return RSZ[i]; return -1;} function tzs(kN6,MTX){for(var nCheckCellId=0;nCheckCellId<CA[MTX].length;nCheckCellId+=3)if(Number(CA[MTX].substring(nCheckCellId,nCheckCellId+3))==kN6)  return true; return false;} function CAb(KrP){ var rhc=(tSi(__f+1)-1)*nColumns; var Lnb=tmV(__f+1)-1; var Nht=(tSi(__f+1)*nColumns)-1; var UYI=((nRows-1)*nColumns)+(tmV(__f+1)-1);switch(KrP){case soP:if(__f!=Lnb)SC(__f-nColumns,true);break;case _hk:if(__f!=UYI)SC(__f+nColumns,true);break;case WbZ:if(__f!=rhc)SC(__f-1,true);break;case Kkr:if(tmV(__f)<nColumns)SC(__f+1,true);break;}} function OKP(uZ0){if(OWn)_5r(); var DV_=(uZ0.which)?uZ0.which:uZ0.keyCode; var RDI=(tSi(__f+1)-1)*nColumns; var hZW=tmV(__f+1)-1; var Mlh=(tSi(__f+1)*nColumns)-1; var _Y2=((nRows-1)*nColumns)+(tmV(__f+1)-1);switch(DV_){case soP:case _hk:case WbZ:case Kkr:CAb(DV_);break;case YTx: document.getElementById(_Qq+__f).value=""; SC(__f);break;case BVa: document.getElementById(_Qq+__f).value=""; if(qdy(dOe)==D7n)CAb(Kkr); else CAb(_hk);break;case a7E: document.getElementById(_Qq+__f).value=""; if(qdy(dOe)==D7n)CAb(WbZ); else CAb(soP);break;case LyD: document.getElementById(_Qq+__f).value=""; break;default:if(DV_>=65&&DV_<=90){ document.getElementById(_Qq+__f).value=String.fromCharCode(DV_); if(qdy(dOe)==D7n)CAb(Kkr); else CAb(_hk);}break;}} function CCH(_4H){j5c=Number(CA[_4H].substring(0,3)); if(__f!=-1)E5t(__f,F05,CTg);if(dOe!=-1&&_4H!=-1&&dOe!=_4H){_M2(dOe,F05,CTg); document.getElementById(WmE+dOe).className=nLo; }if(_4H!=-1)dOe=_4H;__f=j5c;_M2(dOe,iLm,gT8);E5t(__f,fIw,AZ8); document.getElementById(WmE+dOe).className=AXU;  document.getElementById(_Qq+j5c).focus();  document.getElementById(_Qq+j5c).select(); } function SC(Jd3,wFR){if(OWn)_5r();if(Jd3<0||Jd3>(nRows*nColumns)){ return; } else if(!document.getElementById(_Qq+Jd3)) { document.getElementById(_Qq+__f).select();  return; }if(wFR&&__f!=-1){if(tzs(Jd3,dOe)) var JvD=-1; else  var JvD=bmG(Jd3,wFR);} else { var JvD=bmG(Jd3,wFR);}if(__f!=-1)E5t(__f,F05,CTg);if(dOe!=-1&&JvD!=-1&&dOe!=JvD){_M2(dOe,F05,CTg); document.getElementById(WmE+dOe).className=nLo; }if(JvD!=-1)dOe=JvD;__f=Jd3;_M2(dOe,iLm,gT8);E5t(__f,fIw,AZ8); document.getElementById(WmE+dOe).className=AXU;  document.getElementById(_Qq+Jd3).focus();  document.getElementById(_Qq+Jd3).select(); } function RC(VyK){if(OWn)_5r();if(VyK==undefined) VyK=dOe;if(VyK<0||VyK>nClueCount-1) return;  var C1d=0;for(var nLoop=0;nLoop<CA[VyK].length;nLoop+=3){ var hom=_Qq+Number(CA[VyK].substring(nLoop,nLoop+3));  document.getElementById(hom).value =WA[VyK].substring(C1d++,C1d); }} function RA(){if(!confirm("This will reveal all the answers to the crossword. Press OK if you want to continue.") ) return; if(OWn)_5r();if(dOe!=-1){_M2(dOe,F05,CTg); document.getElementById(WmE+dOe).className=nLo; }dOe=-1;for( var nLoop=0;nLoop<nClueCount;nLoop++)RC(nLoop);} function R(){if(OWn)_5r();for( var j5c=0;j5c<(nRows*nColumns);j5c++){if( document.getElementById(_Qq+j5c))  document.getElementById(_Qq+j5c).value ="";}} function PG(){if(OWn)_5r();dOe=-1;for( var nLoop=0;nLoop<nClueCount;nLoop++)RC(nLoop);for( var j5c=0;j5c<(nRows*nColumns);j5c++){if( document.getElementById(_Qq+j5c))  document.getElementById(_Qq+j5c).readOnly =true;}} function GRS(){ var laS=""; var WAQ="";for( var i=0;i<nRows*nColumns;++i){if((element= document.getElementById("Text" +i))){if(element.value!=""){WAQ=WAQ+laS+i+":"+element.value;laS="|";}}} return WAQ;} function SE(){if(dOe!=-1)_M2(dOe,F05,CTg);for( var nClueId=0;nClueId<nClueCount;nClueId++){for(var cellPos=0,letterPos=0;cellPos<CA[nClueId].length;cellPos+=3,++letterPos){ var Mjn=Number(CA[nClueId].substring(cellPos,cellPos+3));  var jgA=WA[nClueId].substring(letterPos,letterPos+1);  var PJ1= document.getElementById(_Qq+Mjn).value.toUpperCase(); if(PJ1!=""&&PJ1!=jgA){ document.getElementById(aao+Mjn).className=wK6;  document.getElementById(_Qq+Mjn).className=V6I; }}}OWn=true;} function RS(ai7,Zk1){dOe=Zk1;__f=ai7;_M2(dOe,iLm,gT8);E5t(__f,fIw,AZ8); document.getElementById(WmE+dOe).className=AXU;  document.getElementById(_Qq+__f).focus();  document.getElementById(_Qq+__f).select(); } function GCCL(){ return dOe;} function GCCE(){ return __f;}