112 lines
4.6 KiB
JavaScript
112 lines
4.6 KiB
JavaScript
/* Copyright (C) 2012-2013 Denver Gingerich,
|
|
** Copyright (C) 2013-2014 Bradley M. Kuhn,
|
|
** Copyright (C) 2016 Brett Smith.
|
|
** License: GPLv3-or-later
|
|
** Find a copy of GPL at https://sfconservancy.org/GPLv3
|
|
*/
|
|
|
|
$(document).ready(function() {
|
|
/* When the browser doesn't support any video source, replace it
|
|
with the HTML inside the <video> element. */
|
|
var showVideoInnerHTML = function(event) {
|
|
var video = event.target.parentNode;
|
|
var div = document.createElement('div');
|
|
div.classList = video.classList;
|
|
div.innerHTML = video.innerHTML;
|
|
video.parentNode.replaceChild(div, video);
|
|
}
|
|
$('video').each(function(index, video) {
|
|
$('source', video).last().on('error', showVideoInnerHTML);
|
|
});
|
|
|
|
/* Set up the fundraiser multiprogressbar near the top of each page. */
|
|
var siteFinalGoal = $('span#site-fundraiser-final-goal').text();
|
|
var noCommaSiteFinalGoal = parseInt(siteFinalGoal.replace(/,/g, ""));
|
|
var siteMatchCount = $('span#site-fundraiser-match-count').text();
|
|
var noCommaSiteMatchCount = parseInt(siteMatchCount.replace(/,/g, ""));
|
|
if (! noCommaSiteMatchCount) {
|
|
noCommaSiteMatchCount = "0";
|
|
}
|
|
var barParts = [{
|
|
value: (noCommaSiteMatchCount / noCommaSiteFinalGoal) * 100,
|
|
text: "$" + noCommaSiteMatchCount.toLocaleString() + " matched!",
|
|
barClass: "progress",
|
|
textClass: "soFarText",
|
|
}];
|
|
if (barParts[0].value < 100) {
|
|
var matchesLeft = noCommaSiteFinalGoal - noCommaSiteMatchCount;
|
|
barParts.push({
|
|
value: 100,
|
|
text: "$" + matchesLeft.toLocaleString() + " to go!",
|
|
barClass: "final-goal",
|
|
textClass: "goalText",
|
|
});
|
|
}
|
|
$('#siteprogressbar').empty().multiprogressbar({parts: barParts});
|
|
|
|
$('span#fundraiser-percentage').css({ 'color' : 'green',
|
|
'font-weight' : 'bold',
|
|
'float' : 'right',
|
|
'margin-right' : '40%',
|
|
'margin-top' : '2.5%',
|
|
'text-align' : 'inherit'});
|
|
|
|
/* Set up donation form elements used across the whole site. */
|
|
$('.toggle-content').hide();
|
|
$('.toggle-control')
|
|
.addClass('clickable')
|
|
.bind('click', function() {
|
|
var $control = $(this);
|
|
var $parent = $control.parents('.toggle-unit');
|
|
|
|
$parent.toggleClass('expanded');
|
|
$parent.find('.toggle-content').slideToggle();
|
|
|
|
// if control has HTML5 data attributes, use to update text
|
|
if ($parent.hasClass('expanded')) {
|
|
$control.html($control.attr('data-expanded-text'));
|
|
} else {
|
|
$control.html($control.attr('data-text'));
|
|
}
|
|
});
|
|
$('a.donate-now')
|
|
.addClass('clickable')
|
|
.bind('click', function() {
|
|
var $control = $('#donate-box');
|
|
var $otherTextControl = $('.donate-sidebar');
|
|
|
|
setTimeout(function() { $control.find('.toggle-content').slideUp(100);
|
|
$control.toggleClass('expanded');
|
|
$control.find('.toggle-content').slideDown(800).fadeOut(10);
|
|
$otherTextControl.find('.donate-box-highlight').fadeOut(100);
|
|
}, 300);
|
|
setTimeout(function() { $control.find('.toggle-content').fadeIn(2000);
|
|
$otherTextControl.find('.donate-box-highlight')
|
|
.css({'font-weight': 'bold', 'font-size' : '110%' });
|
|
$otherTextControl.find('.donate-box-highlight').fadeIn(10000);
|
|
}, 500);
|
|
});
|
|
|
|
$('input[name=on0]:radio').on('change', function(event, duration) {
|
|
var $input = $(this);
|
|
var wantShirt = $input.val() == "wantGiftYes";
|
|
var $form = $input.parents('form').last();
|
|
var $tShirtSelector = $('.t-shirt-size-selector', $form);
|
|
$('input', $tShirtSelector).prop('disabled', wantShirt);
|
|
$('input[name=no_shipping]', $form).val(wantShirt ? '2' : '0');
|
|
if (wantShirt) {
|
|
$tShirtSelector.slideDown(duration);
|
|
} else {
|
|
$tShirtSelector.slideUp(duration);
|
|
}
|
|
}).filter(':checked').trigger('change', 0);
|
|
|
|
// Open mobile/search menu.
|
|
$('#menu-icon').on('click', function(event) {
|
|
$('#navbar').toggleClass('mobile');
|
|
});
|
|
$('#search-icon').on('click', function(event) {
|
|
$('#navbar').toggleClass('mobile');
|
|
$('#search-query').focus();
|
|
});
|
|
});
|