 /**
 * AJAX (front-script)
 * (C) ICSoft, http://www.icsoft.ru
 *
 * author Egor Stremousov
 * version 1.0
 */


 /** global variables **/
 var defaultName = "/lookup/";


function trim(str, chars) {
  return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
  chars = chars || '\\s';
  return str.replace(new RegExp('^[' + chars + ']+', 'g'), '');
}

function rtrim(str, chars) {
  chars = chars || '\\s';
  return str.replace(new RegExp('[' + chars + ']+$', 'g'), '');
}

 /** Load XMLDoc function **/
 function doLoad(url, id) {
      var request = null;
      try { //
          request=new ActiveXObject('Msxml2.XMLHTTP');
      } catch (e) {
          try {
              request=new ActiveXObject('Microsoft.XMLHTTP'); 
          } catch (e) {
              if(window.XMLHttpRequest){ 
                 request=new XMLHttpRequest();
              }
          }
      }

      if (request) {
        request.onreadystatechange = function processRequestChange(){

            if (request.readyState == 4) {
		
		            if (request.status == 200) {
		               lookupSetData(request, id);
		            } else {
		               lookupHideList(id);
		               //alert("Not load: " + request.statusText);
		            }
            }

        }
        request.open("GET", url, true);
        request.send(null);
      }
 }


 /** set answer data to container **/
 function lookupSetData(data, id){

		var result_request_id = data.getResponseHeader("requestid");
		var result_id		  = data.getResponseHeader("id");
		var result_count 	  = data.getResponseHeader("count");
		var result_data       = data.responseText;
		
		if ((result_request_id == lookupLastRequestId(id))&&(result_data!="")&&(result_count>0))
		{
        	lookupLoader(id).className = "lookup-hidden";
        	lookupHideList(id);
		   	lookupSetCount(id, result_count);
		    lookupSetList(id, result_data);
		    lookupShowList(id);		}
		else
		{
		  	// do nothing! - it's just a response from some old request			lookupLoader(id).className = "lookup-hidden";
		}
 }


 /**
  * Get data for container
  * 
  * @param {Number} id
  */
 function getDataFor(id)
 {
	lookupHideList(id);
		
	var query = lookupInput(id).value;
	var d = new Date;
	var request_id = getrandom(0,1000) + d.toGMTString();

	lookupSetLastRequestId(id, request_id, query);

    if (trim(query)!='') 
    {		
		var max_count = 15;
		var backURL = defaultName;
		if (lookupURL(id)!=""){ backURL = lookupURL(id); }
			
		var request = 'query=' + encodeURIComponent( query ) + '&requestID=' + encodeURIComponent( request_id ) + '&id=' + encodeURIComponent( id ) + '&maxcount=' + encodeURIComponent( max_count );
			
		doLoad(backURL + '?' + request, id);
			
		lookupLoader(id).className = "lookup-load-visible"+lookupCSS(id);
	}
}


