///////////////////////////////////////////////////////
//march.js
//////////////////////////////////////////////////////
var CRNTRHY=1;
var MRHTYPE=1;
var MRHSRC=1;
var PSTR="";
var ZSTR="";
var RHY_TXT=new Array();  
var RHY_SHW=new Array();
var RHY_RHY=new Array();
var o_ajax=null;
var as=0;
//getrhy("marchrsp.asp?act=1&id=1");
//alert(PSTR);
//======================================
function getajax(){
try{
   o_ajax = new ActiveXObject("Microsoft.XMLHTTP");
   as = 1;
}catch(e){
   try{
    o_ajax = new ActiveXObject("Msxml2.XMLHTTP");
    as = 1;
   }catch(e){
    try{
     o_ajax = new XMLHttpRequest();
     as = 2;
    }catch(e){
     o_ajax = null;
     as = 0;
    }
   }
}
}
//======================================
function GE(a){return document.getElementById(a);}  
//======================================
function ctrim(a){
if (a=="" || a === undefined ) return "";
return a.replace(/(^\s*)|(\s*$)/g,"");  //trim
}
//======================================
function left(str,n){   
  return str.substr(0,n)   
}   
//======================================
function right(str,n){   
  return str.substr(str.length-n,str.length)   
}   
//======================================
function  ischn(t_chr){  
//alert (t_chr.charCodeAt(0));
if(t_chr.length  ==  0) return  false;    
if(t_chr.charCodeAt(0)>19967 && t_chr.charCodeAt(0)<40870) return  true; 
return  false; 
} 
//======================================
function chkpz(t_chr) 
{ 
if(t_chr=="") return "";

t_chr=t_chr.substr(0,1)
var pflag=PSTR.indexOf(t_chr)
var zflag=ZSTR.indexOf(t_chr)
switch (true){
case pflag<0 && zflag<0 : 
return "x";
break;
case pflag>=0 && zflag<0 : 
return "p";
break;
case pflag<0 && zflag>=0 : 
return "z";
break;
case pflag>=0 && zflag>=0 : 
return "x";
break;
default:                   
return "";
}
} 
//======================================
function showpz(s) 
{ 
if(ctrim(s)=="") return "";
var s_tmp="";
for (var n=0;n<s.length;n++ ){
switch (s.substr(n,1)){
case "n": 
s_tmp+="◎";
break;
case "p": 
s_tmp+="平";
break;
case "z": 
s_tmp+="仄";
break;
case "x": 
s_tmp+="◎";
break;
default:                   
}
}
return s_tmp;
} 
//======================================
function  marchit(){  
//do march
var s_tmp=ctrim(GE("tx1").value);
if (s_tmp.length<1) {
	alert("请在左侧文本框中输入待匹配的句子。\n\n注意：最多3行，每行一句（硬回车分行），每句1-9个汉字，数字、字母和符号无效。\n");
	GE("showinfo").innerHTML="";
	GE("showcont").innerHTML="";
	GE("showhelp").style.display="block";
	return false;
}
GE("b1").disabled=true;
GE("b1").value="请稍候...";
window.status="正在获取数据，请稍候...";
//GE("waitdiv").style.display="block";
//alert(MRHTYPE);
//alert(CRNTRHY);
//alert(MRHSRC);
RHY_TXT.length=0;  
RHY_SHW.length=0;
RHY_RHY.length=0;
var show_tmp="<br><b style=font-weight:bold>当前任务：</b> 依照";
var sdpz="";

switch (CRNTRHY){
case 2: 
	show_tmp+="《词林正韵》,";
break;
case 3: 
	show_tmp+="《平水韵》,";
break;
case 1: 
default:
	show_tmp+="《中华新韵》,";
}

if (MRHSRC==1){
	show_tmp+="在《格律诗》和《白香词谱》中匹配以下词句：";
} else {
	show_tmp+="在《格律诗》、《白香词谱》和《钦定词谱》中匹配以下词句：";
}

if (MRHTYPE==1){
	show_tmp+="(匹配字数和格律)";
} else {
	show_tmp+="(仅匹配字数)";
}
show_tmp+="<BR><BR><ul style=font-size:16px;>";
RHY_TXT=s_tmp.split("\n");
if (RHY_TXT.length>3){ RHY_TXT.length=3; }
for (var n=0;n<RHY_TXT.length;n++ ){  //遍历每一行
RHY_SHW[n]="";
RHY_RHY[n]="";
for (var m=0;m<RHY_TXT[n].length;m++ ){  //遍历每一字
	if (ischn(RHY_TXT[n].substr(m,1))==true){
		if (RHY_SHW[n].length<9) {RHY_SHW[n]+=RHY_TXT[n].substr(m,1);}
		if (RHY_RHY[n].length<9) {RHY_RHY[n]+=chkpz(RHY_TXT[n].substr(m,1));}
	}
}
}
for (var i=0;i<RHY_SHW.length;i++ ){  //遍历显示
	if (RHY_SHW[i].length==0) {RHY_SHW.splice(i,1);RHY_RHY.splice(i,1)}
	show_tmp+=RHY_SHW[i]+" ["+showpz(RHY_RHY[i])+"] <br>";
	sdpz+=RHY_RHY[i]+",";
}
if (right(sdpz,1)==",") {sdpz=sdpz.substr(0,sdpz.length-1)}
show_tmp+="<BR></ul>";
GE("showinfo").innerHTML=show_tmp;
var u="marchrsp.asp?act=0";
u+="&r="+CRNTRHY+"&t="+MRHTYPE+"&s="+MRHSRC+"&u="+sdpz;
//alert(u);
getajax();
if(as == 0){
   alert("您的浏览器不支持XMLHTTP，无法完成此操作");
}else{
   o_ajax.open("GET", u, false);
   o_ajax.setRequestHeader("Content-Type", "text/xml;charset=UTF-8");
   if(as == 1){
    o_ajax.onreadystatechange = getResult;
   }else{
    o_ajax.onload = getResult;
    o_ajax.onerror = getResult;
   }
   o_ajax.send(null);   //如果method="POST"，则NULL换成发送的form值
}

//GE("waitdiv").style.display="none";
} 
//======================================
function  getr(a){  
if (CRNTRHY==a) return false;
GE("b1").disabled=true;
GE("b1").value="请稍候...";
window.status="正在获取数据，请稍候...";
CRNTRHY=a;
switch (a){
case 1:
	var s="marchrsp.asp?act=1&id=1";
	getrhy(s);
break;
case 2:
	var s="marchrsp.asp?act=1&id=2";
	getrhy(s);
break;
case 3:
	var s="marchrsp.asp?act=1&id=3";
	getrhy(s);
break;
default:
	var s="marchrsp.asp?act=1&id=1";
	getrhy(s);
}

//alert(CRNTRHY);
//alert(PSTR.substr(0,100));
//alert(ZSTR.substr(0,100));
}
//--------------------------
function getrhy(u){
getajax();
if(as == 0){
   alert("您的浏览器不支持XMLHTTP，无法完成此操作");
}else{
   var strURL = u;
   o_ajax.open("GET", strURL, false);
   o_ajax.setRequestHeader("Content-Type", "text/xml;charset=UTF-8");
   if(as == 1){
    o_ajax.onreadystatechange = getTx;
   }else{
    o_ajax.onload = getTx;
    o_ajax.onerror = getTx;
   }
   o_ajax.send(null);   //如果method="POST"，则NULL换成发送的form值
}
}
//--------------------------------------------------------
function getTx(){
var s_tmp=" ";
var a_tmp;
if (as == 1){
   if (o_ajax.readyState == 4) s_tmp=o_ajax.responseText;
}
else {s_tmp=o_ajax.responseText;}
if (s_tmp.length>500 && s_tmp.indexOf("error")<0){
	a_tmp=s_tmp.split("$$");
	//alert (a_tmp.length);
	PSTR=a_tmp[0];
	ZSTR=a_tmp[1];
	GE("b1").disabled=false;
	GE("b1").value="开始匹配";
	window.status="就绪.";
}
}
//--------------------------------------------------------
function getResult(){
var s_tmp=" ";
var a_tmp;
if (as == 1){
   if (o_ajax.readyState == 4) s_tmp=o_ajax.responseText;
}
else {s_tmp=o_ajax.responseText;}
if (s_tmp.length>10){
	GE("showhelp").style.display="none";
	GE("showcont").innerHTML=s_tmp;
	GE("b1").disabled=false;
	GE("b1").value="开始匹配";
	window.status="就绪.";
} else if (s_tmp.indexOf("error")>0){
	alert("获取匹配结果时出现错误，请稍后再试。（err code:6293012）");
}
}