User:Proteins/genericgeotagscript.js

//

// Generic script for doing something fun with an article's geotag

// Planned example: generate a star chart for that location, with two sliders for day and time

//

// To use this script, add "importScript('User:Proteins/genericgeotagscript.js');" to your monobook.js subpage

// under your user page, as you can see at User:Proteins/monobook.js

function reportGeotagCoordinates() {

var latitude;

var longitude;

var top_node;

var parent_node;

var parent_class_name;

var spans;

var temp_span;

var num_spans = 0;

var span_index = 0;

var span_class_name = 0;

var latitude = 0.0;

var longitude = 0.0;

// Get the bodyContent node

top_node = document.getElementById('bodyContent');

if (!top_node) {

window.alert("There is no bodyContent node in this article.");

return;

}

// Get a list of the spans

spans = top_node.getElementsByTagName("SPAN");

if (!spans) {

window.alert("There are no SPAN tags in this article.");

return;

}

num_spans = spans.length;

if (num_spans < 1) {

window.alert("There are no spans in this article.");

return;

}

// Loop over the spans

latitude = 0.0;

longitude = 0.0;

latitude_is_defined = false;

longitude_is_defined = false;

for (span_index=0; span_index

temp_span = spans[span_index];

if (!temp_span) { continue; }

span_class_name = temp_span.className;

if (!span_class_name) { continue; }

// Get the latitude

if (span_class_name == "latitude") {

parent_node = temp_span.parentNode;

parent_class_name = parent_node.className;

if (parent_class_name != "geo-dec geo") { continue; }

latitude = temp_span.innerHTML;

latitude_is_defined = true;

}

// Get the longitude

if (span_class_name == "longitude") {

parent_node = temp_span.parentNode;

parent_class_name = parent_node.className;

if (parent_class_name != "geo-dec geo") { continue; }

longitude = temp_span.innerHTML;

longitude_is_defined = true;

}

} // closes loop over spans

if ((longitude_is_defined) && (latitude_is_defined)) {

window.alert("Latitude = " + latitude + " \t Longitude = " + longitude + "\n");

} else {

window.alert("The geotag latitude and longitude coordinates were not found on this page.\n");

}

} // closes function reportGeotagCoordinates()

$(function () {

mw.util.addPortletLink('p-cactions', 'javascript:reportGeotagCoordinates()', 'geo', 'ca-geotag', 'Report the article geotag coordinates', 'g', '');

});

//