var XML_url = 'xmlhttp/data_get.php'; 
var XHG_dropDown = getHTTPObject();
var selectedStationCoords = [0,0]; 

function recordTyping(ev, oInput, type)	{
	var keyCode = ev.keyCode ? ev.keyCode : ev.which ? ev.which : ev.charCode;
	if (keyCode == 13) {
		return;
	}
	
	if (keyCode == 27) {
    switch (type)  {
      case 0:
        var searchDIV = document.getElementById('searchBox');
        break;
      case 1:
        var searchDIV = document.getElementById('searchBox2');
        break;
    }
    searchDIV.style.visibility = 'hidden';
    return;
  }
	
	if (oInput.value.length > 0) {
    fillResults(oInput.value, type);
  }
}

function fillResults(inputText, type)  {
  obj = XHG_dropDown;
	if (obj.readyState == 4 || obj.readyState == 0) {
    var param = '?cmd=';
    switch (type)  {
      case 0:
        var searchDIV = document.getElementById('searchBox');
        param += 'fetch_stations';
        break;
      case 1:
        var searchDIV = document.getElementById('searchBox2');
        param += 'search_trains&now_sec=' + getServerDate();
        break;
    }
    searchDIV.style.visibility = 'visible';
    var oTable = searchDIV.childNodes[0];
    tableDelRecords(oTable, 0);
		url = XML_url;
		param += '&keyword=' + inputText + '&hash=' + GetUniqueVal();
		//log(url + param);
		//return;
		obj.open('GET', url + param, true);
		obj.onreadystatechange = function ()	{
			if (obj.readyState == 4) {
        var xmldoc = obj.responseXML;
        
        switch (type)  {
          case 1:
            var trainIDs = GetXMLValue(xmldoc.getElementsByTagName('trainIDs')).split('|');
            var recAr = GetXMLValue(xmldoc.getElementsByTagName('trainData')).split('|');
            var isOnMap = GetXMLValue(xmldoc.getElementsByTagName('trainOnMap')).split('|');
            for (i=0;i<recAr.length;i++) {
              tableAddRecord(oTable, i, recAr[i], type, [parseInt(isOnMap[i]) ? 1 : 2, parseInt(trainIDs[i])]);
            }
            break;
          default:
            var recAr = GetXMLValue(xmldoc.getElementsByTagName('citiesSTR')).split('|');
            var recHasCoordsAr = GetXMLValue(xmldoc.getElementsByTagName('citiesHasCoordSTR')).split('|');
            var recNo = parseInt(GetXMLValue(xmldoc.getElementsByTagName('citiesCount')));
            var recCoordsX = GetXMLValue(xmldoc.getElementsByTagName('coordsX')).split('|');
            var recCoordsY = GetXMLValue(xmldoc.getElementsByTagName('coordsY')).split('|');
            var recIDs = GetXMLValue(xmldoc.getElementsByTagName('citiesIDs')).split('|');
            var hasCoords;
            for (i=0;i<recAr.length;i++) {
              hasCoords = parseInt(recHasCoordsAr[i]) ? 1 : 2;
              tableAddRecord(oTable, i, recAr[i], type, [hasCoords, parseFloat(recCoordsX[i]), parseFloat(recCoordsY[i]), parseInt(recIDs[i])]);
            }
            break;  
        }
        
        
			}
		}; 
		obj.send(null);
	}
}


function tableDelRecords(oTable, start)	{
	if (oTable.rows.length > start)	{
		for (j2=start;j2<oTable.rows.length;j2++)	{
			oTable.rows[j2].style.display = 'none';
		}	
	}
}

function tableAddRecord(oTable, rowPos, recStr, typeID, recType)  {
  var oTR = oTable.insertRow(rowPos);
  var oTD = oTR.insertCell(0);
  oTD.innerHTML = recStr;
  oTD.className = 'searchCity';
  if (recType[0] == 1) {
    oTR.onmouseover = function()	{
      oTR.className = 'searchMouseOver';
  	}
  	oTR.onmouseout = function()	{
      oTR.className = 'searchMouseOut';
  	}
    oTR.onclick = function()	{
      switch (typeID) {
        case 1:
          var searchDIV = document.getElementById('searchBox2');
          var oInput = document.getElementById('TrainCode');
          var trainID = parseInt(recType[1]);
          ignorePan = 0;
          trackTrainID = 0;
          GetTrainPosition(trainID, [0]);
          //followTrain(trainID)
          break;
        default:
          var searchDIV = document.getElementById('searchBox');
          var oInput = document.getElementById('StationName');
          selectedStationCoords = [recType[1], recType[2], recType[3]];
          goToStation();
          break;
      }
      searchDIV.style.visibility = 'hidden';
      oInput.value = oTD.innerHTML;
  	}  
  }
  if (recType[0] == 2) {
    oTR.className = 'searchStatsDown';
  }
}

function CloseSearchBoxes() {
  var searchDIV = document.getElementById('searchBox');
  searchDIV.style.visibility = 'hidden';
  searchDIV = document.getElementById('searchBox2');
  searchDIV.style.visibility = 'hidden';
}
