adopt-a-hydrant/app/views/layouts/application.html.erb

274 lines
11 KiB
Plaintext
Raw Normal View History

2011-02-14 18:28:51 +00:00
<!DOCTYPE html>
<html>
2011-02-14 18:49:00 +00:00
<head>
2011-02-23 22:24:08 +00:00
<title>Adopt a Hydrant</title>
2011-02-14 18:49:00 +00:00
<%= stylesheet_link_tag "main" %>
<%= javascript_include_tag "http://maps.google.com/maps/api/js?sensor=false" %>
2011-03-05 01:43:25 +00:00
<%= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" %>
2011-03-05 04:22:03 +00:00
<%= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js" %>
2011-03-04 23:21:08 +00:00
<%= javascript_include_tag "https://github.com/scottschiller/Snowstorm/raw/master/snowstorm-min.js" %>
2011-02-25 21:34:01 +00:00
<script type="text/javascript">
$(function() {
var map;
var latlng = new google.maps.LatLng(<%= @lat %>, <%= @lng %>);
var myOptions = {
2011-03-01 08:20:55 +00:00
mapTypeControl: false,
scaleControl: true,
scaleControlOptions: {
position: google.maps.ControlPosition.BOTTOM_CENTER
},
2011-02-25 21:34:01 +00:00
zoom: <%= @zoom %>,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var activeHydrantId;
var activeMarker;
var activeInfoWindow;
function addMarker(hydrantId, point, color) {
2011-03-01 08:20:55 +00:00
var image = new google.maps.MarkerImage(color,
2011-03-03 18:26:41 +00:00
new google.maps.Size(27.0, 37.0),
2011-03-01 08:20:55 +00:00
new google.maps.Point(0, 0),
2011-03-03 18:26:41 +00:00
new google.maps.Point(13.0, 18.0)
2011-03-01 08:20:55 +00:00
);
var shadow = new google.maps.MarkerImage('/images/markers/shadow.png',
2011-03-03 18:26:41 +00:00
new google.maps.Size(46.0, 37.0),
2011-03-01 08:20:55 +00:00
new google.maps.Point(0, 0),
2011-03-03 18:26:41 +00:00
new google.maps.Point(13.0, 18.0)
2011-03-01 08:20:55 +00:00
);
var marker = new google.maps.Marker({
position: point,
map: map,
icon: image,
shadow: shadow
});
google.maps.event.addListener(marker, 'click', function() {
if(activeInfoWindow) {
activeInfoWindow.close();
2011-03-01 08:20:55 +00:00
}
$.get('<%= forms_path %>', {
'hydrant_id': hydrantId
}, function(data) {
var infoWindow = new google.maps.InfoWindow({
content: data,
maxWidth: 350
2011-03-08 08:44:27 +00:00
});
infoWindow.open(map, marker);
activeHydrantId = hydrantId;
activeMarker = marker;
activeInfoWindow = infoWindow;
2011-03-08 08:44:27 +00:00
});
2011-03-01 08:20:55 +00:00
});
}
2011-03-07 08:56:32 +00:00
<% @hydrants.each do |hydrant| %>
2011-03-01 08:20:55 +00:00
point = new google.maps.LatLng(<%= hydrant.lat %>, <%= hydrant.lng %>);
color = '/images/markers/<%= hydrant.user_id ? "green" : "red" %>.png';
addMarker(<%= hydrant.id %>, point, color);
2011-03-07 08:56:32 +00:00
<% end %>
$('#combo_form input[type="radio"]').live('click', function() {
2011-03-01 04:13:31 +00:00
var self = $(this);
if('new' == self.val()) {
2011-03-06 18:28:00 +00:00
$('#user_forgot_password_fields').slideUp();
$('#sign_in_fields').slideUp();
$('#sign_up_fields').slideDown();
$('#combo_form').data('state', 'sign_up');
2011-03-01 04:13:31 +00:00
} else if('existing' == self.val()) {
$('#sign_up_fields').slideUp();
$('#sign_in_fields').slideDown(function() {
$('#combo_form').data('state', 'sign_in');
2011-03-06 18:28:00 +00:00
$('#user_forgot_password_link').click(function() {
$('#sign_in_fields').slideUp();
2011-03-06 18:28:00 +00:00
$('#user_forgot_password_fields').slideDown(function() {
$('#user_remembered_password').click(function() {
$('#user_forgot_password_fields').slideUp();
$('#sign_in_fields').slideDown();
$('#combo_form').data('state', 'sign_in');
2011-03-01 04:13:31 +00:00
});
});
$('#combo_form').data('state', 'user_forgot_password');
2011-03-01 04:13:31 +00:00
});
});
}
});
$('#combo_form').live('submit', function() {
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') === '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) {
errors[0].focus();
} else {
$.post('<%= user_registration_path :format => "json" %>', {
'commit': $('#sign_up_submit').val(),
'utf8': '✓',
'authenticity_token': $('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()
}
}, function(data) {
if(data.errors) {
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();
} else {
$.get('<%= forms_path %>', {
'hydrant_id': activeHydrantId
}, function(data) {
activeInfoWindow.setContent(data);
});
}
});
}
} else if($(this).data('state') === '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) {
errors[0].focus();
} else {
$.post('<%= user_session_path :format => "json" %>', {
'commit': $('#sign_in_submit').val(),
'utf8': '✓',
'authenticity_token': $('input[name="authenticity_token"]').val(),
'user': {
'email': $('#user_email').val(),
'password': $('#user_password').val(),
'remember_me': $('#user_remember_me').val()
}
}, function(data) {
if(data.errors) {
$('#user_password').focus();
$('#user_password_label').addClass('error', 500);
$('#user_password').addClass('error', 500);
} else {
$.get('<%= forms_path %>', {
'hydrant_id': activeHydrantId
}, function(data) {
activeInfoWindow.setContent(data);
});
}
});
}
} else if($(this).data('state') === 'user_forgot_password') {
if(errors.length > 0) {
errors[0].focus();
} else {
$.post('<%= user_password_path :format => "json" %>', {
'commit': $('#user_forgot_password_submit').val(),
'utf8': '✓',
'authenticity_token': $('input[name="authenticity_token"]').val(),
'user': {
'email': $('#user_email').val()
}
}, function(data) {
if(data.errors) {
$('#user_email').focus();
$('#user_email_label').addClass('error', 500);
$('#user_email').addClass('error', 500);
} else {
$('#user_forgot_password_fields').slideUp();
$('#sign_in_fields').slideDown();
}
});
}
}
return false;
});
$('#adoption_form').live('submit', function() {
$.post('<%= hydrant_path :format => "json" %>', {
'id': $('#hydrant_id').val(),
'commit': $('#adoption_form_submit').val(),
'utf8': '✓',
'authenticity_token': $('input[name="authenticity_token"]').val(),
'_method': 'put',
'hydrant': {
'user_id': $('#hydrant_user_id').val(),
'name': $('#hydrant_name').val()
}
}, function(data) {
$.get('<%= forms_path %>', {
'hydrant_id': activeHydrantId
}, function(data) {
activeInfoWindow.setContent(data);
image = new google.maps.MarkerImage('/images/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;
});
});
2011-02-25 21:34:01 +00:00
</script>
2011-02-14 18:49:00 +00:00
<%= csrf_meta_tag %>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
</head>
2011-02-14 20:27:18 +00:00
<body>
2011-02-14 18:49:00 +00:00
<%= yield -%>
</body>
2011-02-14 18:28:51 +00:00
</html>