var sa_book=function(){var u=6,n=6,h=20;function d(I){var E,C,G,J,H=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,process:function(M){return[parseInt(M[1]),parseInt(M[2]),parseInt(M[3])]}},{re:/^(\w{2})(\w{2})(\w{2})$/,process:function(M){return[parseInt(M[1],16),parseInt(M[2],16),parseInt(M[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,process:function(M){return[parseInt(M[1]+M[1],16),parseInt(M[2]+M[2],16),parseInt(M[3]+M[3],16)]}}];I=I.replace(/ /g,"");I=I.toLowerCase();if(I.charAt(0)=="#"){I=I.substr(1,6)}for(E=0;E<H.length;E++){var L=H[E].re,D=H[E].process,K=L.exec(I),F;if(K){F=D(K);C=F[0];G=F[1];J=F[2]}}C=(C<0||isNaN(C))?0:((C>255)?255:C);G=(G<0||isNaN(G))?0:((G>255)?255:G);J=(J<0||isNaN(J))?0:((J>255)?255:J);C=C.toString(16);G=G.toString(16);J=J.toString(16);if(C.length==1){C="0"+C}if(G.length==1){G="0"+G}if(J.length==1){J="0"+J}return"#"+C+G+J}function y(C,D){this.x=C;this.y=D}function v(E){var D=0,C=0;if(E.offsetParent){while(1){D+=E.offsetLeft;C+=E.offsetTop;if(!E.offsetParent){break}E=E.offsetParent}}else{if(E.x){D+=E.x;C+=E.y}}return new y(D,C)}function z(C){return document.getElementById(C)}function i(D,F){if(!D){return}var E=D.length;if(E==undefined){D.checked=(D.value==F.toString());return}for(var C=0;C<E;C++){D[C].checked=false;if(D[C].value==F.toString()){D[C].checked=true}}}function f(C,E){var D=new Array("[All sizes] - every page will have a spectrum of all sizes available - one of each size per puzzle - from 4x4 to 9x9.","[Random levels] - each puzzle may have any (unpredictable) level from Easy to Extreme.<br /><br />[All levels] - every page will have a spectrum of all levels available - one of each levels per puzzle - from Easy to Extreme.","B&amp;W (black and white) are high-contrast themes that look good on any printer.<br /><br />Color themes are better suited for color printers even though you can print them on B&amp;W printer as well (as shades of grey).","Patterns are available only for some sizes like 9x9 and may be disabled for some others based on your selection. 9x9 have the most pattern choices. Regardless of the level you choose patterns have their own levels based on the pattern itself.<br /><br />[Random patterns] - each puzzle may have any (unpredictable) pattern from the available ones.<br /><br />[All patterns] - a spectrum of all patterns available. After they run out they start all over again.","Close this group and move following groups to the left.","Add new group.");z("saTooltipText").innerHTML=D[C];z("saTooltip").style.display="block";z("saTooltip").style.left=v(E).x+5+"px";z("saTooltip").style.top=v(E).y+32+"px"}function g(){z("saTooltip").style.display="none"}function w(C,F){var G=z("saPattern"+C),E=new Array(0,7,8,9),D;E[7]=new Array("Sun","Yin Yang");E[8]=new Array("Smiley Face","Space Invader A","Heart","Arrow","Butterfly");E[9]=new Array("Smiley Face","Sad Face","Letter B","[x]","Pac Man 1","Pac Man 2","Cherry","Note","Heart","Arrow","Omega","Diamond","Spade","Yin Yang","Space Invader A","Space Invader B","Space Invader C","Butterfly","Sun","Moon","Ankh","Star","Bell","Snowflake","Christmas Tree 1","Christmas Tree 2","Christmas Ornament");G.length=0;if(F==0){G.options[0]=new Option("[- None -]","none");G.options[0].style.color="blue"}else{G.options[0]=new Option("[- None -]","none");G.options[1]=new Option("[- Random Patterns -]","rnd");G.options[2]=new Option("[- All Patterns -]","all");G.options[0].style.color="blue";G.options[1].style.color="blue";G.options[2].style.color="blue";for(D=0;D<E[F].length;D++){G.options[G.length]=new Option(E[F][D],D+1)}}G.selectedIndex=0}function A(E,G){var C=z(G),D=z(E);D.length=0;for(var F=0;F<C.length;F++){D.options[F]=new Option(C.options[F].text,C.options[F].value,C.options[F].defaultSelected,C.options[F].selected);D.options[F].style.color=C.options[F].style.color}}function c(E,G,D){var C,F=z(E);F.length=0;for(C=G;C<=h;C++){F.options[F.length]=new Option(C,C,false,((C==D)?true:false))}}function t(){var D,C=0;for(D=1;D<=n;D++){if(m(D)){C++}}return C}function m(C){if(z("saOptionsDiv"+C).style.display!="none"){return true}return false}function b(C){z("saSize"+C).selectedIndex=z("saSize"+C).length-1;z("saLevel"+C).selectedIndex=0;z("saTheme"+C).selectedIndex=0;z("saPattern"+C).selectedIndex=0;k("saSize"+C)}function a(C){z("saOptionsDiv"+C).style.display="block";b(C);if(t()>=n){z("saOptionsDivAdd").style.display="none"}}function e(C){z("saOptionsDiv"+C).style.display="none";if(t()<n){z("saOptionsDivAdd").style.display="block"}}function j(C){var H,E,G,D,F;for(H=C;H>0;H--){if(H<C){E=z("saPagesA"+H).innerHTML*1;D=z("saPagesA"+(H+1)).innerHTML*1;G=z("saPagesB"+H).options[z("saPagesB"+H).selectedIndex].value*1;F=z("saPagesB"+(H+1)).options[z("saPagesB"+(H+1)).selectedIndex].value*1;if(G!=D-1){G=D-1;if(E>G){E=G}z("saPagesA"+H).innerHTML=E;c("saPagesB"+H,E,G)}}else{z("saPagesA"+H).innerHTML=h;c("saPagesB"+H,h,h)}}q()}function o(C){var H,E,G,D,F;for(H=C+1;H<=n;H++){E=z("saPagesA"+(H-1)).innerHTML*1;D=z("saPagesA"+H).innerHTML*1;G=z("saPagesB"+(H-1)).options[z("saPagesB"+(H-1)).selectedIndex].value*1;F=z("saPagesB"+H).options[z("saPagesB"+H).selectedIndex].value*1;if(G+1<=h){if(!m(H)){a(H)}z("saPagesA"+H).innerHTML=G+1;if(H<n){c("saPagesB"+H,G+1,F)}else{c("saPagesB"+H,h,h)}}else{if(m(H)){e(H)}z("saPagesA"+H).innerHTML=h;c("saPagesB"+H,h,h)}}q()}function s(){for(var C=1;C<=n;C++){z("saPreviewImg"+C).src="/ws/pic/print/print-preview-"+((z("saPattern"+C).options[z("saPattern"+C).selectedIndex].value=="none")?"regular":"pattern")+"-"+z("saSize"+C).options[z("saSize"+C).selectedIndex].value+".png"}}function r(){var C=t();if(C<n){C++;if(!m(C)){a(C)}j(C);s()}else{alert("You have added maximum possible puzzle groups.")}q()}function p(C){var F,E=t(),D=C.substr(0,C.length-1),G=C.substr(C.length-1,1)*1;if(E>1){if(m(E)){e(E)}if(G==E){z("saPagesB"+(E-1)).options.selectedIndex=z("saPagesB"+(E-1)).length-1}else{z("saPagesA"+(G+1)).innerHTML=z("saPagesA"+G).innerHTML;for(F=G;F<E;F++){z("saPagesA"+F).innerHTML=z("saPagesA"+(F+1)).innerHTML;if(F==1){c("saPagesB"+F,1,z("saPagesB"+(F+1)).options[z("saPagesB"+(F+1)).selectedIndex].value*1)}else{c("saPagesB"+F,z("saPagesA"+F).innerHTML*1,z("saPagesB"+(F+1)).options[z("saPagesB"+(F+1)).selectedIndex].value*1)}A("saSize"+F,"saSize"+(F+1));A("saLevel"+F,"saLevel"+(F+1));A("saTheme"+F,"saTheme"+(F+1));A("saPattern"+F,"saPattern"+(F+1))}}o(E-1);s()}else{alert("This is the last puzzle group which cannot be closed.")}q()}function k(C){var D=C.substr(0,C.length-1),F=C.substr(C.length-1,1)*1,G=z(C),E=parseInt(G.options[G.selectedIndex].value);E=isNaN(E)?0:E;switch(E){case 7:case 8:case 9:w(F,E);break;default:w(F,0);break}s()}function x(D){h=D;n=(D<u)?D:u;i(document.forms.saForm.elements.saPuzzlesNum,h);z("saPagesA1").innerHTML=1;c("saPagesB1",1,h);b(1);for(var C=2;C<=n;C++){if(m(C)){e(C)}b(C)}o(1);q()}function B(){var D,C=new Array();C[0]=z("saOptionsDivBase").innerHTML;for(D=1;D<=n;D++){C[1]=C[0];C[1]=C[1].replace(/__1/g,D);C[1]=C[1].replace(/__2/g,n);z("saOptionsDivContainer").innerHTML+=C[1]}z("saOptionsDiv__1").innerHTML="";z("saOptionsDiv__1").style.display="none";x(h);for(D=1;D<=n;D++){k("saSize"+D)}q()}function l(C){x(h);switch(C){case 1:z("saPagesB1").selectedIndex=Math.floor(h*0.5)-1;o(1);z("saPattern2").selectedIndex=2;s();break;case 2:z("saPagesB1").selectedIndex=Math.floor(h*0.2)-1;o(1);z("saPagesB2").selectedIndex=Math.floor(h*0.2)-1;o(2);z("saPagesB3").selectedIndex=Math.floor(h*0.2)-1;o(3);z("saPagesB4").selectedIndex=Math.floor(h*0.15)-1;o(4);z("saPagesB5").selectedIndex=Math.floor(h*0.15)-1;o(5);z("saSize1").selectedIndex=1;k("saSize1");z("saSize2").selectedIndex=2;k("saSize2");z("saSize3").selectedIndex=3;k("saSize3");z("saSize4").selectedIndex=4;k("saSize4");z("saLevel1").selectedIndex=2;z("saLevel2").selectedIndex=2;z("saLevel3").selectedIndex=2;z("saLevel4").selectedIndex=2;z("saLevel5").selectedIndex=2;z("saPattern6").selectedIndex=2;s();break;case 3:z("saPagesB1").selectedIndex=Math.floor(h*0.2)-1;o(1);z("saPagesB2").selectedIndex=Math.floor(h*0.2)-1;o(2);z("saPagesB3").selectedIndex=Math.floor(h*0.2)-1;o(3);z("saPagesB4").selectedIndex=Math.floor(h*0.15)-1;o(4);z("saPagesB5").selectedIndex=Math.floor(h*0.15)-1;o(5);z("saSize1").selectedIndex=3;k("saSize1");z("saSize2").selectedIndex=4;k("saSize2");z("saLevel1").selectedIndex=3;z("saLevel2").selectedIndex=3;z("saLevel3").selectedIndex=3;z("saLevel4").selectedIndex=4;z("saLevel5").selectedIndex=5;z("saPattern6").selectedIndex=2;s();break;case 4:z("saPagesB1").selectedIndex=Math.floor(h*0.2)-1;o(1);z("saPagesB2").selectedIndex=Math.floor(h*0.2)-1;o(2);z("saPagesB3").selectedIndex=Math.floor(h*0.2)-1;o(3);z("saPagesB4").selectedIndex=Math.floor(h*0.3)-1;o(4);z("saSize1").selectedIndex=4;k("saSize1");z("saLevel1").selectedIndex=4;z("saLevel2").selectedIndex=4;z("saLevel3").selectedIndex=5;z("saLevel4").selectedIndex=6;z("saPattern5").selectedIndex=2;s();break;case 5:z("saPagesB1").selectedIndex=Math.floor(h*0.4)-1;o(1);z("saPagesB2").selectedIndex=Math.floor(h*0.4)-1;o(2);z("saSize1").selectedIndex=1;k("saSize1");z("saSize2").selectedIndex=2;k("saSize2");z("saSize3").selectedIndex=3;k("saSize3");z("saLevel1").selectedIndex=2;z("saLevel2").selectedIndex=2;z("saLevel3").selectedIndex=2;s();break;case 6:z("saPagesB1").selectedIndex=Math.floor(h*0.5)-1;o(1);z("saSize1").selectedIndex=4;k("saSize1");z("saPattern1").selectedIndex=2;z("saPattern2").selectedIndex=2;s();break;default:break}}function q(){for(var H=1;H<n;H++){var E=z("saPagesA"+H).innerHTML*1,D=z("saPagesA"+(H+1)).innerHTML*1,G=z("saPagesB"+H).options[z("saPagesB"+H).selectedIndex].value*1,F=z("saPagesB"+(H+1)).options[z("saPagesB"+(H+1)).selectedIndex].value*1,C=((z("saOptionsDiv"+H).style.display=="none")?false:true),I=((z("saOptionsDiv"+(H+1)).style.display=="none")?false:true);if(H==1&&E!=1){alert("DEBUG_CheckAllPages Error 1 - i="+H+" a0="+E)}if(C&&!I&&G!=h){alert("DEBUG_CheckAllPages Error 2 - i="+H+" b0="+G)}if(H==(n-1)&&F!=h){alert("DEBUG_CheckAllPages Error 3 - i="+H+" b1="+F)}if(C&&I&&D!=(G+1)){alert("DEBUG_CheckAllPages Error 4 - i="+H+" a1="+D+" b0="+G)}if(!C&&(E!=h||G!=h)){alert("DEBUG_CheckAllPages Error 5 - i="+H+" a0="+E+" b0="+G)}if(!I&&(D!=h||F!=h)){alert("DEBUG_CheckAllPages Error 6 - i="+H+" a1="+D+" b1="+F)}}}return{showTooltip:f,hideTooltip:g,SelectSize:k,ButtonPanelAdd:r,ButtonPanelClose:p,FixPanelPagesRight:o,SetPages:x,UpdatePreviewImages:s,SetPreset:l,Init:B,sudokuarena:"(c)sudokuarena.com"}}();
