

//-------------------- 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 ) {
         try {
            transport = new ActiveXObject('Msxml2.XMLHTTP');
         }
         catch(err) {
            transport = new ActiveXObject('Microsoft.XMLHTTP');
         }
      }
      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) {

     var requestParams = [];
     for ( var i = 0 ; i < this.requestParams.length ; i++ )
        requestParams.push(this.requestParams[i]);
     for ( var j = 0 ; j < args.length ; 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);
  }

};







//-------------------- applyjob.js


TextSuggest = Class.create();

TextSuggest.prototype = {

   initialize: function(anId, url, options) {
      this.id          = anId;
      var browser = navigator.userAgent.toLowerCase();
      this.isIE        = browser.indexOf("msie") != -1;
      this.isOpera     = browser.indexOf("opera")!= -1;
      this.textInput   = $(this.id);
      this.countJobs = 0;
      this.message = "";
      this.jobId = '';
      this.setOptions(options);
      this.initAjax(url);
      this.url=url;
      this.messageField='';
      this.counterField='';

   },

   initAjax: function(url) {
      ajaxEngine.registerRequest( this.id + '_request', url );
      ajaxEngine.registerAjaxObject( this.id + '_updater', this );
   },

   setOptions: function(options) {
      this.options = options;
   },
   
   applyJob: function(value) {     
        this.jobId = value;
        this.sendRequestForApply();
   },

   sendRequestForApply: function() {
     if ( this.handlingRequest ) {
        this.pendingRequest = true;
        return;
     }
     this.handlingRequest = true;
     this.callRicoAjaxEngine();
   },

   callRicoAjaxEngine: function() {
      var callParms = [];
      callParms.push( 'job=' + this.jobId);
      
      var additionalParms = this.options.requestParameters || [];
      for( var i=0 ; i < additionalParms.length ; i++ )
         callParms.push(additionalParms[i]);

      aj = new net.ContentLoader( this, this.url,'post', callParms );
      aj.sendRequest();
   },

   ajaxUpdate: function( ajaxResponse ) {
      this.createData(ajaxResponse.responseXML);
	 
      this.messageField = document.getElementById(this.options.messageIDname);      
     this.counterField = document.getElementById(this.options.countIDname);
     
      if ( this.message == "" ) {
         this.hideMessage();
	 	 this.messageField.innerHTML = "";
      }
      else {
		 this.messageField.innerHTML = this.message;
         this.showMessage();
         //setTimeout("TextSuggest.hideMessage()",5000);
         
      }
      if ( this.countJobs != "" ) {
	 	 this.counterField.innerHTML = this.countJobs;
      }

      this.handlingRequest = false;

      if ( this.pendingRequest ) {
         this.pendingRequest    = false;
         this.sendRequestForApply();
      }
   },

   createData: function(ajaxResponse) {
      
     this.message = "";
      this.count = 0;
      var entry = ajaxResponse.getElementsByTagName('entry');
         this.message  = this.getElementContent(entry[0].getElementsByTagName('message')[0]);
         this.countJobs = this.getElementContent(entry[0].getElementsByTagName('count')[0]);
      
   },
   
	showMessage: function() {
      var divStyle = this.messageField.style;
      if ( divStyle.display == '' )
         return;
      divStyle.display = '';
   },
   
	hideMessage: function() {
	   this.messageField.innerHTML = '';
      this.messageField.style.display = 'none';
   },
	
	getElementContent: function(element) {
      return element.firstChild.data;
   }
};





