gets app completly uptodate with prototype

This commit is contained in:
Galen Frechette
2012-06-20 14:37:37 -04:00
parent 47e06692d8
commit 94886643b0
49 changed files with 12204 additions and 3588 deletions

43
static/coffee/src/calculator.js Executable file
View File

@@ -0,0 +1,43 @@
// Generated by CoffeeScript 1.3.3
(function() {
this.Calculator = (function() {
function Calculator() {
$('.calc').click(this.toggle);
$('form#calculator').submit(this.calculate).submit(function(e) {
return e.preventDefault();
});
$('div.help-wrapper a').hover(this.helpToggle).click(function(e) {
return e.preventDefault();
});
}
Calculator.prototype.toggle = function() {
$('li.calc-main').toggleClass('open');
$('#calculator_wrapper #calculator_input').focus();
if ($('.calc.closed').length) {
$('.calc').attr('aria-label', 'Open Calculator');
} else {
$('.calc').attr('aria-label', 'Close Calculator');
}
return $('.calc').toggleClass('closed');
};
Calculator.prototype.helpToggle = function() {
return $('.help').toggleClass('shown');
};
Calculator.prototype.calculate = function() {
return $.getWithPrefix('/calculate', {
equation: $('#calculator_input').val()
}, function(data) {
return $('#calculator_output').val(data.result);
});
};
return Calculator;
})();
}).call(this);

48
static/coffee/src/courseware.js Executable file
View File

@@ -0,0 +1,48 @@
// Generated by CoffeeScript 1.3.3
(function() {
this.Courseware = (function() {
Courseware.prefix = '';
function Courseware() {
Courseware.prefix = $("meta[name='path_prefix']").attr('content');
new Navigation;
new Calculator;
new FeedbackForm;
Logger.bind();
this.bind();
this.render();
}
Courseware.start = function() {
return new Courseware;
};
Courseware.prototype.bind = function() {
return $('.course-content .sequence, .course-content .tab').bind('contentChanged', this.render);
};
Courseware.prototype.render = function() {
$('.course-content .video').each(function() {
var id;
id = $(this).attr('id').replace(/video_/, '');
return new Video(id, $(this).data('streams'));
});
$('.course-content .problems-wrapper').each(function() {
var id;
id = $(this).attr('id').replace(/problem_/, '');
return new Problem(id, $(this).data('url'));
});
return $('.course-content .histogram').each(function() {
var id;
id = $(this).attr('id').replace(/histogram_/, '');
return new Histogram(id, $(this).data('histogram'));
});
};
return Courseware;
})();
}).call(this);

View File

@@ -0,0 +1,24 @@
// Generated by CoffeeScript 1.3.3
(function() {
this.FeedbackForm = (function() {
function FeedbackForm() {
$('#feedback_button').click(function() {
var data;
data = {
subject: $('#feedback_subject').val(),
message: $('#feedback_message').val(),
url: window.location.href
};
return $.postWithPrefix('/send_feedback', data, function() {
return $('#feedback_div').html('Feedback submitted. Thank you');
}, 'json');
});
}
return FeedbackForm;
})();
}).call(this);

66
static/coffee/src/histogram.js Executable file
View File

@@ -0,0 +1,66 @@
// Generated by CoffeeScript 1.3.3
(function() {
this.Histogram = (function() {
function Histogram(id, rawData) {
this.id = id;
this.rawData = rawData;
this.xTicks = [];
this.yTicks = [];
this.data = [];
this.calculate();
this.render();
}
Histogram.prototype.calculate = function() {
var count, log_count, score, _i, _len, _ref, _ref1, _results;
_ref = this.rawData;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
_ref1 = _ref[_i], score = _ref1[0], count = _ref1[1];
log_count = Math.log(count + 1);
this.data.push([score, log_count]);
this.xTicks.push([score, score.toString()]);
_results.push(this.yTicks.push([log_count, count.toString()]));
}
return _results;
};
Histogram.prototype.render = function() {
return $.plot($("#histogram_" + this.id), [
{
data: this.data,
bars: {
show: true,
align: 'center',
lineWidth: 0,
fill: 1.0
},
color: "#b72121"
}
], {
xaxis: {
min: -1,
max: Math.max.apply(Math, $.map(this.xTicks, function(data) {
return data[0] + 1;
})),
ticks: this.xTicks,
tickLength: 0
},
yaxis: {
min: 0.0,
max: Math.max.apply(Math, $.map(this.yTicks, function(data) {
return data[0] * 1.1;
})),
ticks: this.yTicks,
labelWidth: 50
}
});
};
return Histogram;
})();
}).call(this);

36
static/coffee/src/logger.js Executable file
View File

@@ -0,0 +1,36 @@
// Generated by CoffeeScript 1.3.3
(function() {
this.Logger = (function() {
function Logger() {}
Logger.log = function(event_type, data) {
return $.getWithPrefix('/event', {
event_type: event_type,
event: JSON.stringify(data),
page: window.location.href
});
};
Logger.bind = function() {
return window.onunload = function() {
return $.ajax({
url: "" + Courseware.prefix + "/event",
data: {
event_type: 'page_close',
event: '',
page: window.location.href
},
async: false
});
};
};
return Logger;
})();
this.log_event = Logger.log;
}).call(this);

45
static/coffee/src/main.js Executable file
View File

@@ -0,0 +1,45 @@
// Generated by CoffeeScript 1.3.3
(function() {
jQuery.postWithPrefix = function(url, data, callback, type) {
return $.post("" + Courseware.prefix + url, data, callback, type);
};
jQuery.getWithPrefix = function(url, data, callback, type) {
return $.get("" + Courseware.prefix + url, data, callback, type);
};
$(function() {
$.ajaxSetup({
headers: {
'X-CSRFToken': $.cookie('csrftoken')
},
dataType: 'json'
});
window.onTouchBasedDevice = function() {
return navigator.userAgent.match(/iPhone|iPod|iPad/i);
};
$("a[rel*=leanModal]").leanModal();
$('#csrfmiddlewaretoken').attr('value', $.cookie('csrftoken'));
if ($('body').hasClass('courseware')) {
Courseware.start();
}
window.submit_circuit = function(circuit_id) {
$("input.schematic").each(function(index, element) {
return element.schematic.update_value();
});
schematic_value($("#schematic_" + circuit_id).attr("value"));
return $.postWithPrefix("/save_circuit/" + circuit_id, {
schematic: schematic_value
}, function(data) {
if (data.results === 'success') {
return alert('Saved');
}
});
};
return window.postJSON = function(url, data, callback) {
return $.postWithPrefix(url, data, callback);
};
});
}).call(this);

View File

@@ -0,0 +1,134 @@
// Generated by CoffeeScript 1.3.3
(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
this.Problem = (function() {
function Problem(id, url) {
this.id = id;
this.refreshAnswers = __bind(this.refreshAnswers, this);
this.save = __bind(this.save, this);
this.show = __bind(this.show, this);
this.reset = __bind(this.reset, this);
this.check = __bind(this.check, this);
this.bind = __bind(this.bind, this);
this.element = $("#problem_" + id);
this.content_url = "" + url + "problem_get?id=" + this.id;
this.render();
}
Problem.prototype.$ = function(selector) {
return $(selector, this.element);
};
Problem.prototype.bind = function() {
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
window.update_schematics();
this.$('section.action input:button').click(this.refreshAnswers);
this.$('section.action input.check').click(this.check);
this.$('section.action input.reset').click(this.reset);
this.$('section.action input.show').click(this.show);
return this.$('section.action input.save').click(this.save);
};
Problem.prototype.render = function(content) {
if (content) {
this.element.html(content);
return this.bind();
} else {
return this.element.load(this.content_url, this.bind);
}
};
Problem.prototype.check = function() {
var _this = this;
Logger.log('problem_check', this.answers);
return $.postWithPrefix("/modx/problem/" + this.id + "/problem_check", this.answers, function(response) {
switch (response.success) {
case 'incorrect':
case 'correct':
return _this.render(response.contents);
default:
return alert(response.success);
}
});
};
Problem.prototype.reset = function() {
var _this = this;
Logger.log('problem_reset', this.answers);
return $.postWithPrefix("/modx/problem/" + this.id + "/problem_reset", {
id: this.id
}, function(content) {
return _this.render(content);
});
};
Problem.prototype.show = function() {
var _this = this;
if (!this.element.hasClass('showed')) {
Logger.log('problem_show', {
problem: this.id
});
return $.postWithPrefix("/modx/problem/" + this.id + "/problem_show", function(response) {
$.each(response, function(key, value) {
var choice, _i, _len, _results;
if ($.isArray(value)) {
_results = [];
for (_i = 0, _len = value.length; _i < _len; _i++) {
choice = value[_i];
_results.push(_this.$("label[for='input_" + key + "_" + choice + "']").attr({
correct_answer: 'true'
}));
}
return _results;
} else {
return _this.$("#answer_" + key).text(value);
}
});
_this.$('.show').val('Hide Answer');
return _this.element.addClass('showed');
});
} else {
this.$('[id^=answer_]').text('');
this.$('[correct_answer]').attr({
correct_answer: null
});
this.element.removeClass('showed');
return this.$('.show').val('Show Answer');
}
};
Problem.prototype.save = function() {
var _this = this;
Logger.log('problem_save', this.answers);
return $.postWithPrefix("/modx/problem/" + this.id + "/problem_save", this.answers, function(response) {
if (response.success) {
return alert('Saved');
}
});
};
Problem.prototype.refreshAnswers = function() {
this.$('input.schematic').each(function(index, element) {
return element.schematic.update_value();
});
this.$(".CodeMirror").each(function(index, element) {
if (element.CodeMirror.save) {
return element.CodeMirror.save();
}
});
return this.answers = this.$("[id^=input_" + this.id + "_]").serialize();
};
return Problem;
})();
}).call(this);

View File

@@ -0,0 +1,134 @@
// Generated by CoffeeScript 1.3.3
(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
this.Sequence = (function() {
function Sequence(id, elements, tag, position) {
this.id = id;
this.elements = elements;
this.tag = tag;
this.previous = __bind(this.previous, this);
this.next = __bind(this.next, this);
this.goto = __bind(this.goto, this);
this.toggleArrows = __bind(this.toggleArrows, this);
this.element = $("#sequence_" + this.id);
this.buildNavigation();
this.bind();
this.render(position);
}
Sequence.prototype.$ = function(selector) {
return $(selector, this.element);
};
Sequence.prototype.bind = function() {
this.element.bind('contentChanged', this.toggleArrows);
return this.$('#sequence-list a').click(this.goto);
};
Sequence.prototype.buildNavigation = function() {
var _this = this;
return $.each(this.elements, function(index, item) {
var link, list_item, title;
link = $('<a>').attr({
"class": "seq_" + item.type + "_inactive",
'data-element': index + 1
});
title = $('<p>').html(item.title);
list_item = $('<li>').append(link.append(title));
return _this.$('#sequence-list').append(list_item);
});
};
Sequence.prototype.toggleArrows = function() {
this.$('.sequence-nav-buttons a').unbind('click');
if (this.position === 1) {
this.$('.sequence-nav-buttons .prev a').addClass('disabled');
} else {
this.$('.sequence-nav-buttons .prev a').removeClass('disabled').click(this.previous);
}
if (this.position === this.elements.length) {
return this.$('.sequence-nav-buttons .next a').addClass('disabled');
} else {
return this.$('.sequence-nav-buttons .next a').removeClass('disabled').click(this.next);
}
};
Sequence.prototype.render = function(new_position) {
if (this.position !== new_position) {
if (this.position !== void 0) {
this.mark_visited(this.position);
$.postWithPrefix("/modx/" + this.tag + "/" + this.id + "/goto_position", {
position: new_position
});
}
this.mark_active(new_position);
this.$('#seq_content').html(eval(this.elements[new_position - 1].content));
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
this.position = new_position;
return this.element.trigger('contentChanged');
}
};
Sequence.prototype.goto = function(event) {
var new_position;
event.preventDefault();
new_position = $(event.target).data('element');
Logger.log("seq_goto", {
old: this.position,
"new": new_position,
id: this.id
});
return this.render(new_position);
};
Sequence.prototype.next = function(event) {
var new_position;
event.preventDefault();
new_position = this.position + 1;
Logger.log("seq_next", {
old: this.position,
"new": new_position,
id: this.id
});
return this.render(new_position);
};
Sequence.prototype.previous = function(event) {
var new_position;
event.preventDefault();
new_position = this.position - 1;
Logger.log("seq_prev", {
old: this.position,
"new": new_position,
id: this.id
});
return this.render(new_position);
};
Sequence.prototype.link_for = function(position) {
return this.$("#sequence-list a[data-element=" + position + "]");
};
Sequence.prototype.mark_visited = function(position) {
return this.link_for(position).attr({
"class": "seq_" + this.elements[position - 1].type + "_visited"
});
};
Sequence.prototype.mark_active = function(position) {
return this.link_for(position).attr({
"class": "seq_" + this.elements[position - 1].type + "_active"
});
};
return Sequence;
})();
}).call(this);

View File

@@ -0,0 +1,51 @@
// Generated by CoffeeScript 1.3.3
(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
this.Tab = (function() {
function Tab(id, items) {
this.id = id;
this.items = items;
this.onShow = __bind(this.onShow, this);
this.element = $("#tab_" + id);
this.render();
}
Tab.prototype.$ = function(selector) {
return $(selector, this.element);
};
Tab.prototype.render = function() {
var _this = this;
$.each(this.items, function(index, item) {
var tab;
tab = $('<a>').attr({
href: "#" + (_this.tabId(index))
}).html(item.title);
_this.$('.navigation').append($('<li>').append(tab));
return _this.element.append($('<section>').attr({
id: _this.tabId(index)
}));
});
return this.element.tabs({
show: this.onShow
});
};
Tab.prototype.onShow = function(element, ui) {
this.$('section.ui-tabs-hide').html('');
this.$("#" + (this.tabId(ui.index))).html(eval(this.items[ui.index]['content']));
return this.element.trigger('contentChanged');
};
Tab.prototype.tabId = function(index) {
return "tab-" + this.id + "-" + index;
};
return Tab;
})();
}).call(this);

View File

@@ -0,0 +1,82 @@
// Generated by CoffeeScript 1.3.3
(function() {
this.Video = (function() {
function Video(id, videos) {
var _this = this;
this.id = id;
window.player = null;
this.element = $("#video_" + this.id);
this.parseVideos(videos);
this.fetchMetadata();
this.parseSpeed();
$("#video_" + this.id).data('video', this);
if (YT.Player) {
this.embed();
} else {
window.onYouTubePlayerAPIReady = function() {
return $('.course-content .video').each(function() {
return $(this).data('video').embed();
});
};
}
}
Video.prototype.youtubeId = function(speed) {
return this.videos[speed || this.speed];
};
Video.prototype.parseVideos = function(videos) {
var _this = this;
this.videos = {};
return $.each(videos.split(/,/), function(index, video) {
var speed;
video = video.split(/:/);
speed = parseFloat(video[0]).toFixed(2).replace(/\.00$/, '.0');
return _this.videos[speed] = video[1];
});
};
Video.prototype.parseSpeed = function() {
this.setSpeed($.cookie('video_speed'));
return this.speeds = ($.map(this.videos, function(url, speed) {
return speed;
})).sort();
};
Video.prototype.setSpeed = function(newSpeed) {
if (this.videos[newSpeed] !== void 0) {
this.speed = newSpeed;
return $.cookie('video_speed', "" + newSpeed, {
expires: 3650,
path: '/'
});
} else {
return this.speed = '1.0';
}
};
Video.prototype.embed = function() {
return this.player = new VideoPlayer(this);
};
Video.prototype.fetchMetadata = function(url) {
var _this = this;
this.metadata = {};
return $.each(this.videos, function(speed, url) {
return $.get("http://gdata.youtube.com/feeds/api/videos/" + url + "?v=2&alt=jsonc", (function(data) {
return _this.metadata[data.data.id] = data.data;
}), 'jsonp');
});
};
Video.prototype.getDuration = function() {
return this.metadata[this.youtubeId()].duration;
};
return Video;
})();
}).call(this);

View File

@@ -0,0 +1,188 @@
// Generated by CoffeeScript 1.3.3
(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
this.VideoCaption = (function() {
function VideoCaption(player, youtubeId) {
this.player = player;
this.youtubeId = youtubeId;
this.toggle = __bind(this.toggle, this);
this.seekPlayer = __bind(this.seekPlayer, this);
this.onMouseLeave = __bind(this.onMouseLeave, this);
this.onMovement = __bind(this.onMovement, this);
this.onMouseEnter = __bind(this.onMouseEnter, this);
this.onWindowResize = __bind(this.onWindowResize, this);
this.onUpdatePlayTime = __bind(this.onUpdatePlayTime, this);
this.render();
this.bind();
}
VideoCaption.prototype.$ = function(selector) {
return this.player.$(selector);
};
VideoCaption.prototype.bind = function() {
$(window).bind('resize', this.onWindowResize);
$(this.player).bind('resize', this.onWindowResize);
$(this.player).bind('updatePlayTime', this.onUpdatePlayTime);
this.$('.hide-subtitles').click(this.toggle);
return this.$('.subtitles').mouseenter(this.onMouseEnter).mouseleave(this.onMouseLeave).mousemove(this.onMovement).bind('mousewheel', this.onMovement).bind('DOMMouseScroll', this.onMovement);
};
VideoCaption.prototype.captionURL = function() {
return "/static/subs/" + this.youtubeId + ".srt.sjson";
};
VideoCaption.prototype.render = function() {
this.$('.video-wrapper').after("<ol class=\"subtitles\"><li>Attempting to load captions...</li></ol>");
this.$('.video-controls .secondary-controls').append("<a href=\"#\" class=\"hide-subtitles\" title=\"Turn off captions\">Captions</a>");
this.$('.subtitles').css({
maxHeight: this.$('.video-wrapper').height() - 5
});
return this.fetchCaption();
};
VideoCaption.prototype.fetchCaption = function() {
var _this = this;
return $.getWithPrefix(this.captionURL(), function(captions) {
_this.captions = captions.text;
_this.start = captions.start;
return _this.renderCaption();
});
};
VideoCaption.prototype.renderCaption = function() {
var container,
_this = this;
container = $('<ol>');
$.each(this.captions, function(index, text) {
return container.append($('<li>').html(text).attr({
'data-index': index,
'data-start': _this.start[index]
}));
});
this.$('.subtitles').html(container.html());
this.$('.subtitles li[data-index]').click(this.seekPlayer);
return this.$('.subtitles').prepend($('<li class="spacing">').height(this.topSpacingHeight())).append($('<li class="spacing">').height(this.bottomSpacingHeight()));
};
VideoCaption.prototype.search = function(time) {
var index, max, min;
min = 0;
max = this.start.length - 1;
while (min < max) {
index = Math.ceil((max + min) / 2);
if (time < this.start[index]) {
max = index - 1;
}
if (time >= this.start[index]) {
min = index;
}
}
return min;
};
VideoCaption.prototype.onUpdatePlayTime = function(event, time) {
var newIndex;
time = Math.round(Time.convert(time, this.player.currentSpeed(), '1.0') * 1000 + 250);
newIndex = this.search(time);
if (newIndex !== void 0 && this.currentIndex !== newIndex) {
if (this.currentIndex) {
this.$(".subtitles li.current").removeClass('current');
}
this.$(".subtitles li[data-index='" + newIndex + "']").addClass('current');
this.currentIndex = newIndex;
return this.scrollCaption();
}
};
VideoCaption.prototype.onWindowResize = function() {
this.$('.subtitles').css({
maxHeight: this.captionHeight()
});
this.$('.subtitles .spacing:first').height(this.topSpacingHeight());
this.$('.subtitles .spacing:last').height(this.bottomSpacingHeight());
return this.scrollCaption();
};
VideoCaption.prototype.onMouseEnter = function() {
if (this.frozen) {
clearTimeout(this.frozen);
}
return this.frozen = setTimeout(this.onMouseLeave, 10000);
};
VideoCaption.prototype.onMovement = function() {
return this.onMouseEnter();
};
VideoCaption.prototype.onMouseLeave = function() {
if (this.frozen) {
clearTimeout(this.frozen);
}
this.frozen = null;
if (this.player.isPlaying()) {
return this.scrollCaption();
}
};
VideoCaption.prototype.scrollCaption = function() {
if (!this.frozen && this.$('.subtitles .current:first').length) {
return this.$('.subtitles').scrollTo(this.$('.subtitles .current:first'), {
offset: -this.calculateOffset(this.$('.subtitles .current:first'))
});
}
};
VideoCaption.prototype.seekPlayer = function(event) {
var time;
event.preventDefault();
time = Math.round(Time.convert($(event.target).data('start'), '1.0', this.player.currentSpeed()) / 1000);
return $(this.player).trigger('seek', time);
};
VideoCaption.prototype.calculateOffset = function(element) {
return this.captionHeight() / 2 - element.height() / 2;
};
VideoCaption.prototype.topSpacingHeight = function() {
return this.calculateOffset(this.$('.subtitles li:not(.spacing):first'));
};
VideoCaption.prototype.bottomSpacingHeight = function() {
return this.calculateOffset(this.$('.subtitles li:not(.spacing):last'));
};
VideoCaption.prototype.toggle = function(event) {
event.preventDefault();
if (this.player.element.hasClass('closed')) {
this.$('.hide-subtitles').attr('title', 'Turn off captions');
this.player.element.removeClass('closed');
return this.scrollCaption();
} else {
this.$('.hide-subtitles').attr('title', 'Turn on captions');
return this.player.element.addClass('closed');
}
};
VideoCaption.prototype.captionHeight = function() {
if (this.player.element.hasClass('fullscreen')) {
return $(window).height() - this.$('.video-controls').height();
} else {
return this.$('.video-wrapper').height();
}
};
return VideoCaption;
})();
}).call(this);

View File

@@ -0,0 +1,53 @@
// Generated by CoffeeScript 1.3.3
(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
this.VideoControl = (function() {
function VideoControl(player) {
this.player = player;
this.togglePlayback = __bind(this.togglePlayback, this);
this.onPause = __bind(this.onPause, this);
this.onPlay = __bind(this.onPlay, this);
this.render();
this.bind();
}
VideoControl.prototype.$ = function(selector) {
return this.player.$(selector);
};
VideoControl.prototype.bind = function() {
$(this.player).bind('play', this.onPlay).bind('pause', this.onPause).bind('ended', this.onPause);
return this.$('.video_control').click(this.togglePlayback);
};
VideoControl.prototype.render = function() {
return this.$('.video-controls').append("<div class=\"slider\"></div>\n<div>\n <ul class=\"vcr\">\n <li><a class=\"video_control play\">Play</a></li>\n <li>\n <div class=\"vidtime\">0:00 / 0:00</div>\n </li>\n </ul>\n <div class=\"secondary-controls\">\n <a href=\"#\" class=\"add-fullscreen\" title=\"Fill browser\">Fill Browser</a>\n </div>\n</div>");
};
VideoControl.prototype.onPlay = function() {
return this.$('.video_control').removeClass('play').addClass('pause').html('Pause');
};
VideoControl.prototype.onPause = function() {
return this.$('.video_control').removeClass('pause').addClass('play').html('Play');
};
VideoControl.prototype.togglePlayback = function(event) {
event.preventDefault();
if (this.player.isPlaying()) {
return $(this.player).trigger('pause');
} else {
return $(this.player).trigger('play');
}
};
return VideoControl;
})();
}).call(this);

View File

@@ -0,0 +1,201 @@
// Generated by CoffeeScript 1.3.3
(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
this.VideoPlayer = (function() {
function VideoPlayer(video) {
this.video = video;
this.toggleFullScreen = __bind(this.toggleFullScreen, this);
this.onUpdatePlayTime = __bind(this.onUpdatePlayTime, this);
this.update = __bind(this.update, this);
this.onSpeedChange = __bind(this.onSpeedChange, this);
this.onPause = __bind(this.onPause, this);
this.onPlay = __bind(this.onPlay, this);
this.onStateChange = __bind(this.onStateChange, this);
this.onReady = __bind(this.onReady, this);
this.bindExitFullScreen = __bind(this.bindExitFullScreen, this);
this.currentTime = 0;
this.element = $("#video_" + this.video.id);
this.render();
this.bind();
}
VideoPlayer.prototype.$ = function(selector) {
return $(selector, this.element);
};
VideoPlayer.prototype.bind = function() {
$(this).bind('seek', this.onSeek).bind('updatePlayTime', this.onUpdatePlayTime).bind('speedChange', this.onSpeedChange).bind('play', this.onPlay).bind('pause', this.onPause).bind('ended', this.onPause);
$(document).keyup(this.bindExitFullScreen);
this.$('.add-fullscreen').click(this.toggleFullScreen);
if (!onTouchBasedDevice()) {
return this.addToolTip();
}
};
VideoPlayer.prototype.bindExitFullScreen = function(event) {
if (this.element.hasClass('fullscreen') && event.keyCode === 27) {
return this.toggleFullScreen(event);
}
};
VideoPlayer.prototype.render = function() {
new VideoControl(this);
new VideoCaption(this, this.video.youtubeId('1.0'));
new VideoSpeedControl(this, this.video.speeds);
new VideoProgressSlider(this);
return this.player = new YT.Player(this.video.id, {
playerVars: {
controls: 0,
wmode: 'transparent',
rel: 0,
showinfo: 0,
enablejsapi: 1
},
videoId: this.video.youtubeId(),
events: {
onReady: this.onReady,
onStateChange: this.onStateChange
}
});
};
VideoPlayer.prototype.addToolTip = function() {
return this.$('.add-fullscreen, .hide-subtitles').qtip({
position: {
my: 'top right',
at: 'top center'
}
});
};
VideoPlayer.prototype.onReady = function() {
$(this).trigger('ready');
$(this).trigger('updatePlayTime', 0);
if (!onTouchBasedDevice()) {
return $('.course-content .video:first').data('video').player.play();
}
};
VideoPlayer.prototype.onStateChange = function(event) {
switch (event.data) {
case YT.PlayerState.PLAYING:
return $(this).trigger('play');
case YT.PlayerState.PAUSED:
return $(this).trigger('pause');
case YT.PlayerState.ENDED:
return $(this).trigger('ended');
}
};
VideoPlayer.prototype.onPlay = function() {
Logger.log('play_video', {
id: this.currentTime,
code: this.player.getVideoEmbedCode()
});
if (window.player && window.player !== this.player) {
window.player.pauseVideo();
}
window.player = this.player;
if (!this.player.interval) {
return this.player.interval = setInterval(this.update, 200);
}
};
VideoPlayer.prototype.onPause = function() {
Logger.log('pause_video', {
id: this.currentTime,
code: this.player.getVideoEmbedCode()
});
if (window.player === this.player) {
window.player = null;
}
clearInterval(this.player.interval);
return this.player.interval = null;
};
VideoPlayer.prototype.onSeek = function(event, time) {
this.player.seekTo(time, true);
if (this.isPlaying()) {
clearInterval(this.player.interval);
return this.player.interval = setInterval(this.update, 200);
} else {
this.currentTime = time;
return $(this).trigger('updatePlayTime', time);
}
};
VideoPlayer.prototype.onSpeedChange = function(event, newSpeed) {
this.currentTime = Time.convert(this.currentTime, parseFloat(this.currentSpeed()), newSpeed);
this.video.setSpeed(parseFloat(newSpeed).toFixed(2).replace(/\.00$/, '.0'));
if (this.isPlaying()) {
this.player.loadVideoById(this.video.youtubeId(), this.currentTime);
} else {
this.player.cueVideoById(this.video.youtubeId(), this.currentTime);
}
return $(this).trigger('updatePlayTime', this.currentTime);
};
VideoPlayer.prototype.update = function() {
if (this.currentTime = this.player.getCurrentTime()) {
return $(this).trigger('updatePlayTime', this.currentTime);
}
};
VideoPlayer.prototype.onUpdatePlayTime = function(event, time) {
var progress;
progress = Time.format(time) + ' / ' + Time.format(this.duration());
return this.$(".vidtime").html(progress);
};
VideoPlayer.prototype.toggleFullScreen = function(event) {
event.preventDefault();
if (this.element.hasClass('fullscreen')) {
this.$('.exit').remove();
this.$('.add-fullscreen').attr('title', 'Fill browser');
this.element.removeClass('fullscreen');
} else {
this.element.append('<a href="#" class="exit">Exit</a>').addClass('fullscreen');
this.$('.add-fullscreen').attr('title', 'Exit fill browser');
this.$('.exit').click(this.toggleFullScreen);
}
return $(this).trigger('resize');
};
VideoPlayer.prototype.play = function() {
if (this.player.playVideo) {
return this.player.playVideo();
}
};
VideoPlayer.prototype.isPlaying = function() {
return this.player.getPlayerState() === YT.PlayerState.PLAYING;
};
VideoPlayer.prototype.pause = function() {
return this.player.pauseVideo();
};
VideoPlayer.prototype.duration = function() {
return this.video.getDuration();
};
VideoPlayer.prototype.currentSpeed = function() {
return this.video.speed;
};
return VideoPlayer;
})();
}).call(this);

View File

@@ -0,0 +1,95 @@
// Generated by CoffeeScript 1.3.3
(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
this.VideoProgressSlider = (function() {
function VideoProgressSlider(player) {
this.player = player;
this.onStop = __bind(this.onStop, this);
this.onChange = __bind(this.onChange, this);
this.onSlide = __bind(this.onSlide, this);
this.onUpdatePlayTime = __bind(this.onUpdatePlayTime, this);
this.onReady = __bind(this.onReady, this);
this.buildSlider();
this.buildHandle();
$(this.player).bind('updatePlayTime', this.onUpdatePlayTime);
$(this.player).bind('ready', this.onReady);
}
VideoProgressSlider.prototype.$ = function(selector) {
return this.player.$(selector);
};
VideoProgressSlider.prototype.buildSlider = function() {
return this.slider = this.$('.slider').slider({
range: 'min',
change: this.onChange,
slide: this.onSlide,
stop: this.onStop
});
};
VideoProgressSlider.prototype.buildHandle = function() {
this.handle = this.$('.ui-slider-handle');
return this.handle.qtip({
content: "" + (Time.format(this.slider.slider('value'))),
position: {
my: 'bottom center',
at: 'top center',
container: this.handle
},
hide: {
delay: 700
},
style: {
classes: 'ui-tooltip-slider',
widget: true
}
});
};
VideoProgressSlider.prototype.onReady = function() {
return this.slider.slider('option', 'max', this.player.duration());
};
VideoProgressSlider.prototype.onUpdatePlayTime = function(event, currentTime) {
if (!this.frozen) {
this.slider.slider('option', 'max', this.player.duration());
return this.slider.slider('value', currentTime);
}
};
VideoProgressSlider.prototype.onSlide = function(event, ui) {
this.frozen = true;
this.updateTooltip(ui.value);
return $(this.player).trigger('seek', ui.value);
};
VideoProgressSlider.prototype.onChange = function(event, ui) {
return this.updateTooltip(ui.value);
};
VideoProgressSlider.prototype.onStop = function(event, ui) {
var _this = this;
this.frozen = true;
$(this.player).trigger('seek', ui.value);
return setTimeout((function() {
return _this.frozen = false;
}), 200);
};
VideoProgressSlider.prototype.updateTooltip = function(value) {
return this.handle.qtip('option', 'content.text', "" + (Time.format(value)));
};
return VideoProgressSlider;
})();
}).call(this);

View File

@@ -0,0 +1,77 @@
// Generated by CoffeeScript 1.3.3
(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
this.VideoSpeedControl = (function() {
function VideoSpeedControl(player, speeds) {
this.player = player;
this.speeds = speeds;
this.onSpeedChange = __bind(this.onSpeedChange, this);
this.changeVideoSpeed = __bind(this.changeVideoSpeed, this);
this.render();
this.bind();
}
VideoSpeedControl.prototype.$ = function(selector) {
return this.player.$(selector);
};
VideoSpeedControl.prototype.bind = function() {
$(this.player).bind('speedChange', this.onSpeedChange);
this.$('.video_speeds a').click(this.changeVideoSpeed);
if (onTouchBasedDevice()) {
return this.$('.speeds').click(function() {
return $(this).toggleClass('open');
});
} else {
this.$('.speeds').mouseenter(function() {
return $(this).addClass('open');
});
this.$('.speeds').mouseleave(function() {
return $(this).removeClass('open');
});
return this.$('.speeds').click(function(event) {
event.preventDefault();
return $(this).removeClass('open');
});
}
};
VideoSpeedControl.prototype.render = function() {
var _this = this;
this.$('.secondary-controls').prepend("<div class=\"speeds\">\n <a href=\"#\">\n <h3>Speed</h3>\n <p class=\"active\"></p>\n </a>\n <ol class=\"video_speeds\"></ol>\n</div>");
$.each(this.speeds, function(index, speed) {
var link;
link = $('<a>').attr({
href: "#"
}).html("" + speed + "x");
return _this.$('.video_speeds').prepend($('<li>').attr('data-speed', speed).html(link));
});
return this.setSpeed(this.player.currentSpeed());
};
VideoSpeedControl.prototype.changeVideoSpeed = function(event) {
event.preventDefault();
if (!$(event.target).parent().hasClass('active')) {
return $(this.player).trigger('speedChange', $(event.target).parent().data('speed'));
}
};
VideoSpeedControl.prototype.onSpeedChange = function(event, speed) {
return this.setSpeed(parseFloat(speed).toFixed(2).replace(/\.00$/, '.0'));
};
VideoSpeedControl.prototype.setSpeed = function(speed) {
this.$('.video_speeds li').removeClass('active');
this.$(".video_speeds li[data-speed='" + speed + "']").addClass('active');
return this.$('.speeds p.active').html("" + speed + "x");
};
return VideoSpeedControl;
})();
}).call(this);

35
static/coffee/src/navigation.js Executable file
View File

@@ -0,0 +1,35 @@
// Generated by CoffeeScript 1.3.3
(function() {
this.Navigation = (function() {
function Navigation() {
var active;
if ($('#accordion').length) {
active = $('#accordion ul:has(li.active)').index('#accordion ul');
$('#accordion').bind('accordionchange', this.log).accordion({
active: active >= 0 ? active : 1,
header: 'h3',
autoHeight: false
});
$('#open_close_accordion a').click(this.toggle);
$('#accordion').show();
}
}
Navigation.prototype.log = function(event, ui) {
return log_event('accordion', {
newheader: ui.newHeader.text(),
oldheader: ui.oldHeader.text()
});
};
Navigation.prototype.toggle = function() {
return $('.course-wrapper').toggleClass('closed');
};
return Navigation;
})();
}).call(this);

37
static/coffee/src/time.js Executable file
View File

@@ -0,0 +1,37 @@
// Generated by CoffeeScript 1.3.3
(function() {
this.Time = (function() {
function Time() {}
Time.format = function(time) {
var hours, minutes, pad, seconds;
pad = function(number) {
if (number < 10) {
return "0" + number;
} else {
return number;
}
};
seconds = Math.floor(time);
minutes = Math.floor(seconds / 60);
hours = Math.floor(minutes / 60);
seconds = seconds % 60;
minutes = minutes % 60;
if (hours) {
return "" + hours + ":" + (pad(minutes)) + ":" + (pad(seconds % 60));
} else {
return "" + minutes + ":" + (pad(seconds % 60));
}
};
Time.convert = function(time, oldSpeed, newSpeed) {
return (time * oldSpeed / newSpeed).toFixed(3);
};
return Time;
})();
}).call(this);

7481
static/sass/application.css Executable file

File diff suppressed because one or more lines are too long

10
static/sass/marketing-ie.css Executable file
View File

@@ -0,0 +1,10 @@
body {
margin: 0;
padding: 0; }
.wrapper, .subpage, section.copyright, section.tos, section.privacy-policy, section.honor-code, header.announcement div, section.index-content, footer {
margin: 0;
overflow: hidden; }
div#enroll form {
display: none; }

1017
static/sass/marketing.css Executable file
View File

@@ -0,0 +1,1017 @@
/*
html5doctor.com Reset Stylesheet
v1.6.1
Last Updated: 2010-09-17
Author: Richard Clark - http://richclarkdesign.com
Twitter: @rich_clark
*/
html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent; }
body {
line-height: 1; }
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block; }
nav ul {
list-style: none; }
blockquote, q {
quotes: none; }
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none; }
a {
margin: 0;
padding: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent; }
/* change colours to suit your needs */
ins {
background-color: #ff9;
color: #000;
text-decoration: none; }
/* change colours to suit your needs */
mark {
background-color: #ff9;
color: #000;
font-style: italic;
font-weight: bold; }
del {
text-decoration: line-through; }
abbr[title], dfn[title] {
border-bottom: 1px dotted;
cursor: help; }
table {
border-collapse: collapse;
border-spacing: 0; }
/* change border colour to suit your needs */
hr {
display: block;
height: 1px;
border: 0;
border-top: 1px solid #cccccc;
margin: 1em 0;
padding: 0; }
input, select {
vertical-align: middle; }
/* Generated by Font Squirrel (http://www.fontsquirrel.com) on January 25, 2012 05:06:34 PM America/New_York */
@font-face {
font-family: 'Open Sans';
src: url("../fonts/OpenSans-Regular-webfont.eot");
src: url("../fonts/OpenSans-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Regular-webfont.woff") format("woff"), url("../fonts/OpenSans-Regular-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular") format("svg");
font-weight: 600;
font-style: normal; }
@font-face {
font-family: 'Open Sans';
src: url("../fonts/OpenSans-Italic-webfont.eot");
src: url("../fonts/OpenSans-Italic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Italic-webfont.woff") format("woff"), url("../fonts/OpenSans-Italic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Italic-webfont.svg#OpenSansItalic") format("svg");
font-weight: 400;
font-style: italic; }
@font-face {
font-family: 'Open Sans';
src: url("../fonts/OpenSans-Bold-webfont.eot");
src: url("../fonts/OpenSans-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Bold-webfont.woff") format("woff"), url("../fonts/OpenSans-Bold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Bold-webfont.svg#OpenSansBold") format("svg");
font-weight: 700;
font-style: normal; }
@font-face {
font-family: 'Open Sans';
src: url("../fonts/OpenSans-BoldItalic-webfont.eot");
src: url("../fonts/OpenSans-BoldItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-BoldItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-BoldItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic") format("svg");
font-weight: 700;
font-style: italic; }
@font-face {
font-family: 'Open Sans';
src: url("../fonts/OpenSans-ExtraBold-webfont.eot");
src: url("../fonts/OpenSans-ExtraBold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-ExtraBold-webfont.woff") format("woff"), url("../fonts/OpenSans-ExtraBold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold") format("svg");
font-weight: 800;
font-style: normal; }
@font-face {
font-family: 'Open Sans';
src: url("../fonts/OpenSans-ExtraBoldItalic-webfont.eot");
src: url("../fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-ExtraBoldItalic-webfont.woff") format("woff"), url("../fonts/OpenSans-ExtraBoldItalic-webfont.ttf") format("truetype"), url("../fonts/OpenSans-ExtraBoldItalic-webfont.svg#OpenSansExtraboldItalic") format("svg");
font-weight: 800;
font-style: italic; }
.wrapper, .subpage, section.copyright, section.tos, section.privacy-policy, section.honor-code, header.announcement div, footer, section.index-content {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: 0 auto;
max-width: 1400px;
padding: 25.888px;
width: 100%; }
.subpage > div, section.copyright > div, section.tos > div, section.privacy-policy > div, section.honor-code > div {
padding-left: 34.171%; }
@media screen and (max-width: 940px) {
.subpage > div, section.copyright > div, section.tos > div, section.privacy-policy > div, section.honor-code > div {
padding-left: 0; } }
.subpage > div p, section.copyright > div p, section.tos > div p, section.privacy-policy > div p, section.honor-code > div p {
margin-bottom: 25.888px;
line-height: 25.888px; }
.subpage > div h1, section.copyright > div h1, section.tos > div h1, section.privacy-policy > div h1, section.honor-code > div h1 {
margin-bottom: 12.944px; }
.subpage > div h2, section.copyright > div h2, section.tos > div h2, section.privacy-policy > div h2, section.honor-code > div h2 {
font: 18px "Open Sans", Helvetica, Arial, sans-serif;
color: #000;
margin-bottom: 12.944px; }
.subpage > div ul, section.copyright > div ul, section.tos > div ul, section.privacy-policy > div ul, section.honor-code > div ul {
list-style: disc outside none; }
.subpage > div ul li, section.copyright > div ul li, section.tos > div ul li, section.privacy-policy > div ul li, section.honor-code > div ul li {
list-style: disc outside none;
line-height: 25.888px; }
.subpage > div dl, section.copyright > div dl, section.tos > div dl, section.privacy-policy > div dl, section.honor-code > div dl {
margin-bottom: 25.888px; }
.subpage > div dl dd, section.copyright > div dl dd, section.tos > div dl dd, section.privacy-policy > div dl dd, section.honor-code > div dl dd {
margin-bottom: 12.944px; }
.clearfix:after, .subpage:after, section.copyright:after, section.tos:after, section.privacy-policy:after, section.honor-code:after, header.announcement div section:after, footer:after, section.index-content:after, section.index-content section:after, section.index-content section.about section:after, div.leanModal_box#enroll ol:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden; }
.button, header.announcement div section.course section a, section.index-content section.course a, section.index-content section.staff a, section.index-content section.about-course section.cta a.enroll {
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-ms-border-radius: 3px;
-o-border-radius: 3px;
border-radius: 3px;
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: baseline;
zoom: 1;
*display: inline;
*vertical-align: auto;
-webkit-transition-property: all;
-moz-transition-property: all;
-ms-transition-property: all;
-o-transition-property: all;
transition-property: all;
-webkit-transition-duration: 0.15s;
-moz-transition-duration: 0.15s;
-ms-transition-duration: 0.15s;
-o-transition-duration: 0.15s;
transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out;
-moz-transition-timing-function: ease-out;
-ms-transition-timing-function: ease-out;
-o-transition-timing-function: ease-out;
transition-timing-function: ease-out;
-webkit-transition-delay: 0;
-moz-transition-delay: 0;
-ms-transition-delay: 0;
-o-transition-delay: 0;
transition-delay: 0;
background-color: #993333;
border: 1px solid #732626;
color: #fff;
margin: 25.888px 0 12.944px;
padding: 6.472px 12.944px;
text-decoration: none;
font-style: normal;
-webkit-box-shadow: inset 0 1px 0 #b83d3d;
-moz-box-shadow: inset 0 1px 0 #b83d3d;
box-shadow: inset 0 1px 0 #b83d3d;
-webkit-font-smoothing: antialiased; }
.button:hover, header.announcement div section.course section a:hover, section.index-content section.course a:hover, section.index-content section.staff a:hover, section.index-content section.about-course section.cta a.enroll:hover {
background-color: #732626;
border-color: #4d1919; }
.button span, header.announcement div section.course section a span, section.index-content section.course a span, section.index-content section.staff a span, section.index-content section.about-course section.cta a.enroll span {
font-family: Garamond, Baskerville, "Baskerville Old Face", "Hoefler Text", "Times New Roman", serif;
font-style: italic; }
p.ie-warning {
display: block !important;
line-height: 1.3em;
background: yellow;
margin-bottom: 25.888px;
padding: 25.888px; }
body {
background-color: #fff;
color: #444;
font: 16px Georgia, serif; }
body :focus {
outline-color: #ccc; }
body h1 {
font: 800 24px "Open Sans", Helvetica, Arial, sans-serif; }
body li {
margin-bottom: 25.888px; }
body em {
font-style: italic; }
body a {
color: #993333;
font-style: italic;
text-decoration: none; }
body a:hover, body a:focus {
color: #732626; }
body input[type="email"], body input[type="number"], body input[type="password"], body input[type="search"], body input[type="tel"], body input[type="text"], body input[type="url"], body input[type="color"], body input[type="date"], body input[type="datetime"], body input[type="datetime-local"], body input[type="month"], body input[type="time"], body input[type="week"], body textarea {
-webkit-box-shadow: 0 -1px 0 white;
-moz-box-shadow: 0 -1px 0 white;
box-shadow: 0 -1px 0 white;
background-color: #eeeeee;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, white));
background-image: -webkit-linear-gradient(top, #eeeeee, white);
background-image: -moz-linear-gradient(top, #eeeeee, white);
background-image: -ms-linear-gradient(top, #eeeeee, white);
background-image: -o-linear-gradient(top, #eeeeee, white);
background-image: linear-gradient(top, #eeeeee, white);
border: 1px solid #999;
font: 16px Georgia, serif;
padding: 4px;
width: 100%; }
body input[type="email"]:focus, body input[type="number"]:focus, body input[type="password"]:focus, body input[type="search"]:focus, body input[type="tel"]:focus, body input[type="text"]:focus, body input[type="url"]:focus, body input[type="color"]:focus, body input[type="date"]:focus, body input[type="datetime"]:focus, body input[type="datetime-local"]:focus, body input[type="month"]:focus, body input[type="time"]:focus, body input[type="week"]:focus, body textarea:focus {
border-color: #993333; }
header.announcement {
-webkit-background-size: cover;
-moz-background-size: cover;
-ms-background-size: cover;
-o-background-size: cover;
background-size: cover;
background: #333;
border-bottom: 1px solid #000;
color: #fff;
-webkit-font-smoothing: antialiased; }
header.announcement.home {
background: #e3e3e3 url("../images/marketing/shot-5-medium.jpg"); }
@media screen and (min-width: 1200px) {
header.announcement.home {
background: #e3e3e3 url("../images/marketing/shot-5-large.jpg"); } }
header.announcement.home div {
padding: 258.88px 25.888px 77.664px; }
@media screen and (max-width:780px) {
header.announcement.home div {
padding: 64.72px 25.888px 51.776px; } }
header.announcement.home div nav h1 {
margin-right: 0; }
header.announcement.home div nav a.login {
display: none; }
header.announcement.course {
background: #e3e3e3 url("../images/marketing/course-bg-small.jpg"); }
@media screen and (min-width: 1200px) {
header.announcement.course {
background: #e3e3e3 url("../images/marketing/course-bg-large.jpg"); } }
@media screen and (max-width: 1199px) and (min-width: 700px) {
header.announcement.course {
background: #e3e3e3 url("../images/marketing/course-bg-medium.jpg"); } }
header.announcement.course div {
padding: 103.552px 25.888px 51.776px; }
@media screen and (max-width:780px) {
header.announcement.course div {
padding: 64.72px 25.888px 51.776px; } }
header.announcement div {
position: relative; }
header.announcement div nav {
position: absolute;
top: 0;
right: 25.888px;
-webkit-border-radius: 0 0 3px 3px;
-moz-border-radius: 0 0 3px 3px;
-ms-border-radius: 0 0 3px 3px;
-o-border-radius: 0 0 3px 3px;
border-radius: 0 0 3px 3px;
background: #333;
background: rgba(0, 0, 0, 0.7);
padding: 12.944px 25.888px; }
header.announcement div nav h1 {
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: baseline;
zoom: 1;
*display: inline;
*vertical-align: auto;
margin-right: 12.944px; }
header.announcement div nav h1 a {
font: italic 800 18px "Open Sans", Helvetica, Arial, sans-serif;
color: #fff;
text-decoration: none; }
header.announcement div nav h1 a:hover, header.announcement div nav h1 a:focus {
color: #999; }
header.announcement div nav a.login {
text-decoration: none;
color: #fff;
font-size: 12px;
font-style: normal;
font-family: "Open Sans", Helvetica, Arial, sans-serif; }
header.announcement div nav a.login:hover, header.announcement div nav a.login:focus {
color: #999; }
header.announcement div section {
background: #993333;
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: baseline;
zoom: 1;
*display: inline;
*vertical-align: auto;
margin-left: 34.171%;
padding: 25.888px 38.832px; }
@media screen and (max-width: 780px) {
header.announcement div section {
margin-left: 0; } }
header.announcement div section h1 {
font-family: "Open Sans";
font-size: 30px;
font-weight: 800;
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: baseline;
zoom: 1;
*display: inline;
*vertical-align: auto;
line-height: 1.2em;
margin: 0 25.888px 0 0; }
header.announcement div section h2 {
font-family: "Open Sans";
font-size: 24px;
font-weight: 400;
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: baseline;
zoom: 1;
*display: inline;
*vertical-align: auto;
line-height: 1.2em; }
header.announcement div section.course section {
float: left;
margin-left: 0;
margin-right: 3.817%;
padding: 0;
width: 48.092%; }
@media screen and (max-width: 780px) {
header.announcement div section.course section {
float: none;
width: 100%;
margin-right: 0; } }
header.announcement div section.course section a {
background-color: #4d1919;
border-color: #260d0d;
-webkit-box-shadow: inset 0 1px 0 #732626, 0 1px 0 #ac3939;
-moz-box-shadow: inset 0 1px 0 #732626, 0 1px 0 #ac3939;
box-shadow: inset 0 1px 0 #732626, 0 1px 0 #ac3939;
display: block;
padding: 12.944px 25.888px;
text-align: center; }
header.announcement div section.course section a:hover {
background-color: #732626;
border-color: #4d1919; }
header.announcement div section.course p {
width: 48.092%;
line-height: 25.888px;
float: left; }
@media screen and (max-width: 780px) {
header.announcement div section.course p {
float: none;
width: 100%; } }
footer {
padding-top: 0; }
footer div.footer-wrapper {
border-top: 1px solid #e5e5e5;
padding: 25.888px 0;
background: url("../images/marketing/mit-logo.png") right center no-repeat; }
@media screen and (max-width: 780px) {
footer div.footer-wrapper {
background-position: left bottom;
padding-bottom: 77.664px; } }
footer div.footer-wrapper a {
color: #888;
text-decoration: none;
-webkit-transition-property: all;
-moz-transition-property: all;
-ms-transition-property: all;
-o-transition-property: all;
transition-property: all;
-webkit-transition-duration: 0.15s;
-moz-transition-duration: 0.15s;
-ms-transition-duration: 0.15s;
-o-transition-duration: 0.15s;
transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out;
-moz-transition-timing-function: ease-out;
-ms-transition-timing-function: ease-out;
-o-transition-timing-function: ease-out;
transition-timing-function: ease-out;
-webkit-transition-delay: 0;
-moz-transition-delay: 0;
-ms-transition-delay: 0;
-o-transition-delay: 0;
transition-delay: 0; }
footer div.footer-wrapper a:hover, footer div.footer-wrapper a:focus {
color: #666; }
footer div.footer-wrapper p {
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: baseline;
zoom: 1;
*display: inline;
*vertical-align: auto;
margin-right: 25.888px; }
footer div.footer-wrapper ul {
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: baseline;
zoom: 1;
*display: inline;
*vertical-align: auto; }
@media screen and (max-width: 780px) {
footer div.footer-wrapper ul {
margin-top: 25.888px; } }
footer div.footer-wrapper ul li {
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: baseline;
zoom: 1;
*display: inline;
*vertical-align: auto;
margin-bottom: 0; }
footer div.footer-wrapper ul li:after {
content: ' |';
display: inline;
color: #ccc; }
footer div.footer-wrapper ul li:last-child:after {
content: none; }
footer div.footer-wrapper ul.social {
float: right;
margin-right: 60px;
position: relative;
top: -5px; }
@media screen and (max-width: 780px) {
footer div.footer-wrapper ul.social {
float: none; } }
footer div.footer-wrapper ul.social li {
float: left;
margin-right: 12.944px; }
footer div.footer-wrapper ul.social li:after {
content: none;
display: none; }
footer div.footer-wrapper ul.social li a {
display: block;
height: 29px;
width: 28px;
text-indent: -9999px; }
footer div.footer-wrapper ul.social li a:hover {
opacity: .8; }
footer div.footer-wrapper ul.social li.twitter a {
background: url("../images/marketing/twitter.png") 0 0 no-repeat; }
footer div.footer-wrapper ul.social li.facebook a {
background: url("../images/marketing/facebook.png") 0 0 no-repeat; }
footer div.footer-wrapper ul.social li.linkedin a {
background: url("../images/marketing/linkedin.png") 0 0 no-repeat; }
section.index-content section {
float: left; }
@media screen and (max-width: 780px) {
section.index-content section {
float: none;
width: auto;
margin-right: 0; } }
section.index-content section h1 {
font-size: 800 24px "Open Sans";
margin-bottom: 25.888px; }
section.index-content section p {
line-height: 25.888px;
margin-bottom: 25.888px; }
section.index-content section ul {
margin: 0; }
section.index-content section.about {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
border-right: 1px solid #e5e5e5;
margin-right: 2.513%;
padding-right: 1.256%;
width: 65.829%; }
@media screen and (max-width: 780px) {
section.index-content section.about {
width: 100%;
border-right: 0;
margin-right: 0;
padding-right: 0; } }
section.index-content section.about section {
margin-bottom: 25.888px; }
section.index-content section.about section p {
width: 48.092%;
float: left; }
@media screen and (max-width: 780px) {
section.index-content section.about section p {
float: none;
width: auto; } }
section.index-content section.about section p:nth-child(odd) {
margin-right: 3.817%; }
@media screen and (max-width: 780px) {
section.index-content section.about section p:nth-child(odd) {
margin-right: 0; } }
section.index-content section.about section.intro section {
margin-bottom: 0; }
section.index-content section.about section.intro section.intro-text {
margin-right: 3.817%;
width: 48.092%; }
@media screen and (max-width: 780px) {
section.index-content section.about section.intro section.intro-text {
margin-right: 0;
width: auto; } }
section.index-content section.about section.intro section.intro-text p {
margin-right: 0;
width: auto;
float: none; }
section.index-content section.about section.intro section.intro-video {
width: 48.092%; }
@media screen and (max-width: 780px) {
section.index-content section.about section.intro section.intro-video {
width: auto; } }
section.index-content section.about section.intro section.intro-video a {
display: block;
width: 100%; }
section.index-content section.about section.intro section.intro-video a img {
width: 100%; }
section.index-content section.about section.intro section.intro-video a span {
display: none; }
section.index-content section.about section.features {
border-top: 1px solid #E5E5E5;
padding-top: 25.888px;
margin-bottom: 0; }
section.index-content section.about section.features h2 {
text-transform: uppercase;
letter-spacing: 1px;
color: #888;
margin-bottom: 25.888px;
font-weight: normal;
font-size: 14px; }
section.index-content section.about section.features h2 span {
text-transform: none; }
section.index-content section.about section.features p {
width: auto;
clear: both; }
section.index-content section.about section.features p strong {
font-family: "Open sans";
font-weight: 800; }
section.index-content section.about section.features p a {
color: #993333;
text-decoration: none;
-webkit-transition-property: all;
-moz-transition-property: all;
-ms-transition-property: all;
-o-transition-property: all;
transition-property: all;
-webkit-transition-duration: 0.15s;
-moz-transition-duration: 0.15s;
-ms-transition-duration: 0.15s;
-o-transition-duration: 0.15s;
transition-duration: 0.15s;
-webkit-transition-timing-function: ease-out;
-moz-transition-timing-function: ease-out;
-ms-transition-timing-function: ease-out;
-o-transition-timing-function: ease-out;
transition-timing-function: ease-out;
-webkit-transition-delay: 0;
-moz-transition-delay: 0;
-ms-transition-delay: 0;
-o-transition-delay: 0;
transition-delay: 0; }
section.index-content section.about section.features p a:hover, section.index-content section.about section.features p a:focus {
color: #602020; }
section.index-content section.about section.features ul {
margin-bottom: 0; }
section.index-content section.about section.features ul li {
line-height: 25.888px;
width: 48.092%;
float: left;
margin-bottom: 12.944px; }
@media screen and (max-width: 780px) {
section.index-content section.about section.features ul li {
width: auto;
float: none; } }
section.index-content section.about section.features ul li:nth-child(odd) {
margin-right: 3.817%; }
@media screen and (max-width: 780px) {
section.index-content section.about section.features ul li:nth-child(odd) {
margin-right: 0; } }
section.index-content section.course, section.index-content section.staff {
width: 31.658%; }
@media screen and (max-width: 780px) {
section.index-content section.course, section.index-content section.staff {
width: auto; } }
section.index-content section.course h1, section.index-content section.staff h1 {
color: #888;
font: normal 16px Georgia, serif;
font-size: 14px;
letter-spacing: 1px;
margin-bottom: 25.888px;
text-transform: uppercase; }
section.index-content section.course h2, section.index-content section.staff h2 {
font: 800 24px "Open Sans", Helvetica, Arial, sans-serif; }
section.index-content section.course h3, section.index-content section.staff h3 {
font: 400 18px "Open Sans", Helvetica, Arial, sans-serif; }
section.index-content section.course a span.arrow, section.index-content section.staff a span.arrow {
color: rgba(255, 255, 255, 0.6);
font-style: normal;
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: baseline;
zoom: 1;
*display: inline;
*vertical-align: auto;
padding-left: 10px; }
section.index-content section.course ul, section.index-content section.staff ul {
list-style: none; }
section.index-content section.course ul li img, section.index-content section.staff ul li img {
float: left;
margin-right: 12.944px; }
section.index-content section.course h2 {
padding-top: 129.44px;
background: url("../images/marketing/circuits-bg.jpg") 0 0 no-repeat;
-webkit-background-size: contain;
-moz-background-size: contain;
-ms-background-size: contain;
-o-background-size: contain;
background-size: contain; }
@media screen and (max-width: 998px) and (min-width: 781px) {
section.index-content section.course h2 {
background: url("../images/marketing/circuits-medium-bg.jpg") 0 0 no-repeat; } }
@media screen and (max-width: 780px) {
section.index-content section.course h2 {
padding-top: 129.44px;
background: url("../images/marketing/circuits-bg.jpg") 0 0 no-repeat; } }
@media screen and (min-width: 500px) and (max-width: 781px) {
section.index-content section.course h2 {
padding-top: 207.104px; } }
section.index-content section.course div.announcement p.announcement-button a {
margin-top: 0; }
section.index-content section.course div.announcement img {
max-width: 100%;
margin-bottom: 25.888px; }
section.index-content section.about-course {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
border-right: 1px solid #e5e5e5;
margin-right: 2.513%;
padding-right: 1.256%;
width: 65.829%; }
@media screen and (max-width: 780px) {
section.index-content section.about-course {
width: auto;
border-right: 0;
margin-right: 0;
padding-right: 0; } }
section.index-content section.about-course section {
width: 48.092%; }
@media screen and (max-width: 780px) {
section.index-content section.about-course section {
width: auto; } }
section.index-content section.about-course section.about-info {
margin-right: 3.817%; }
@media screen and (max-width: 780px) {
section.index-content section.about-course section.about-info {
margin-right: 0; } }
section.index-content section.about-course section.requirements {
clear: both;
width: 100%;
border-top: 1px solid #E5E5E5;
padding-top: 25.888px;
margin-bottom: 0; }
section.index-content section.about-course section.requirements p {
float: left;
width: 48.092%;
margin-right: 3.817%; }
@media screen and (max-width: 780px) {
section.index-content section.about-course section.requirements p {
margin-right: 0;
float: none;
width: auto; } }
section.index-content section.about-course section.requirements p:nth-child(odd) {
margin-right: 0; }
section.index-content section.about-course section.cta {
width: 100%;
text-align: center; }
section.index-content section.about-course section.cta a.enroll {
padding: 12.944px 51.776px;
display: -moz-inline-box;
-moz-box-orient: vertical;
display: inline-block;
vertical-align: baseline;
zoom: 1;
*display: inline;
*vertical-align: auto;
text-align: center;
font: 800 18px "Open Sans", Helvetica, Arial, sans-serif; }
section.index-content section.staff h1 {
margin-top: 25.888px; }
#lean_overlay {
background: #000;
display: none;
height: 100%;
left: 0px;
position: fixed;
top: 0px;
width: 100%;
z-index: 100; }
div.leanModal_box {
background: #fff;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-ms-border-radius: 3px;
-o-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: 0 0 6px black;
-moz-box-shadow: 0 0 6px black;
box-shadow: 0 0 6px black;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
display: none;
padding: 51.776px;
text-align: left; }
div.leanModal_box a.modal_close {
color: #aaa;
display: block;
font-style: normal;
height: 14px;
position: absolute;
right: 12px;
top: 12px;
width: 14px;
z-index: 2; }
div.leanModal_box a.modal_close:hover {
color: #993333;
text-decoration: none; }
div.leanModal_box h1 {
border-bottom: 1px solid #eee;
font-size: 24px;
margin-bottom: 25.888px;
margin-top: 0;
padding-bottom: 25.888px;
text-align: left; }
div.leanModal_box#enroll {
max-width: 600px; }
div.leanModal_box#enroll ol {
padding-top: 25.888px; }
div.leanModal_box#enroll ol li.terms, div.leanModal_box#enroll ol li.honor-code {
float: none;
width: auto; }
div.leanModal_box#enroll ol li div.tip {
display: none; }
div.leanModal_box#enroll ol li:hover div.tip {
background: #333;
color: #fff;
display: block;
font-size: 16px;
line-height: 25.888px;
margin: 0 0 0 -10px;
padding: 10px;
position: absolute;
-webkit-font-smoothing: antialiased;
width: 500px; }
div.leanModal_box form {
text-align: left; }
div.leanModal_box form div#enroll_error, div.leanModal_box form div#login_error, div.leanModal_box form div#pwd_error {
background-color: #333333;
border: black;
color: #fff;
font-family: "Open sans";
font-weight: bold;
letter-spacing: 1px;
margin: -25.888px -25.888px 25.888px;
padding: 12.944px;
text-shadow: 0 1px 0 #1a1a1a;
-webkit-font-smoothing: antialiased; }
div.leanModal_box form div#enroll_error:empty, div.leanModal_box form div#login_error:empty, div.leanModal_box form div#pwd_error:empty {
padding: 0; }
div.leanModal_box form ol {
list-style: none;
margin-bottom: 25.888px; }
div.leanModal_box form ol li {
margin-bottom: 12.944px; }
div.leanModal_box form ol li.terms, div.leanModal_box form ol li.remember {
border-top: 1px solid #eee;
clear: both;
float: none;
padding-top: 25.888px;
width: auto; }
div.leanModal_box form ol li.honor-code {
float: none;
width: auto; }
div.leanModal_box form ol li label {
display: block;
font-weight: bold; }
div.leanModal_box form ol li input[type="email"], div.leanModal_box form ol li input[type="number"], div.leanModal_box form ol li input[type="password"], div.leanModal_box form ol li input[type="search"], div.leanModal_box form ol li input[type="tel"], div.leanModal_box form ol li input[type="text"], div.leanModal_box form ol li input[type="url"], div.leanModal_box form ol li input[type="color"], div.leanModal_box form ol li input[type="date"], div.leanModal_box form ol li input[type="datetime"], div.leanModal_box form ol li input[type="datetime-local"], div.leanModal_box form ol li input[type="month"], div.leanModal_box form ol li input[type="time"], div.leanModal_box form ol li input[type="week"], div.leanModal_box form ol li textarea {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%; }
div.leanModal_box form ol li input[type="checkbox"] {
margin-right: 10px; }
div.leanModal_box form ol li ul {
list-style: disc outside none;
margin: 12.944px 0 25.888px 25.888px; }
div.leanModal_box form ol li ul li {
color: #666;
float: none;
font-size: 14px;
list-style: disc outside none;
margin-bottom: 12.944px; }
div.leanModal_box form input[type="button"], div.leanModal_box form input[type="submit"] {
border: 1px solid #691b1b;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-ms-border-radius: 3px;
-o-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: inset 0 1px 0 0 #bc5c5c;
-moz-box-shadow: inset 0 1px 0 0 #bc5c5c;
box-shadow: inset 0 1px 0 0 #bc5c5c;
color: white;
display: inline;
font-size: 11px;
font-weight: bold;
background-color: #993333;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #993333), color-stop(100%, #761e1e));
background-image: -webkit-linear-gradient(top, #993333, #761e1e);
background-image: -moz-linear-gradient(top, #993333, #761e1e);
background-image: -ms-linear-gradient(top, #993333, #761e1e);
background-image: -o-linear-gradient(top, #993333, #761e1e);
background-image: linear-gradient(top, #993333, #761e1e);
padding: 6px 18px 7px;
text-shadow: 0 1px 0 #5d1414;
-webkit-background-clip: padding-box;
font-size: 18px;
padding: 12.944px; }
div.leanModal_box form input[type="button"]:hover, div.leanModal_box form input[type="submit"]:hover {
-webkit-box-shadow: inset 0 1px 0 0 #a44141;
-moz-box-shadow: inset 0 1px 0 0 #a44141;
box-shadow: inset 0 1px 0 0 #a44141;
cursor: pointer;
background-color: #823030;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #823030), color-stop(100%, #691c1c));
background-image: -webkit-linear-gradient(top, #823030, #691c1c);
background-image: -moz-linear-gradient(top, #823030, #691c1c);
background-image: -ms-linear-gradient(top, #823030, #691c1c);
background-image: -o-linear-gradient(top, #823030, #691c1c);
background-image: linear-gradient(top, #823030, #691c1c); }
div.leanModal_box form input[type="button"]:active, div.leanModal_box form input[type="submit"]:active {
border: 1px solid #691b1b;
-webkit-box-shadow: inset 0 0 8px 4px #5c1919, inset 0 0 8px 4px #5c1919, 0 1px 1px 0 #eeeeee;
-moz-box-shadow: inset 0 0 8px 4px #5c1919, inset 0 0 8px 4px #5c1919, 0 1px 1px 0 #eeeeee;
box-shadow: inset 0 0 8px 4px #5c1919, inset 0 0 8px 4px #5c1919, 0 1px 1px 0 #eeeeee; }
div#login {
min-width: 400px; }
div#login header {
border-bottom: 1px solid #ddd;
margin-bottom: 25.888px;
padding-bottom: 25.888px; }
div#login header h1 {
border-bottom: 0;
padding-bottom: 0;
margin-bottom: 6.472px; }
div#login ol li {
float: none;
width: auto; }
div.lost-password {
margin-top: 25.888px;
text-align: left; }
div.lost-password a {
color: #999; }
div.lost-password a:hover {
color: #444; }
div#pwd_reset p {
margin-bottom: 25.888px; }
div#pwd_reset input[type="email"] {
margin-bottom: 25.888px; }
div#apply_name_change,
div#change_email,
div#unenroll,
div#deactivate-account {
max-width: 700px; }
div#apply_name_change ul,
div#change_email ul,
div#unenroll ul,
div#deactivate-account ul {
list-style: none; }
div#apply_name_change ul li,
div#change_email ul li,
div#unenroll ul li,
div#deactivate-account ul li {
margin-bottom: 12.944px; }
div#apply_name_change ul li textarea, div#apply_name_change ul li input[type="email"], div#apply_name_change ul li input[type="number"], div#apply_name_change ul li input[type="password"], div#apply_name_change ul li input[type="search"], div#apply_name_change ul li input[type="tel"], div#apply_name_change ul li input[type="text"], div#apply_name_change ul li input[type="url"], div#apply_name_change ul li input[type="color"], div#apply_name_change ul li input[type="date"], div#apply_name_change ul li input[type="datetime"], div#apply_name_change ul li input[type="datetime-local"], div#apply_name_change ul li input[type="month"], div#apply_name_change ul li input[type="time"], div#apply_name_change ul li input[type="week"],
div#change_email ul li textarea,
div#change_email ul li input[type="email"],
div#change_email ul li input[type="number"],
div#change_email ul li input[type="password"],
div#change_email ul li input[type="search"],
div#change_email ul li input[type="tel"],
div#change_email ul li input[type="text"],
div#change_email ul li input[type="url"],
div#change_email ul li input[type="color"],
div#change_email ul li input[type="date"],
div#change_email ul li input[type="datetime"],
div#change_email ul li input[type="datetime-local"],
div#change_email ul li input[type="month"],
div#change_email ul li input[type="time"],
div#change_email ul li input[type="week"],
div#unenroll ul li textarea,
div#unenroll ul li input[type="email"],
div#unenroll ul li input[type="number"],
div#unenroll ul li input[type="password"],
div#unenroll ul li input[type="search"],
div#unenroll ul li input[type="tel"],
div#unenroll ul li input[type="text"],
div#unenroll ul li input[type="url"],
div#unenroll ul li input[type="color"],
div#unenroll ul li input[type="date"],
div#unenroll ul li input[type="datetime"],
div#unenroll ul li input[type="datetime-local"],
div#unenroll ul li input[type="month"],
div#unenroll ul li input[type="time"],
div#unenroll ul li input[type="week"],
div#deactivate-account ul li textarea,
div#deactivate-account ul li input[type="email"],
div#deactivate-account ul li input[type="number"],
div#deactivate-account ul li input[type="password"],
div#deactivate-account ul li input[type="search"],
div#deactivate-account ul li input[type="tel"],
div#deactivate-account ul li input[type="text"],
div#deactivate-account ul li input[type="url"],
div#deactivate-account ul li input[type="color"],
div#deactivate-account ul li input[type="date"],
div#deactivate-account ul li input[type="datetime"],
div#deactivate-account ul li input[type="datetime-local"],
div#deactivate-account ul li input[type="month"],
div#deactivate-account ul li input[type="time"],
div#deactivate-account ul li input[type="week"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
display: block;
width: 100%; }
div#apply_name_change ul li textarea,
div#change_email ul li textarea,
div#unenroll ul li textarea,
div#deactivate-account ul li textarea {
height: 60px; }
div#apply_name_change ul li input[type="submit"],
div#change_email ul li input[type="submit"],
div#unenroll ul li input[type="submit"],
div#deactivate-account ul li input[type="submit"] {
white-space: normal; }
div#feedback_div form ol li {
float: none;
width: 100%; }
div#feedback_div form ol li textarea#feedback_message {
height: 100px; }