User:Magister Mathematicae/coordinates.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
//<pre>
// Script to embed Coordinate template generation in MediaWiki's edit page
// copied from [[:commons:User:Dschwen/coordinates.js]] to tinker with an own copy
// inspired by [[:en:User:Pilaf/livepreview.js]]
//
// defaults
//
if( typeof( coord_templatename ) == "undefined" )
var coord_templatename = 'coor dms';
if( typeof( accuracy ) == "undefined" )
var accuracy = 2;
if( typeof( defaulttype ) == "undefined" )
var defaulttype = "city";
// can be overridden in your monobook.js ( insert: var coord_templatename = 'something'; )
//
// Insert the coordinate Form into the edit box.
//
function coordinatesInstall()
{
copywarn = document.getElementById('editpage-copywarn');
if (copywarn != null) {
var cleaner = "<br style=\\'clear:both;\\' />";
CoordinatesHTML = '<div style="border: 1px solid gray; padding: 3px; margin-top: 2px; margin-bottom:2px;">'
CoordinatesHTML += '<input type="button" value="Insert as '+coord_templatename+'" onclick="interpretCoordinates();" /> ';
CoordinatesHTML += '<input type="text" size="80" id="CoordinateBox" /></div>';
copywarn.innerHTML = CoordinatesHTML + copywarn.innerHTML;
}
}
//
// Hook up instalation function
//
$(coordinatesInstall);
//
// Coordinate interpretation
//
function interpretCoordinates()
{
var coordinate1 = document.getElementById('CoordinateBox').value;
var coordinate2 = '';
var coord_filter = /http:\/\/www\.google\.([a-zA-Z]+)\/maps/;
var latlon;
// magic!
if(coordinate1.substr(0,19)=='http://maps.google.' || coord_filter.test(coordinate1) )
{
var from_ll = coordinate1.substr(coordinate1.indexOf("&ll=")+4);
var ampers = from_ll.indexOf('&');
if(ampers==-1)
{
latlon = from_ll.split(",");
}
else
{
latlon = (from_ll.substr(0,ampers)).split(",");
}
}
// more magic!
if(coordinate1.substr(0,27)=='http://www.wikimapia.org/##' )
{
var from_ll = coordinate1.substr(29);
var ampers = from_ll.indexOf('&z=');
latlon = (from_ll.substr(0,ampers)).split("&x=");
latlon[0] /= 1000000.0;
latlon[1] /= 1000000.0;
}
var mark_ns = 'N';
var mark_ew = 'E';
var lat = latlon[0];
var lon = latlon[1];
if(lat<0) { lat*=-1; mark_ns='S'; }
if(lon<0) { lon*=-1; mark_ew='W'; }
var lat_m = ( lat - Math.floor(lat) ) * 60.0;
var lon_m = ( lon - Math.floor(lon) ) * 60.0;
var lat_s = ( lat_m - Math.floor(lat_m) ) * 60.0;
var lon_s = ( lon_m - Math.floor(lon_m) ) * 60.0;
//coordinate2 = '{{coor_d|'+lat+'|'+mark_ns+'|'+lon+'|'+mark_ew+'|type:landmark}}';
coordinate2 = ' ({{'+coord_templatename+'|'+Math.floor(lat)+'|'+Math.floor(lat_m)+'|'+lat_s.toPrecision(accuracy)+'|'+mark_ns+'|'+
Math.floor(lon)+'|'+Math.floor(lon_m)+'|'+lon_s.toPrecision(accuracy)+'|'+mark_ew+'|type:'+defaulttype+'}})';
var editbox = document.getElementById('wpTextbox1');
var posicion1 = (editbox.value).indexOf("''' ");
var posicion2 = (editbox.value).indexOf("''',");
var posicion=0;
if (posicion1 > -1 && posicion2 >-1 )
{
posicion = Math.min(posicion1,posicion2);
} else {
posicion = Math.max(posicion1,posicion2);
}
if (posicion>0)
{
posicion=posicion+3;
var editbox_content_1 = (editbox.value).substr(0,posicion);
var editbox_content_2 = (editbox.value).substr(posicion);
editbox.value = editbox_content_1 + coordinate2 + editbox_content_2;
}
else
{
var editbox_content = editbox.value;
editbox.value = coordinate2 + editbox_content;
}
}
//</pre>