/**
 * Selectable dropdown list
 */

var gId = 0;
var ro_fr = document.getElementById('search_from');
var ro_to = document.getElementById('search_to'); 

var bf = 0;
var bt = 0;
 
function addListItem(resp,psuggest,psearch)
{ 
  var loc = resp || {};
  var row = document.createElement("li");
  row.innerHTML = loc.formatted_address;
  row.className = "list_item";
  row.id = 'point_' + gId;
  gId += 1;
  row.onclick = function()
    {
      psearch.value = row.innerHTML;
      if (psearch.id == 'search_from') { bf = 1; } else { bt = 1; }
      if ((bf == 1) && (bt == 1)) { document.getElementById('calcbtn').disabled=false; }
    }
//  row.onclick = function(){
//    updateMap(loc);
//  }  
  psuggest.appendChild(row);
}
// clear list
function clearListItems(pObj)
{
  while(pObj.firstChild)
  {
    pObj.removeChild(pObj.firstChild);
  }
}

function disable_()
{
  document.getElementById('calcbtn').disabled=true;
}

/**
* geocoder
*/
var geocoder = new google.maps.Geocoder();
geocoder.firstItem = {};

function geocode(id)
{
  var c_search = 'search' + id;
  var c_suggest = 'suggest' + id;
  
  var query = document.getElementById(c_search).value;
  
  if(query && query.trim) query = query.trim(); // trim space if browser supports
  if(query != geocoder.resultAddress && query.length > 1)
  { // no useless request
  
    query += ', Полтава, Полтавская область, Украина';
  
    clearTimeout(geocoder.waitingDelay);
    geocoder.waitingDelay = setTimeout(function(){
      geocoder.geocode({address: query}, geocodeResult);
    }, 300);
  } else {
    document.getElementById(c_suggest).innerHTML =  "";
    geocoder.resultAddress = "";
    geocoder.resultBounds = null;
  }
  // callback function
  function geocodeResult(response, status)
  {
    var pSuggest = document.getElementById(c_suggest);
    var pSearch = document.getElementById(c_search);
    
    if (status == google.maps.GeocoderStatus.OK && response[0])
    {
      geocoder.firstItem = response[0];
      clearListItems(pSuggest);
      var len = response.length;
      for(var i=0; i<len; i++)
      {                     
        addListItem(response[i],pSuggest,pSearch);
      }
    } else if(status == google.maps.GeocoderStatus.ZERO_RESULTS) {
      pSuggest.innerHTML =  "?";
      geocoder.resultAddress = "";
      geocoder.resultBounds = null;
    } else {
      pSuggest.innerHTML = status;
      geocoder.resultAddress = "";
      geocoder.resultBounds = null;
    }
  }
}

function driveit()
{
  var s_from = ro_fr.value;
  var s_to = ro_to.value;
  
//  s_from = s_from.trim();
//  s_to = s_to.trim();
  
  var loc_from = '';
  var loc_to = '';

  clearTimeout(geocoder.waitingDelay);
  geocoder.waitingDelay = setTimeout(function(){
    geocoder.geocode({address: s_from}, parseit);
  }, 300);
  
  function parseit(response, status)
  {
    if (status == google.maps.GeocoderStatus.OK && response[0])
    {
      if (loc_from == '')
      {
        loc_from = response[0].geometry.location;

        clearTimeout(geocoder.waitingDelay);      
        geocoder.waitingDelay = setTimeout(function(){  
          geocoder.geocode({address: s_to}, parseit);    
        }, 300);
      }
      else
      {
        loc_to = response[0].geometry.location;

        str = 'http://taxi.poltava.ua/map.php?from=' + escape(loc_from) + '&to=' + escape(loc_to);

        if (navigator.appName == 'Microsoft Internet Explorer')
        {
          location = str;
        }                      
        else
        {
          window.location = str;
        } 
      }
    }
  }
}

// by click on list
// function executed twice to override mapFirst()
/*function updateMap(respons){
  function doIt(respons){
    respons.geometry && respons.geometry.viewport && map.fitBounds(respons.geometry.viewport);
    document.getElementById("search").value = respons.formatted_address;
    clearListItems();
  }
  doIt(respons);
  setTimeout(function(){doIt(respons)},500);
} */
// by onchange
/*function mapFirst(){
  geocoder.firstItem.geometry && geocoder.firstItem.geometry.viewport
    && map.fitBounds(geocoder.firstItem.geometry.viewport);
  document.getElementById("search").value = geocoder.firstItem.formatted_address;
  setTimeout(function(){clearListItems()},1000);
}
*/
  
