var fstrs=new Array();
var arrClass=new Array();
var ClassDisplayMode=0;
var LevelCount=4;
var CurFcid=null;
var c_fcid=0;
var c_cid=1;
var c_cname=2;
var opt,nav,SelectedClassID,zjlistSelect,btnSelector,ClassTable,ClassTableTitle,ClassTableContent;
function UseNewClassMode(mode){
if(!mode || mode==1){
for(var i=0;i<LevelCount;i++){
document.write("<SELECT name='cSelect"+i.toString()+"' rel='" +i.toString()+ "' id='cSelect"+i.toString()+"' size='12' style='display:none; margin-right:10px;'></SELECT>");
}
G("classopt").style.display="none";
ClassDisplayMode=1;
}else if(mode==2){
G("classopt").style.display="none";
var navObj=$("#classnav");
var navText=navObj.text();
navObj.empty();
navObj.append("<input type='button' value='" +navText+ "' id='selector' /><div id='cTable' style='display:none;'><div class='title'><a href='#' onclick='ClassTable.hide(); btnSelector.show(0); return false;' class='close'>×</a><span id='cTableTitle'></span></div><ul id='cTableContent'></ul><div style='clear:both;'></div></div>");
btnSelector=$("#selector");
ClassTable=$("#cTable");
ClassTableTitle=$("#cTableTitle");
ClassTableContent=$("#cTableContent");
btnSelector.click( function(){EchoClass_2();});
ClassDisplayMode=2;
}
}
function ChangeLocation(selid,level){
opt=G("classopt");
nav=G("classnav");
SelectedClassID=G("SelectedClassID");
zjlistSelect=$("#zjlist");
InitClasses();
if(ClassDisplayMode==0){
return ChangeLocation_0(selid,level);
}else if(ClassDisplayMode==1){
return ChangeLocation_1(selid,level);
}else if(ClassDisplayMode==2){
return ChangeLocation_2(selid,level);
}
}
function EchoClass_0(cid,selid){
var arr,fcidOfList;
var bShowBack=false;
var iIndex=-1;
opt.options.length=0;
opt.selectedIndex=-1;
if(HaveSubClass(cid)){
fcidOfList=cid;
}else{
selid=cid;
fcidOfList=GetFatherID(cid);
}
var c;
var clist;
for(var i=0;i<arrClass.length;i++){
arr=arrClass[i];
if(arr[c_fcid]==fcidOfList){
if(iIndex==-1 && fcidOfList>0){
bShowBack=true;
iIndex++;
opt.options.length=1;
opt.options[0].value=GetFatherID(fcidOfList);
opt.options[0].text="*** 返回上級分類 ***";
opt.options[0].style.color="blue";
}
iIndex++;
opt.options.length=iIndex+1;
opt.options[iIndex].value=arr[c_cid];
opt.options[iIndex].text=arr[c_cname];
if(arr[c_cid]==selid) opt.selectedIndex=iIndex;
}
}
if(iIndex>-1 && !bShowBack){try{opt.options[0].style.color="";}catch(e){}}
return (fcidOfList==cid);
opt.hideFocus=false;
opt.selectedIndex=-1;
opt.options[0].selected=false;
}
function ChangeLocation_0(selid,level){
var SelLeastC=false;
if(typeof(selid)=="undefined"){
if(opt.selectedIndex==-1) return false;
var cid=opt[opt.selectedIndex].value;
var topic=opt[opt.selectedIndex].text;
var fid;
if(topic=="*** 返回上級分類 ***"){
EchoClass_0(cid,0);
}else{
if(EchoClass_0(cid,0)){
fstrs.push(cid);
}else{
SelLeastC=true;
}
}
}else{
var cid=selid;
var topic=GetClassName(selid);
if(HaveSubClass(cid)==false){
SelLeastC=true;
EchoClass_0(GetFatherID(cid),cid);
}else{
EchoClass_0(cid,0);
}
}
SelectedClassID.value=cid;
Initfstr(cid);
var s="";
var cname;
for(var i=0;i<fstrs.length;i++){
cname=GetClassName(fstrs[i]);
if(!cname)cname="分類名稱未知"
s=s+"<a href='javascript:ChangeLocation_0(" + fstrs[i] + ");'>" + cname + "</a> >> ";
}
if(SelLeastC==true)s=s+topic;
nav.innerHTML=s;
zjlistSelect.focus(function(){
refreshZjlist(cid);
});
}
function selectOption_1(level,fcid,cid){
var opt=G('cSelect'+level);
if(!opt){hideClass(level);return false;}
var arr,iIndex=-1;
opt.options.length=0;
opt.selectedIndex=-1;
for(var i=0;i<arrClass.length;i++){
arr=arrClass[i];
if(arr[c_fcid]==fcid){
iIndex++;
opt.options.length=iIndex+1;
opt.options[iIndex].value=arr[c_cid];
opt.options[iIndex].text=arr[c_cname];
if(arr[c_cid]==cid) opt.selectedIndex=iIndex;
}
}
if(opt.options.length>0){
try{opt.options[0].style.color="";}catch(e){}
if(opt.style.display=="none") opt.style.display="";
return true;
}else{
hideClass(level);
return false;
}
}
function ChangeLocation_1(selid,level){
if(SelectedClassID) SelectedClassID.value=selid;
var curLevel=0;
if(typeof(level)=="undefined"){
if(typeof(selid)=="number" && selid>0){
Initfstr(selid);
if(fstrs.length>0 && fstrs[fstrs.length-1]!=selid) fstrs.push(selid);
for(var i=1;i<fstrs.length;i++){
if(!selectOption_1(i-1,fstrs[i-1],fstrs[i])) return false;
}
curLevel=fstrs.length-1;
}else{
selid=0;
if(!selectOption_1(0,0,0)) return false;
curLevel++;
}
}else{
selectOption_1(level,GetFatherID(selid),selid);
curLevel=level;
curLevel++;
}
if(selid>0 && HaveSubClass(selid)){
selectOption_1(curLevel,selid,0);
curLevel++;
}
hideClass(curLevel);
zjlistSelect.focus(function(){
refreshZjlist(selid);
});
}
function EchoClass_2(cid){
var arr,fcidOfList;
if(typeof(cid)=="undefined") cid=$("#SelectedClassID").val();
if(HaveSubClass(cid)){
fcidOfList=cid;
}else{
fcidOfList=GetFatherID(cid);
}
if(CurFcid !=fcidOfList){
var c,id;
var clist="";
for(var i=0;i<arrClass.length;i++){
arr=arrClass[i];
if(arr[c_fcid]==fcidOfList){
id=arr[c_cid];
c="<li><a href='#" +id+ "' rel='" +id+ "' onclick='ChangeLocation_2(" +id+ "); return false;'";
if(id==cid){
c+=" class='sel'";
}
c+=">" +arr[c_cname]+ "</a></li>";
clist+=c;
}
}
Initfstr(cid);
var sLinks="";
var cname;
for(var i=0;i<fstrs.length;i++){
cname=GetClassName(fstrs[i]);
if(!cname)cname="分類名稱未知"
sLinks+="<a href='javascript:ChangeLocation_2(" + fstrs[i] + ");'>" + cname + "</a> >> ";
}
sLinks+="<span id='TheLeastC'>";
if(fcidOfList!=cid) sLinks+=GetClassName(cid);
sLinks+="</span>"
ClassTableTitle.html(sLinks);
ClassTableContent.html(clist);
}else if (fcidOfList!=cid){
cname=GetClassName(cid);
$("#TheLeastC").text(cname);
$("#cTableContent a.sel").attr("class","");
$("#cTableContent a[rel='" +cid+ "']").attr("class","sel");
}
CurFcid=fcidOfList;
var sTexts=ClassTableTitle.text();
sTexts=sTexts.replace("頂級分類 >> ", "");
if(sTexts=="") sTexts="請選擇問題分類"; else sTexts+=" （點擊可修改）";
btnSelector.val(sTexts);
btnSelector.hide();
ClassTable.show(0);
}
function ChangeLocation_2(selid,level)
{
SelectedClassID.value=selid;
if(ClassTable && ClassTable.css("display")!="none"){
EchoClass_2(selid);
}else if(selid){
var sTexts=GetFullPathOf(selid);
sTexts=sTexts.replace("頂級分類 >> ", "");
if(sTexts=="") sTexts="請選擇問題分類"; else sTexts+=" （點擊可修改）";
btnSelector.val(sTexts);
}
zjlistSelect.focus(function(){
refreshZjlist(selid);
});
}
function SearchClassOf(SearchInput)
{
hideClass(0);
var optMain=G("classopt");
var s=SearchInput.value;
if(!s){
optMain.style.display="none";
ChangeLocation(0);
return true;
}
InitClasses();
var arr;
var iIndex=-1;
optMain.options.length=0;
optMain.selectedIndex=-1;
SelectedClassID.value=0;
for(var i=0;i<arrClass.length;i++){
arr=arrClass[i];
if(arr[c_cname].indexOf(s)!=-1){
iIndex++;
optMain.options.length=iIndex+1;
optMain.options[iIndex].value=arr[c_cid];
optMain.options[iIndex].text=GetFullPathOf(arr[c_cid]);
}
}
if(optMain.options.length==0){
optMain.options.length=1;
optMain.options[0].value=0;
optMain.options[0].text="沒找到相關分類，返回頂級分類";
optMain.options[0].style.color="blue";
optMain.onchange=optMain.onclick=function(){
SearchInput.value="";
optMain.style.display="none";
ChangeLocation_1();
};
}else{
optMain.onchange=optMain.onclick=function(){
var selIdx=this.selectedIndex;
if(selIdx==-1){
SelectedClassID.value=0;
}else{
SelectedClassID.value=this.options[selIdx].value;
}
};
}
optMain.style.display="";
zjlistSelect.focus(function(){
refreshZjlist(0);
});
return true;
}
function InitClasses(){
if(arrClass.length>0) return true;
this.addc=function(id){
try{
var cstr=eval("c"+id);
if(cstr){
var cs=cstr.split(",");
for(var i=0;i<cs.length;i++){
var c=cs[i];
var carr=c.split(":");
if(carr.length==2){
arrClass.push( new Array(id,parseInt(carr[0],10),carr[1]) );
addc( parseInt(carr[0],10) );
}
}
}
}catch(e){}
};
this.initClassSelect=function(){
var aSelect
for(var i=0;i<LevelCount;i++){
aSelect=G("cSelect"+i.toString());
if(aSelect) aSelect.onchange=function(){ChangeLocation_1(this.value,this.id.substring(7,8))};
}
};
addc(0);
if(ClassDisplayMode==1) this.initClassSelect();
}
function Initfstr(cid){
var arr,id,fid;
fstrs.splice(0,fstrs.length);
id=cid;
while(id>0){
fid=GetFatherID(id);
if(fid>0){
id=fid;
fstrs.unshift(fid);
}else{
break;
}
}
if(HaveSubClass(cid)==true) fstrs.push(cid);
try{
if(fstrs.length==0 || fstrs[0]!=0) fstrs.unshift(0);
}catch(e){
fstrs.unshift(0);
}
}
function GetClassName(cid){
if(cid==0) return "頂級分類";
var arr,cs,c;
for(var i=0;i<arrClass.length;i++){
arr=arrClass[i];
if(arr[c_cid]==cid) return arr[c_cname];
}
return "";
}
function GetFatherID(cid){
if(cid==0) return "頂級分類";
var arr,cs,c;
for(var i=0;i<arrClass.length;i++){
arr=arrClass[i];
if(arr[c_cid]==cid) return arr[c_fcid];
}
return 0;
}
function HaveSubClass(cid){
var arr;
for(var i=0;i<arrClass.length;i++){
arr=arrClass[i];
if(arr[c_fcid]==cid) return true;
}
return false;
}
function hideClass(FromLevel){
var o;
for(var i=FromLevel;i<LevelCount;i++){
o=G('cSelect'+i.toString());
if(o) o.style.display='none';
}
}
function GetFullPathOf(cid){
var fid,fname,fnames;
this.SearchFatherClass=function(id){
var arr;
for(var i=0;i<arrClass.length;i++){
arr=arrClass[i];
if(arr[c_cid]==id){
fid=arr[c_fcid];
fname=GetClassName(fid);
}
}
}
fnames="";
if(cid){
fnames=GetClassName(cid);
if(!fnames) return "";
}
while(cid>0){
fid=0;
fname="";
SearchFatherClass(cid);
cid=fid;
if(fid && fname){
fnames=fname+" >> "+fnames;
}
}
return fnames;
}
function refreshZjlist(cid){
if(!zjlistSelect) return;
if(!cid){
zjlistSelect.empty();
return ;
}
if(zjlistSelect.length==0 || getUserID()==0){
zjlistSelect=$("select:contains('不指定專家')");
}
if(zjlistSelect.length>0){
$.ajax({
url:weburl+"js/ajaxServer.asp?lei=4&cid="+cid.toString(),
async:false,
cache:true,
success: function(html){
zjlistSelect.empty();
zjlistSelect.html(html);
}
});
}
}
function check_askform(frm,reserv1)
{
if(frm==window){
frm=G("ftiwen");
if(!frm)frm=G("askForm");
}
if(frm.title.value=="" || frm.title.value.length ==0){
alert("請輸入問題標題");frm.title.focus();return false;
}
var len=frm.title.value.length;
if(len<4){
ls_str="問題標題不詳細，請重新輸入";
alert(ls_str);
frm.title.focus();
return false;
}
if (len>100){
ls_str="問題標題字數限定在100個漢字以內，請縮短提問字數";
frm.title.focus();
return false;
}
var co=StripHtml(frm.content.value);
var content_length=co.length;
if(content_length<5){
ls_str="請填寫問題說明，說明越詳細，解答就越有針對性";
alert(ls_str);
return false;
}
if ( content_length >4000){
ls_str="問題說明字數限定在4000字以內，請縮短字數";
alert(ls_str);
frm.content.focus();
return false;
}
var cid=frm.SelectedClassID.value;
if(cid=="" || cid=="0" || GetFatherID(cid)==0){
alert("請選擇問題分類\n\n注意：不能在頂級分類中發表問題"); return false;
}
var uid=getUserID();
if(uid==0){
var sName="";
var sPwd="";
try{
var sName=frm.UserName.value;
var sPwd=frm.password.value;
}catch(e){}
if (sName=="" || sPwd==""){
if(EnableGuestAsk==1){
if(!confirm("您還沒有登陸，\n登陸用戶可設置懸賞分，激勵更多人回答您的問題，\n建議您先去註冊一下。\n\n繼續使用遊客身份匿名提問嗎？")) return false;
}else{
ShowLogin('請登錄後再次提交問題', '3');
return false;
}
}
}
if(EnableAntiSpam==1){
PrepareAntiSpam(frm,"ASK");
if( NeedVCode(frm,"ask") ) return false;
}
}
