aboutsummaryrefslogtreecommitdiffstats
path: root/web/js
diff options
context:
space:
mode:
Diffstat (limited to 'web/js')
-rw-r--r--web/js/fixmystreet.js88
-rw-r--r--web/js/map-OpenLayers.js43
-rw-r--r--web/js/map-bing-ol.js17
-rw-r--r--web/js/map-bing.js2
-rw-r--r--web/js/map-google.js2
-rw-r--r--web/js/map-tilma-ol.js41
-rw-r--r--web/js/map-tilma.js312
-rw-r--r--web/js/southampton.js50
8 files changed, 125 insertions, 430 deletions
diff --git a/web/js/fixmystreet.js b/web/js/fixmystreet.js
index 50ccb2ac3..4b19dc53e 100644
--- a/web/js/fixmystreet.js
+++ b/web/js/fixmystreet.js
@@ -3,76 +3,58 @@
* FixMyStreet JavaScript
*/
+$(function(){
-YAHOO.util.Event.onContentReady('pc', function() {
- if (this.id && this.value == this.defaultValue) {
- this.focus();
- }
-});
+ $('#pc').focus();
-YAHOO.util.Event.onContentReady('mapForm', function() {
- this.onsubmit = function() {
+ $('input[type=submit]').removeAttr('disabled');
+ $('#mapForm').submit(function() {
if (this.submit_problem) {
- this.onsubmit = function() { return false; };
+ $('input[type=submit]', this).prop("disabled", true);
}
-
- /* XXX Should be in Tilma code only */
- if (this.x) {
- this.x.value = fixmystreet.x + 3;
- this.y.value = fixmystreet.y + 3;
- }
-
return true;
- }
-});
+ });
-YAHOO.util.Event.onContentReady('another_qn', function() {
- if (!document.getElementById('been_fixed_no').checked && !document.getElementById('been_fixed_unknown').checked) {
- YAHOO.util.Dom.setStyle(this, 'display', 'none');
+ if (!$('#been_fixed_no').prop('checked') && !$('#been_fixed_unknown').prop('checked')) {
+ $('#another_qn').hide();
}
- YAHOO.util.Event.addListener('been_fixed_no', 'click', function(e) {
- YAHOO.util.Dom.setStyle('another_qn', 'display', 'block');
+ $('#been_fixed_no').click(function() {
+ $('#another_qn').show('fast');
});
- YAHOO.util.Event.addListener('been_fixed_unknown', 'click', function(e) {
- YAHOO.util.Dom.setStyle('another_qn', 'display', 'block');
+ $('#been_fixed_unknown').click(function() {
+ $('#another_qn').show('fast');
});
- YAHOO.util.Event.addListener('been_fixed_yes', 'click', function(e) {
- YAHOO.util.Dom.setStyle('another_qn', 'display', 'none');
+ $('#been_fixed_yes').click(function() {
+ $('#another_qn').hide('fast');
});
-});
-var timer;
-function email_alert_close() {
- YAHOO.util.Dom.setStyle('email_alert_box', 'display', 'none');
-}
-YAHOO.util.Event.onContentReady('email_alert', function() {
- YAHOO.util.Event.addListener(this, 'click', function(e) {
- if (!document.getElementById('email_alert_box'))
+ var timer;
+ function email_alert_close() {
+ $('#email_alert_box').hide('fast');
+ }
+
+ $('#email_alert').click(function(e) {
+ if (!$('#email_alert_box').length)
return true;
- YAHOO.util.Event.preventDefault(e);
- if (YAHOO.util.Dom.getStyle('email_alert_box', 'display') == 'block') {
+ e.preventDefault();
+ if ($('#email_alert_box').is(':visible')) {
email_alert_close();
} else {
- var pos = YAHOO.util.Dom.getXY(this);
- pos[0] -= 20; pos[1] += 20;
- YAHOO.util.Dom.setStyle('email_alert_box', 'display', 'block');
- YAHOO.util.Dom.setXY('email_alert_box', pos);
- document.getElementById('alert_rznvy').focus();
+ var pos = $(this).position();
+ $('#email_alert_box').css( { 'left': ( pos.left - 20 ) + 'px', 'top': ( pos.top + 20 ) + 'px' } );
+ $('#email_alert_box').show('fast');
+ $('#alert_rznvy').focus();
}
- });
- YAHOO.util.Event.addListener(this, 'mouseout', function(e) {
- timer = window.setTimeout(email_alert_close, 2000);
- });
- YAHOO.util.Event.addListener(this, 'mouseover', function(e) {
+ }).hover(function() {
window.clearTimeout(timer);
+ }, function() {
+ timer = window.setTimeout(email_alert_close, 2000);
});
-});
-YAHOO.util.Event.onContentReady('email_alert_box', function() {
- YAHOO.util.Event.addListener(this, 'mouseout', function(e) {
- timer = window.setTimeout(email_alert_close, 2000);
- });
- YAHOO.util.Event.addListener(this, 'mouseover', function(e) {
+
+ $('#email_alert_box').hover(function() {
window.clearTimeout(timer);
+ }, function() {
+ timer = window.setTimeout(email_alert_close, 2000);
});
-});
+});
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js
index 821bbafc3..d00079517 100644
--- a/web/js/map-OpenLayers.js
+++ b/web/js/map-OpenLayers.js
@@ -1,4 +1,4 @@
-YAHOO.util.Event.onContentReady('map', function() {
+$(function(){
var perm = new OpenLayers.Control.Permalink();
set_map_config(perm);
@@ -41,11 +41,20 @@ YAHOO.util.Event.onContentReady('map', function() {
return false;
});
+ // Vector layers must be added onload as IE sucks
+ if ($.browser.msie) {
+ $(window).load(fixmystreet_onload);
+ } else {
+ fixmystreet_onload();
+ }
+});
+
+function fixmystreet_onload() {
if ( fixmystreet.area ) {
var area = new OpenLayers.Layer.Vector("KML", {
strategies: [ new OpenLayers.Strategy.Fixed() ],
protocol: new OpenLayers.Protocol.HTTP({
- url: "/mapit/area/" + fixmystreet.area + ".kml",
+ url: "/mapit/area/" + fixmystreet.area + ".kml?simplify_tolerance=0.0001",
format: new OpenLayers.Format.KML()
})
});
@@ -64,7 +73,7 @@ YAHOO.util.Event.onContentReady('map', function() {
graphicWidth: 32,
graphicHeight: 59,
graphicOpacity: 1,
- graphicXOffset: -1,
+ graphicXOffset: -2,
graphicYOffset: -59
})
})
@@ -73,7 +82,7 @@ YAHOO.util.Event.onContentReady('map', function() {
pin_layer_options.strategies = [ new OpenLayers.Strategy.BBOX() ];
pin_layer_options.protocol = new OpenLayers.Protocol.HTTP({
url: '/ajax',
- params: fixmystreet.all_pins ? { all_pins: 1, map: 'FMS' } : { map: 'FMS' },
+ params: fixmystreet.all_pins ? { all_pins: 1 } : { },
format: new OpenLayers.Format.FixMyStreet()
});
}
@@ -81,7 +90,7 @@ YAHOO.util.Event.onContentReady('map', function() {
var markers = fms_markers_list( fixmystreet.pins, true );
fixmystreet.markers.addFeatures( markers );
- if (fixmystreet.page == 'around') {
+ if (fixmystreet.page == 'around' || fixmystreet.page == 'reports' || fixmystreet.page == 'my') {
fixmystreet.markers.events.register( 'featureselected', fixmystreet.markers, function(evt) {
window.location = '/report/' + evt.feature.attributes.id;
OpenLayers.Event.stop(evt);
@@ -96,8 +105,7 @@ YAHOO.util.Event.onContentReady('map', function() {
var bounds = fixmystreet.markers.getDataExtent();
if (bounds) { fixmystreet.map.zoomToExtent( bounds ); }
}
-
-});
+}
function fms_markers_list(pins, transform) {
var cols = { 'red':'R', 'green':'G', 'blue':'B', 'purple':'P' };
@@ -122,8 +130,8 @@ function fms_markers_list(pins, transform) {
return markers;
}
-YAHOO.util.Event.addListener('hide_pins_link', 'click', function(e) {
- YAHOO.util.Event.preventDefault(e);
+$('#hide_pins_link').click(function(e) {
+ e.preventDefault();
var showhide = [
'Show pins', 'Hide pins',
'Dangos pinnau', 'Cuddio pinnau',
@@ -140,8 +148,8 @@ YAHOO.util.Event.addListener('hide_pins_link', 'click', function(e) {
}
});
-YAHOO.util.Event.addListener('all_pins_link', 'click', function(e) {
- YAHOO.util.Event.preventDefault(e);
+$('#all_pins_link').click(function(e) {
+ e.preventDefault();
fixmystreet.markers.setVisibility(true);
var welsh = 0;
var texts = [
@@ -151,12 +159,12 @@ YAHOO.util.Event.addListener('all_pins_link', 'click', function(e) {
for (var i=0; i<texts.length; i+=3) {
if (this.innerHTML == texts[i+1]) {
this.innerHTML = texts[i+2];
- fixmystreet.markers.protocol.options.params = { all_pins: 1, map: 'FMS' };
+ fixmystreet.markers.protocol.options.params = { all_pins: 1 };
fixmystreet.markers.refresh( { force: true } );
lang = texts[i];
} else if (this.innerHTML == texts[i+2]) {
this.innerHTML = texts[i+1];
- fixmystreet.markers.protocol.options.params = { map: 'FMS' };
+ fixmystreet.markers.protocol.options.params = { };
fixmystreet.markers.refresh( { force: true } );
lang = texts[i];
}
@@ -215,7 +223,8 @@ OpenLayers.Control.PermalinkFMS = OpenLayers.Class(OpenLayers.Control.Permalink,
href = href.substring( 0, href.indexOf(separator) );
}
- href += separator + OpenLayers.Util.getParameterString(this.createParams(null, this.map.getZoom()+fixmystreet.ZOOM_OFFSET));
+ href += separator + OpenLayers.Util.getParameterString(this.createParams(null, this.map.getZoom()+fixmystreet.zoomOffset));
+ // Could use mlat/mlon here as well if we are on a page with a marker
if (this.anchor && !this.element) {
window.location.href = href;
}
@@ -269,12 +278,18 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
trigger: function(e) {
var lonlat = fixmystreet.map.getLonLatFromViewPortPx(e.xy);
+ if (fixmystreet.page == 'new') {
+ fixmystreet.markers.features[0].move(lonlat);
+ }
lonlat.transform(
fixmystreet.map.getProjectionObject(),
new OpenLayers.Projection("EPSG:4326")
);
document.getElementById('fixmystreet.latitude').value = lonlat.lat;
document.getElementById('fixmystreet.longitude').value = lonlat.lon;
+ if (fixmystreet.page == 'new') {
+ return;
+ }
document.getElementById('mapForm').submit();
}
});
diff --git a/web/js/map-bing-ol.js b/web/js/map-bing-ol.js
index 75bce80d3..032ac1e89 100644
--- a/web/js/map-bing-ol.js
+++ b/web/js/map-bing-ol.js
@@ -21,7 +21,7 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, {
numZoomLevels: 18,
transitionEffect: "resize",
sphericalMercator: true,
- buffer: 0,
+ buffer: 0
//attribution: "© Microsoft / OS 2010"
}, options);
var newArguments = [name, url, options];
@@ -56,16 +56,17 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, {
if (z >= 16) {
var url = [
- "http://a.os.openstreetmap.org/sv/${z}/${x}/${y}.png",
- "http://b.os.openstreetmap.org/sv/${z}/${x}/${y}.png",
- "http://c.os.openstreetmap.org/sv/${z}/${x}/${y}.png"
+ "http://tilma.mysociety.org/sv/${z}/${x}/${y}.png",
+ "http://a.tilma.mysociety.org/sv/${z}/${x}/${y}.png",
+ "http://b.tilma.mysociety.org/sv/${z}/${x}/${y}.png",
+ "http://c.tilma.mysociety.org/sv/${z}/${x}/${y}.png"
];
} else {
var url = [
- "http://ecn.t0.tiles.virtualearth.net/tiles/r${id}.png?g=587&productSet=mmOS",
- "http://ecn.t1.tiles.virtualearth.net/tiles/r${id}.png?g=587&productSet=mmOS",
- "http://ecn.t2.tiles.virtualearth.net/tiles/r${id}.png?g=587&productSet=mmOS",
- "http://ecn.t3.tiles.virtualearth.net/tiles/r${id}.png?g=587&productSet=mmOS"
+ "http://ecn.t0.tiles.virtualearth.net/tiles/r${id}.png?g=701&productSet=mmOS",
+ "http://ecn.t1.tiles.virtualearth.net/tiles/r${id}.png?g=701&productSet=mmOS",
+ "http://ecn.t2.tiles.virtualearth.net/tiles/r${id}.png?g=701&productSet=mmOS",
+ "http://ecn.t3.tiles.virtualearth.net/tiles/r${id}.png?g=701&productSet=mmOS"
];
}
var s = '' + x + y + z;
diff --git a/web/js/map-bing.js b/web/js/map-bing.js
index 748a03525..856e4f188 100644
--- a/web/js/map-bing.js
+++ b/web/js/map-bing.js
@@ -1,4 +1,4 @@
-YAHOO.util.Event.onContentReady('map', function() {
+$(function(){
var centre = new Microsoft.Maps.Location( fixmystreet.latitude, fixmystreet.longitude );
var map = new Microsoft.Maps.Map(document.getElementById("map"), {
credentials: fixmystreet.key,
diff --git a/web/js/map-google.js b/web/js/map-google.js
index ab9bb9042..742b55d47 100644
--- a/web/js/map-google.js
+++ b/web/js/map-google.js
@@ -1,4 +1,4 @@
-YAHOO.util.Event.onContentReady('map', function() {
+$(function(){
var centre = new google.maps.LatLng( fixmystreet.latitude, fixmystreet.longitude );
var map = new google.maps.Map(document.getElementById("map"), {
mapTypeId: google.maps.MapTypeId.ROADMAP,
diff --git a/web/js/map-tilma-ol.js b/web/js/map-tilma-ol.js
deleted file mode 100644
index 5230a5d2c..000000000
--- a/web/js/map-tilma-ol.js
+++ /dev/null
@@ -1,41 +0,0 @@
-function set_map_config(perm) {
- fixmystreet.controls = [
- new OpenLayers.Control.ArgParser(),
- perm,
- new OpenLayers.Control.Navigation(),
- new OpenLayers.Control.PanPanel()
- ];
- fixmystreet.map_type = OpenLayers.Layer.Tilma;
- fixmystreet.layer_options = {
- maxResolution: fixmystreet.maxResolution,
- tileSize: new OpenLayers.Size(fixmystreet.tilewidth, fixmystreet.tileheight),
- map_type: fixmystreet.tile_type,
- numZoomLevels: 1,
- zoomOffset: 0
- };
-}
-
-OpenLayers.Layer.Tilma = OpenLayers.Class(OpenLayers.Layer.XYZ, {
- initialize: function(name, options) {
- var url = "http://tilma.mysociety.org/tileserver/${type}/${x},${y}/png";
- options = OpenLayers.Util.extend({
- transitionEffect: "resize",
- numZoomLevels: 1,
- projection: "EPSG:27700",
- units: "m",
- maxExtent: new OpenLayers.Bounds(0, 0, 700000, 1300000)
- }, options);
- var newArguments = [name, url, options];
- OpenLayers.Layer.XYZ.prototype.initialize.apply(this, newArguments);
- },
-
- getURL: function (bounds) {
- var res = this.map.getResolution();
- var x = Math.round(bounds.left / (res * this.tileSize.w));
- var y = Math.round(bounds.bottom / (res * this.tileSize.h));
- var path = OpenLayers.String.format(this.url, {'x': x, 'y': y, 'type': this.map_type});
- return path;
- },
-
- CLASS_NAME: "OpenLayers.Layer.Tilma"
-});
diff --git a/web/js/map-tilma.js b/web/js/map-tilma.js
deleted file mode 100644
index a6e4fa082..000000000
--- a/web/js/map-tilma.js
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * map-tilma.js
- * JavaScript specifically for the tilma based maps
- */
-
-function compass_pan(e, a) {
- YAHOO.util.Event.preventDefault(e);
- if (a.home) {
- a.x = a.orig_x-drag_x;
- a.y = a.orig_y-drag_y;
- }
- pan(a.x, a.y);
-}
-
-YAHOO.util.Event.onContentReady('compass', function() {
- var ua=navigator.userAgent.toLowerCase();
- // if (document.getElementById('mapForm') && (/safari/.test(ua) || /Konqueror/.test(ua))) return;
- if (document.getElementById('map').offsetWidth > 510) return;
-
- var points = this.getElementsByTagName('a');
- YAHOO.util.Event.addListener(points[1], 'click', compass_pan, { x:0, y:fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[3], 'click', compass_pan, { x:fixmystreet.tilewidth, y:0 });
- YAHOO.util.Event.addListener(points[5], 'click', compass_pan, { x:-fixmystreet.tilewidth, y:0 });
- YAHOO.util.Event.addListener(points[7], 'click', compass_pan, { x:0, y:-fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[0], 'click', compass_pan, { x:fixmystreet.tilewidth, y:fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[2], 'click', compass_pan, { x:-fixmystreet.tilewidth, y:fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[6], 'click', compass_pan, { x:fixmystreet.tilewidth, y:-fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[8], 'click', compass_pan, { x:-fixmystreet.tilewidth, y:-fixmystreet.tileheight });
- YAHOO.util.Event.addListener(points[4], 'click', compass_pan, { home:1, orig_x:drag_x, orig_y:drag_y });
-});
-
-YAHOO.util.Event.onContentReady('map', function() {
- var ua=navigator.userAgent.toLowerCase();
- // if (document.getElementById('mapForm') && (/safari/.test(ua) || /Konqueror/.test(ua))) return;
- if (document.getElementById('map').offsetWidth > 510) return;
- new YAHOO.util.DDMap('map');
- update_tiles(fixmystreet.start_x, fixmystreet.start_y, true);
-});
-
-
-YAHOO.util.Event.addListener('hide_pins_link', 'click', function(e) {
- YAHOO.util.Event.preventDefault(e);
- if (this.innerHTML == 'Show pins') {
- YAHOO.util.Dom.setStyle('pins', 'display', 'block');
- this.innerHTML = 'Hide pins';
- } else if (this.innerHTML == 'Dangos pinnau') {
- YAHOO.util.Dom.setStyle('pins', 'display', 'block');
- this.innerHTML = 'Cuddio pinnau';
- } else if (this.innerHTML == 'Cuddio pinnau') {
- YAHOO.util.Dom.setStyle('pins', 'display', 'none');
- this.innerHTML = 'Dangos pinnau';
- } else if (this.innerHTML == 'Hide pins') {
- YAHOO.util.Dom.setStyle('pins', 'display', 'none');
- this.innerHTML = 'Show pins';
- }
-});
-YAHOO.util.Event.addListener('all_pins_link', 'click', function(e) {
- YAHOO.util.Event.preventDefault(e);
- YAHOO.util.Dom.setStyle('pins', 'display', 'block');
- var welsh = 0;
- if (this.innerHTML == 'Include stale reports') {
- this.innerHTML = 'Hide stale reports';
- fixmystreet.all_pins = 1;
- load_pins(fixmystreet.x, fixmystreet.y);
- } else if (this.innerHTML == 'Cynnwys hen adroddiadau') {
- this.innerHTML = 'Cuddio hen adroddiadau';
- fixmystreet.all_pins = 1;
- welsh = 1;
- load_pins(fixmystreet.x, fixmystreet.y);
- } else if (this.innerHTML == 'Cuddio hen adroddiadau') {
- this.innerHTML = 'Cynnwys hen adroddiadau';
- welsh = 1;
- fixmystreet.all_pins = '';
- load_pins(fixmystreet.x, fixmystreet.y);
- } else if (this.innerHTML == 'Hide stale reports') {
- this.innerHTML = 'Include stale reports';
- fixmystreet.all_pins = '';
- load_pins(fixmystreet.x, fixmystreet.y);
- }
- if (welsh) {
- document.getElementById('hide_pins_link').innerHTML = 'Cuddio pinnau';
- } else {
- document.getElementById('hide_pins_link').innerHTML = 'Hide pins';
- }
-});
-
-// I love the global
-var tile_x = 0;
-var tile_y = 0;
-
-var myAnim;
-function pan(x, y) {
- if (!myAnim || !myAnim.isAnimated()) {
- myAnim = new YAHOO.util.Motion('drag', { points:{by:[x,y]} }, 10, YAHOO.util.Easing.easeOut);
- myAnim.useSeconds = false;
- //myAnim.onTween.subscribe(function(){ update_tiles(x/10, y/10, false); });
- myAnim.onComplete.subscribe(function(){
- update_tiles(x, y, false);
- cleanCache();
- });
- myAnim.animate();
- }
-}
-
-var drag_x = 0;
-var drag_y = 0;
-function update_tiles(dx, dy, force) {
- dx = getInt(dx); dy = getInt(dy);
- if (!dx && !dy && !force) return;
- var old_drag_x = drag_x;
- var old_drag_y = drag_y;
- drag_x += dx;
- drag_y += dy;
-
- var drag = document.getElementById('drag');
- drag.style.left = drag_x + 'px';
- drag.style.top = drag_y + 'px';
-
- var horizontal = Math.floor(old_drag_x/fixmystreet.tilewidth) - Math.floor(drag_x/fixmystreet.tilewidth);
- var vertical = Math.floor(old_drag_y/fixmystreet.tileheight) - Math.floor(drag_y/fixmystreet.tileheight);
- if (!horizontal && !vertical && !force) return;
- fixmystreet.x += horizontal;
-
- tile_x += horizontal;
- fixmystreet.y -= vertical;
- tile_y += vertical;
- var url = [ root_path + '/tilma/tileserver/' + fixmystreet.tile_type + '/', fixmystreet.x, '-', (fixmystreet.x+5), ',', fixmystreet.y, '-', (fixmystreet.y+5), '/JSON' ].join('');
- YAHOO.util.Connect.asyncRequest('GET', url, {
- success: urls_loaded, failure: urls_not_loaded,
- argument: [tile_x, tile_y]
- });
-
- if (force) return;
- load_pins(fixmystreet.x, fixmystreet.y);
-}
-
-function load_pins(x, y) {
- if (document.getElementById('formX') && !document.getElementById('problem_submit')) {
- var ajax_params = [ 'sx=' + document.getElementById('formX').value,
- 'sy=' + document.getElementById('formY').value,
- 'x=' + (x+3),
- 'y=' + (y+3),
- 'all_pins=' + fixmystreet.all_pins ];
-
- var url = [ root_path , '/ajax?', ajax_params.join(';')].join('');
- YAHOO.util.Connect.asyncRequest('GET', url, {
- success: pins_loaded
- });
- }
-}
-
-function pins_loaded(o) {
- var data = eval(o.responseText);
- document.getElementById('pins').innerHTML = data.pins;
- if (typeof(data.current) != 'undefined')
- document.getElementById('current').innerHTML = data.current;
- if (typeof(data.current_near) != 'undefined')
- document.getElementById('current_near').innerHTML = data.current_near;
- if (typeof(data.fixed_near) != 'undefined')
- document.getElementById('fixed_near').innerHTML = data.fixed_near;
-}
-
-function urls_not_loaded(o) { /* Nothing yet */ }
-
-// Load 6x6 grid of tiles around current 2x2
-function urls_loaded(o) {
- var tiles = eval(o.responseText);
- var drag = document.getElementById('drag');
- for (var i=0; i<6; i++) {
- var ii = (i + o.argument[1]);
- for (var j=0; j<6; j++) {
- if (tiles[i][j] == null) continue;
- var jj = (j + o.argument[0]);
- var id = [ 't', ii, '.', jj ].join('');
- var xx = fixmystreet.x+j;
- var yy = fixmystreet.y+5-i;
- var img = document.getElementById(id);
- if (img) {
- if (!img.galleryimg) { img.galleryimg = false; }
- img.onclick = drag_check;
- tileCache[id] = { x: xx, y: yy, t: img };
- continue;
- }
- img = cloneNode();
- img.style.top = ((ii-2)*fixmystreet.tileheight) + 'px';
- img.style.left = ((jj-2)*fixmystreet.tilewidth) + 'px';
- img.name = [ 'tile_', xx, '.', yy ].join('')
- img.id = id;
- if (browser) {
- img.style.visibility = 'hidden';
- img.onload=function() { this.style.visibility = 'visible'; }
- }
- img.src = 'http://tilma.mysociety.org/tileserver/' + fixmystreet.tile_type + '/' + tiles[i][j];
- tileCache[id] = { x: xx, y: yy, t: img };
- drag.appendChild(img);
- }
- }
-}
-
-var imgElCache;
-function cloneNode() {
- var img = null;
- if (!imgElCache) {
- var form = document.getElementById('mapForm');
- if (form) {
- img = imgElCache = document.createElement('input');
- img.type = 'image';
- } else {
- img = imgElCache = document.createElement('img');
- }
- img.onclick = drag_check;
- img.style.position = 'absolute';
- img.style.width = fixmystreet.tilewidth + 'px';
- img.style.height = fixmystreet.tileheight + 'px';
- img.galleryimg = false;
- img.alt = 'Loading...';
- } else {
- img = imgElCache.cloneNode(true);
- }
- return img;
-}
-
-var tileCache=[];
-function cleanCache() {
- for (var i in tileCache) {
- if (tileCache[i].x < fixmystreet.x || tileCache[i].x > fixmystreet.x+5 || tileCache[i].y < fixmystreet.y || tileCache[i].y > fixmystreet.y+5) {
- var t = tileCache[i].t;
- t.parentNode.removeChild(t); // de-leak?
- delete tileCache[i];
- }
- }
-}
-
-/* Called every mousemove, so on first call, overwrite itself with quicker version */
-function get_posn(ev) {
- var posx, posy;
- if (ev.pageX || ev.pageY) {
- get_posn = function(e) {
- return { x: e.pageX, y: e.pageY };
- };
- } else if (ev.clientX || ev.clientY) {
- get_posn = function(e) {
- return {
- x: e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft,
- y: e.clientY + document.body.scrollTop + document.documentElement.scrollTop
- };
- };
- } else {
- get_posn = function(e) {
- return { x: undef, y: undef };
- };
- }
- return get_posn(ev);
-}
-
-function setCursor(s) {
- var drag = document.getElementById('drag');
- var inputs = drag.getElementsByTagName('input');
- for (var i=0; i<inputs.length; i++) {
- inputs[i].style.cursor = s;
- }
-}
-
-var in_drag = false;
-function drag_check(e) {
- if (in_drag) {
- in_drag = false;
- return false;
- }
- return true;
-}
-
-/* Simpler version of DDProxy */
-var mouse_pos = {};
-YAHOO.util.DDMap = function(id, sGroup, config) {
- this.init(id, sGroup, config);
-};
-YAHOO.extend(YAHOO.util.DDMap, YAHOO.util.DD, {
- scroll: false,
- b4MouseDown: function(e) { },
- startDrag: function(x, y) {
- mouse_pos = { x: x, y: y };
- setCursor('move');
- in_drag = true;
- },
- b4Drag: function(e) { },
- onDrag: function(e) {
- var point = get_posn(e);
- if (point == mouse_pos) return false;
- var dx = point.x-mouse_pos.x;
- var dy = point.y-mouse_pos.y;
- mouse_pos = point;
- update_tiles(dx, dy, false);
- },
- endDrag: function(e) {
- setCursor('crosshair');
- cleanCache();
- },
- toString: function() {
- return ("DDMap " + this.id);
- }
-});
-
-var browser = 1;
-var ua=navigator.userAgent.toLowerCase();
-if (!/opera|safari|gecko/.test(ua) && typeof document.all!='undefined')
- browser=0;
-
-function getInt(n) {
- n = parseInt(n); return (isNaN(n) ? 0 : n);
-}
-
diff --git a/web/js/southampton.js b/web/js/southampton.js
new file mode 100644
index 000000000..1f3e16105
--- /dev/null
+++ b/web/js/southampton.js
@@ -0,0 +1,50 @@
+/*
+ * southampton.js
+ * FixMyStreet JavaScript for Southampton
+ */
+
+
+$(function(){
+
+ $('[placeholder]').focus(function(){
+ var input = $(this);
+ if (input.val() == input.attr('placeholder')) {
+ input.val('');
+ input.removeClass('placeholder');
+ input.css({ 'color': '#000000' });
+ }
+ }).blur(function(){
+ var input = $(this);
+ if (input.val() == '' || input.val() == input.attr('placeholder')) {
+ input.css({ 'color': '#999999' });
+ input.val(input.attr('placeholder'));
+ }
+ }).blur();
+
+ $('#form_category').change(function(){
+ var category = $(this).val();
+ if ('Potholes' == category) {
+ if (!$('#potholes_extra').length) {
+ var qns = '<div id="potholes_extra" style="margin:0; display:none;">' +
+ '<div class="form-field"><label for="form_size">Size:</label>' +
+ '<select name="detail_size"><option>-- Please select --<option>Unknown' +
+ '<option>Small: No larger than a dinner plate (up to 30cm/12inches)' +
+ '<option>Medium: No larger than a dustbin lid (up to 60cm/24inches)' +
+ '<option>Large: Larger than a dustbin lid (over 60cm/24inches)' +
+ '</select></div>' +
+ '<div class="form-field"><label for="form_depth">Depth:</label>' +
+ '<select name="detail_depth"><option>-- Please select --<option>Unknown' +
+ '<option>No deeper than a golf ball (up to 4cm/1.5inches)' +
+ '<option>No deeper than a tennis ball (up to 6.5cm/2.5inches)' +
+ '<option>Deeper than a tennis ball' +
+ '</select></div></div>';
+ $('#form_title').closest('div.form-field').after(qns);
+ }
+ $('#potholes_extra').show('fast');
+ } else {
+ $('#potholes_extra').hide('fast');
+ }
+ }).change();
+
+});
+