﻿// JScript 文件
// 原始版权信息：Copyright (C) 2005 David J. Nixon. All Rights Reserved.
// Chocobo于2006年8月修改原程序，并添加以下功能：耗时/全手动键盘/高亮/可能数模式/部分提示/全数据库调用/完成提交/AJAX调用实时信息。用于恰客网/天幻网数独子站，http://SD.QIAK.COM
var j6="indexOf",r6=(navigator.userAgent.toLowerCase()[j6]('safari')<0),b3="123456789",c4="ABCDEFGHI",h8="#fff",e5="#ddd",d=document,t7=window,w8="red",i2="hidden",e8="visible",k4="innerHTML",s1="checked",m9="backgroundColor",x5="style",r9="innerHTML",r10="width",m2="contentDocument",e4="substr",j3="charCodeAt",j8="charAt",w6="<div style='position:absolute;left:",r2="pt arial,sans-serif;",h3="<b>排除:</b> ",g6="<b>完成！</b>",v4="<b>卡住:</b> ",b8="sduk",x4="?pos=",m=n=g5=g3=h5=r3=k6=x6=h4=0,z,t,x,h=new Array(5),a5=new Array(5),w=new Array(81),b=h2=l8=b6="",l1=1,n2=9,i6,c2,r5,c8,hint,b1,k2,v1,v2,l6,o=new Array(0,0,0,3,3,3,6,6,6),costTime=0,now_r=now_c=-1,nowcolor="#ffffff",nowHightLightNum=-1,SDID=Levels=OnLogin=0,xmlHttp,xmlHttp2,onFinish=0,GuessItemUsed=SolveItemUsed=0;
function Init()
{
A3();
//c8="-7-----6-92-3-8-47--8---5---4--3--7----9-4----6--8--9---6---9--59-8-1-23-3-----8-"
//b1="-7-----6-92-3-8-47--8---5---4--3--7----9-4----6--8--9---6---9--59-8-1-23-3-----8-"
I();
g3=1;
B6()
v1[k4]="<b>提示：</b>双击可删除已填数字,重选可删除可能数"
if(!h4)B4();
FillHint();
displaytime();
ShowAnnouce();
}

function P()
{    
	if(OnLogin==0){
        v1[k4]="<b>提示：</b>非登陆用户无法参与排名,请刷新本页获取新题"
        return;
    }
	var tb,HasInvalid;
	tb=M();
	onFinish=1;
	if(B2()){
	    v1[k4]="<b>提示：</b>有填错的格子！";
	    return;
	}
	onFinish=0;
	if(tb.indexOf("-")>=0){v1[k4]="<b>提示：</b>还有没填完的格子";}
	else{
	    doPost("SD=" + M() + "&L=" + Levels + "&C=" +costTime,"SDEnd.ashx?SID=" + SDID)
	}
}
function FillHint(){
    var sarray=new Array();
    var r,c;
    sarray=hint.split(",");
    for(r=0;r<9;r++)for(c=0;c<9;c++)A("u"+r+c)[k4]=sarray[r*9+c]; 
}
function displaytime()
{
costTime++;
A("timeSpan")[k4]="总用时："+ parseInt(costTime/3600)+" 小时 "+parseInt(costTime/60)%60+" 分 "+costTime%60+" 秒";
setTimeout("displaytime()", 1000);
}

function ShowAnnouce()
{
    GetAnnouce("A=1","SDAnnouce.ashx");
    setTimeout("ShowAnnouce()", 10000);
}

function B6()
{
	var i;
	A7();
	v1[k4]=b;
	l6[k4]=k2;
	V(1);
	if(A("da")[s1])Q();
}

function B8()
{
return t7.location.search
}
function B(i,j)
{
A(i)[k4]=j
}
function A(i)
{
return d.getElementById(i)
}
function B7(i,j)
{
A(i)[x5].visibility=j
}
function U(t5)
{
var r,c,v,t4=0;
if(t5)
{
if(h[n]>0)
{
v=-x[n][--h[n]];
c=x[n][--h[n]];
r=x[n][--h[n]];
t4=1
}

}
else if(a5[n]>h[n])
{
r=x[n][h[n]++];
c=x[n][h[n]++];
v=x[n][h[n]++];
t4=1
}
if(t4)
{
w[r*9+c][r9]=v>0?v:b;
v>0?O(r,c,v):A4();
B2();
B3();
}
N()
}
function A2(r,c,v)
{
var i;
while(h[n]>242)
{
for(i=0;i<243;i++)x[n][i]=x[n][i+3];
h[n]-=3
}
x[n][h[n]++]=r;
x[n][h[n]++]=c;
x[n][h[n]++]=v;
a5[n]=h[n];
N()
}
function N()
{
A("n5").disabled=!h[n];
A("n6").disabled=h[n]==a5[n]
}
function A5()
{
h[n]=a5[n]=0;
N()
}
function V(n6)
{
var r,c;
if(g3)
{
F();
if(A("qa")[s1])B2();
else if(!n6)for(c=0;c<9;c++)for(r=0;r<9;r++)A8(r,c,h8)
}

}
function B2()
{
    var r,c,rr,cc,i,y3,HasInvalid=false;
    if(A("qa")[s1]||onFinish)
        for(c=0;c<9;c++)for(r=0;r<9;r++)
        {
            y3=1;
            i=t[r][c];
            if(i)
            {
                for(cc=0;cc<9;cc++)
                    if(c-cc&&i==t[r][cc])
                    {
                        y3=0;
                        A8(r,cc,w8)
                        HasInvalid=true;
                    }
                for(rr=0;rr<9;rr++)
                    if(r-rr&&i==t[rr][c])
                    {
                        y3=0;
                        A8(rr,c,w8)
                        HasInvalid=true;
                    }
                for(rr=o[r];rr<o[r]+3;rr++)
                    for(cc=o[c];cc<o[c]+3;cc++)
                    {
                        if(c-cc&&r-rr&&i==t[rr][cc])
                        {
                            y3=0;
                            A8(rr,cc,w8)
                            HasInvalid=true;
                        }
                    }
            }
            A8(r,c,(y3)?h8:w8)
        }
    return HasInvalid;
}
function A8(r,c,m8)
{
w[r*9+c][x5][m9]=A("g"+r+c)[x5][m9]=m8
}
function F()
{
var r,c;
if(n2<9)
{
for(r=n2;r<=i6;r++)for(c=c2;c<=r5;c++)if(w[r*9+c][x5][m9]!=w8)A8(r,c,h8);
n2=9
}

}
function C()
{
var i,y=b;
if(g3)
{
F();
for(i=0;i<81;i++)
y+="-";
b1=y;
k2=b;
A5();
B6()
}

}
function R()
{
if(!confirm('确实要重新开始吗？此操作不能恢复'))return;
if(g3)
{
b1=c8;
k2=b;
A5();
B6()
}

}

function W(y)
{
	k2+=y+"<br>";
	l6[k4]=k2
}
function Q()
{
    if(Levels>0&&GuessItemUsed==0){
        if(!confirm('确实要显示全部可能数值？此操作需要消耗一个数独探测器道具'))return;
        UseItem("iID=4" ,"SDItem.ashx?SID=" + SDID);
        if(v1[k4]!="1"){
            A("da")[s1]=false;
            return;
        }else{GuessItemUsed=1;v1[k4]=""}
        //v1[k4]="<b>提示：</b>非入门级无法使用此功能，请用可能数模式自己填";
    }
	var e7=A("da")[s1];
	if(g3)
	{
		if(!h4)B4();
		//B7("cl",(e7)?e8:i2);
		if(e7)B3();
		else B3C();
	}
}
function I()
{
	var r,c,m4=f4=b,h6=new Array(37,45,55,12,18,24),t2=(d.all)?12:13,n1=(d.all)?7:10,n5=" 2px solid;",i9="border-left:#",o3=";background-color:#fff";
	for(r=0;r<9;r++)for(c=0;c<9;c++)
	{
		m4+=w6+c*h6[m]+"px;top:"+r*h6[m]+"px;width:"+(h6[m])+"px;height:"+(h6[m])+"px;border-top:#"+(r%3?"BBB":"000")+n5+(r>7?"border-bottom:#000"+n5:b)+i9+(c%3?"BBB":"000")+n5+(c>7?"border-right:#000"+n5:b)+o3+";cursor:hand' id='g"+r+c+"'onclick='ShowST("+r+","+c+")' ondblclick='DelST("+r+","+c+")'></div>";
		//f4+=w6+(t2+c*h6[m])+"px;top:"+(n1+r*h6[m])+"px;'><input style='border:0;width:"+(h6[m]-21)+"px;font:bold "+h6[m+3]+r2+"text-align:center;vertical-align:middle"+(r6?o3:b)+"' type='text' id='"+r+c+"' size='1' maxlength='1' onKeyUp='G("+r+","+c+")'></div>"
		f4+=w6+(t2+c*h6[m])+"px;top:"+(n1+r*h6[m])+"px;cursor:hand' onclick='ShowST("+r+","+c+")' ondblclick='DelST("+r+","+c+")'><span style='font-size: 12pt; font-family: Arial; font-weight: bold; text-align:center;vertical-align:middle' id='"+r+c+"' ></span></div>"
	}
	B("ll",m4+f4);
	for(r=0;r<9;r++)for(c=0;c<9;c++)w[r*9+c]=A(b+r+c)
}
function B4()
{
	var r,c,d1=b,h6=new Array(37,45,55,27,32,40),n5="color:#000;",i9="px;font:"+(m+7)+r2;
	for(r=0;r<9;r++)
		for(c=0;c<9;c++)d1+=w6+(5+c*h6[m])+"px;top:"+(2+r*h6[m])+i9+(r6?n5:b)+"' id='"+"u"+r+c+"'></div>"+w6+(6+c*h6[m])+"px;top:"+(h6[m+3]+r*h6[m])+i9+(r6?n5:b)+"' id='"+"l"+r+c+"'></div>";
	B("cl",d1);
	h4=1
}
function G(r,c)
{
	var u;
	
if(l1)
	{
		F();
		u=w[r*9+c][r9];
		if(u&&b3[j6](u)<0)w[r*9+c][r9]=u=b;
		if(!u&&t[r][c])
		{
			A2(r,c,-t[r][c]);
			A4()
		}
		else if(t[r][c]!=u)
		{
			O(r,c,u);
			A2(r,c,u)
		}
		B2();
		B3();
		
	}

}

function J(u6)
{
var c6=b,i=B8()[j6](x4),j,u;
if(g3)
{
if(i<0)
{
t7.name=b8+n+m+(A("da")[s1]?"1":"0")+(A("qa")[s1]?"1":"0")+b6;
b1=M();
for(j=0;j<81;j++)
{
u=b1[j8](j);
t7.name+=(u==c8[j8](j))?u:(u=="-"?u:c4[j8](u[j3](0)-49))
}
}
else u6.href+=B8()[e4](i)
}
}

function A7()
{
var r,c,i,u;
g5=l1=0;
for(r=0;r<9;r++)for(c=0;c<9;c++)
{
t[r][c]=0;
for(i=1;i<10;i++)z[r][c][i]=1
}
r=c=0;
//for(i=0;i<81&&l<g;i++)
for(i=0;i<81;i++)
{
u=b1[j8](i);
u=="-"?u=b:O(r,c,u);
w[i][r9]=u;
w[i][x5].color=c8[j8](i)==u?"#000":"#00c";
if(++c>8)
{
c=0;
r++
}

}
l1=1
}
function O(r,c,v)
{
var rr,cc,i;
for(i=0;i<9;i++)z[r][i][v]=z[i][c][v]=0;
for(rr=o[r];rr<o[r]+3;rr++)for(cc=o[c];cc<o[c]+3;cc++)z[rr][cc][v]=0;
for(i=1;i<=9;i++)z[r][c][i]=0;
z[r][c][v]=1;
t[r][c]=v;
g5++
}
function A4()
{
var r,c,u;
for(r=0;r<9;r++)for(c=0;c<9;c++)
{
A8(r,c,h8);
t[r][c]=0;
for(i=1;i<10;i++)z[r][c][i]=1
}
g5=0;
for(r=0;r<9;r++)for(c=0;c<9;c++)
{
u=w[r*9+c][r9];
if(u)O(r,c,u)
}

}
function SAVE()
{
    if(OnLogin==0){
        v1[k4]="<b>提示：</b>非登陆用户无法存储进度,请登陆"
        return;
    }
	var tb,tbhint,HasInvalid;
	tb=M();
	tbhint=GetHint();
  doPost("SD=" + M() + "&SDHint=" + tbhint,"SDSave.ashx?SID=" + SDID)
}
function GetHint()
{
    var r,c,g9="";
    for(r=0;r<9;r++)for(c=0;c<9;c++)g9+=A("u"+r+c)[k4]+',';
    return g9
}

function M()
{
var i,u,g9=b;
for(i=0;
i<81;
i++)
{
u=w[i][r9];
g9+=u?u:"-"
}
return g9
}
function B3()
{
var r,c,i,y,y8;
if(!h4)B4();
if(A("da")[s1])for(r=0;r<9;r++)for(c=0;c<9;c++)
{
y=y8=b;
if(!t[r][c])for(i=1;i<=9;i++)if(z[r][c][i])y.length<6?y+=i:y8+=i;
B("u"+r+c,y);
B("l"+r+c,y8)
}

}

function B3C()
{
var r,c,i,y,y8;
if(!h4)B4();
for(r=0;r<9;r++)for(c=0;c<9;c++)
{
B("u"+r+c,"");
B("l"+r+c,"")
}

}

function B9(i)
{
return i?"剩余"+v4+i+"格，之前有填错":g6
}
function H(s4)
{
    if(Levels>0){
        if(s4==0)if(!confirm('此操作需要消耗一个数独小提示宝道具,确定吗?'))return;
        if(s4==1)if(!confirm('此操作需要消耗一个数独大提示宝道具,确定吗?'))return;
        UseItem("iID=" + s4,"SDItem.ashx?SID=" + SDID);
        if(v1[k4]!="1")return;        
        //v1[k4]="<b>提示：</b>非入门级无法使用此功能，道具系统制作中"
    }
var r,c,y,y8;
if(g3)
{
F();
if(A6())
{
l1=0;
for(r=o[k6];r<o[k6]+3;r++)for(c=o[x6];c<o[x6]+3;c++)if(w[r*9+c][x5][m9]!=w8)A8(r,c,e5);
y=s4?"提示":"小提示";
y8=s4?"将"+r3+" 填入"+h2+"区":"看看"+h2+"区";
v1[k4]="<b>"+y+":</b> "+y8;
n2=o[k6];
i6=o[k6]+2;
c2=o[x6];
r5=o[x6]+2;
l1=1
}
else v1[k4]=B9(81-g5)
}

}
function S(v8)
{
    if(Levels>0&&SolveItemUsed==0){
        if(v8==0)if(!confirm('此操作需要消耗一个数独全解器道具,确定吗?'))return;
        if(v8==1)if(!confirm('此操作需要消耗一个数独单步解答器道具,确定吗?'))return;
        UseItem("iID=" + (v8+2)  ,"SDItem.ashx?SID=" + SDID);
        if(v1[k4]!="1"){
            return;
        }else if(v8==0){SolveItemUsed=1}
        //v1[k4]="<b>提示：</b>非入门级无法使用此功能，请用可能数模式自己填";
    }
var y,z4=0;
if(g3)
{
F();
l1=0;
while(!z4&&A6())
{
O(k6,x6,r3);
A(b+k6+x6)[r9]=r3;
A2(k6,x6,r3);
if(v8)
{
A8(k6,x6,e5);
n2=i6=k6;
c2=r5=x6;
z4=1
}
y="<b>步骤:</b> 将"+r3+" 填入 "+h2+" 区内的"+(k6+1)+"行"+(x6+1)+"列 ("+l8+")";
v1[k4]=v8?y:b;
W(y)
}
l1=1;
B3();
if(!z4)
{
v1[k4]=y=B9(81-g5);
W(y)
}

}

}
function A1(r,c,rr,cc)
{
var i,a=1;
for(i=1;i<=9&&a;i++)a=z[r][c][i]==z[rr][cc][i];
return a
}
function A3()
{
var r,c,i;
z=new Array(9);
for(r=0;r<9;r++)
{
z[r]=new Array(9);
for(c=0;
c<9;
c++)
{
z[r][c]=new Array(10);
for(i=1;
i<10;
i++)z[r][c][i]=1
}
}
t=new Array(9);
for(r=0;r<9;r++)
{
t[r]=new Array(9);
for(c=0;c<9;c++)t[r][c]=0
}
i4=(9*3)<<8;
x=new Array(5);
for(i=0;i<5;i++)
{
x[i]=new Array(243);
h[i]=a5[i]=0;
k2=b
}
v1=A("ep")
v2=A("ann")
l6=A("bn")
v1[x5].style="width=100%"
l6[x5].style="width=100%"
}

function A6()
{
var r,c,rr,cc,y5,y7,i,j,k,y,q,a=0,g7,e2,z5,q4,b5,f,e,f1,w1,i3,y1,y4,x1,p=new Array(0,3,6),l9=new Array(1,1,1,2,2,2,3,3,3),s=new Array(0,0,0),y4=new Array(2),x3="方式 - ",l4="' 在行",v7=" 因此 ",s3=" 被排除在行",i7=" 能够排除 行",l2=" 在该区";
if(g5<81)
{
do
{
for(f=0;
f<3&&!a;
f++)for(e=0;
e<3&&!a;
e++)for(i=1;
i<=9&&!a;
i++)
{
q=i3=y1=0;
for(r=p[f];r<p[f]+3;r++)for(c=p[e];c<p[e]+3;c++)if(z[r][c][i])
{
q++;
i3=r;
y1=c
}
if(q==1&&!t[i3][y1])
{
a=1;
h2=f*3+e+1;
k6=i3;
x6=y1;
r3=i;
l8=x3+"行列判断"
}

}
for(r=0;r<9&&!a;r++)for(i=1;i<=9&&!a;i++)
{
q=0;
for(c=0;c<9;c++)if(z[r][c][i])
{
q++;
y1=c
}
if(q==1&&!t[r][y1])
{
a=1;
h2=o[r]+l9[y1];
k6=r;
x6=y1;
r3=i;
l8=x3+"行排除判断"
}

}
for(c=0;c<9&&!a;c++)for(i=1;i<=9&&!a;i++)
{
q=0;
for(r=0;r<9;r++)if(z[r][c][i])
{
q++;
i3=r
}
if(q==1&&!t[i3][c])
{
a=1;
h2=o[i3]+l9[c];
k6=i3;
x6=c;
r3=i;
l8=x3+"列排除判断"
}

}
for(r=0;r<9&&!a;r++)for(c=0;c<9&&!a;c++)if(!t[r][c])
{
q=0;
for(i=1;i<=9&&!a;i++)q+=z[r][c][i];
if(q==1)
{
i=1;
while(i<9&&!z[r][c][i])i++;
a=1;
h2=o[r]+l9[c];
k6=r;
x6=c;
r3=i;
l8="数字规则"
}

}
if(!a)
{
g7=0;
x1=new Array(9);
for(r=0;r<9;r++)
{
x1[r]=new Array(9);
for(c=0;c<9;c++)
{
q=0;
for(i=1;i<=9;i++)if(z[r][c][i])q++;
x1[r][c]=q
}

}
for(r=0;r<9&&!g7;r++)for(c=0;c<9&&!g7;c++)if(x1[r][c]==2)
{
for(cc=c+1;cc<9&&!g7;cc++)if(x1[r][cc]==2)if(A1(r,c,r,cc))
{
j=0;
for(k=1;k<=9;k++)if(z[r][c][k])y4[j++]=k;
for(y7=0;y7<9;y7++)if(y7-c&&y7-cc)if(z[r][y7][y4[0]]||z[r][y7][y4[1]])
{
y=z[r][y7][y4[0]]?y4[0]:b;
y+=z[r][y7][y4[0]]&&z[r][y7][y4[1]]?" 和 ":b;
y+=z[r][y7][y4[1]]?y4[1]:b;
z[r][y7][y4[0]]=z[r][y7][y4[1]]=0;
g7=1;
W(h3+"'"+y4[0]+y4[1]+l4+(r+1)+"列"+(c+1)+" 和 行"+(r+1)+"列"+(cc+1)+v7+y+s3+(r+1)+"列"+(y7+1))
}

}
for(rr=r+1;rr<9&&!g7;rr++)if(x1[rr][c]==2)if(A1(r,c,rr,c))
{
j=0;
for(k=1;k<=9;k++)if(z[r][c][k])y4[j++]=k;for(y5=0;y5<9;y5++)if(y5-r&&y5-rr)if(z[y5][c][y4[0]]||z[y5][c][y4[1]])
{
y=z[y5][c][y4[0]]?y4[0]:b;
y+=z[y5][c][y4[0]]&&z[y5][c][y4[1]]?" 和 ":b;
y+=z[y5][c][y4[1]]?y4[1]:b;
z[y5][c][y4[0]]=z[y5][c][y4[1]]=0;
g7=1;
W(h3+"'"+y4[0]+y4[1]+l4+(r+1)+"列"+(c+1)+" 和 行"+(rr+1)+"列"+(c+1)+v7+y+s3+(y5+1)+"列"+(c+1))
}

}
for(rr=r;rr<o[r]+3&&!g7;rr++)for(cc=o[c];cc<o[c]+3&&!g7;cc++)if(rr>r||cc>c)if(x1[rr][cc]==2)if(A1(r,c,rr,cc))
{
j=0;
for(k=1;k<=9;k++)if(z[r][c][k])y4[j++]=k;
for(y5=o[r];y5<o[r]+3;y5++)for(y7=o[c];y7<o[c]+3;y7++)if((y5-r||y7-c)&&(y5-rr||y7-cc))if(z[y5][y7][y4[0]]||z[y5][y7][y4[1]])
{
y=z[y5][y7][y4[0]]?y4[0]:b;
y+=z[y5][y7][y4[0]]&&z[y5][y7][y4[1]]?" 和 ":b;
y+=z[y5][y7][y4[1]]?y4[1]:b;
z[y5][y7][y4[0]]=z[y5][y7][y4[1]]=0;
g7=1;
W(h3+"'"+y4[0]+y4[1]+l4+(r+1)+"列"+(c+1)+" 和行"+(rr+1)+"列"+(cc+1)+v7+y+s3+(y5+1)+"列"+(y7+1))
}

}

}
for(r=0;r<9&&!g7;r++)for(i=1;i<=9&&!g7;i++)
{
q=q4=0;
while(q4<9&&!z[r][q4][i])
q4++;
b5=8;
while(b5>=0&&!z[r][b5][i])b5--;
if(b5>q4&&o[q4]==o[b5])for(rr=o[r];rr<o[r]+3;rr++)for(cc=o[q4];cc<o[q4]+3;cc++)if(rr-r)if(z[rr][cc][i])
{
z[rr][cc][i]=0;
g7=1;
W(h3+i+" 在行 "+(r+1)+" 于区 "+(o[r]+l9[cc])+", 因此 "+i+i7+(rr+1)+"列"+(cc+1)+l2)
}

}
for(c=0;c<9&&!g7;c++)for(i=1;i<=9&&!g7;i++)
{
q=e2=0;
while(e2<9&&!z[e2][c][i])
e2++;
z5=8;
while(z5>=0&&!z[z5][c][i])z5--;
if(z5>e2&&o[e2]==o[z5])for(rr=o[e2];rr<o[e2]+3;rr++)for(cc=o[c];cc<o[c]+3;cc++)if(cc-c)if(z[rr][cc][i])
{
z[rr][cc][i]=0;
g7=1;
W(h3+i+" 在列 "+(c+1)+" 于区 "+(o[rr]+l9[c])+", 因此 "+i+i7+(rr+1)+"列"+(cc+1)+l2)
}

}
for(f=0;f<3&&!g7;f++)for(e=0;e<3&&!g7;e++)for(i=1;i<=9&&!g7;i++)
{
s[0]=s[1]=s[2]=0;
for(f1=0;f1<3;f1++)for(c=p[e];c<p[e]+3;c++)if(z[f1+p[f]][c][i])s[f1]=1;
if(s[0]+s[1]+s[2]==1)
{
r=0;
while(s[r]-1)r++;
r+=p[f];
for(c=0;c<9;c++)if(c<p[e]||c>p[e]+2)if(z[r][c][i])
{
z[r][c][i]=0;
g7=1;
W(h3+i+" 于区 "+(f*3+e+1)+" 在行 "+(r+1)+", 因此 "+i+i7+(r+1)+"列"+(c+1)+" 在该行")
}

}

}
for(f=0;f<3&&!g7;f++)for(e=0;e<3&&!g7;e++)for(i=1;i<=9&&!g7;i++)
{
s[0]=s[1]=s[2]=0;
for(w1=0;w1<3;w1++)
for(r=p[f];r<p[f]+3;r++)
if(z[r][w1+p[e]][i])s[w1]=1;
if(s[0]+s[1]+s[2]==1)
{
c=0;
while(s[c]-1)
c++;
c+=p[e];
for(r=0;r<9;r++)if(r<p[f]||r>p[f]+2)if(z[r][c][i])
{
z[r][c][i]=0;
g7=1;
W(h3+i+" 于区 "+(f*3+e+1)+" 在该行 "+(c+1)+", 因此 "+i+i7+(r+1)+"列"+(c+1)+" 在该列")
}

}

}

}

}
while(!a&&g7)
}
return a
}
function ST_MI(sTD){
sTD.style.background="#FFFFFF";
}
function ST_MO(sTD){
sTD.style.background="#9AD6D7";
}
function ST_S(s_num){
A("ST_Div").style.display="none";
if(now_r!=-1)A("g"+now_r+now_c).style.background=nowcolor;

if(A("dz")[s1]){
	T(now_r,now_c,s_num)
}else{
	w[now_r*9+now_c][r9]=s_num
	G(now_r,now_c);
	if(nowHightLightNum>0)ChangeHLSpan();
}
now_r=now_c=-1
}

function ShowST(r,c){
	var oLeft=oTop=0,toLeft=toTop=0;
	oLeft=A("ly").offsetLeft;
	oTop=A("ly").offsetTop;
	if((A("ST_Div").style.display=="none"||now_r!=r||now_c!=c)&&CheckOrg(r,c))
	{
		if(now_r!=-1)A("g"+now_r+now_c).style.background=nowcolor
		if(r<3||r>=6)toTop=oTop+112;
		else toTop=oTop+224;
		if(c<3||c>=6)toLeft=oLeft+112;
		else toLeft=oLeft+224;
		A("ST_Div").style.left=toLeft;
		A("ST_Div").style.top=toTop;
		A("ST_Div").style.display="inline";
		now_r=r
		now_c=c
		nowcolor=A("g"+r+c).style.background
		A("g"+r+c).style.background="#9AD6D7"
	}
	else
	{
		A("ST_Div").style.display="none";
		if(now_r!=-1)A("g"+now_r+now_c).style.background=nowcolor;
		now_r=now_c=-1;
	}
}
function Del_S(){
w[now_r*9+now_c][r9]=""
if(now_r!=-1)A("g"+now_r+now_c).style.background=nowcolor
G(now_r,now_c)
now_r=now_c=-1
}
function DelST(r,c){
	if(A("ST_Div").style.display!="none")
	{
		A("ST_Div").style.display="none";
		if(now_r!=-1)A("g"+now_r+now_c).style.background=nowcolor;
		now_r=now_c=-1;
	}
	if(CheckDel(r,c))
	{
		nowcolor=A("g"+r+c).style.background;
		A("g"+r+c).style.background="#9AD6D7";
		now_r=r;
		now_c=c;
		if(confirm("确实要删除本格数字吗？")){
			Del_S();
			if(nowHightLightNum>0)ChangeHLSpan();
			}
	}
}
function CheckOrg(r,c){
	if(c8.substr(r*9+c,1)=="-")
	{return true;}
	else
	{return false;}
}
function CheckDel(r,c){
	var nowstr;
	nowstr=M();
	if(c8.substr(r*9+c,1)=="-"&&nowstr.substr(r*9+c,1)!="-")
	{return true;}
	else
	{return false;}
}
function HLNum(HLN){
	nowHightLightNum=HLN;
	ChangeHLSpan();
}
function ChangeHLSpan(){
	var r,c,thisNum;
	for(r=0;r<9;r++)for(c=0;c<9;c++){
	thisNum=w[r*9+c][r9];
	if(thisNum==nowHightLightNum)A("g"+r+c).style.background="#CCFFCC";
	else A("g"+r+c).style.background="#FFFFFF"
	}
}
function T(r,c,miniNum){
	var nowMiniNum;
	nowMiniNum=A("u"+r+c)[k4];
	if(nowMiniNum.length>=5&&nowMiniNum.indexOf(miniNum)==-1){
		v1[k4]="<b>错误提示：</b>不能填超过5个可能数字"
		return;
	}
	if(nowMiniNum.indexOf(miniNum)==-1){
		A("u"+r+c)[k4]=nowMiniNum+miniNum;
	}else{
		B("u"+r+c,nowMiniNum.replace(miniNum,""));
	}
}
function DZ(){
	v1[k4]="<b>操作提示：</b>您可以标记某格可能的数字"
}
function UseItem(postdata,url)
{ 
    xmlHttp=GetXmlHttpObject(stateChanged)
    xmlHttp.open("POST", url , false)
    xmlHttp.setRequestHeader("Content-Length",postdata.length);    
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp.send(postdata)
} 
function doPost(postdata,url)
{ 
    xmlHttp=GetXmlHttpObject(stateChanged)
    xmlHttp.open("POST", url , true)
    xmlHttp.setRequestHeader("Content-Length",postdata.length);    
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp.send(postdata)
} 
function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{ 
v1[k4]=xmlHttp.responseText 
} 
} 
function GetXmlHttpObject(handler)
{ 
var objXmlHttp=null; 
if (navigator.userAgent.indexOf("MSIE")>=0)
{ 
var strName="Msxml2.XMLHTTP";
if (navigator.appVersion.indexOf("MSIE 5.5")>=0) //既使是IE都有两种申明方式
{
strName="Microsoft.XMLHTTP";
} 
try
{ 
objXmlHttp=new ActiveXObject(strName);
objXmlHttp.onreadystatechange=handler; 
return objXmlHttp;
} 
catch(e)
{  
return;
} 
}
else
{
objXmlHttp=new XMLHttpRequest(); //Firefox、Opera等都是用这种
objXmlHttp.onload=handler;
objXmlHttp.onerror=handler;
return objXmlHttp;
}
}


function GetAnnouce(postdata,url)
{ 
    xmlHttp2=GetXmlHttpObject(stateChanged2);
    xmlHttp2.open("POST", url , true);
    xmlHttp2.setRequestHeader("Content-Length",postdata.length);    
    xmlHttp2.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp2.send(postdata)
} 
function stateChanged2() 
{ 
if (xmlHttp2.readyState==4 || xmlHttp2.readyState=="complete")
{ 
v2[k4]=xmlHttp2.responseText 
}
}