
 function getOnPageLeft(el)
 {
  if (arguments.length == 0)
   el = this;

  pos = el.offsetLeft;
  temp = el.offsetParent;

  while (temp != null)
  {
   pos += temp.offsetLeft;
   temp = temp.offsetParent;
  }

  return pos;
 }

 function getOnPageTop(el)
 {
  if (arguments.length == 0)
   el = this;

  pos = el.offsetTop;
  temp = el.offsetParent;

  while (temp != null)
  {
   pos += temp.offsetTop;
   temp = temp.offsetParent;
  }

  return pos;
 }

 var pricelistsTimeout = null;
 var hilightedLink = null;

 function showPricelists(cityId, parentEl)
 {
  if (cityId == null || cityId == '')
   return false;

  self.clearTimeout(pricelistsTimeout);

  if (hilightedLink != null)
   hilightedLink.className = 'PRICELISTS_MENU';

  hilightedLink = parentEl;
  hilightedLink.className = 'PRICELISTS_CURRENT_MENU';

  with (self.document.all)
  {
   pricelists.style.visibility = 'hidden';

   if (citiesCache[cityId] != null)
   {
	pricelists.innerHTML = '<B>Select price-list:</B><BR>';

	if (citiesCache[cityId]['in'] != null && citiesCache[cityId]['in'] != '')
	 pricelists.innerHTML +=
	  '<A HREF="' + citiesCache[cityId]['in'] + '" CLASS=PRICELISTS_MENU TARGET="_blank"\n' +
      'onMouseOver="self.clearTimeout(pricelistsTimeout); self.status = \'Прайс-лист на доставку грузов по России в\'; return true;"\n' +
      'onMouseOut="hidePricelists(); self.status = \'\'; return true;">Доставка по России в</A><BR>';

	if (citiesCache[cityId]['out'] != null && citiesCache[cityId]['out'] != '')
	 pricelists.innerHTML +=
	  '<A HREF="' + citiesCache[cityId]['out'] + '" CLASS=PRICELISTS_MENU TARGET="_blank"\n' +
      'onMouseOver="self.clearTimeout(pricelistsTimeout); self.status = \'Прайс-лист на доставку грузов по России из\'; return true;"\n' +
      'onMouseOut="hidePricelists(); self.status = \'\'; return true;">Доставка по России из</A><BR>';

	if (citiesCache[cityId]['local'] != null && citiesCache[cityId]['local'] != '')
	 pricelists.innerHTML +=
	  '<A HREF="' + citiesCache[cityId]['local'] + '" CLASS=PRICELISTS_MENU TARGET="_blank"\n' +
      'onMouseOver="self.clearTimeout(pricelistsTimeout); self.status = \'Прайс-лист на доставку грузов по г. ' +
       citiesCache[cityId]['name'] + '\'; return true;"\n' +
      'onMouseOut="hidePricelists(); self.status = \'\'; return true;">Доставка по городу</A><BR>';

	if (citiesCache[cityId]['container'] != null && citiesCache[cityId]['container'] != '')
	 pricelists.innerHTML +=
	  '<A HREF="' + citiesCache[cityId]['container'] + '" CLASS=PRICELISTS_MENU TARGET="_blank"\n' +
      'onMouseOver="self.clearTimeout(pricelistsTimeout); self.status = \'Прайс-лист на доставку контейнеров по России\'; return true;"\n' +
      'onMouseOut="hidePricelists(); self.status = \'\'; return true;">Контейнерные перевозки</A><BR>';
   }

   if (pricelists.innerHTML != '')
   {
	pricelists.innerHTML = '<NOBR>' + pricelists.innerHTML + '</NOBR>';
    pricelists.style.left = getOnPageLeft(parentEl) + 120;
    pricelists.style.top = getOnPageTop(parentEl);
    self.document.all.pricelists.style.visibility = 'visible';
   }
  }
 }

 function hidePricelists()
 {
  self.clearTimeout(pricelistsTimeout);

  pricelistsTimeout =
   self.setTimeout('self.document.all.pricelists.style.visibility = \'hidden\'; if (hilightedLink != null) hilightedLink.className = \'PRICELISTS_MENU\';', 5000);
 }

 function isDataValid(form)
 {
  with (form)
  {
   // validate "from" city
   if (start_city_id.options[start_city_id.selectedIndex].value == "")
   {
    window.alert('Пожалуйста, укажите город отправления.');
    start_city_id.focus();

    return false;
   }

   // validate "to" city
   if (finish_city_id.options[finish_city_id.selectedIndex].value == "")
   {
    window.alert('Пожалуйста, укажите город назначения.');
    finish_city_id.focus();

    return false;
   }

   // validate length
   if ((isNaN(parseFloat(length.value)) && isNaN(parseInt(length.value))) || (length.value <= 0))
   {
    window.alert('Пожалуйста, укажите длину груза.');
    length.focus();

    return false;
   }

   // validate width
   if ((isNaN(parseFloat(width.value)) && isNaN(parseInt(width.value))) || (width.value <= 0))
   {
    window.alert('Пожалуйста, укажите ширину груза.');
    width.focus();

    return false;
   }

   // validate height
   if ((isNaN(parseFloat(height.value)) && isNaN(parseInt(height.value))) || (height.value <= 0))
   {
    window.alert('Пожалуйста, укажите высоту груза.');
    height.focus();

    return false;
   }

   // validate weight
   if ((isNaN(parseFloat(weight.value)) && isNaN(parseInt(weight.value))) || (weight.value <= 0))
   {
    window.alert('Пожалуйста, укажите вес груза.');
    weight.focus();

    return false;
   }

   // validate qty
   if (isNaN(parseInt(qty.value)) || (qty.value <= 0))
   {
    window.alert('Пожалуйста, укажите количество одинаковых мест груза.');
    qty.focus();

    return false;
   }
  }

  // data is valid
  return true;
 }
