var suggest_req;
suggest_cache = [];

function Suggestions() {
  this.url = "/cgi/suggest";
}

Suggestions.prototype.procSuggestions = function() {
   var aSuggestions = [];

   switch (suggest_req.readyState) {
    case 1:
      break ;
    case 2:
      break;
    case 3:
      break;
    case 4:
      var rtext = suggest_req.responseText
      aSuggestions = rtext.split('\n');
      suggest_cache = aSuggestions;

      //provide suggestions to the control
      suggest_control.autosuggest(aSuggestions);
   }
};

/**
 * Request suggestions for the given autosuggest control. 
 * @scope protected
 * @param oAutoSuggestControl The autosuggest control to provide suggestions for.
 */
Suggestions.prototype.requestSuggestions = function (oAutoSuggestControl) {
   var tbval = oAutoSuggestControl.textbox.value;
   var curDictype = document.getElementById('dictype').value ;
   var data = "phrase=" + tbval + "&dictype=" + curDictype;
   var tmparr = [];

   suggest_control = oAutoSuggestControl;

   if ( tbval.length == 0 ) {
      suggest_control.autosuggest(tmparr);
      return;
   }

   if ( curDictype == 'cn_cn' ||  curDictype == 'cn_ug' || curDictype == 'cn_en' ) { 
     var hint = getHint(tbval);
     data = data + "&hint=" + hint;
     if ( hint == "chinpin" ) {
       data = data + "&chinpart=" + chinpart + "&pinpart=" + pinpart;
     }
   }

   // see if we can make use of our current cache
   if (suggest_cache.length > 0) {
      for ( var i = 0; i < suggest_cache.length; i++ ) {
         if(suggest_cache[i].indexOf(tbval) == 0) {
           tmparr[tmparr.length] = suggest_cache[i];
         }
      }
      if ( tmparr.length > 0 ) {
         suggest_control.autosuggest(tmparr);
      }
   }

   if (!suggest_req) {
     suggest_req = new_req();
   } else if (suggest_req.readyState != 0) {
     suggest_req.abort();
   }

  // Execute the request
   try {
     if (suggest_req) {
       suggest_req.onreadystatechange = this.procSuggestions ;

       suggest_req.open( 'POST', this.url, true );
       suggest_req.setRequestHeader('REFERER', location.href);
       suggest_req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
       suggest_req.send( data );
     }
   } catch (e) {
     // do nothing
   }
};

