//-------------------- mContentLoader.js
var net = new Object();
net.READY_STATE_UNINITIALIZED= 0;
net.READY_STATE_LOADING      = 1;
net.READY_STATE_LOADED       = 2;
net.READY_STATE_INTERACTIVE  = 3;
net.READY_STATE_COMPLETE     = 4;

net.ContentLoader = function( component, url, method, requestParams ) {
   this.component     = component;
   this.url           = url;
   this.requestParams = requestParams;
   this.method        = method;
}

net.ContentLoader.prototype = {
   getTransport: function() {
      var transport;
      if ( window.XMLHttpRequest )
         transport = new XMLHttpRequest();
      else if ( window.ActiveXObject ) {
  		  var XmlHttpVersions = new Array(
							"MSXML2.XMLHTTP.6.0",
							"MSXML2.XMLHTTP.5.0",
							"MSXML2.XMLHTTP.4.0",
							"MSXML2.XMLHTTP.3.0",
							"MSXML2.XMLHTTP",
							"Microsoft.XMLHTTP");
		// try every prog id until one works
			for (var i=0; i<XmlHttpVersions.length && !transport; i++)
			{
			   	// try to create XMLHttpRequest object
			   try
				{  	// try to create XMLHttpRequest object
		   			transport = new ActiveXObject(XmlHttpVersions[i]);
				}
					catch(e) {}
		 	}	        
      	}
      	return transport;
   },

   sendRequest: function() {
      //if ( window.netscape && window.netscape.security.PrivilegeManager.enablePrivilege)
      //   netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
      var requestParams = []
      for ( var i = 0 ; i < arguments.length ;  i++ )
         requestParams.push(arguments[i]);
      var oThis = this;
      var request = this.getTransport();
      request.open( this.method, this.url, true );
      request.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded');
      request.onreadystatechange = function() { oThis.handleAjaxResponse(request) };
      request.send( this.queryString(requestParams) );
  },

  queryString: function(args) {
// changes made by Filatei to accommodate 3 combo
//     var requestParams = [];
 //    for ( var i = 0 ; i < this.requestParams.length ; i++ )
//{
	   //     alert(this.requestParams);
  //      requestParams.push(this.requestParams[i]);

//}
	 var queryString = this.requestParams;
     for ( var j = 0 ; j < args.length ; j++ )
     {
         queryString += '&' + args[j];
//        requestParams.push(args[j]);
	}
    // var queryString = "";
     //if ( requestParams && requestParams.length > 0 ) {
       // for ( var i = 0 ; i < requestParams.length ; i++ ){
         //  queryString += requestParams[i] + '&';}
	//        queryString = queryString.substring(0, queryString.length-1);
     //}
     return queryString;
  },
  handleAjaxResponse: function(request) {
     if ( request.readyState == net.READY_STATE_COMPLETE ) {
        if ( this.isSuccess(request) )
           this.component.ajaxUpdate(request);
        else
           this.component.handleError(request);
     }
  },

  isSuccess: function(request) {
    return  request.status == 0 
        || (request.status >= 200 && request.status < 300);
  }
};

// master is textinput id and slaveID is the div id of results pane
// url is server php returning xml of ijaw-english pair
function mSearch( masterId, slaveId, url, options ) {
   this.master     = document.getElementById(masterId);
   this.slave      = document.getElementById(slaveId);
   this.options    = options;
   this.ajaxHelper = new net.ContentLoader( this, url, "POST", options.requestParameters || [] );
   this.initializeBehavior();
}

mSearch.prototype = {
   initializeBehavior: function() {
      var oThis = this;
     this.master.onblur = function() { oThis.masterOnClick(); };

// change by Filatei

      var query = this.master.value;
      this.ajaxHelper.sendRequest( 'query=' + query );

   },

   masterOnClick: function() {
      var query = this.master.value;
      this.ajaxHelper.sendRequest( 'query=' + query );

   },

   // update the results pane 
   ajaxUpdate:  function(request) {
      var slaveHtml = this.createHtml(request.responseXML.documentElement);
      // display the HTML output
		this.slave.innerHTML = slaveHtml;
   },

   createHtml: function(ajaxResponse) {
      var newOptions = [];
	  var strHtml = "";
      var entries = ajaxResponse.getElementsByTagName('matches');
      	  for ( var i = 0 ; i < entries.length ; i++ ) {
         var ijaw  = this.getElementContent(entries[i],'ijawText');
		 var eng  = this.getElementContent(entries[i],'engText');
         var tense = this.getElementContent(entries[i],'tenseText');		 
		 // change this to a string
		 strHtml += "<p><b><font color=\"blue\">" + ijaw + "</font></b>:  <i>" + tense + "</i>: " + eng + "</p>";  

      }
	 
      return strHtml;

   },

   handleError: function(request) {
      if ( this.options.errorHandler )
         this.options.errorHandler(request);
   },

   getElementContent: function(element,tagName) {
      var childElement = element.getElementsByTagName(tagName)[0];
      return childElement.text != undefined ? childElement.text : childElement.textContent;
   }
};





