﻿
var starttime;

function feedchinesedivSC(link,desc,pic)
{
    document.getElementById('chinese_article').innerHTML="<a href=\"" + link + "\"><font size=\"2\" color=\"#666666\">"+ desc +"</font></a>";
    document.getElementById('chinese_picture').innerHTML="<img src=\""+ pic +"\" width=\"100\">";		
}


function getSearchResult(pURL)
{
    // for debug use
    starttime = new Date();  
    document.getElementById('debugsearchurl').innerText = pURL;
    
    recFR = geturl_para('recFR', pURL );
    if ( recFR == '' ) 
        recFR = '1';
  
    varurl= pURL.split('?')[1];    
         		
    xmlhttp = createRequestObject();
    if (xmlhttp)
    {
        document.getElementById('catedesc').innerHTML="<h2>Loading...</h2>";
        document.getElementById('gridarea').innerHTML="<img src='images/loading.gif' alt='Loading...' />";

        xmlhttp.onreadystatechange=postFileReady;
        xmlhttp.open('GET', pURL, true);
        xmlhttp.send(null);
    }  
}

// function to handle asynchronous call
function postFileReady()
{
    var rtnxml;
    if (xmlhttp.readyState==4) { 
      if (xmlhttp.status==200) {
         
         rtnxml = xmlhttp.responseXML;
         xmltransform(rtnxml);
         
      }
    }
}


function CateLookup(code)
{
    var rtnstring="";        
    
    if ( code == 'null' || typeof(treexmlDoc) == 'undefined' ) 
        return "";
           
    var branchs = treexmlDoc.getElementsByTagName('branch');
    for (i=0; i<branchs.length; i++)
    {
        var branchid = branchs[i].getAttribute('id');
        if (branchid == code)
        {
            rtnstring=" >> <a href='adsearch.aspx?ct="+code + "'>" + branchs[i].getAttribute('branchText') + "</a>";
            return rtnstring;
        }
    }

    var leafs = treexmlDoc.getElementsByTagName('leaf');
    for (i=0; i<leafs.length; i++)
    {
        var leafid = leafs[i].getAttribute('id');
        if (leafid == code)
        {
            rtnstring=" >> "  + leafs[i].getAttribute('leafText');
            return rtnstring;
        }
    }  

    return "";
}

function xmltransform(xmlin)
{
 
    var nodearr = xmlin.getElementsByTagName("order");
    var advlistinfo = xmlin.getElementsByTagName("advlist");  
    //var records =    nodearr.length ;
    var records = advlistinfo[0].getAttribute('total');
          
    DoPaging(records); 

    document.getElementById('catedesc').innerHTML="<h3><a href='welcome.aspx'>主頁</a>"+
                                                    CateLookup(advlistinfo[0].getAttribute("pcate"))+
                                                    CateLookup(advlistinfo[0].getAttribute("ccate"))+
                                                    "<br/>找到 "+
                                                    records +"  筆記錄. </h3>";

    document.getElementById('gridarea').innerHTML="";    

    TransXMLDoc("gridarea",xmlin,"cache_x/mcolumn2.xsl");

    //document.getElementById('htmlbtn_search').innerText="Search 搜尋";
    document.getElementById('htmlbtn_search').disabled=false;
    
    // debug use 
    var now = new Date();    
    var timediff = now.getTime() - starttime.getTime();   
    document.getElementById('debugsearchurl').innerText = document.getElementById('debugsearchurl').innerText + ',cost=' + timediff + ' ms';
    //
}

	
function ifIE()
{
    if (window.ActiveXObject)
        return true;
    else
        return false;
}

function FireFoxJunkRemover(nodearr,i)
{
    //alert("inside junker: "+nodearr.length);
    for(var j=0;j<nodearr[i].childNodes.length;j++)
    {
        if(nodearr[i].childNodes[j].nodeName=="#text")
            nodearr[i].removeChild(nodearr[i].childNodes[j]);
    }
    return nodearr;
}

function LoadProperties()
{
    varct = geturlpara("ct"); 
    varpd = geturlpara("pd")

    var xmldoc = getxmldoc("cache_x/properties.xml");
    var nodearr = xmldoc.getElementsByTagName("cate");
    
    var found=false;
    var IE=ifIE();
    var ctValue = '';
        
    //loop for subcate id
    for(var i=0;i<nodearr.length;i++)
	{   
	    ctValue = nodearr[i].attributes.getNamedItem("id").value;
        if( varct==ctValue || ctValue.indexOf(","+varct+",") >= 0 )
        {
           
            //remove garbage xml childnode for firefox application.
            if(!IE)
                nodearr=FireFoxJunkRemover(nodearr,i);
            //alert("after inside subcate: "+nodearr[i].childNodes.length);

            XmlGenElement(nodearr,i,IE);
            found=true;
            break;
        }
    }
    //loop for maincate id
    if( varpd!=null )
    {
        for(var i=0;i<nodearr.length;i++)
	    {
	        ctValue = nodearr[i].attributes.getNamedItem("id").value;
            if( varpd==ctValue || ctValue.indexOf(","+varpd+",") >= 0 )
            {
                //alert("found pd");
                if(!IE)
                    nodearr=FireFoxJunkRemover(nodearr,i);

                XmlGenElement(nodearr,i,IE);
                found=true;
                break;
            }
        }
    }
    //if(!found)
    {
        //alert("default element added");
        addElement("PropertyArea", "txt_keyword_0", "關鍵字");
    }
	
}

function XmlGenElement(nodearr, i, IE)
{
    //alert("this is XmlGenElement");
            for(var j=0;j<nodearr[i].childNodes.length;j++)
            {
  
                if(nodearr[i].childNodes[j].childNodes.length==0)
                {
                    addElement("PropertyArea","txt_"+nodearr[i].childNodes[j].attributes.getNamedItem("field").value+"_"+j, nodearr[i].childNodes[j].attributes.getNamedItem("zh").value);
                }else{
                    addElement("PropertyArea","sel_"+nodearr[i].childNodes[j].attributes.getNamedItem("field").value+"_"+j, nodearr[i].childNodes[j].attributes.getNamedItem("zh").value);
                    if(!IE)
                        for(var k=0;k<nodearr[i].childNodes[j].childNodes.length;k++)
                        {
                            if(nodearr[i].childNodes[j].childNodes[k].nodeName=="#text")
                                nodearr[i].childNodes[j].removeChild(nodearr[i].childNodes[j].childNodes[k]);
                        }
                    
                    for(var k=0;k<nodearr[i].childNodes[j].childNodes.length;k++)
                    {
                      
                        addElementOpt("sel_"+nodearr[i].childNodes[j].attributes.getNamedItem("field").value+"_"+j, nodearr[i].childNodes[j].childNodes[k].childNodes[0].nodeValue, nodearr[i].childNodes[j].childNodes[k].getAttribute("id"));
                    }
                }
            }
            return 0;

}

function addElement(targetelement,id,desc)
{
//only id with prefix txt_ or sel_ allowed.
      var tararea = document.getElementById(targetelement);
      var ele01;
      var eledesc;
      var elebr;
      eledesc = document.createElement('span');
      eledesc.innerHTML=desc+": ";
      elebr = document.createElement('br');
      
      var idarr=id.split("_");
      if(idarr[0]=="txt")
      {
      //txt_namekey_<seq>
          ele01 = document.createElement('input');
          ele01.setAttribute('type', 'text');
          ele01.setAttribute('id', id);
          //ele01.setAttribute('value', desc);
      }else{
      //sel_name_<seq>
          ele01 = document.createElement('select');
          ele01.setAttribute('size', '1');
          ele01.setAttribute('id', id);
      }
      
      tararea.appendChild(eledesc);
      ele01.style.width="130px";
      tararea.appendChild(ele01);
      tararea.appendChild(elebr);
      
      if(idarr[0]=="sel")
      {
        //addElementOpt(id,desc,null);
        addElementOpt(id,"所有",null);
      }
      
}

function addElementOpt(targetsel,text,value)
{
    var sel01 = document.getElementById(targetsel);
    var optlen=sel01.options.length;
    sel01.options[optlen] = new Option(text, value);

    // set default value according to url passed
    var pair = targetsel.split('_');
    var key = pair[1];
    var keyvalue = geturlpara(key);
    if ( value != '' && keyvalue == value) 
        sel01.options[optlen].selected = true;
}


function gosearch(withprop)
{
   
   //document.getElementById('htmlbtn_search').innerText="Searching...";
   document.getElementById('htmlbtn_search').disabled=true;
   document.getElementById('pagetag').innerHTML = '';
   
   var ARRquery=strquery.split("?");
   
   if(withprop)
   {
       //alert('withprop is true');
       strquery = ARRquery[0]+"?ct=" + varct;
       var children = document.getElementById('PropertyArea').childNodes;
        
       for(var i=0;i<children.length;i++)
       {
            var eleparts=children[i].id.split("_");
            if(eleparts.length>1)
            {
                
                    //alert(eleparts.length);
                    
                    if(eleparts[0]=="txt")
                    {
                    //text field
                        if(children[i].value!='')
                        {
                            strquery += "&" + eleparts[1] + "=";
                            strquery += encodeURIComponent(children[i].value);
                        }
                    }else{
                    //select field
                        if(children[i].options[children[i].selectedIndex].value!='null')
                        {
                            strquery += "&" + eleparts[1] + "=";
                            strquery += encodeURIComponent(children[i].options[children[i].selectedIndex].value);
                        }
                    }
                
            }
            
       }
   
       var ctlkey = document.getElementById('txt_keyword_0');
       if ( ctlkey!=null && ctlkey.value != '' ) 
       {
            strquery = seturlpara( strquery, 'keyword', encodeURIComponent(ctlkey.value) );
            //strquery += "&keyword="+encodeURIComponent(ctlkey.value);
       }
        
   }

   //append state string and page position
   
   var statecode = GetStateCode();
   if ( statecode != null ) 
        strquery += "&state=" + statecode;
   
   strquery += "&recFR=1&recST=" + EachPage; 
   
   getSearchResult(strquery);    
   
   return false;
    
}