﻿var markerNewPlace = null;

function pageLoad() {
  if (GBrowserIsCompatible()) {
    mapdiv = document.getElementById("map");
    map = new google.maps.Map2(mapdiv);
    map.setUIToDefault(); 


    var lat = parseFloat($get('C_mapLatitude').value);
    var lng = parseFloat($get('C_mapLongitude').value);
    var zoom = parseInt($get('C_mapZoomLevel').value);
    var mapEdit = parseInt($get('C_mapEdit').value);
    var routeGuid = $get('C_routeGuid').value;
    var local = parseInt($get('C_local').value);

    var start = new google.maps.LatLng(lat, lng);
    map.setCenter(start, zoom, G_SATELLITE_MAP);
    

    GEvent.addListener(map, "mousemove", function(point) {
      showLatLng(point);
    });

    GEvent.addListener(map, "zoomend", function(oldLevel, newLevel) {
      showZoom();
    });
    

/*
    var gboundsLine = null;
    var a1 = $get('C_points').value;
    var a2 = $get('C_levels').value;
    var a3 = $get('C_numLevels').value;
    var a4 = $get('C_zoomFactor').value;
    if (a1 != "" && a2 != "" && a3 != "" && a4 != "") {

      var polyline = GPolyline.fromEncoded({
        color: '#FF0000',
        weight: 3,
        opacity: 1,
        points: a1,
        levels: a2,
        numLevels: parseInt(a3),
        zoomFactor: parseInt(a4)
      });

      map.addOverlay(polyline);

      gboundsLine = polyline.getBounds();
      mode = 3;
    }
    */
    
    /*   
    if (gboundsPoint != null && gboundsLine != null) {
      //mode = 4;
      //gboundsLine.extend(new GLatLng(minLatitude, minLongitude));
      //gboundsLine.extend(new google.maps.LatLng(maxLatitude, maxLongitude));
      //map.setCenter(gboundsLine.getCenter(), map.getBounds(gboundsLine));
    } */   

    
                               
    showLatLng(map.getCenter());
    showZoom();


    if (mapEdit == 1) {
      GEvent.addListener(map, "click", function(marker, point) {
        if (marker) {
          editorCancel();
        }
        else {
          if (!markerNewPlace) {
            var userLogin = $get('userLogin').value;

            if (userLogin == "0") {
              alert("Új helyszín felvétele előtt be kell jelentkezned!");
            }
            else {
              if (map.getZoom() < 16) {
                alert("A hely kijelölése előtt nagyítsd fel a térképet legalább 16-os szintre annak érdekében, hogy pontosan tudd megjelölni a helyszínt!");
              }
              else {
                $get("bOK").disabled = false;
                $get("bCancel").disabled = false;

                map.disableScrollWheelZoom();
                map.disableDragging();
                markerNewPlace = new GMarker(point);
                map.addOverlay(markerNewPlace);

                var CDivPixel = map.fromLatLngToDivPixel(map.getCenter());
                var pointDivPixel = map.fromLatLngToDivPixel(point);
                var fromCenter = subGPoints(pointDivPixel, CDivPixel);

                var mpe = $find('T_mpe');
                mpe.show();

                var pcnPanel = $get('T_pcnPanel');
                pcnPanel.style.left = (fromCenter.x + mapdiv.offsetLeft + mapdiv.offsetWidth / 2 + 3) + "px";
                pcnPanel.style.top = (fromCenter.y + mapdiv.offsetTop + mapdiv.offsetHeight / 2 + 3 - f_scrollTop()) + "px";


              }
            }
          }
        }
      });
    }



    if (routeGuid != "") {
      if (local == 0) {
        GDownloadUrl("http://www.ittvoltam.hu/xml.aspx?mode=7&id=" + routeGuid,
          function(data, responseCode) {
            if (responseCode == 200) {
              addRoute(map, data);  
            }
          }
        );
      }
      else {
        var gpx = $get('C_gpx').value;
        addRoute(map, gpx);
      }
    }



    updateSmallMap();

    
  }
}


function addRoute(map, data) {
  if (data != "") {
    var xml = GXml.parse(data);
    if (xml.documentElement) {
      var mode = 1;

/*
      var points = xml.documentElement.getElementsByTagName("point");
      var point;
      var item;
      for (var i = 0; i < points.length; i++) {
        item = points[i];
        point = new GLatLng(parseFloat(item.getAttribute("lat")), parseFloat(item.getAttribute("lng")));
        map.addOverlay(createMarker(point, item, 4));
      }
      */
      
      processPlaceIconXml(map, data);



      var routes = xml.documentElement.getElementsByTagName("route");
      if (routes.length > 0) {
        mode = 3;
        
        var route;
        var a1, a2, a3, a4;
        for (var i = 0; i < routes.length; i++) {
          route = routes[i];
          a1 = route.getAttribute("points");
          a2 = route.getAttribute("levels");
          a3 = route.getAttribute("numlevels");
          a4 = route.getAttribute("zoomfactor");
          if (a1 != "" && a2 != "" && a3 != "" && a4 != "") {
            var polyline = GPolyline.fromEncoded({
            color: '#1050FF',
              weight: 3,
              opacity: 1,
              points: a1,
              levels: a2,
              numLevels: parseInt(a3),
              zoomFactor: parseInt(a4)
            });

            map.addOverlay(polyline);
          }
        }
      }
    
      var gbounds = null;
      var minLatitude = parseFloat($get('C_minLatitude').value);
      var minLongitude = parseFloat($get('C_minLongitude').value);
      var maxLatitude = parseFloat($get('C_maxLatitude').value);
      var maxLongitude = parseFloat($get('C_maxLongitude').value);
      
   //   if (routes.length > 0 /*|| points.length > 0*/){
        gbounds = new GLatLngBounds(new GLatLng(minLatitude, minLongitude), new GLatLng(maxLatitude, maxLongitude));
        map.setCenter(gbounds.getCenter(), map.getBoundsZoomLevel(gbounds));
     // } 
      
    }  
  }
}


function addMarkers(data) {
  if (data != "") {
    //AddPointsToMap(map, data, 4);
    processPlaceIconXml(map, data);
  }
}

function f_filterResults(n_win, n_docel, n_body) {
  var n_result = n_win ? n_win : 0;
  if (n_docel && (!n_result || (n_result > n_docel)))
    n_result = n_docel;
  return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}


function f_scrollTop() {
  return f_filterResults(
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}

function resetPlace() {
  map.removeOverlay(markerNewPlace);
  markerNewPlace = null;
  $get('newplace').style.display = "none";
  $get('ButtonReset').style.display = "none";
}

function editorCancel() {
  var mpe = $find('T_mpe');
  mpe.hide();

  $get("bOK").disabled = false;
  $get("bCancel").disabled = false;

  map.removeOverlay(markerNewPlace);
  markerNewPlace = null;
  map.enableScrollWheelZoom();
  map.enableDragging();

  document.documentElement.style.cursor = "default";

}

function editorOK() {
  $get("bOK").disabled = true;
  $get("bCancel").disabled = true;

  var minLen = parseInt($get('T_pcn_minLen').value);
  var latlng = markerNewPlace.getPoint();
  var country = $get('T_pcn_tbCountry').value;
  var placeName = $get('T_pcn_tbPlaceName').value;
  var description = $get('T_pcn_tbDescription').value;
  var tags = $get('T_pcn_tbTags').value;
  var startDate = $get('T_pcn_tbStartDate').value;
  var url = $get('T_pcn_tbUrl').value;
  var routeGuid = $get('C_routeGuid').value;

  if (startDate == "") {
    alert("Az időpont megadása kötelező! Ez alapján tudjuk sorba rendezni az útvonalad egyes helyszíneit.");
    $get("T_pcn_tbStartDate").focus();
    $get("bOK").disabled = false;
    $get("bCancel").disabled = false;
  }
  else {
    if (placeName == "") {
      alert("A hely nevét kötelező megadni!");
      $get("T_pcn_tbPlaceName").focus();
      $get("bOK").disabled = false;
      $get("bCancel").disabled = false;
    }
    else {
      if (description.length < minLen) {
        alert("A hely leírását kötelező megadni!\nKérjük, írj pár sort erről a helyszínről!");
        $get("T_pcn_tbDescription").focus();
        $get("bOK").disabled = false;
        $get("bCancel").disabled = false;
      }
      else {
        document.documentElement.style.cursor = "wait";
        $get('up1').style.display = 'block';
        Animare.IttVoltam.Web.WebService.Command.StoreNewPlaceForRoute(latlng.lat(), latlng.lng(), 14, routeGuid, country, placeName, description, tags, startDate, url, OnSucceeded, OnFailed);
      }
    }
  }
}

function OnSucceeded(result) {
  document.documentElement.style.cursor = "default";
  if (result.code != 0) {
    $get('up1').style.display = 'none';
    alert(result.message);
    $get("bOK").disabled = false;
    $get("bCancel").disabled = false;
  }
  else {
    document.documentElement.scrollTop = 182;
    editorCancel();
    $get('T_pcn_tbPlaceName').value = "";
    $get('T_pcn_tbDescription').value = "";
    $get('T_pcn_tbTags').value = "";
    $get('T_pcn_tbStartDate').value = "";
    $get('T_pcn_tbUrl').value = "";
    $get("T_pcn_lNextStep").innerHTML = result.content2;
    $get("T_pcn_tbStartDate").value = result.message;
    $get('C_lRoute').innerHTML = result.content;

    addMarkers(result.content3);
 
    updateSmallMap();
    $get('up1').style.display = 'none';

    /*
    var firstPlace = $get("firstPlace");
    if (firstPlace != null) {
      var a2 = new AjaxControlToolkit.Animation.ColorAnimation(firstPlace, 0.3, 25, "style", "backgroundColor", "#FFFFFF", "#FFCC00");
      var a3 = new AjaxControlToolkit.Animation.ColorAnimation(firstPlace, 1.0, 25, "style", "backgroundColor", "#FFCC00", "#FFFFFF");
      AjaxControlToolkit.Animation.SequenceAnimation.play(firstPlace, null, 30, [a2, a3], 1);
    } */

  }
  var p = $get("C_md1_p");
  if (p != null) {
    p.style.display = 'none';
  }
}

function OnFailed(error) {
  editorCancel();
  Animare.IttVoltam.Web.WebService.Command.Error(
    error.get_exceptionType(),
    error.get_message(),
    error.get_statusCode(),
    error.get_stackTrace(),
    error.get_timedOut()
  );
  document.documentElement.style.cursor = "default";
  $get('up1').style.display = 'none';
  alert(errorMessage);
}


function geoToAddress() {
  document.documentElement.style.cursor = "wait";
  $get('up1').style.display = 'block';
  $get('T_pcn_tbPlaceName').focus();
  var latlng = markerNewPlace.getPoint();
  Animare.IttVoltam.Web.WebService.Command.GeoToAddress(latlng.lat(), latlng.lng(), OnSucceededGeoToAddress, OnFailedGeoToAddress);
}

function OnSucceededGeoToAddress(ro) {
  document.documentElement.style.cursor = "default";
  if (ro.code != 0) {
    $get('up1').style.display = 'none';
    alert(ro.message);
  }
  else {
    $get('T_pcn_tbCountry').value = ro.content;
    $get('T_pcn_tbPlaceName').value = ro.content2;
    $get('up1').style.display = 'none';
  }
}

function OnFailedGeoToAddress(error) {
  Animare.IttVoltam.Web.WebService.Command.Error(
    error.get_exceptionType(),
    error.get_message(),
    error.get_statusCode(),
    error.get_stackTrace(),
    error.get_timedOut()
  );
  $get('up1').style.display = 'none';
  alert(errorMessage);
}    

function onKeyP(evt, frm) {
  var keyCode = null;
  if (evt.which) {
    keyCode = evt.which;
  }
  else {
    if (evt.keyCode) {
      keyCode = evt.keyCode;
    }
  }
  if (13 == keyCode) {
    editorOK();
    return false;
  }
  return true;
}

function textCounter() {
  var minLen = parseInt($get('T_pcn_minLen').value);
  var c = minLen - $get('T_pcn_tbDescription').value.length;
  if (c > 0) {
    $get("counter").innerHTML = "Írj még legalább <b>" + c + "</b> karaktert!";
  }
  else {
    $get("counter").innerHTML = "";
  }
}







function pagerRoute(pageNumber) {
  var routeGuid = $get('C_routeGuid').value;
  document.documentElement.style.cursor = "wait";
  $get('up1').style.display = 'block';
  Animare.IttVoltam.Web.WebService.Command.PagerRoute(routeGuid, pageNumber, OnSucceededPagerRoute, OnFailedPagerRoute);
}

function OnSucceededPagerRoute(result) {
  if (result.code != 0) {
    alert(result.message);
  }
  else {
    var mapEdit = parseInt($get('C_mapEdit').value);
    if (mapEdit == 1) {
      document.documentElement.scrollTop = 1000;
    }
    else {
      document.documentElement.scrollTop = 720;
    }
    $get('C_lRoute').innerHTML = result.content;
    updateSmallMap();
  }
  $get('up1').style.display = 'none';
  document.documentElement.style.cursor = "default";
}

function OnFailedPagerRoute(error) {
  Animare.IttVoltam.Web.WebService.Command.Error(
    error.get_exceptionType(),
    error.get_message(),
    error.get_statusCode(),
    error.get_stackTrace(),
    error.get_timedOut()
  );
  $get('up1').style.display = 'none';
  document.documentElement.style.cursor = "default";
  alert(errorMessage);
}













function pageUnload()
{
  GUnload();
}

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();






