/**
 * Handle communication with fly.co.uk
 *
**/
/*
  Communicate.getSearchID = function(params)
  {
    alert(params);
  }
  */

communicationList = new Array();
var _COMM_global = false;
CommunicationHolder = function(Comm)
{
  communicationList[Comm.searchParams] = Comm;
}

function Communicate(searchParams)
{
  this.searchParams = searchParams;

  this.searchID = false;
  this.searchData = new Array();

  /**
   * Receive Data from fly.co.uk
   **/
  this.getData = function(data)//{{{
  {
    if (!_COMM_global) return;

    /**
	 * get request ID
	 **/
    if (_COMM_global.searchID == false)
	{
	  // error occurred no searchID 
	  if (data['searchID'] != undefined)
	  {
	    // store searchID
	    _COMM_global.searchID = data['searchID'];
		//document.getElementById("debugSearchID").innerHTML = _COMM_global.searchID;

		// start results search
        _COMM_global.getResults();
	  }
	  else
	  {
	    alert("unknown error1");
		 // no searchID was returned. ERROR !!
	    _COMM_global.updateResults(new Array(), 100);
	  }
	}
	else
	{
	  // no response !! something went wrong
	  if (data['data'] == undefined || data['done'] == undefined)
	  {
	    data['done'] = 100;
	    data['data'] = new Array();
	  }

	  // merge user results
	  for (resID in data['data'])
	    _COMM_global.searchData[_COMM_global.searchData.length] = data['data'][resID];

	  // display downloaded resutls
	  _COMM_global.updateResults(data);
	  
	  if (data['blackMagic'] != undefined)
    	Display.showAdds(data['blackMagic']);
	    

	  if (data['done'] != 100)		// search not finished
        setTimeout("_COMM_global.getResults();", 2000);
	  else // search was done
		_COMM_global = false;
	}
  }//}}}

  /**
   * getResults - funciton used to receive results from the server
   **/
  this.getResults = function()//{{{
  {
	$.get("/flights/get_result.php", "searchID="+this.searchID+"&r="+Math.random(), this.getData, "json");
  }//}}}

  /**
   * updateResults - executed whenever new results where retreived from the server
  **/

  this.store_data = 0;
  this.store_progress = 0;
  this.updateResults = function(data)//{{{
  {
	//if(this.store_data == data['data'].length && this.store_progress == data['done'])
	//  return;

	this.store_data = data['data'].length;
    this.store_progress = data['done'];

    //document.getElementById("debug_data").innerHTML = "done: "+data['done']+"<br>"+this.searchData.length;
    Display.updateResults(data, data['done']);
  }//}}}

  /**
   * Executed when the search is started
   **/
  this.startSearch = function()//{{{
  {
    if (_COMM_global != false)
	  return;


    _COMM_global = this;
	$.get("/flights/get_search_id.php", this.searchParams+"&r="+Math.random(), _COMM_global.getData, "json");
  }//}}}

  CommunicationHolder(this);
}


