//Функция для получения объекта XmlHttpRequest в зависимости от браузера
function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}
//Функция сортировки по алфавиту для двухмерного массива
function sortMasByA(a, b){
   if (a[1] > b[1])
        return 1;
    else if (a[1] < b[1])
        return -1;
    else
        return 0;
}
//Функция добавления элементов массива в списки городов
function addCitiesToSelect(arrC) {
  var sDepart = document.booking.depart;
        var sArrive = document.booking.arrive;
        for (i=0;i<arrC.length;i++) {
		  addDeOption = document.createElement("option"); //пункт списка "Откуда"
		  addArOption = document.createElement("option"); //пункт списка "Куда"
		  addDeOption.appendChild(document.createTextNode(arrC[i][1]));
          addDeOption.setAttribute("value", arrC[i][0]);
		  addArOption.appendChild(document.createTextNode(arrC[i][1]));
          addArOption.setAttribute("value", arrC[i][0]);
		  if (arrC[i][0] == 'LED') {
			addDeOption.selected="selected"; //выбор города по умолчанию "Откуда"	
		  };
		  if (arrC[i][0] == 'DME') {
			addArOption.selected="selected"; //выбор города по умолчанию "Куда"		
		  };
		  sDepart.appendChild(addDeOption);
		  sArrive.appendChild(addArOption);
		}
}
/*Функция, подгружающая список городов на страницу бронирования
url - адрес xml со списком городов, lang - язык названия города (en/ru)
*/
function makeCityRequest(url,lang) {
  if (lang == 'ru') {
    var reportMsg = 'Загружен неполный список городов. Пожалуйста, сообщите нам об ошибке.'
	lCities = ruCities;
  } else {
	var reportMsg = 'The list of cities is incomplete. Please report us.'
	lCities = enCities;
  };
  var xml_request = getXmlHttp(); //получение объекта XmlHttpRequest
  xml_request.onreadystatechange = function() { 
    if (xml_request.readyState == 4) {
	  if (xml_request.status == 200) {
	    var xmldoc = xml_request.responseXML; //установление связи с данными из XML
		var citycode = xmldoc.getElementsByTagName('code'); //код города
		var cityname;  //название города в зависимости от языка
		if (lang == 'ru') {
		  cityname = xmldoc.getElementsByTagName('runame');	
		} else {
		  cityname = xmldoc.getElementsByTagName('enname');	
		}
		var citymas = []; //массив кодов и названий городов
		for (i=0;i<cityname.length;i++) {
		  citymas[i] = [citycode.item(i).firstChild.data,cityname.item(i).firstChild.data];
		};
		citymas.sort(sortMasByA); //сортировка массива по названию города по алфавиту
		addCitiesToSelect(citymas); //добавление городов в списки Откуда и Куда
		// если города в списке не загрузились из XML, добавляются города по умолчанию
		if (citymas.length == 0) {
		  alert(reportMsg);
		  addCitiesToSelect(lCities);		  
		};
	  }
	  else {
        alert(reportMsg);
		addCitiesToSelect(lCities);	
	  }     	
	}
  }
  xml_request.open('GET', url, true);
  xml_request.send(null);       
}

 
