

// Declare global data

var iconTypeSun     = 0;
var iconTypeDive    = 1;
var iconTypeSurf    = 2;
var iconTypeVolcano = 3;
var iconTypeVine    = 4;


var placeCoord;
var map;
var markersPlaces;
var placeTypeIndex = 0;
var placeType;
var placeMessage;
var placeName;
var placeLink;
var placeIcon;
                  
function initPlacesAll()
{
  var lnglat_EN           = new GLatLng(11.181635, 119.393406);
  var lnglat_Bora         = new GLatLng(11.966516, 121.928329);
  var lnglat_Bohol        = new GLatLng( 9.567642, 123.761673);
  var lnglat_Coron        = new GLatLng(11.997413, 120.222702);
  var lnglat_Siargao      = new GLatLng( 9.788099, 126.159611);
  var lnglat_Legaspi      = new GLatLng(13.170289, 123.728371);
  var lnglat_Vigan        = new GLatLng(17.573834, 120.389256);
  var lnglat_PP           = new GLatLng( 9.940987, 118.797398);
  var lnglat_PG           = new GLatLng(13.515568, 120.942307);
  var lnglat_Manila       = new GLatLng(14.586109, 120.983677);
  var lnglat_Catanduanes  = new GLatLng(13.683417, 124.385834);
  var lnglat_Daet         = new GLatLng(14.128119, 122.983589);
  var lnglat_Baler        = new GLatLng(15.754787, 121.567726);
  var lnglat_Zambales     = new GLatLng(15.00591,  120.06918);
  var lnglat_Pagudpud     = new GLatLng(18.570303, 120.856361);
  var lnglat_Camiguin     = new GLatLng(9.246922,  124.705067);
  var lnglat_Malapascua   = new GLatLng(11.337719, 124.115267);
  var lnglat_Baguio       = new GLatLng(16.411599, 120.598680);
  var lnglat_Cebu         = new GLatLng(10.302193, 123.913407);
  var lnglat_Davao        = new GLatLng(7.107911,  125.608635);
  var lnglat_Dipolog      = new GLatLng( 8.479266, 123.333149);
  var lnglat_Dumagete     = new GLatLng( 9.312305, 123.310307);
  var lnglat_Batanes      = new GLatLng(20.446846, 121.97156);
  var lnglat_Calicoan     = new GLatLng(10.986458, 125.804729);


  placeCoord     = new Array();
  placeCoord[ 0] = lnglat_EN;
  placeCoord[ 1] = lnglat_Bora;
  placeCoord[ 2] = lnglat_Bohol;
  placeCoord[ 3] = lnglat_Coron;
  placeCoord[ 4] = lnglat_Siargao;
  placeCoord[ 5] = lnglat_Legaspi;
  placeCoord[ 6] = lnglat_Vigan;
  placeCoord[ 7] = lnglat_PP;
  placeCoord[ 8] = lnglat_PG;
  placeCoord[ 9] = lnglat_Manila;
  placeCoord[10] = lnglat_Catanduanes;
  placeCoord[11] = lnglat_Daet;
  placeCoord[12] = lnglat_Baler;
  placeCoord[13] = lnglat_Zambales;
  placeCoord[14] = lnglat_Pagudpud;
  placeCoord[15] = lnglat_Camiguin;
  placeCoord[16] = lnglat_Malapascua;
  placeCoord[17] = lnglat_Baguio;
  placeCoord[18] = lnglat_Cebu;
  placeCoord[19] = lnglat_Davao;
  placeCoord[20] = lnglat_Dipolog;
  placeCoord[21] = lnglat_Dumagete;
  placeCoord[22] = lnglat_Batanes;
  placeCoord[23] = lnglat_Calicoan;
  
  placeType =  new Array(
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeDive,
                      iconTypeSurf,
                      iconTypeVolcano,
                      iconTypeVine,
                      iconTypeVine,
                      iconTypeDive,
                      iconTypeVine,
                      iconTypeSurf,
                      iconTypeSurf,
                      iconTypeSurf,
                      iconTypeSurf,
                      iconTypeSurf,
                      iconTypeSun,
                      iconTypeDive,
                      iconTypeVine,
                      iconTypeVine,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeDive,
                      iconTypeVolcano,
                      iconTypeSurf
                    );
  placeMessage = new Array(
                      "Затеряный рай",
                      "Лучший пляж мира",
                      "Тарсиеры и ласковое море",
                      "Закаты и проливы",
                      "Океанские волны",
                      "Курящий Майон и китовые акулы",
                      "Старинный колониальный город",
                      "Ворота на землю богов: Палаван",
                      "Подводные каньоны",
                      "Мэтро Манила",
                      "Мажестик! Волны и пляж",
                      "Пляж Багасбас! Песок и волны-сёрфинг весь год",
                      "Cерый песок и волны для сёрфинга",
                      "Кристальный пляж и много волн",
                      "Белоснежный пляж Сауд и волны океана",
                      "7 вулканов и белый песок",
                      "Акулы-трешеры и отличный пляж",
                      "Рисовые терассы",
                      "Курортная столица",
                      "Жемчужина Минданао",
                      "Город орхидей",
                      "Фантастический подводный мир",
                      "Фантастические пейзажи",
                      "Гигантские волны и нетронутые пляжи"
                    );
                    
  placeName = new Array(
                      "Эль Нидо",
                      "Боракай",
                      "Бохоль",
                      "Корон",
                      "Шиаргао",
                      "Легаспи",
                      "Виган",
                      "Пуэрто Принцесса",
                      "Пуэрто Галера",
                      "Манила",
                      "Катандуанес",
                      "Даэт",
                      "Балер",
                      "Замбалес",
                      "Пагудпуд",
                      "Камигуин",
                      "Малапаскуа",
                      "Багио",
                      "Себу",
                      "Давао",
                      "Диполог",
                      "Думагете",
                      "Батанес",
                      "Каликоан"
                    );
  placeLink  = new Array(
                      "main.php?show=place&amp;with=elnido", 
                      "main.php?show=place&amp;with=boracay",
                      "main.php?show=place&amp;with=bohol",
                      "main.php?show=place&amp;with=coron",
                      "main.php?show=place&amp;with=siargao",
                      "main.php?show=place&amp;with=legaspi",
                      "main.php?show=place&amp;with=vigan",
                      "main.php?show=place&amp;with=puertoprincessa",
                      "main.php?show=place&amp;with=puertogalera",
                      "main.php?show=place&amp;with=manila",
                      "main.php?show=place&amp;with=catanduanes",
                      "main.php?show=place&amp;with=daet",
                      "main.php?show=place&amp;with=baler",
                      "main.php?show=place&amp;with=zambales",
                      "main.php?show=place&amp;with=pagudpud",
                      "main.php?show=place&amp;with=camiguin",
                      "main.php?show=place&amp;with=malapascua",
                      "main.php?show=place&amp;with=baguio",
                      "main.php?show=place&amp;with=cebu",
                      "main.php?show=place&amp;with=davao",
                      "main.php?show=place&amp;with=dipolog",
                      "main.php?show=place&amp;with=dumaguete",
                      "main.php?show=place&amp;with=batanes",
                      "main.php?show=place&amp;with=calicoan"
                    );
  placeIcon = new Array(
                      "places/elnido/ico_place.jpg",
                      "places/boracay/ico_place.jpg",
                      "places/bohol/ico_place.jpg",
                      "places/coron/ico_place.jpg",
                      "places/siargao/ico_place.jpg",
                      "places/legaspi/ico_place.jpg",
                      "places/vigan/ico_place.jpg",
                      "places/puertoprincessa/ico_place.jpg",
                      "places/puertogalera/ico_place.jpg",
                      "places/manila/ico_place.jpg",
                      "places/catanduanes/ico_place.jpg",
                      "places/daet/ico_place.jpg",
                      "places/baler/ico_place.jpg",
                      "places/zambales/ico_place.jpg",
                      "places/pagudpud/ico_place.jpg",
                      "places/camiguin/ico_place.jpg",
                      "places/malapascua/ico_place.jpg",
                      "places/baguio/ico_place.jpg",
                      "places/cebu/ico_place.jpg",
                      "places/davao/ico_place.jpg",
                      "places/dipolog/ico_place.jpg",
                      "places/dumaguete/ico_place.jpg",
                      "places/batanes/ico_place.jpg",
                      "places/calicoan/ico_place.jpg"
                    );
}                  

function initPlacesBeach()
{
  var lnglat_EN           = new GLatLng(11.181635, 119.393406);
  var lnglat_Bora         = new GLatLng(11.966516, 121.928329);
  var lnglat_Bohol        = new GLatLng( 9.567642, 123.761673);
  var lnglat_Siargao      = new GLatLng( 9.788099, 126.159611);
  var lnglat_PP           = new GLatLng( 9.940987, 118.797398);
  var lnglat_PG           = new GLatLng(13.515568, 120.942307);
  var lnglat_Daet         = new GLatLng(14.128119, 122.983589);
  var lnglat_Zambales     = new GLatLng(15.00591,  120.06918);
  var lnglat_Pagudpud     = new GLatLng(18.570303, 120.856361);
  var lnglat_Camiguin     = new GLatLng(9.246922,  124.705067);
  var lnglat_Malapascua   = new GLatLng(11.337719, 124.115267);
  var lnglat_Davao        = new GLatLng(7.107911,  125.608635);
  var lnglat_Cebu         = new GLatLng(10.302193, 123.913407);
  var lnglat_PP           = new GLatLng( 9.940987, 118.797398);
  var lnglat_Dipolog      = new GLatLng( 8.479266, 123.333149);

  placeCoord     = new Array();
  placeCoord[ 0] = lnglat_EN;
  placeCoord[ 1] = lnglat_Bora;
  placeCoord[ 2] = lnglat_Bohol;
  placeCoord[ 3] = lnglat_Siargao;
  placeCoord[ 4] = lnglat_PP;
  placeCoord[ 5] = lnglat_PG;
  placeCoord[ 6] = lnglat_Daet;
  placeCoord[ 7] = lnglat_Zambales;
  placeCoord[ 8] = lnglat_Pagudpud;
  placeCoord[ 9] = lnglat_Camiguin;
  placeCoord[10] = lnglat_Malapascua;
  placeCoord[11] = lnglat_Davao;
  placeCoord[12] = lnglat_Cebu;
  placeCoord[13] = lnglat_Dipolog;
  
  placeType =  new Array(
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun,
                      iconTypeSun
                    );
  placeMessage = new Array(
                      "Райские пляжи в раю",    // EN
                      "Лучший пляж мира",       // BOra
                      "Пляж Панглао",           // Bohol
                      "Пляж на о.Дако",         // Siargao
                      "Пляжи залива Хонда",     // PP
                      "Белый пляж",             // PG
                      "Пляж Багасбас",          // Daet
                      "Кристальный пляж",       // Zambales
                      "Белоснежный пляж Сауд",  // Pagudpud
                      "Белый остров",           // Camiguin
                      "Отличный пляж",          // Malapascua
                      "Жемчужина Минданао",     // Davao
                      "остров Мактан",          // Cebu
                      "пляж Дакак"              // Dipolog
                    );
                    
  placeName = new Array(
                      "Эль Нидо",
                      "Боракай",
                      "Бохоль",
                      "Шиаргао",
                      "Пуэрто Принцесса",
                      "Пуэрто Галера",
                      "Даэт",
                      "Замбалес",
                      "Пагудпуд",
                      "Камигуин",
                      "Малапаскуа",
                      "Давао",
                      "Себу",
                      "Диполог"
                    );
  placeLink  = new Array(
                      "main.php?show=place&amp;with=elnido", 
                      "main.php?show=place&amp;with=boracay",
                      "main.php?show=place&amp;with=bohol",
                      "main.php?show=place&amp;with=siargao",
                      "main.php?show=place&amp;with=puertoprincessa",
                      "main.php?show=place&amp;with=puertogalera",
                      "main.php?show=place&amp;with=daet",
                      "main.php?show=place&amp;with=zambales",
                      "main.php?show=place&amp;with=pagudpud",
                      "main.php?show=place&amp;with=camiguin",
                      "main.php?show=place&amp;with=malapascua",
                      "main.php?show=place&amp;with=davao",
                      "main.php?show=place&amp;with=cebu",
                      "main.php?show=place&amp;with=dipolog"
                    );
  placeIcon = new Array(
                      "places/elnido/ico_place.jpg",
                      "places/boracay/ico_place.jpg",
                      "places/bohol/ico_place.jpg",
                      "places/siargao/ico_place.jpg",
                      "places/puertoprincessa/ico_place.jpg",
                      "places/puertogalera/ico_place.jpg",
                      "places/daet/ico_place.jpg",
                      "places/zambales/ico_place.jpg",
                      "places/pagudpud/ico_place.jpg",
                      "places/camiguin/ico_place.jpg",
                      "places/malapascua/ico_place.jpg",
                      "places/davao/ico_place.jpg",
                      "places/cebu/ico_place.jpg",
                      "places/dipolog/ico_place.jpg"
                    );
}                  

function initPlacesDive()
{
  var lnglat_EN           = new GLatLng(11.181635, 119.393406);
  var lnglat_Bora         = new GLatLng(11.966516, 121.928329);
  var lnglat_Bohol        = new GLatLng( 9.567642, 123.761673);
  var lnglat_Coron        = new GLatLng(11.997413, 120.222702);
  var lnglat_PG           = new GLatLng(13.515568, 120.942307);
  var lnglat_Malapascua   = new GLatLng(11.337719, 124.115267);
  var lnglat_Dumagete     = new GLatLng( 9.312305, 123.310307);

  placeCoord     = new Array();
  placeCoord[ 0] = lnglat_EN;
  placeCoord[ 1] = lnglat_Bora;
  placeCoord[ 2] = lnglat_Bohol;
  placeCoord[ 3] = lnglat_Coron;
  placeCoord[ 4] = lnglat_PG;
  placeCoord[ 5] = lnglat_Malapascua;
  placeCoord[ 6] = lnglat_Dumagete;
  
  placeType =  new Array(
                      iconTypeDive,
                      iconTypeDive,
                      iconTypeDive,
                      iconTypeDive,
                      iconTypeDive,
                      iconTypeDive,
                      iconTypeDive
                    );
  placeMessage = new Array(
                      "Весь залив Бакуит",      // EN
                      "Рядом с пляжами",        // BOra
                      "у Панглао",              // Bohol
                      "Затопленные корабли",    // Coron
                      "Каньоны",                // PG
                      "Акулы трешеры",          // Malapascua
                      "Риф апо"                 // Dumagete
                    );
                    
  placeName = new Array(
                      "Эль Нидо",
                      "Боракай",
                      "Бохоль",
                      "Корон",
                      "Пуэрто Галера",
                      "Малапаскуа",
                      "Думагете"
                    );
  placeLink  = new Array(
                      "main.php?show=place&amp;with=elnido", 
                      "main.php?show=place&amp;with=boracay",
                      "main.php?show=place&amp;with=bohol",
                      "main.php?show=place&amp;with=coron",
                      "main.php?show=place&amp;with=puertogalera",
                      "main.php?show=place&amp;with=malapascua",
                      "main.php?show=place&amp;with=dumaguete"
                    );
  placeIcon = new Array(
                      "places/elnido/ico_place.jpg",
                      "places/boracay/ico_place.jpg",
                      "places/bohol/ico_place.jpg",
                      "places/coron/ico_place.jpg",
                      "places/puertogalera/ico_place.jpg",
                      "places/malapascua/ico_place.jpg",
                      "places/dumaguete/ico_place.jpg"
                    );
}                  
function initPlacesSurf()
{
  var lnglat_EN           = new GLatLng(11.181635, 119.393406);
  var lnglat_Bora         = new GLatLng(11.966516, 121.928329);
  var lnglat_Bohol        = new GLatLng( 9.567642, 123.761673);
  var lnglat_Coron        = new GLatLng(11.997413, 120.222702);
  var lnglat_Siargao      = new GLatLng( 9.788099, 126.159611);
  var lnglat_PP           = new GLatLng( 9.940987, 118.797398);
  var lnglat_PG           = new GLatLng(13.515568, 120.942307);
  var lnglat_Daet         = new GLatLng(14.128119, 122.983589);
  var lnglat_Zambales     = new GLatLng(15.00591,  120.06918);
  var lnglat_Pagudpud     = new GLatLng(18.570303, 120.856361);
  var lnglat_Catanduanes  = new GLatLng(13.683417, 124.385834);
  var lnglat_Baler        = new GLatLng(15.754787, 121.567726);
  var lnglat_Calicoan     = new GLatLng(10.986458, 125.804729);

  placeCoord     = new Array();
  placeCoord[ 0] = lnglat_Siargao;
  placeCoord[ 1] = lnglat_Daet;
  placeCoord[ 2] = lnglat_Zambales;
  placeCoord[ 3] = lnglat_Pagudpud;
  placeCoord[ 4] = lnglat_Catanduanes;
  placeCoord[ 5] = lnglat_Baler;
  placeCoord[ 6] = lnglat_Calicoan;
  
  placeType =  new Array(
                      iconTypeSurf,
                      iconTypeSurf,
                      iconTypeSurf,
                      iconTypeSurf,
                      iconTypeSurf,
                      iconTypeSurf,
                      iconTypeSurf
                    );
  placeMessage = new Array(
                      "Cloud9 - мекка сёрферов",  // Sia
                      "Начинающие",               // Daet
                      "Кристальный пляж",         // Zambales
                      "Самый север",              // Pagudpud
                      "Быстрейшая труба",         // Catanduanes
                      "Черный песок",             // Baler
                      "Гигантские волны"          // Calicoan
                    );
                    
  placeName = new Array(
                      "Шиаргао",
                      "Даэт",
                      "Замбалес",
                      "Пагудпуд",
                      "Катандуанес",
                      "Балер",
                      "Каликоан"
                    );
  placeLink  = new Array(
                      "main.php?show=place&amp;with=siargao",
                      "main.php?show=place&amp;with=daet",
                      "main.php?show=place&amp;with=zambales",
                      "main.php?show=place&amp;with=pagudpud",
                      "main.php?show=place&amp;with=catanduanes",
                      "main.php?show=place&amp;with=baler",
                      "main.php?show=place&amp;with=calicoan"
                    );
  placeIcon = new Array(
                      "places/siargao/ico_place.jpg",
                      "places/daet/ico_place.jpg",
                      "places/zambales/ico_place.jpg",
                      "places/pagudpud/ico_place.jpg",
                      "places/catanduanes/ico_place.jpg",
                      "places/baler/ico_place.jpg",
                      "places/calicoan/ico_place.jpg"
                    );
}                  



function V2d( xIn, yIn)
{
  // private
  // var x;
  // var y;
  
  this.x = xIn;
  this.y = yIn;
  
  this.getX       = getV2dX;
  this.getY       = getV2dY;
  this.setX       = setV2dX;
  this.setY       = setV2dY;
  this.add        = addV2d;
  this.sub        = subV2d;
  this.scale      = scaleV2d;
  this.normalize  = normalizeV2d;
  this.getAngle   = getAngleV2d;
  this.length     = getLengthV2d;
}

function getV2dX()
{
  return this.x;
}
function getV2dY()
{
  return this.y;
}
function setV2dX(xNew)
{
  this.x = xNew;
}
function setV2dY(yNew)
{
  this.y = yNew;
}

function addV2d(v)
{
  this.x = this.x + v.getX();
  this.y = this.y + v.getY();
}

function subV2d(v)
{
  this.x = this.x - v.getX();
  this.y = this.y - v.getY();
}
function scaleV2d(s)
{
  this.x = this.x * s;
  this.y = this.y * s;
}
function normalizeV2d()
{
  var dot = this.x * this.x + this.y * this.y;
  var len = Math.sqrt(dot);
  if (len > 0)
  {
    len = 1.0 / len;
    this.x = this.x * len; 
    this.y = this.y * len; 
  }
}
function getLengthV2d()
{
  var dot = this.x * this.x + this.y * this.y;
  var len = Math.sqrt(dot);
  return len;
}
function getAngleV2d()
{
  var angle = Math.acos( this.x );
  if (this.y < 0.0 )
    angle = Math.PI * 2.0 - angle;
  return angle;
}



function createMarker(latlng, placeIndex) 
{
  // Create customize icon
  var iconSun = new GIcon(G_DEFAULT_ICON);
  var iconType = placeType[placeIndex];
  if (iconType == iconTypeSun)
    iconSun.image = "zcode/images/gicon_sun.png";
  if (iconType == iconTypeDive)
    iconSun.image = "zcode/images/gicon_dive.png";
  if (iconType == iconTypeSurf)
    iconSun.image = "zcode/images/gicon_surf.png";
  if (iconType == iconTypeVolcano)
    iconSun.image = "zcode/images/gicon_volcano.png";
  if (iconType == iconTypeVine)
    iconSun.image = "zcode/images/gicon_vine.png";
    
  // Set up our GMarkerOptions object
  markerOptions = { icon:iconSun };

  var marker = new GMarker(latlng, markerOptions);
  marker.value = placeIndex;
  GEvent.addListener(marker,"click", function() 
  {
    var myHtml = "Здесь: " + placeMessage[placeIndex] + "<br>" + 
        "<p><a href=" + placeLink[placeIndex] + "><img src=" + placeIcon[placeIndex] + " border=\"0\"/></a></p>" +
        "<p><a href=" + placeLink[placeIndex] + ">"  + placeName[placeIndex] +  "</a></p>";
    
    map.openInfoWindowHtml(latlng, myHtml);
  });
  return marker;
}

function onClickMarkers()
{
  var isChecked = document.formGMap.checkMarkers.checked;
  var numPlaces = placeCoord.length;
  var i;
  for (i = 0; i < numPlaces; i++)
  {
    if (isChecked)
      markersPlaces[i].show();
    else
      markersPlaces[i].hide();
  }
  
  var objDiv = document.getElementById("googlePlaceType");
  if (objDiv == null)
    return;
  if (isChecked)
    objDiv.style.display = "block";
  else
    objDiv.style.display = "none";
}

function dissbleMarkersPalces()
{
  var numPlaces = placeCoord.length;
  var i;
  for (i = 0; i < numPlaces; i++)
  {
    markersPlaces[i].hide();
  }
}

function onClickPlaceType(typeIndex)
{
  placeTypeIndex = typeIndex;
  
  // remove old markers
  var numPlaces = markersPlaces.length;
  var i;
  for (i = 0; i < numPlaces; i++)
  {
    map.removeOverlay( markersPlaces[i] );
    delete markersPlaces[i];
  }
  
  if (placeTypeIndex == 0)
    initPlacesAll();
  if (placeTypeIndex == 1)
    initPlacesBeach();
  if (placeTypeIndex == 2)
    initPlacesDive();
  if (placeTypeIndex == 3)
    initPlacesSurf();
  
  // Add marker for all places
  var numPlaces = placeCoord.length;
  var i;
  markersPlaces = new Array();
  
  for (i = 0; i < numPlaces; i++)
  {
    var latlng   = placeCoord[i];
    markersPlaces[i] = createMarker(latlng, i);
    map.addOverlay(markersPlaces[i]);
  }
  
}

function loadGoogle()
{
  if (GBrowserIsCompatible()) 
  {
    elem = document.getElementById("google_map");
    if (elem == null)
      return;

    map = new GMap2(elem);
    map.setCenter(new GLatLng(12.38, 122.40), 5);
    map.setUIToDefault();
    map.disableScrollWheelZoom();
    
    if (placeTypeIndex == 0)
      initPlacesAll();
    
    // Add marker for all places
    var numPlaces = placeCoord.length;
    var i;
    markersPlaces = new Array();
    
    for (i = 0; i < numPlaces; i++)
    {
      var latlng   = placeCoord[i];
      markersPlaces[i] = createMarker(latlng, i);
      map.addOverlay(markersPlaces[i]);
    }
    
    addLinesForTour();
    
  } // if good browswer
} // loadGoogle


function getPlaceIndexByName(placeName)
{
  var numPlaces;
  var i, strIndex;
  
  numPlaces = placeCoord.length;
  for (i = 0; i < numPlaces; i++)
  {
    strIndex = placeIcon[i].search(placeName);
    if (strIndex > 0)
      return i;
  }
  return -1;
}

function addLineToGoogleMap(placeNameStart, placeNameEnd, lineColor)
{
  if (!GBrowserIsCompatible()) 
  {
    return;
  }
  
  // search place
  var indexStart = getPlaceIndexByName(placeNameStart);
  var indexEnd   = getPlaceIndexByName(placeNameEnd);
  if (indexStart == -1 || indexEnd == -1)
  {
    alert("JS: Place not found");
    return;
  }

  var coordStart = placeCoord[indexStart];
  var coordEnd   = placeCoord[indexEnd  ];
  
  // make calculations  
  var p0    = new V2d( coordStart.lat(), coordStart.lng() );
  var p1    = new V2d( coordEnd.lat(),   coordEnd.lng()   );
  var p0p1  = new V2d( p1.getX() - p0.getX(), p1.getY() - p0.getY() );
  var radiusLength = p0p1.length() * 1.1;
  var numSegments = parseInt(p0p1.length() * 4.0);

  var c     = new V2d( (p1.getX() + p0.getX()) * 0.5, (p1.getY() + p0.getY()) * 0.5 );
  var lineC = new V2d(c.getX(), c.getY() );
  var dif   = new V2d( (p1.getX() - p0.getX()) * 0.5, (p1.getY() - p0.getY()) * 0.5 );
  var norm  = new V2d( -dif.getY(), dif.getX() );
  norm.normalize();
  norm.scale(radiusLength);
  c.add(norm);
  
  var cp0 = new V2d( p0.getX(), p0.getY());
  var cp1 = new V2d( p1.getX(), p1.getY());
  cp0.sub(c);
  cp1.sub(c);
  var radiusCircle = cp0.length();
  cp0.normalize();
  cp1.normalize();
  var angle0 = cp0.getAngle();
  var angle1 = cp1.getAngle();
  
  if (angle1 < angle0)
  {
    var t = angle0; angle0 = angle1; angle1 = t;
  }
  if (angle1 - angle0 > Math.PI)
  {
    var t = angle0;
    angle0 = angle1 - Math.PI * 2.0;
    angle1 = t;
  }
  
  //alert('angle0=' + angle0.toString() + ' angle1=' + angle1.toString() );
  
  
  var numDivs = numSegments;
  var angleStep = (angle1 - angle0) / numDivs;
  var angle = angle0;
  var pStart, pEnd;
  for ( var i = 0 ; i < numSegments; i++)
  {
    var angleNext = angle + angleStep;
    pStart = new V2d( c.getX() + Math.cos(angle)*radiusCircle,  c.getY() + Math.sin(angle)*radiusCircle);
    pEnd   = new V2d( c.getX() + Math.cos(angleNext)*radiusCircle,  c.getY() + Math.sin(angleNext)*radiusCircle);

    var segS = new GLatLng( pStart.getX(), pStart.getY()  );
    var segE = new GLatLng( pEnd.getX(), pEnd.getY()  );
    var polyline = new GPolyline([
    		  segS,
  	  	  segE
		  ], lineColor, 4);
    map.addOverlay(polyline);
    
    // next line segment;
    //angle = angleNext + angleStep;
    angle = angleNext;
  } // for all segments
  
  // draw arrow
  var dir = new V2d( pStart.getX() - pEnd.getX(), pStart.getY() - pEnd.getY());
  var len = dir.length() * 0.8;
  
  dir.normalize();
  var arAngle = Math.PI / 10.0;
  var cosA = Math.cos(arAngle);
  var sinA = Math.sin(arAngle);
  var arrEnd = new V2d(
                        dir.getX() * cosA    + dir.getY() * sinA,
                        dir.getX() * (-sinA) + dir.getY() * cosA
                      );
  arrEnd.scale(len);
  arrEnd.add(pEnd);
  
  var segS = new GLatLng( arrEnd.getX(), arrEnd.getY()  );
  var segE = new GLatLng( pEnd.getX(), pEnd.getY()  );
  var polyline = new GPolyline([
  		  segS,
	  	  segE
	  ], lineColor, 6);
	map.addOverlay(polyline);


  var arrEnd = new V2d(
                        dir.getX() * cosA + dir.getY() * (-sinA),
                        dir.getX() * sinA + dir.getY() * cosA
                      );
  arrEnd.scale(len);
  arrEnd.add(pEnd);
  
  var segS = new GLatLng( arrEnd.getX(), arrEnd.getY()  );
  var segE = new GLatLng( pEnd.getX(), pEnd.getY()  );
  var polyline = new GPolyline([
  		  segS,
	  	  segE
	  ], lineColor, 6);
	map.addOverlay(polyline);
}


function addLinesForTour()
{
  var places    = new Array();
  var numPlaces = 0;
  
  for (i = 0; i < 16; i++)
  {
    var strId = "googlePlace" + i.toString();
    var objDiv = document.getElementById(strId);
    if (objDiv == null)
      break;

    places[numPlaces] = objDiv.title;
    numPlaces ++;
  } // for places
  
  
  // add lines for places
  var lineColor = "#000080";
  for (i = 0; i < numPlaces-1 ; i++)
  {
    addLineToGoogleMap( places[i], places[i + 1] , lineColor);
  }
  if (numPlaces > 0)
    dissbleMarkersPalces();
}


