diff options
Diffstat (limited to 'web/js')
-rw-r--r-- | web/js/fixmystreet.js | 88 | ||||
-rw-r--r-- | web/js/map-OpenLayers.js | 43 | ||||
-rw-r--r-- | web/js/map-bing-ol.js | 17 | ||||
-rw-r--r-- | web/js/map-bing.js | 2 | ||||
-rw-r--r-- | web/js/map-google.js | 2 | ||||
-rw-r--r-- | web/js/map-tilma-ol.js | 41 | ||||
-rw-r--r-- | web/js/map-tilma.js | 312 | ||||
-rw-r--r-- | web/js/southampton.js | 50 |
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(); + +}); + |