var suggestSearch = {};
function cancelEvent() {
      window.event.returnValue = false;
}

function pasteURL() {
  var myURL=window.event.dataTransfer.getData("text");
  document.getElementById("SearchTerm").value=myURL;
  suggestSearch.rssurl(myURL);
}
suggestSearch.iniLoad = function (menuid,sTitle,nRows,bHideResult,sType) {
    var divSearchBox = suggestSearch.drawResultBox(sTitle, bHideResult);

    if(sType=="addXMLpage"){
       var url = encodeURI("rss.php?menuid="+ menuid);
       var oParser = new XParser(url);
       oParser.onload = function () {
            suggestSearch.populateXMLPage(divSearchBox.childNodes[1],oParser);
       }
    }
    else if(sType=="getrss"){
      var url = encodeURI("rss.php?menuid=" +menuid);
       var oParser = new XParser(url);
       oParser.onload = function () {
            suggestSearch.populateRss(divSearchBox.childNodes[1],oParser,nRows);
        }
    }

    return divSearchBox;
}
  
suggestSearch.addtomyrss = function (RSSURL) {
  //Check RSS URL

  if(RSSURL=="" || !suggestSearch.isUrl(RSSURL)){
        alert("Not a valid URL address");
      return;
  }
  window.location.href="addmyrsslist.php?url="+RSSURL;
}

suggestSearch.isUrl = function(s) {
	var regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(s);
}

suggestSearch.addXMLpage = function (menuid, sTitle, bHideResult) {

    var divBodyPane = document.getElementById("SuggestSearchResultPane");
    var divSearchBox = this.drawResultBox(sTitle, bHideResult);


    if(divBodyPane.hasChildNodes()){
         divBodyPane.insertBefore(divSearchBox, divBodyPane.childNodes[0]);
        }
        else{
          divBodyPane.appendChild(divSearchBox);
        };
    var url = encodeURI("rss.php?menuid="+ menuid);
    var oParser = new XParser(url);
    oParser.onload = function () {
        suggestSearch.populateXMLPage(divSearchBox.childNodes[1],oParser);
         };

};

suggestSearch.rssurl = function (rssurl) {
  if(rssurl=="" || !suggestSearch.isUrl(rssurl)){
        alert("Not a valid URL address");
      return;
  }
    var divBodyPane = document.getElementById("SuggestSearchResultPane");
    var divSearchBox = this.drawResultBox("RSS Content", false);
    if(divBodyPane.hasChildNodes()){
         divBodyPane.insertBefore(divSearchBox, divBodyPane.childNodes[0]);
        }
        else{
          divBodyPane.appendChild(divSearchBox);
        };
    var url = encodeURI("rss.php?url=" +rssurl);
    var oParser = new XParser(url);
    oParser.onload = function () {
        var oTextNode = document.createTextNode(oParser.title.value);
        divSearchBox.childNodes[0].firstChild.firstChild.replaceNode(oTextNode);
        suggestSearch.populateRss(divSearchBox.childNodes[1],oParser,20);
         };
};

suggestSearch.getrss = function (menuid, sTitle, maxnews, bHideResult) {
    var divBodyPane = document.getElementById("SuggestSearchResultPane");
    var divSearchBox = this.drawResultBox(sTitle, bHideResult);
    if(divBodyPane.hasChildNodes()){
         divBodyPane.insertBefore(divSearchBox, divBodyPane.childNodes[0]);
        }
        else{
          divBodyPane.appendChild(divSearchBox);
        };
    var url = encodeURI("rss.php?menuid=" +menuid);
    var oParser = new XParser(url);
    oParser.onload = function () {
        suggestSearch.populateRss(divSearchBox.childNodes[1],oParser,maxnews);
         };
};

suggestSearch.search = function (sSearchTerm, sType) {
   if(""==sSearchTerm || sSearchTerm=="null")
   {
     return;
   }

    var divBodyPane = document.getElementById("SuggestSearchResultPane");
    var divSearchBox = this.drawResultBox(sType+": "+sSearchTerm, false);
    
    
    if(divBodyPane.hasChildNodes()){
         divBodyPane.insertBefore(divSearchBox, divBodyPane.childNodes[0]);
        }
        else{
          divBodyPane.appendChild(divSearchBox);
        };


    var url = encodeURI("websearch.php?search=" +sSearchTerm+"&type="+sType);

    var oParser = new XParser(url);
  
  
    oParser.onload = function () {
        suggestSearch.populateResults(divSearchBox.childNodes[1],oParser);
         };
   
};


suggestSearch.print = function () {

    var divBodyPane = document.getElementById("SuggestSearchResultPane");
    if(divBodyPane.hasChildNodes()){
        var disp_setting="toolbar=yes,location=no,width=600,directories=yes,menubar=yes,scrollbars=yes";

        var docprint=window.open("","",disp_setting);
        docprint.document.open();
        docprint.document.write('<html><head><title>CozyWebsite.COM</title>');
        docprint.document.write('<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">');
        docprint.document.write('<link rel="stylesheet" type="text/css" href="css/style.css" >');
        docprint.document.write('<link rel="stylesheet" type="text/css" href="css/print.css" >');
        docprint.document.write('</head><body onLoad="self.print()">');
        docprint.document.write(divBodyPane.innerHTML);
        docprint.document.write('</body></html>');
        docprint.document.close();
        docprint.focus();
   }
   else{
     alert("No Search Result to Print!");
   }
};

suggestSearch.drawResultBox = function (sSearchTerm,bHideResult) {
 
    var divSearchBox= document.createElement("div"); 
    var divHeading = document.createElement("div");
    var divResultsPane = document.createElement("div");
    var aHeaderLink = document.createElement("a");
    var aCloseLink = document.createElement("a");


    var txtComment= document.createElement("input");
    txtComment.className = "SuggestCommentTextBoxGray";
    txtComment.type = "text";
    txtComment.title = "printable notes";
    txtComment.value = "memo:";
    txtComment.size = 60;
    txtComment.onfocus = this.textboxfocus;
    txtComment.onblur =  this.textblur;
    
    aCloseLink.href = "#";
    aCloseLink.className = "SuggestSearchCloseLink";
    aCloseLink.onclick = this.close;
    aCloseLink.title= "remove this panel";
    aCloseLink.appendChild(document.createTextNode("X"));
    
    aHeaderLink.href = "#";
    aHeaderLink.title = "hide/show this panel";
    aHeaderLink.onclick = this.hideshow;
    sSearchTerm = ":: "+sSearchTerm;
    aHeaderLink.appendChild(document.createTextNode(sSearchTerm));

    divHeading.className = "SuggestSearchHeading";
    divHeading.appendChild(aHeaderLink);
    //divHeading.appendChild(txtComment);
    divHeading.appendChild(aCloseLink);

    var divLoading = document.createElement("div");
    divLoading.appendChild(document.createTextNode("Loading ..."));

    if(bHideResult){
       divResultsPane.className = "HideSuggestSearchResults";
    }
    else{
       divResultsPane.className = "SuggestSearchResults";
    }
    
    divResultsPane.appendChild(divLoading);


    
    divSearchBox.className = "SuggestSearchBox";
    divSearchBox.appendChild(divHeading);
    divSearchBox.appendChild(divResultsPane);

    return divSearchBox;
};

suggestSearch.populateRss = function (divResultsPane,oParser,maxnews) {
    
    if (typeof(oParser.items) !='object' || oParser.items.length < 1){
       var oNode = document.createTextNode("Page contain error. Please try again later.");
       divResultsPane.firstChild.firstChild.replaceNode(oNode);
      return;
    }
    //Create the document fragment
    var oFragment = document.createDocumentFragment();
    //Clear the Loading XML message
    divResultsPane.removeChild(divResultsPane.firstChild);
    var maxlist =oParser.items.length;

    if(maxlist <1){
      oFragment.appendChild(document.createTextNode("Page contain error. Please try again later."));
     }
     else if(maxlist>maxnews){
       maxlist=maxnews;
     }

    var currentticks=(new Date()).getTime();
    var minutes = 60*1000;


    for (var i = 0; i < maxlist; i++) {
        var oItem = oParser.items[i];
        
        var dt = Date.parse(oItem.date.value);
        var diffinminutes = Math.floor((currentticks -dt)/minutes);
        var ago = oItem.date.value;

        if(diffinminutes < 60){
          ago=diffinminutes +" minutes ago";
        }
        else if(diffinminutes > 60*24){
          var tday=Math.floor(diffinminutes/(60*24));
          var remain =diffinminutes - (tday *60*24);
          var thours = Math.floor(remain/60);
          var stringday = " days ";
          var stringhour = " hours ago";
          if (tday <2){ stringday = " day ";}
          if(thours <2){   stringhour = " hour ago"; }
          ago = tday + stringday + thours + stringhour;

        }
        else if(diffinminutes >59){
          var thours = Math.floor(diffinminutes/60);
          var stringhour = " hours ago";
          if(thours <2){   stringhour = " hour ago"; }
          ago = thours + stringhour ;
        }


        //Create the link
        var divTitle = document.createElement("div");
        divTitle.className = "RSStitle";
        
        //Apend Expan buttons
    
        var LinkExpand = document.createElement("a");
        LinkExpand.className = "ExpandDescription";
        LinkExpand.href="#";
        LinkExpand.appendChild(document.createTextNode("+"));
        LinkExpand.onclick=this.showdescription;
        divTitle.appendChild(LinkExpand);

        
        //Apend Link
        var aResultLink = document.createElement("a");
        aResultLink.href = oItem.link.value;
        aResultLink.className = "RSSLink";
        aResultLink.target = "_new";
        aResultLink.appendChild(document.createTextNode(oItem.title.value));
        
          //Add the link to the Link Div
        divTitle.appendChild(aResultLink);
         //Create timestamp panel
        var sTime= document.createElement("span");
        sTime.className = "age";
        sTime.appendChild(document.createTextNode(ago));
        //Add timestamp to the Link Div
        divTitle.appendChild(sTime);
         //Append the link Division to the panel
        oFragment.appendChild(divTitle);

          //Add Expand text
        var Description = document.createElement("div");
        //Add Description
        var ResultLink2 = document.createElement("div");
        ResultLink2.className = "HideRSSDescription";
        var ResultInner = document.createElement("span");
        if(!oItem.description.value){ResultInner.innerHTML="Posted:"+oItem.date.value;}
        else{
          ResultInner.innerHTML=oItem.description.value;
        }
        ResultLink2.appendChild(ResultInner);
        
        if(!oItem.enclosure.value){}else{
          var ResultEnclosure= document.createElement("div");
          var aResultEnclosureImg=  document.createElement("img");
          aResultEnclosureImg.src="../img/play.gif";
          
          var aResultEnclosureLink=  document.createElement("a");
          ResultEnclosure.className = "RSSEnclosure";
          aResultEnclosureLink.href = oItem.enclosure.value;
          aResultEnclosureLink.className = "MediaLink";
          aResultEnclosureLink.target = "_new";
          aResultEnclosureLink.title="Play or download media";
          aResultEnclosureLink.appendChild(aResultEnclosureImg);
          //aResultEnclosureLink.appendChild(document.createTextNode("Play"));
          ResultEnclosure.appendChild(aResultEnclosureLink);
          ResultLink2.appendChild(ResultEnclosure);
        }
        var divTransLink = document.createElement("div");
        var aTransLinkze = document.createElement("a");
        aTransLinkze.href ="#";
        aTransLinkze.onclick = this.translate2zhuyin;
        aTransLinkze.className = "TransLink";
        aTransLinkze.appendChild(document.createTextNode(">> Zhuyin"));
        divTransLink.appendChild(aTransLinkze);
        var aTransLink = document.createElement("a");
        aTransLink.href ="#";
        aTransLink.onclick = this.translate2pinyin;
        aTransLink.className = "TransLink";
        aTransLink.appendChild(document.createTextNode(">> Pinyin"));
        divTransLink.appendChild(aTransLink);
        var aTransLinkzp = document.createElement("a");
        aTransLinkzp.href ="#";
        aTransLinkzp.onclick = this.translate2zhuyinpinyin;
        aTransLinkzp.className = "TransLink";
        aTransLinkzp.appendChild(document.createTextNode(">> Zhuyin+Pinyin"));
        divTransLink.appendChild(aTransLinkzp);
        var aTransLink2 = document.createElement("a");
        aTransLink2.href ="#";
        aTransLink2.onclick = this.translate2simp;
        aTransLink2.className = "TransLink";
        aTransLink2.appendChild(document.createTextNode(">> JianTi"));
        divTransLink.appendChild(aTransLink2);
        var aTransLink3 = document.createElement("a");
        aTransLink3.href ="#";
        aTransLink3.onclick = this.translate2trad;
        aTransLink3.className = "TransLink";
        aTransLink3.appendChild(document.createTextNode(">> FanTi"));
        divTransLink.appendChild(aTransLink3);
        ResultLink2.appendChild(divTransLink);
        Description.appendChild(ResultLink2);
        
        oFragment.appendChild(Description);
    }
    divResultsPane.appendChild(oFragment);
};

suggestSearch.populateXMLPage = function (divResultsPane,oParser) {
    //Create the document fragment
    var oFragment = document.createDocumentFragment();

    //Clear the Loading XML message
    divResultsPane.removeChild(divResultsPane.firstChild);
    var maxlist =oParser.items.length;

    if(maxlist <1){
      oFragment.appendChild(document.createTextNode("No Result"));
     }
     else if(maxlist < 2)
     {
       var oItem = oParser.items[0];
       var ResultInner = document.createElement("div");
       ResultInner.innerHTML=oItem.description.value;
       oFragment.appendChild(ResultInner);
     }
     else{
        for (var i = 0; i < maxlist; i++) {
            var oItem = oParser.items[i];
            
            
            //Create the link
            var divTitle = document.createElement("div");
            divTitle.className = "RSStitle";

            //Apend Expan buttons
            if(oItem.description.value){
                var LinkExpand = document.createElement("a");
                LinkExpand.className = "ExpandDescription";
                LinkExpand.href="#";
                LinkExpand.appendChild(document.createTextNode(">"));
                LinkExpand.onclick=this.showdescription;
                divTitle.appendChild(LinkExpand);
            }
        

            var aResultLink = document.createElement("a");
            aResultLink.href = oItem.link.value;
            aResultLink.className = "RSSLink";
            aResultLink.target = "_new";
            aResultLink.appendChild(document.createTextNode(oItem.title.value));
            divTitle.appendChild(aResultLink);
             //Append the link to the fragment
            oFragment.appendChild(divTitle);

            if(!oItem.description.value){
                 var Description = document.createElement("div");
                 oFragment.appendChild(Description);
            }
            else{
              //Add Expand text
               var Description = document.createElement("div");

              //Add Description
               var ResultLink2 = document.createElement("div");
               ResultLink2.className = "HideRSSDescription";
               var ResultInner = document.createElement("span");
               ResultInner.innerHTML=oItem.description.value;
               ResultLink2.appendChild(ResultInner);
               if(oItem.date.value){
                  var ResultPubdate = document.createElement("span");
                  ResultPubdate.appendChild(document.createTextNode(" Posted: "+oItem.date.value));
                  ResultLink2.appendChild(ResultPubdate);
               }
               Description.appendChild(ResultLink2);

              oFragment.appendChild(Description);
           }
        }
    }
    //Add the fragment to the results box
    divResultsPane.appendChild(oFragment);
};

suggestSearch.PopulatePage =function(divResultsPane, pageurl) {
   //var oFragment = document.createDocumentFragment();
   var Result =document.createElement("div");
   divResultsPane.removeChild(divResultsPane.firstChild);
   
   var oReq = zXmlHttp.createRequest();
   oReq.onreadystatechange = function () {
			if (oReq.readyState == 4) {
	            // only if "OK"
				if (oReq.status == 200) {
                     Result.innerHTML = oReq.responseText;
	                  divResultsPane.appendChild(Result);
				}
			}
   };
   oReq.open("GET", pageurl, true);
   oReq.send(null);

}
suggestSearch.populateResults = function (divResultsPane,oParser) {
    //Create the document fragment
    var oFragment = document.createDocumentFragment();
    
    //Clear the Loading XML message
    divResultsPane.removeChild(divResultsPane.firstChild);
    var maxlist =oParser.items.length;
    
    if(maxlist <1){
      oFragment.appendChild(document.createTextNode("No Result"));
     }
   //  else if(maxlist>8){
    //   maxlist=8;
    //   }
     
    for (var i = 0; i < maxlist; i++) {
        var oItem = oParser.items[i];
        
        //Create the link
        var aResultLink = document.createElement("a");
        aResultLink.href = oItem.link.value;
        aResultLink.className = "SuggestSearchLink";
        aResultLink.target = "_new";
        aResultLink.appendChild(document.createTextNode(oItem.title.value));
        
         //Append the link to the fragment
        oFragment.appendChild(aResultLink);

        //Add content to the link
         var ResultLink2 = document.createElement("div");
         ResultLink2.className = "SuggestSearchDescription";
         ResultLink2.appendChild(document.createTextNode(oItem.description.value));
         oFragment.appendChild(ResultLink2);

    }
    
    //Add the fragment to the results box
    divResultsPane.appendChild(oFragment);   
};


suggestSearch.close = function () {
    var divSearchBox = this.parentNode.parentNode;
    var divBodyPane = divSearchBox.parentNode;
    if(divBodyPane.lastChild ==divSearchBox)
    {
      if( divSearchBox.previousSibling !=null){
        divSearchBox.previousSibling.childNodes[1].className="SuggestSearchResults";
      }
    }
    divBodyPane.removeChild(divSearchBox);
    
	   
    return false;
};

suggestSearch.hideshow= function () {
    var divSearchBox = this.parentNode.parentNode;
    if(divSearchBox.childNodes[1].className=="SuggestSearchResults"){
      divSearchBox.childNodes[1].className="HideSuggestSearchResults";
    }
    else{
      divSearchBox.childNodes[1].className="SuggestSearchResults"
    }

    return false;
};
suggestSearch.showdescription= function () {
    var divSearchBox = this.parentNode.nextSibling;

    if(this.firstChild.data =="+"){
       this.firstChild.data ="-";
       divSearchBox.childNodes[0].className="RSSDescription";
    }
    else if(this.firstChild.data =="-"){
       this.firstChild.data ="+";
       divSearchBox.childNodes[0].className="HideRSSDescription";
    }


    return false;
};


suggestSearch.textboxfocus =function () {

if(this.value =="memo:"){
  this.value="";
  this.className = "SuggestCommentTextBox";
}

    return false;
};

suggestSearch.textblur =function () {

if(this.value ==""){
  this.value="memo:";
  this.className = "SuggestCommentTextBoxGray";
}
};


suggestSearch.translate2pinyin =function ()  {
  var sContent=this.parentNode.parentNode.parentNode.childNodes[0].childNodes[0];
    var oHttp = zXmlHttp.createRequest();
    var oData = {
        outputtype: "pinyin",
        text: escape(sContent.innerHTML)
    };
    oHttp.open("post", "../dictionary/compose/translate.php", true);
    sContent.innerHTML ="<div>converting ...<div>";
    oHttp.onreadystatechange = function () {
        if (oHttp.readyState == 4) {
            var aResult = JSON.parse(oHttp.responseText);
            sContent.innerHTML =unescape(aResult);
        }
    };
    oHttp.send(JSON.stringify(oData));
};

suggestSearch.translate2zhuyin =function ()  {
  var sContent=this.parentNode.parentNode.parentNode.childNodes[0].childNodes[0];
    var oHttp = zXmlHttp.createRequest();
    var oData = {
        outputtype: "zhuyin",
        text: escape(sContent.innerHTML)
    };
    oHttp.open("post", "../dictionary/compose/translate.php", true);
    sContent.innerHTML ="<div>converting ...<div>";
    oHttp.onreadystatechange = function () {
        if (oHttp.readyState == 4) {
            var aResult = JSON.parse(oHttp.responseText);
            sContent.innerHTML =unescape(aResult);
         
        }
    };
    oHttp.send(JSON.stringify(oData));
};

suggestSearch.translate2zhuyinpinyin =function ()  {
  var sContent=this.parentNode.parentNode.parentNode.childNodes[0].childNodes[0];
    var oHttp = zXmlHttp.createRequest();
    var oData = {
        outputtype: "zhuyin_pinyin",
        text: escape(sContent.innerHTML)
    };
    oHttp.open("post", "../dictionary/compose/translate.php", true);
    sContent.innerHTML ="<div>converting ...<div>";
    oHttp.onreadystatechange = function () {
        if (oHttp.readyState == 4) {
            var aResult = JSON.parse(oHttp.responseText);
            sContent.innerHTML =unescape(aResult);
      
        }
    };
    oHttp.send(JSON.stringify(oData));
};

suggestSearch.translate2simp =function ()  {
  var sContent=this.parentNode.parentNode.parentNode.childNodes[0].childNodes[0];
    var oHttp = zXmlHttp.createRequest();
    var oData = {
        outputtype: "simplified",
        text: escape(sContent.innerHTML)
    };
    oHttp.open("post", "../dictionary/compose/translate.php", true);
    sContent.innerHTML ="<div>converting ...<div>";
    oHttp.onreadystatechange = function () {
        if (oHttp.readyState == 4) {
            var aResult = JSON.parse(oHttp.responseText);
            sContent.innerHTML =unescape(aResult);
        }
    };
    oHttp.send(JSON.stringify(oData));
};

suggestSearch.translate2trad =function ()  {
  var sContent=this.parentNode.parentNode.parentNode.childNodes[0].childNodes[0];
    var oHttp = zXmlHttp.createRequest();
    var oData = {
        outputtype: "traditional",
        text: escape(sContent.innerHTML)
    };
    oHttp.open("post", "../dictionary/compose/translate.php", true);
    sContent.innerHTML ="<div>converting ...<div>";
    oHttp.onreadystatechange = function () {
        if (oHttp.readyState == 4) {
            var aResult = JSON.parse(oHttp.responseText);
            sContent.innerHTML =unescape(aResult);
        }
    };
    oHttp.send(JSON.stringify(oData));
};


