+ function loadHistory() {
+ this.link.href = "";
+ this.link.innerHTML = "#{I18n.t('browse.start_rjs.wait')}";
+
+ new Ajax.Request("/api/#{API_VERSION}/" + this.type + "/" + this.feature.osm_id + "/history", {
+ onComplete: OpenLayers.Function.bind(displayHistory, this)
+ });
+
+ return false;
+ }
+
+ function displayHistory(request) {
+ if (browseActiveFeature.osm_id != this.feature.osm_id || $("browse_content").firstChild == browseObjectList) {
+ return false;
+ }
+
+ this.link.parentNode.removeChild(this.link);
+
+ var doc = request.responseXML;
+
+ var table = document.createElement("table");
+ table.width = "100%";
+ table.className = "browse_heading";
+ $("browse_content").appendChild(table);
+
+ var tr = document.createElement("tr");
+ table.appendChild(tr);
+
+ var heading = document.createElement("td");
+ heading.appendChild(document.createTextNode("#{I18n.t('browse.start_rjs.history_for')} " + featureName(this.feature)));
+ tr.appendChild(heading);
+
+ var td = document.createElement("td");
+ td.align = "right";
+ tr.appendChild(td);
+
+ var link = document.createElement("a");
+ link.href = "/browse/" + this.type + "/" + this.feature.osm_id + "/history";
+ link.appendChild(document.createTextNode("#{I18n.t('browse.start_rjs.details')}"));
+ td.appendChild(link);
+
+ var div = document.createElement("div");
+ div.className = "browse_details";
+
+ var nodes = doc.getElementsByTagName(this.type);
+ var history = document.createElement("ul");
+ for (var i = nodes.length - 1; i >= 0; i--) {
+ var user = nodes[i].getAttribute("user") || "#{I18n.t('browse.start_rjs.private_user')}";
+ var timestamp = nodes[i].getAttribute("timestamp");
+ var item = document.createElement("li");
+ item.appendChild(document.createTextNode("#{I18n.t('browse.start_rjs.edited_by')} " + user + " #{I18n.t('browse.start_rjs.at_timestamp')} " + timestamp));
+ history.appendChild(item);
+ }
+ div.appendChild(history);
+
+ $("browse_content").appendChild(div);
+ }
+
+ function featureType(feature) {
+ if (feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Point") {
+ return "node";
+ } else {
+ return "way";
+ }
+ }
+
+ function featureName(feature) {
+ if (feature.attributes.name) {
+ return feature.attributes.name;
+ } else {
+ return ucFirst(featureType(feature)) + " " + feature.osm_id;
+ }
+ }
+
+ function setStatus(status) {
+ $("browse_status").innerHTML = status;
+ $("browse_status").style.display = "block";
+ }
+
+ function clearStatus() {
+ $("browse_status").innerHTML = "";
+ $("browse_status").style.display = "none";
+ }