MediaWiki:Common.js/coordinates.js

Зьвесткі зь Вікіпэдыі — вольнай энцыкляпэдыі

Заўвага: каб пабачыць зьмены пасьля публікацыі, Вам можа спатрэбіцца ачысьціць кэш Вашага браўзэра.

  • Firefox / Safari: трымайце Shift і націсьніце Reload, ці націсьніце Ctrl-F5 ці Ctrl-R (⌘-R на Mac)
  • Google Chrome: націсьніце Ctrl-Shift-R (⌘-Shift-R на Mac)
  • Internet Explorer / Edge: трымайце Ctrl і націсьніце Refresh, ці націсьніце Ctrl-F5
  • Opera: націсьніце Ctrl-F5.
/*
 * Скрыпт для дадаваньня рамкі з спасылкамі на Google Maps і OSM каля 
 * блёку з каардынатамі ў верхнім правым куце старонкі.
 *
 * Аўтар: [[Удзельнік:Zedlik]]
 * Пры наяўнасьці пытаньняў можна зьвяртацца ў [[Вікіпэдыя:Форум]] або 
 * да [[Удзельнік:Zedlik]].
 */

var cursorOverCoordinatesBox = false;

function addGoogleMapsContainer(parent, id, coordinatesArray) {

  var googleMapsMapLink = "http://maps.google.com/maps?ll=" + coordinatesArray[0] + "," + coordinatesArray[1] + "&q=" + coordinatesArray[0] + "," + coordinatesArray[1] + "&t=m&spn=0.03,0.03&hl=be";
  var googleMapsSatLink = "http://maps.google.com/maps?ll=" + coordinatesArray[0] + "," + coordinatesArray[1] + "&q=" + coordinatesArray[0] + "," + coordinatesArray[1] + "&t=k&spn=0.03,0.03&hl=be";

  var content = "Google Maps: " + 
    "<a href=\"" + googleMapsMapLink + 
    "\">мапа</a><span style=\"font-weight:bold;\"> · </span><a href=\"" + googleMapsSatLink + 
    "\">спадарожнік</a>";
  addCoordinateMapContainer(parent, id, content, true);
}

function addOSMContainer(parent, id, coordinatesArray) {

  var osmLink = "http://openstreetmap.org/?mlat=" + coordinatesArray[0] + "&mlon=" + coordinatesArray[1] + "&zoom=13";

  var content = "OpenStreetMap: " + "<a href=\"" + osmLink + "\">мапа</a>";
  addCoordinateMapContainer(parent, id, content, false);
}

function addYandexContainer(parent, id, coordinatesArray) {

  var yandexMapLink = "http://maps.yandex.ru/?ll=" + coordinatesArray[1] + "," + coordinatesArray[0] + "&spn=0.03,0.03&l=map&pt=" + coordinatesArray[1] + "," + coordinatesArray[0];
  var yandexSatLink = "http://maps.yandex.ru/?ll=" + coordinatesArray[1] + "," + coordinatesArray[0] + "&spn=0.03,0.03&l=sat&pt=" + coordinatesArray[1] + "," + coordinatesArray[0];

  var content = "Яндекс: " + 
    "<a href=\"" + yandexMapLink + 
    "\">мапа</a><span style=\"font-weight:bold;\"> · </span><a href=\"" + yandexSatLink + 
    "\">спадарожнік</a>";
  addCoordinateMapContainer(parent, id, content, false);
}

function addCoordinateMapContainer(parent, id, content, topElement) {
  var gd = document.createElement("div");
  gd.id = id;
  gd.innerHTML = content;
  gd.style.textAlign="left";
  gd.style.display="none";

  if (topElement) {
    gd.style.borderTop = "1px solid #d0d0d0";
    gd.style.marginTop = "3px";
    gd.style.paddingTop = "3px";
  }
  else {
    gd.style.marginTop = "2px";
  }

  parent.appendChild(gd);
}

function coordinatesContainerMouseOverHandler() {
  cursorOverCoordinatesBox = true;
  var coordinates = document.getElementById("coordinates");
  coordinates.style.borderTop="1px solid #c0c0c0";
  coordinates.style.borderLeft="1px solid #c0c0c0";
  coordinates.style.borderRight="1px solid #c0c0c0";
  coordinates.style.borderBottom="1px solid #c0c0c0";
  coordinates.style.backgroundColor="#f4f4f4";
  setShadow(coordinates, "5px 5px 7px #a0a0a0");

  var externalMapResource = document.getElementById("coordinatesGoogleMapsLink");
  externalMapResource.style.display="block";
  var externalMapResource = document.getElementById("coordinatesOSMLink");
  externalMapResource.style.display="block";
  var externalMapResource = document.getElementById("coordinatesYandexLink");
  externalMapResource.style.display="block";
}

function coordinatesContainerMouseOutHandler() {
  if (!cursorOverCoordinatesBox) {
    var coordinates = document.getElementById("coordinates");
    coordinates.style.borderTop="1px solid transparent";
    coordinates.style.borderLeft="1px solid transparent";
    coordinates.style.borderRight="1px solid transparent";
    coordinates.style.borderBottom="1px solid transparent";
    coordinates.style.backgroundColor="";
    setShadow(coordinates, "none");

    var externalMapResource = document.getElementById("coordinatesGoogleMapsLink");
    externalMapResource.style.display="none";
    var externalMapResource = document.getElementById("coordinatesOSMLink");
    externalMapResource.style.display="none";
    var externalMapResource = document.getElementById("coordinatesYandexLink");
    externalMapResource.style.display="none";
  }
}

function initiateCoordinatesBoxHide() {
  cursorOverCoordinatesBox = false;
  setTimeout(coordinatesContainerMouseOutHandler, 300);
}

function setShadow(box, value) {
  if ('mozBoxShadow' in box.style) {
    box.style.mozBoxShadow = value;
  }
  else if ('webkitBoxShadow' in box.style) {
    box.style.webkitBoxShadow = value;
  }
  else if ('boxShadow' in box.style) {
    box.style.boxShadow = value;
  }
}

function getGeoCoordinatesArray() {
  var coordinates = ["", ""];
  var geo = $( 'span.geo' );
  if (geo.length > 1) {
    if (geo[1]) {
      var coords = "";
      if (geo[1].textContent) {
        coords = geo[1].textContent;
      }
      else if (geo[1].innerText) {
        coords = geo[1].innerText;
      }

      if (coords) {
        var coordinatesArray = coords.split("; ");
        coordinates[0] = coordinatesArray[0];
        coordinates[1] = coordinatesArray[1];
      }
    }
  }

  return coordinates;
}

$(function setCoordinates()
{
  var coordinates = document.getElementById("coordinates");
  if (coordinates) {
    var coordinatesArray = getGeoCoordinatesArray();

    addGoogleMapsContainer(coordinates, "coordinatesGoogleMapsLink", coordinatesArray);
    addOSMContainer(coordinates, "coordinatesOSMLink", coordinatesArray);
    addYandexContainer(coordinates, "coordinatesYandexLink", coordinatesArray);

    coordinates.style.paddingTop="6px";
    coordinates.style.paddingBottom="6px";
    coordinates.style.paddingLeft="10px";
    coordinates.style.paddingRight="10px";
    coordinates.style.marginTop="-7px";
    coordinates.style.marginRight="-11px";
    coordinates.style.borderTop="1px solid transparent";
    coordinates.style.borderLeft="1px solid transparent";
    coordinates.style.borderRight="1px solid transparent";
    coordinates.style.borderBottom="1px solid transparent";

    coordinates.onmouseover = coordinatesContainerMouseOverHandler;
    coordinates.onmouseout = initiateCoordinatesBoxHide;
  }
});