From b64ccce20521299e643f6e7c08f8db20c0d8226b Mon Sep 17 00:00:00 2001 From: Erik Michaels-Ober Date: Sat, 3 Sep 2011 13:47:28 -0700 Subject: [PATCH] Fix JavaScript asset pipeline --- app/assets/javascripts/analytics.js.erb | 10 - app/assets/javascripts/application.js | 7 + app/assets/javascripts/application.js.erb | 834 --------------------- app/assets/javascripts/main.js.erb | 841 +++++++++++++++++++++- 4 files changed, 841 insertions(+), 851 deletions(-) delete mode 100644 app/assets/javascripts/analytics.js.erb create mode 100644 app/assets/javascripts/application.js delete mode 100644 app/assets/javascripts/application.js.erb diff --git a/app/assets/javascripts/analytics.js.erb b/app/assets/javascripts/analytics.js.erb deleted file mode 100644 index eda4eac..0000000 --- a/app/assets/javascripts/analytics.js.erb +++ /dev/null @@ -1,10 +0,0 @@ -var _gaq = _gaq || []; -_gaq.push(['_setAccount', 'UA-20825280-2']); -_gaq.push(['_setDomainName', '.adoptahydrant.org']); -_gaq.push(['_trackPageview']); - -(function() { - var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; - ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); -})(); diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js new file mode 100644 index 0000000..02b7a7f --- /dev/null +++ b/app/assets/javascripts/application.js @@ -0,0 +1,7 @@ +// This is a manifest file that'll be compiled into including all the files listed below. +// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically +// be included in the compiled file accessible from http://example.com/assets/application.js +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// the compiled file. +// +//= require_tree . diff --git a/app/assets/javascripts/application.js.erb b/app/assets/javascripts/application.js.erb deleted file mode 100644 index e6344d3..0000000 --- a/app/assets/javascripts/application.js.erb +++ /dev/null @@ -1,834 +0,0 @@ -$(function() { - var center = new google.maps.LatLng(42.358431, -71.059773); - var zoomLevel = 15; - var mapOptions = { - center: center, - mapTypeControl: false, - mapTypeId: google.maps.MapTypeId.ROADMAP, - panControl: false, - zoom: zoomLevel - }; - var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); - var activeHydrantId; - var activeMarker; - var activeInfoWindow; - var isWindowOpen = false; - var hydrantIds = []; - function addMarker(hydrantId, point, image_path) { - var image = new google.maps.MarkerImage(image_path, - new google.maps.Size(27.0, 37.0), - new google.maps.Point(0, 0), - new google.maps.Point(13.0, 18.0) - ); - var shadow = new google.maps.MarkerImage('<%= image_path 'markers/shadow.png' %>', - new google.maps.Size(46.0, 37.0), - new google.maps.Point(0, 0), - new google.maps.Point(13.0, 18.0) - ); - var marker = new google.maps.Marker({ - animation: google.maps.Animation.DROP, - icon: image, - map: map, - position: point, - shadow: shadow - }); - google.maps.event.addListener(marker, 'click', function() { - if(activeInfoWindow) { - activeInfoWindow.close(); - } - var infoWindow = new google.maps.InfoWindow({ - maxWidth: 350 - }); - google.maps.event.addListener(infoWindow, 'closeclick', function() { - isWindowOpen = false; - }); - activeInfoWindow = infoWindow; - activeHydrantId = hydrantId; - activeMarker = marker; - $.ajax({ - type: 'GET', - url: '/info_window', - data: { - 'hydrant_id': hydrantId - }, - success: function(data) { - // Prevent race condition, which could lead to multiple windows being open at the same time. - if(infoWindow == activeInfoWindow) { - infoWindow.setContent(data); - infoWindow.open(map, marker); - isWindowOpen = true; - } - } - }); - }); - hydrantIds.push(hydrantId); - } - function addMarkersAround(lat, lng) { - $.ajax({ - type: 'GET', - url: '/hydrants.json', - data: { - 'commit': $('#address_form input[type="submit"]').val(), - 'utf8': '✓', - 'authenticity_token': $('#address_form input[name="authenticity_token"]').val(), - 'lat': lat, - 'lng': lng, - 'limit': $('#address_form input[name="limit"]').val() - }, - success: function(data) { - if(data.errors) { - $('#address_label').addClass('error', 500); - $('#address').addClass('error', 500); - $('#address').focus(); - } else { - $('#address_label').removeClass('error', 500); - $('#address').removeClass('error', 500); - var i = -1; - $(data).each(function(index, hydrant) { - if($.inArray(hydrant.id, hydrantIds) == -1) { - i += 1; - } else { - // continue - return true; - } - setTimeout(function() { - point = new google.maps.LatLng(hydrant.lat, hydrant.lng); - if(hydrant.user_id) { - image_path = '<%= image_path 'markers/green.png' %>'; - } else { - image_path = '<%= image_path 'markers/red.png' %>'; - } - addMarker(hydrant.id, point, image_path); - }, i * 100); - }); - center = new google.maps.LatLng(lat, lng); - map.setCenter(center); - map.setZoom(18); - } - } - }); - } - google.maps.event.addListener(map, 'dragend', function() { - if(isWindowOpen == true) { - return; - } - center = map.getCenter(); - addMarkersAround(center.lat(), center.lng()); - }); - $('#address_form').submit(function() { - var submitButton = $("#address_form input[type='submit']"); - $(submitButton).attr("disabled", true); - var submitButtonText = $(submitButton).attr("value"); - $(submitButton).attr("value", "Please Wait..."); - if($('#address').val() === '') { - $(submitButton).attr("disabled", false); - $(submitButton).attr("value", submitButtonText); - $('#address_label').addClass('error', 500); - $('#address').addClass('error', 500); - $('#address').focus(); - } else { - $.ajax({ - type: 'GET', - url: '/address.json', - data: { - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#address_form input[name="authenticity_token"]').val(), - 'city_state': $('#city_state').val(), - 'address': $('#address').val() - }, - success: function(data) { - $(submitButton).attr("disabled", false); - $(submitButton).attr("value", submitButtonText); - if(data.errors) { - $('#address_label').addClass('error', 500); - $('#address').addClass('error', 500); - $('#address').focus(); - } else { - addMarkersAround(data[0], data[1]); - } - } - }); - } - return false; - }); - $('#combo_form input[type="radio"]').live('click', function() { - var self = $(this); - if('new' == self.val()) { - $('#user_forgot_password_fields').slideUp(); - $('#user_sign_in_fields').slideUp(); - $('#user_sign_up_fields').slideDown(); - $('#combo_form').data('state', 'user_sign_up'); - } else if('existing' == self.val()) { - $('#user_sign_up_fields').slideUp(); - $('#user_sign_in_fields').slideDown(function() { - $('#combo_form').data('state', 'user_sign_in'); - $('#user_forgot_password_link').click(function() { - $('#user_sign_in_fields').slideUp(); - $('#user_forgot_password_fields').slideDown(function() { - $('#user_remembered_password').click(function() { - $('#user_forgot_password_fields').slideUp(); - $('#user_sign_in_fields').slideDown(); - $('#combo_form').data('state', 'user_sign_in'); - }); - }); - $('#combo_form').data('state', 'user_forgot_password'); - }); - }); - } - }); - $('#combo_form').live('submit', function() { - var submitButton = $("#combo_form input[type='submit']"); - $(submitButton).attr("disabled", true); - var errors = [] - if(!/[\w\.%\+\]+@[\w\]+\.+[\w]{2,}/.test($('#user_email').val())) { - errors.push($('#user_email')); - $('#user_email_label').addClass('error', 500); - $('#user_email').addClass('error', 500); - } else { - $('#user_email_label').removeClass('error'); - $('#user_email').removeClass('error'); - } - if(!$(this).data('state') || $(this).data('state') === 'user_sign_up') { - if($('#user_name').val() === '') { - errors.push($('#user_name')); - $('#user_name_label').addClass('error', 500); - $('#user_name').addClass('error', 500); - } else { - $('#user_name_label').removeClass('error'); - $('#user_name').removeClass('error'); - } - if($('#user_password_confirmation').val().length < 6 || $('#user_password_confirmation').val().length > 20) { - errors.push($('#user_password_confirmation')); - $('#user_password_confirmation_label').addClass('error', 500); - $('#user_password_confirmation').addClass('error', 500); - } else { - $('#user_password_confirmation_label').removeClass('error'); - $('#user_password_confirmation').removeClass('error'); - } - if(errors.length > 0) { - $(submitButton).attr("disabled", false); - errors[0].focus(); - } else { - $.ajax({ - type: 'POST', - url: '/users.json', - data: { - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#combo_form input[name="authenticity_token"]').val(), - 'user': { - 'email': $('#user_email').val(), - 'name': $('#user_name').val(), - 'organization': $('#user_organization').val(), - 'voice_number': $('#user_voice_number').val(), - 'sms_number': $('#user_sms_number').val(), - 'password': $('#user_password_confirmation').val(), - 'password_confirmation': $('#user_password_confirmation').val() - } - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - data = $.parseJSON(jqXHR.responseText); - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - if(data.errors.email) { - errors.push($('#user_email')); - $('#user_email_label').addClass('error', 500); - $('#user_email').addClass('error', 500); - } - if(data.errors.name) { - errors.push($('#user_name')); - $('#user_name_label').addClass('error', 500); - $('#user_name').addClass('error', 500); - } - if(data.errors.organization) { - errors.push($('#user_organization')); - $('#user_organization_label').addClass('error', 500); - $('#user_organization').addClass('error', 500); - } - if(data.errors.voice_number) { - errors.push($('#user_voice_number')); - $('#user_voice_number_label').addClass('error', 500); - $('#user_voice_number').addClass('error', 500); - } - if(data.errors.sms_number) { - errors.push($('#user_sms_number')); - $('#user_sms_number_label').addClass('error', 500); - $('#user_sms_number').addClass('error', 500); - } - if(data.errors.password) { - errors.push($('#user_password_confirmation')); - $('#user_password_confirmation_label').addClass('error', 500); - $('#user_password_confirmation').addClass('error', 500); - } - errors[0].focus(); - }, - success: function(data) { - $.ajax({ - type: 'GET', - url: '/info_window', - data: { - 'hydrant_id': activeHydrantId, - 'flash': { - 'notice': "Thanks for signing up!" - } - }, - success: function(data) { - activeInfoWindow.setContent(data); - } - }); - } - }); - } - } else if($(this).data('state') === 'user_sign_in') { - if($('#user_password').val().length < 6 || $('#user_password').val().length > 20) { - errors.push($('#user_password')); - $('#user_password_label').addClass('error', 500); - $('#user_password').addClass('error', 500); - } else { - $('#user_password_label').removeClass('error'); - $('#user_password').removeClass('error'); - } - if(errors.length > 0) { - $(submitButton).attr("disabled", false); - errors[0].focus(); - } else { - $.ajax({ - type: 'POST', - url: '/users/sign_in.json', - data: { - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#combo_form input[name="authenticity_token"]').val(), - 'user': { - 'email': $('#user_email').val(), - 'password': $('#user_password').val(), - 'remember_me': $('#user_remember_me').val() - } - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - $('#user_password_label').addClass('error', 500); - $('#user_password').addClass('error', 500); - $('#user_password').focus(); - }, - success: function(data) { - $.ajax({ - type: 'GET', - url: '/info_window', - data: { - 'hydrant_id': activeHydrantId, - 'flash': { - 'notice': "Signed in!" - } - }, - success: function(data) { - activeInfoWindow.setContent(data); - } - }); - } - }); - } - } else if($(this).data('state') === 'user_forgot_password') { - if(errors.length > 0) { - $(submitButton).attr("disabled", false); - errors[0].focus(); - } else { - $.ajax({ - type: 'POST', - url: '/users/password.json', - data: { - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#combo_form input[name="authenticity_token"]').val(), - 'user': { - 'email': $('#user_email').val() - } - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - $('#user_email_label').addClass('error', 500); - $('#user_email').addClass('error', 500); - $('#user_email').focus(); - }, - success: function() { - $.ajax({ - type: 'GET', - url: '/users/sign_in', - data: { - 'user': { - 'email': $('#user_email').val() - }, - 'flash': { - 'notice': "Password reset instructions sent! Check your email." - } - }, - success: function(data) { - activeInfoWindow.setContent(data); - $('#user_existing').click(); - } - }); - } - }); - } - } - return false; - }); - $('#adoption_form').live('submit', function() { - var submitButton = $("#adoption_form input[type='submit']"); - $(submitButton).attr("disabled", true); - $.ajax({ - type: 'POST', - url: '/hydrants.json', - data: { - 'id': $('#hydrant_id').val(), - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#adoption_form input[name="authenticity_token"]').val(), - '_method': 'put', - 'hydrant': { - 'user_id': $('#hydrant_user_id').val(), - 'name': $('#hydrant_name').val() - } - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - }, - success: function(data) { - $.ajax({ - type: 'GET', - url: '/info_window', - data: { - 'hydrant_id': activeHydrantId, - 'flash': { - 'notice': "You just adopted " + $('#hydrant_name').val() + "!" - } - }, - success: function(data) { - activeInfoWindow.setContent(data); - activeInfoWindow.setContent(data); - image = new google.maps.MarkerImage('<%= image_path 'markers/green.png' %>', - new google.maps.Size(27.0, 37.0), - new google.maps.Point(0, 0), - new google.maps.Point(13.0, 18.0) - ); - activeMarker.setIcon(image); - activeMarker.setAnimation(google.maps.Animation.BOUNCE); - } - }); - } - }); - return false; - }); - $('#abandon_form').live('submit', function() { - var answer = window.confirm("Are you sure you want to abandon this hydrant?") - if(answer) { - var submitButton = $("#abandon_form input[type='submit']"); - $(submitButton).attr("disabled", true); - $.ajax({ - type: 'POST', - url: '/hydrants.json', - data: { - 'id': $('#hydrant_id').val(), - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#abandon_form input[name="authenticity_token"]').val(), - '_method': 'put', - 'hydrant': { - 'user_id': $('#hydrant_user_id').val(), - 'name': $('#hydrant_name').val() - } - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - }, - success: function(data) { - $.ajax({ - type: 'GET', - url: '/info_window', - data: { - 'hydrant_id': activeHydrantId, - 'flash': { - 'notice': "Hydrant abandoned!" - } - }, - success: function(data) { - activeInfoWindow.setContent(data); - image = new google.maps.MarkerImage('<%= image_path 'markers/red.png' %>', - new google.maps.Size(27.0, 37.0), - new google.maps.Point(0, 0), - new google.maps.Point(13.0, 18.0) - ); - activeMarker.setIcon(image); - activeMarker.setAnimation(null); - } - }); - } - }); - } - return false; - }); - $('#steal_form').live('submit', function() { - var answer = window.confirm("Are you sure you want to steal this hydrant?") - if(answer) { - var submitButton = $("#steal_form input[type='submit']"); - $(submitButton).attr("disabled", true); - $.ajax({ - type: 'POST', - url: '/hydrants.json', - data: { - 'id': $('#hydrant_id').val(), - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#steal_form input[name="authenticity_token"]').val(), - '_method': 'put', - 'hydrant': { - 'user_id': $('#hydrant_user_id').val(), - 'name': $('#hydrant_name').val() - } - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - }, - success: function(data) { - $.ajax({ - type: 'GET', - url: '/info_window', - data: { - 'hydrant_id': activeHydrantId, - 'flash': { - 'notice': "Hydrant stolen!" - } - }, - success: function(data) { - activeInfoWindow.setContent(data); - image = new google.maps.MarkerImage('<%= image_path 'markers/red.png' %>', - new google.maps.Size(27.0, 37.0), - new google.maps.Point(0, 0), - new google.maps.Point(13.0, 18.0) - ); - activeMarker.setIcon(image); - activeMarker.setAnimation(null); - } - }); - } - }); - } - return false; - }); - $('#edit_profile_form').live('submit', function() { - var submitButton = $("#edit_profile_form input[type='submit']"); - $(submitButton).attr("disabled", true); - $.ajax({ - type: 'GET', - url: '/users/edit', - data: { - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#edit_profile_form input[name="authenticity_token"]').val() - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - }, - success: function(data) { - activeInfoWindow.setContent(data); - } - }); - return false; - }); - $('#edit_form').live('submit', function() { - var submitButton = $("#edit_form input[type='submit']"); - $(submitButton).attr("disabled", true); - var errors = [] - if(!/[\w\.%\+\]+@[\w\]+\.+[\w]{2,}/.test($('#user_email').val())) { - errors.push($('#user_email')); - $('#user_email_label').addClass('error', 500); - $('#user_email').addClass('error', 500); - } else { - $('#user_email_label').removeClass('error'); - $('#user_email').removeClass('error'); - } - if($('#user_name').val() === '') { - errors.push($('#user_name')); - $('#user_name_label').addClass('error', 500); - $('#user_name').addClass('error', 500); - } else { - $('#user_name_label').removeClass('error'); - $('#user_name').removeClass('error'); - } - if($('#user_password').val() && ($('#user_password').val().length < 6 || $('#user_password').val().length > 20)) { - errors.push($('#user_password')); - $('#user_password_label').addClass('error', 500); - $('#user_password').addClass('error', 500); - } else { - $('#user_password_label').removeClass('error'); - $('#user_password').removeClass('error'); - } - if($('#user_current_password').val().length < 6 || $('#user_current_password').val().length > 20) { - errors.push($('#user_current_password')); - $('#user_current_password_label').addClass('error', 500); - $('#user_current_password').addClass('error', 500); - } else { - $('#user_current_password_label').removeClass('error'); - $('#user_current_password').removeClass('error'); - } - if(errors.length > 0) { - $(submitButton).attr("disabled", false); - errors[0].focus(); - } else { - $.ajax({ - type: 'POST', - url: '/users.json', - data: { - 'id': $('#id').val(), - 'hydrant_id': activeHydrantId, - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#edit_form input[name="authenticity_token"]').val(), - '_method': 'put', - 'user': { - 'email': $('#user_email').val(), - 'name': $('#user_name').val(), - 'organization': $('#user_organization').val(), - 'voice_number': $('#user_voice_number').val(), - 'sms_number': $('#user_sms_number').val(), - 'password': $('#user_password').val(), - 'password_confirmation': $('#user_password').val(), - 'current_password': $('#user_current_password').val() - } - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - data = $.parseJSON(jqXHR.responseText); - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - if(data.errors.email) { - errors.push($('#user_email')); - $('#user_email_label').addClass('error', 500); - $('#user_email').addClass('error', 500); - } - if(data.errors.name) { - errors.push($('#user_name')); - $('#user_name_label').addClass('error', 500); - $('#user_name').addClass('error', 500); - } - if(data.errors.organization) { - errors.push($('#user_organization')); - $('#user_organization_label').addClass('error', 500); - $('#user_organization').addClass('error', 500); - } - if(data.errors.voice_number) { - errors.push($('#user_voice_number')); - $('#user_voice_number_label').addClass('error', 500); - $('#user_voice_number').addClass('error', 500); - } - if(data.errors.sms_number) { - errors.push($('#user_sms_number')); - $('#user_sms_number_label').addClass('error', 500); - $('#user_sms_number').addClass('error', 500); - } - if(data.errors.password) { - errors.push($('#user_password')); - $('#user_password_label').addClass('error', 500); - $('#user_password').addClass('error', 500); - } - if(data.errors.current_password) { - errors.push($('#user_current_password')); - $('#user_current_password_label').addClass('error', 500); - $('#user_current_password').addClass('error', 500); - } - errors[0].focus(); - }, - success: function(data) { - activeInfoWindow.setContent(data); - } - }); - } - return false; - }); - $('#sign_out_form').live('submit', function() { - var submitButton = $("#sign_out_form input[type='submit']"); - $(submitButton).attr("disabled", true); - $.ajax({ - type: 'GET', - url: '/users/sign_out.json', - data: { - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#sign_out_form input[name="authenticity_token"]').val() - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - }, - success: function(data) { - $.ajax({ - type: 'GET', - url: '/info_window', - data: { - 'hydrant_id': activeHydrantId, - 'flash': { - 'notice': "Signed out." - } - }, - success: function(data) { - activeInfoWindow.setContent(data); - } - }); - } - }); - return false; - }); - $('#sign_in_form').live('submit', function() { - var submitButton = $("#sign_in_form input[type='submit']"); - $(submitButton).attr("disabled", true); - $.ajax({ - type: 'GET', - url: '/users/sign_in', - data: { - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#sign_in_form input[name="authenticity_token"]').val(), - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - }, - success: function(data) { - activeInfoWindow.setContent(data); - } - }); - return false; - }); - $('#back_form').live('submit', function() { - var submitButton = $("#back_form input[type='submit']"); - $(submitButton).attr("disabled", true); - $.ajax({ - type: 'GET', - url: '/info_window', - data: { - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#back_form input[name="authenticity_token"]').val(), - 'hydrant_id': activeHydrantId - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - }, - success: function(data) { - activeInfoWindow.setContent(data); - } - }); - return false; - }); - $('#reminder_form').live('submit', function() { - var submitButton = $("#reminder_form input[type='submit']"); - $(submitButton).attr("disabled", true); - $.ajax({ - type: 'POST', - url: '/reminders.json', - data: { - 'commit': submitButton.val(), - 'utf8': '✓', - 'authenticity_token': $('#sign_out_form input[name="authenticity_token"]').val(), - 'reminder': { - 'from_user_id': $('#reminder_from_user_id').val(), - 'to_user_id': $('#reminder_to_user_id').val(), - 'hydrant_id': activeHydrantId - } - }, - beforeSend: function() { - $('#info_window').hide(); - $('#loader').show(); - }, - error: function(jqXHR) { - $('#loader').hide(); - $('#info_window').show(); - $(submitButton).attr("disabled", false); - }, - success: function(data) { - $.ajax({ - type: 'GET', - url: '/info_window', - data: { - 'hydrant_id': activeHydrantId, - 'flash': { - 'notice': "Reminder sent!" - } - }, - success: function(data) { - activeInfoWindow.setContent(data); - } - }); - } - }); - return false; - }); - $('#notice').live('click', function() { - $(this).fadeOut('slow'); - }); - $('#error').live('click', function() { - $(this).fadeOut('slow'); - }); -}); diff --git a/app/assets/javascripts/main.js.erb b/app/assets/javascripts/main.js.erb index 02b7a7f..e6344d3 100644 --- a/app/assets/javascripts/main.js.erb +++ b/app/assets/javascripts/main.js.erb @@ -1,7 +1,834 @@ -// This is a manifest file that'll be compiled into including all the files listed below. -// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically -// be included in the compiled file accessible from http://example.com/assets/application.js -// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the -// the compiled file. -// -//= require_tree . +$(function() { + var center = new google.maps.LatLng(42.358431, -71.059773); + var zoomLevel = 15; + var mapOptions = { + center: center, + mapTypeControl: false, + mapTypeId: google.maps.MapTypeId.ROADMAP, + panControl: false, + zoom: zoomLevel + }; + var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); + var activeHydrantId; + var activeMarker; + var activeInfoWindow; + var isWindowOpen = false; + var hydrantIds = []; + function addMarker(hydrantId, point, image_path) { + var image = new google.maps.MarkerImage(image_path, + new google.maps.Size(27.0, 37.0), + new google.maps.Point(0, 0), + new google.maps.Point(13.0, 18.0) + ); + var shadow = new google.maps.MarkerImage('<%= image_path 'markers/shadow.png' %>', + new google.maps.Size(46.0, 37.0), + new google.maps.Point(0, 0), + new google.maps.Point(13.0, 18.0) + ); + var marker = new google.maps.Marker({ + animation: google.maps.Animation.DROP, + icon: image, + map: map, + position: point, + shadow: shadow + }); + google.maps.event.addListener(marker, 'click', function() { + if(activeInfoWindow) { + activeInfoWindow.close(); + } + var infoWindow = new google.maps.InfoWindow({ + maxWidth: 350 + }); + google.maps.event.addListener(infoWindow, 'closeclick', function() { + isWindowOpen = false; + }); + activeInfoWindow = infoWindow; + activeHydrantId = hydrantId; + activeMarker = marker; + $.ajax({ + type: 'GET', + url: '/info_window', + data: { + 'hydrant_id': hydrantId + }, + success: function(data) { + // Prevent race condition, which could lead to multiple windows being open at the same time. + if(infoWindow == activeInfoWindow) { + infoWindow.setContent(data); + infoWindow.open(map, marker); + isWindowOpen = true; + } + } + }); + }); + hydrantIds.push(hydrantId); + } + function addMarkersAround(lat, lng) { + $.ajax({ + type: 'GET', + url: '/hydrants.json', + data: { + 'commit': $('#address_form input[type="submit"]').val(), + 'utf8': '✓', + 'authenticity_token': $('#address_form input[name="authenticity_token"]').val(), + 'lat': lat, + 'lng': lng, + 'limit': $('#address_form input[name="limit"]').val() + }, + success: function(data) { + if(data.errors) { + $('#address_label').addClass('error', 500); + $('#address').addClass('error', 500); + $('#address').focus(); + } else { + $('#address_label').removeClass('error', 500); + $('#address').removeClass('error', 500); + var i = -1; + $(data).each(function(index, hydrant) { + if($.inArray(hydrant.id, hydrantIds) == -1) { + i += 1; + } else { + // continue + return true; + } + setTimeout(function() { + point = new google.maps.LatLng(hydrant.lat, hydrant.lng); + if(hydrant.user_id) { + image_path = '<%= image_path 'markers/green.png' %>'; + } else { + image_path = '<%= image_path 'markers/red.png' %>'; + } + addMarker(hydrant.id, point, image_path); + }, i * 100); + }); + center = new google.maps.LatLng(lat, lng); + map.setCenter(center); + map.setZoom(18); + } + } + }); + } + google.maps.event.addListener(map, 'dragend', function() { + if(isWindowOpen == true) { + return; + } + center = map.getCenter(); + addMarkersAround(center.lat(), center.lng()); + }); + $('#address_form').submit(function() { + var submitButton = $("#address_form input[type='submit']"); + $(submitButton).attr("disabled", true); + var submitButtonText = $(submitButton).attr("value"); + $(submitButton).attr("value", "Please Wait..."); + if($('#address').val() === '') { + $(submitButton).attr("disabled", false); + $(submitButton).attr("value", submitButtonText); + $('#address_label').addClass('error', 500); + $('#address').addClass('error', 500); + $('#address').focus(); + } else { + $.ajax({ + type: 'GET', + url: '/address.json', + data: { + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#address_form input[name="authenticity_token"]').val(), + 'city_state': $('#city_state').val(), + 'address': $('#address').val() + }, + success: function(data) { + $(submitButton).attr("disabled", false); + $(submitButton).attr("value", submitButtonText); + if(data.errors) { + $('#address_label').addClass('error', 500); + $('#address').addClass('error', 500); + $('#address').focus(); + } else { + addMarkersAround(data[0], data[1]); + } + } + }); + } + return false; + }); + $('#combo_form input[type="radio"]').live('click', function() { + var self = $(this); + if('new' == self.val()) { + $('#user_forgot_password_fields').slideUp(); + $('#user_sign_in_fields').slideUp(); + $('#user_sign_up_fields').slideDown(); + $('#combo_form').data('state', 'user_sign_up'); + } else if('existing' == self.val()) { + $('#user_sign_up_fields').slideUp(); + $('#user_sign_in_fields').slideDown(function() { + $('#combo_form').data('state', 'user_sign_in'); + $('#user_forgot_password_link').click(function() { + $('#user_sign_in_fields').slideUp(); + $('#user_forgot_password_fields').slideDown(function() { + $('#user_remembered_password').click(function() { + $('#user_forgot_password_fields').slideUp(); + $('#user_sign_in_fields').slideDown(); + $('#combo_form').data('state', 'user_sign_in'); + }); + }); + $('#combo_form').data('state', 'user_forgot_password'); + }); + }); + } + }); + $('#combo_form').live('submit', function() { + var submitButton = $("#combo_form input[type='submit']"); + $(submitButton).attr("disabled", true); + var errors = [] + if(!/[\w\.%\+\]+@[\w\]+\.+[\w]{2,}/.test($('#user_email').val())) { + errors.push($('#user_email')); + $('#user_email_label').addClass('error', 500); + $('#user_email').addClass('error', 500); + } else { + $('#user_email_label').removeClass('error'); + $('#user_email').removeClass('error'); + } + if(!$(this).data('state') || $(this).data('state') === 'user_sign_up') { + if($('#user_name').val() === '') { + errors.push($('#user_name')); + $('#user_name_label').addClass('error', 500); + $('#user_name').addClass('error', 500); + } else { + $('#user_name_label').removeClass('error'); + $('#user_name').removeClass('error'); + } + if($('#user_password_confirmation').val().length < 6 || $('#user_password_confirmation').val().length > 20) { + errors.push($('#user_password_confirmation')); + $('#user_password_confirmation_label').addClass('error', 500); + $('#user_password_confirmation').addClass('error', 500); + } else { + $('#user_password_confirmation_label').removeClass('error'); + $('#user_password_confirmation').removeClass('error'); + } + if(errors.length > 0) { + $(submitButton).attr("disabled", false); + errors[0].focus(); + } else { + $.ajax({ + type: 'POST', + url: '/users.json', + data: { + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#combo_form input[name="authenticity_token"]').val(), + 'user': { + 'email': $('#user_email').val(), + 'name': $('#user_name').val(), + 'organization': $('#user_organization').val(), + 'voice_number': $('#user_voice_number').val(), + 'sms_number': $('#user_sms_number').val(), + 'password': $('#user_password_confirmation').val(), + 'password_confirmation': $('#user_password_confirmation').val() + } + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + data = $.parseJSON(jqXHR.responseText); + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + if(data.errors.email) { + errors.push($('#user_email')); + $('#user_email_label').addClass('error', 500); + $('#user_email').addClass('error', 500); + } + if(data.errors.name) { + errors.push($('#user_name')); + $('#user_name_label').addClass('error', 500); + $('#user_name').addClass('error', 500); + } + if(data.errors.organization) { + errors.push($('#user_organization')); + $('#user_organization_label').addClass('error', 500); + $('#user_organization').addClass('error', 500); + } + if(data.errors.voice_number) { + errors.push($('#user_voice_number')); + $('#user_voice_number_label').addClass('error', 500); + $('#user_voice_number').addClass('error', 500); + } + if(data.errors.sms_number) { + errors.push($('#user_sms_number')); + $('#user_sms_number_label').addClass('error', 500); + $('#user_sms_number').addClass('error', 500); + } + if(data.errors.password) { + errors.push($('#user_password_confirmation')); + $('#user_password_confirmation_label').addClass('error', 500); + $('#user_password_confirmation').addClass('error', 500); + } + errors[0].focus(); + }, + success: function(data) { + $.ajax({ + type: 'GET', + url: '/info_window', + data: { + 'hydrant_id': activeHydrantId, + 'flash': { + 'notice': "Thanks for signing up!" + } + }, + success: function(data) { + activeInfoWindow.setContent(data); + } + }); + } + }); + } + } else if($(this).data('state') === 'user_sign_in') { + if($('#user_password').val().length < 6 || $('#user_password').val().length > 20) { + errors.push($('#user_password')); + $('#user_password_label').addClass('error', 500); + $('#user_password').addClass('error', 500); + } else { + $('#user_password_label').removeClass('error'); + $('#user_password').removeClass('error'); + } + if(errors.length > 0) { + $(submitButton).attr("disabled", false); + errors[0].focus(); + } else { + $.ajax({ + type: 'POST', + url: '/users/sign_in.json', + data: { + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#combo_form input[name="authenticity_token"]').val(), + 'user': { + 'email': $('#user_email').val(), + 'password': $('#user_password').val(), + 'remember_me': $('#user_remember_me').val() + } + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + $('#user_password_label').addClass('error', 500); + $('#user_password').addClass('error', 500); + $('#user_password').focus(); + }, + success: function(data) { + $.ajax({ + type: 'GET', + url: '/info_window', + data: { + 'hydrant_id': activeHydrantId, + 'flash': { + 'notice': "Signed in!" + } + }, + success: function(data) { + activeInfoWindow.setContent(data); + } + }); + } + }); + } + } else if($(this).data('state') === 'user_forgot_password') { + if(errors.length > 0) { + $(submitButton).attr("disabled", false); + errors[0].focus(); + } else { + $.ajax({ + type: 'POST', + url: '/users/password.json', + data: { + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#combo_form input[name="authenticity_token"]').val(), + 'user': { + 'email': $('#user_email').val() + } + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + $('#user_email_label').addClass('error', 500); + $('#user_email').addClass('error', 500); + $('#user_email').focus(); + }, + success: function() { + $.ajax({ + type: 'GET', + url: '/users/sign_in', + data: { + 'user': { + 'email': $('#user_email').val() + }, + 'flash': { + 'notice': "Password reset instructions sent! Check your email." + } + }, + success: function(data) { + activeInfoWindow.setContent(data); + $('#user_existing').click(); + } + }); + } + }); + } + } + return false; + }); + $('#adoption_form').live('submit', function() { + var submitButton = $("#adoption_form input[type='submit']"); + $(submitButton).attr("disabled", true); + $.ajax({ + type: 'POST', + url: '/hydrants.json', + data: { + 'id': $('#hydrant_id').val(), + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#adoption_form input[name="authenticity_token"]').val(), + '_method': 'put', + 'hydrant': { + 'user_id': $('#hydrant_user_id').val(), + 'name': $('#hydrant_name').val() + } + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + }, + success: function(data) { + $.ajax({ + type: 'GET', + url: '/info_window', + data: { + 'hydrant_id': activeHydrantId, + 'flash': { + 'notice': "You just adopted " + $('#hydrant_name').val() + "!" + } + }, + success: function(data) { + activeInfoWindow.setContent(data); + activeInfoWindow.setContent(data); + image = new google.maps.MarkerImage('<%= image_path 'markers/green.png' %>', + new google.maps.Size(27.0, 37.0), + new google.maps.Point(0, 0), + new google.maps.Point(13.0, 18.0) + ); + activeMarker.setIcon(image); + activeMarker.setAnimation(google.maps.Animation.BOUNCE); + } + }); + } + }); + return false; + }); + $('#abandon_form').live('submit', function() { + var answer = window.confirm("Are you sure you want to abandon this hydrant?") + if(answer) { + var submitButton = $("#abandon_form input[type='submit']"); + $(submitButton).attr("disabled", true); + $.ajax({ + type: 'POST', + url: '/hydrants.json', + data: { + 'id': $('#hydrant_id').val(), + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#abandon_form input[name="authenticity_token"]').val(), + '_method': 'put', + 'hydrant': { + 'user_id': $('#hydrant_user_id').val(), + 'name': $('#hydrant_name').val() + } + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + }, + success: function(data) { + $.ajax({ + type: 'GET', + url: '/info_window', + data: { + 'hydrant_id': activeHydrantId, + 'flash': { + 'notice': "Hydrant abandoned!" + } + }, + success: function(data) { + activeInfoWindow.setContent(data); + image = new google.maps.MarkerImage('<%= image_path 'markers/red.png' %>', + new google.maps.Size(27.0, 37.0), + new google.maps.Point(0, 0), + new google.maps.Point(13.0, 18.0) + ); + activeMarker.setIcon(image); + activeMarker.setAnimation(null); + } + }); + } + }); + } + return false; + }); + $('#steal_form').live('submit', function() { + var answer = window.confirm("Are you sure you want to steal this hydrant?") + if(answer) { + var submitButton = $("#steal_form input[type='submit']"); + $(submitButton).attr("disabled", true); + $.ajax({ + type: 'POST', + url: '/hydrants.json', + data: { + 'id': $('#hydrant_id').val(), + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#steal_form input[name="authenticity_token"]').val(), + '_method': 'put', + 'hydrant': { + 'user_id': $('#hydrant_user_id').val(), + 'name': $('#hydrant_name').val() + } + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + }, + success: function(data) { + $.ajax({ + type: 'GET', + url: '/info_window', + data: { + 'hydrant_id': activeHydrantId, + 'flash': { + 'notice': "Hydrant stolen!" + } + }, + success: function(data) { + activeInfoWindow.setContent(data); + image = new google.maps.MarkerImage('<%= image_path 'markers/red.png' %>', + new google.maps.Size(27.0, 37.0), + new google.maps.Point(0, 0), + new google.maps.Point(13.0, 18.0) + ); + activeMarker.setIcon(image); + activeMarker.setAnimation(null); + } + }); + } + }); + } + return false; + }); + $('#edit_profile_form').live('submit', function() { + var submitButton = $("#edit_profile_form input[type='submit']"); + $(submitButton).attr("disabled", true); + $.ajax({ + type: 'GET', + url: '/users/edit', + data: { + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#edit_profile_form input[name="authenticity_token"]').val() + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + }, + success: function(data) { + activeInfoWindow.setContent(data); + } + }); + return false; + }); + $('#edit_form').live('submit', function() { + var submitButton = $("#edit_form input[type='submit']"); + $(submitButton).attr("disabled", true); + var errors = [] + if(!/[\w\.%\+\]+@[\w\]+\.+[\w]{2,}/.test($('#user_email').val())) { + errors.push($('#user_email')); + $('#user_email_label').addClass('error', 500); + $('#user_email').addClass('error', 500); + } else { + $('#user_email_label').removeClass('error'); + $('#user_email').removeClass('error'); + } + if($('#user_name').val() === '') { + errors.push($('#user_name')); + $('#user_name_label').addClass('error', 500); + $('#user_name').addClass('error', 500); + } else { + $('#user_name_label').removeClass('error'); + $('#user_name').removeClass('error'); + } + if($('#user_password').val() && ($('#user_password').val().length < 6 || $('#user_password').val().length > 20)) { + errors.push($('#user_password')); + $('#user_password_label').addClass('error', 500); + $('#user_password').addClass('error', 500); + } else { + $('#user_password_label').removeClass('error'); + $('#user_password').removeClass('error'); + } + if($('#user_current_password').val().length < 6 || $('#user_current_password').val().length > 20) { + errors.push($('#user_current_password')); + $('#user_current_password_label').addClass('error', 500); + $('#user_current_password').addClass('error', 500); + } else { + $('#user_current_password_label').removeClass('error'); + $('#user_current_password').removeClass('error'); + } + if(errors.length > 0) { + $(submitButton).attr("disabled", false); + errors[0].focus(); + } else { + $.ajax({ + type: 'POST', + url: '/users.json', + data: { + 'id': $('#id').val(), + 'hydrant_id': activeHydrantId, + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#edit_form input[name="authenticity_token"]').val(), + '_method': 'put', + 'user': { + 'email': $('#user_email').val(), + 'name': $('#user_name').val(), + 'organization': $('#user_organization').val(), + 'voice_number': $('#user_voice_number').val(), + 'sms_number': $('#user_sms_number').val(), + 'password': $('#user_password').val(), + 'password_confirmation': $('#user_password').val(), + 'current_password': $('#user_current_password').val() + } + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + data = $.parseJSON(jqXHR.responseText); + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + if(data.errors.email) { + errors.push($('#user_email')); + $('#user_email_label').addClass('error', 500); + $('#user_email').addClass('error', 500); + } + if(data.errors.name) { + errors.push($('#user_name')); + $('#user_name_label').addClass('error', 500); + $('#user_name').addClass('error', 500); + } + if(data.errors.organization) { + errors.push($('#user_organization')); + $('#user_organization_label').addClass('error', 500); + $('#user_organization').addClass('error', 500); + } + if(data.errors.voice_number) { + errors.push($('#user_voice_number')); + $('#user_voice_number_label').addClass('error', 500); + $('#user_voice_number').addClass('error', 500); + } + if(data.errors.sms_number) { + errors.push($('#user_sms_number')); + $('#user_sms_number_label').addClass('error', 500); + $('#user_sms_number').addClass('error', 500); + } + if(data.errors.password) { + errors.push($('#user_password')); + $('#user_password_label').addClass('error', 500); + $('#user_password').addClass('error', 500); + } + if(data.errors.current_password) { + errors.push($('#user_current_password')); + $('#user_current_password_label').addClass('error', 500); + $('#user_current_password').addClass('error', 500); + } + errors[0].focus(); + }, + success: function(data) { + activeInfoWindow.setContent(data); + } + }); + } + return false; + }); + $('#sign_out_form').live('submit', function() { + var submitButton = $("#sign_out_form input[type='submit']"); + $(submitButton).attr("disabled", true); + $.ajax({ + type: 'GET', + url: '/users/sign_out.json', + data: { + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#sign_out_form input[name="authenticity_token"]').val() + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + }, + success: function(data) { + $.ajax({ + type: 'GET', + url: '/info_window', + data: { + 'hydrant_id': activeHydrantId, + 'flash': { + 'notice': "Signed out." + } + }, + success: function(data) { + activeInfoWindow.setContent(data); + } + }); + } + }); + return false; + }); + $('#sign_in_form').live('submit', function() { + var submitButton = $("#sign_in_form input[type='submit']"); + $(submitButton).attr("disabled", true); + $.ajax({ + type: 'GET', + url: '/users/sign_in', + data: { + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#sign_in_form input[name="authenticity_token"]').val(), + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + }, + success: function(data) { + activeInfoWindow.setContent(data); + } + }); + return false; + }); + $('#back_form').live('submit', function() { + var submitButton = $("#back_form input[type='submit']"); + $(submitButton).attr("disabled", true); + $.ajax({ + type: 'GET', + url: '/info_window', + data: { + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#back_form input[name="authenticity_token"]').val(), + 'hydrant_id': activeHydrantId + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + }, + success: function(data) { + activeInfoWindow.setContent(data); + } + }); + return false; + }); + $('#reminder_form').live('submit', function() { + var submitButton = $("#reminder_form input[type='submit']"); + $(submitButton).attr("disabled", true); + $.ajax({ + type: 'POST', + url: '/reminders.json', + data: { + 'commit': submitButton.val(), + 'utf8': '✓', + 'authenticity_token': $('#sign_out_form input[name="authenticity_token"]').val(), + 'reminder': { + 'from_user_id': $('#reminder_from_user_id').val(), + 'to_user_id': $('#reminder_to_user_id').val(), + 'hydrant_id': activeHydrantId + } + }, + beforeSend: function() { + $('#info_window').hide(); + $('#loader').show(); + }, + error: function(jqXHR) { + $('#loader').hide(); + $('#info_window').show(); + $(submitButton).attr("disabled", false); + }, + success: function(data) { + $.ajax({ + type: 'GET', + url: '/info_window', + data: { + 'hydrant_id': activeHydrantId, + 'flash': { + 'notice': "Reminder sent!" + } + }, + success: function(data) { + activeInfoWindow.setContent(data); + } + }); + } + }); + return false; + }); + $('#notice').live('click', function() { + $(this).fadeOut('slow'); + }); + $('#error').live('click', function() { + $(this).fadeOut('slow'); + }); +});