Initial commit: Backup der Webseiten
- zoesch.de - blitzkiste.net - gruene-hassberge (norbert.zoesch.de) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
1
blitzkiste.net/js/bootstrap-image-gallery.min.js
vendored
Normal file
1
blitzkiste.net/js/bootstrap-image-gallery.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery","./blueimp-gallery"],a):a(window.jQuery,window.blueimp.Gallery)}(function(a,b){"use strict";a.extend(b.prototype.options,{useBootstrapModal:!0});var c=b.prototype.close,d=b.prototype.imageFactory,e=b.prototype.videoFactory,f=b.prototype.textFactory;a.extend(b.prototype,{modalFactory:function(a,b,c,d){if(!this.options.useBootstrapModal||c)return d.call(this,a,b,c);var e=this,f=this.container.children(".modal"),g=f.clone().show().on("click",function(a){(a.target===g[0]||a.target===g.children()[0])&&(a.preventDefault(),a.stopPropagation(),e.close())}),h=d.call(this,a,function(a){b({type:a.type,target:g[0]}),g.addClass("in")},c);return g.find(".modal-title").text(h.title||String.fromCharCode(160)),g.find(".modal-body").append(h),g[0]},imageFactory:function(a,b,c){return this.modalFactory(a,b,c,d)},videoFactory:function(a,b,c){return this.modalFactory(a,b,c,e)},textFactory:function(a,b,c){return this.modalFactory(a,b,c,f)},close:function(){this.container.find(".modal").removeClass("in"),c.call(this)}})});
|
||||
2363
blitzkiste.net/js/bootstrap.js
vendored
Normal file
2363
blitzkiste.net/js/bootstrap.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
blitzkiste.net/js/bootstrap.min.js
vendored
Normal file
7
blitzkiste.net/js/bootstrap.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
57
blitzkiste.net/js/dialog.js
Normal file
57
blitzkiste.net/js/dialog.js
Normal file
@@ -0,0 +1,57 @@
|
||||
$(document).ready(function() {
|
||||
|
||||
// Variable to hold request
|
||||
var request;
|
||||
|
||||
// recaptcha
|
||||
var isHuman = grecaptcha.getResponse();
|
||||
|
||||
// Bind to the submit event of our form
|
||||
$("#contact_form").submit(function(event){
|
||||
|
||||
// Abort any pending request
|
||||
if (request) {
|
||||
request.abort();
|
||||
}
|
||||
// setup some local variables
|
||||
var $form = $(this);
|
||||
|
||||
// Let's select and cache all the fields
|
||||
var $inputs = $form.find("input, textarea");
|
||||
|
||||
// Serialize the data in the form
|
||||
var serializedData = $form.serialize();
|
||||
|
||||
// Fire off the request to /form.php
|
||||
request = $.ajax({
|
||||
url: "/contact.php",
|
||||
type: "post",
|
||||
data: {serializedData:serializedData, isHuman:isHuman},
|
||||
success: function(data){
|
||||
$('#dialog').html(data);
|
||||
$('#dialog').dialog({
|
||||
dialogClass: "contact-dialog",
|
||||
height: 200,
|
||||
width: 350,
|
||||
resizable: false,
|
||||
draggable: false,
|
||||
modal: true,
|
||||
show: { effect: "clip", direction: "vertical", duration: 600},
|
||||
hide: { effect: "clip", direction: "vertical", duration: 600 },
|
||||
title: "KONTAKT",
|
||||
buttons: { "OK": function() {
|
||||
$( this ).dialog( "close" );
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Prevent default posting of form
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
//$("#dialog").dialog("option", "title", "Loading...").dialog("open");
|
||||
65
blitzkiste.net/js/formControl.js
Normal file
65
blitzkiste.net/js/formControl.js
Normal file
@@ -0,0 +1,65 @@
|
||||
$('#kontakt-form').submit(function() {
|
||||
var formControl = true;
|
||||
|
||||
var frmGrpName = $('#frmGrpName');
|
||||
var frmGrpEmail = $('#frmGrpEmail');
|
||||
var frmGrpTelefon = $('#frmGrpTelefon');
|
||||
var frmGrpMessage = $('#frmGrpMessage');
|
||||
|
||||
var respMessage = $('#response');
|
||||
|
||||
frmGrpName.removeClass('has-error');
|
||||
frmGrpEmail.removeClass('has-error');
|
||||
frmGrpMessage.removeClass('has-error');
|
||||
respMessage.removeClass('alert');
|
||||
respMessage.removeClass('alert-danger');
|
||||
respMessage.removeClass('alert-success');
|
||||
|
||||
var name = $('#name').val();
|
||||
var email = $('#email').val();
|
||||
var telefon = $('#telefon').val();
|
||||
var message = $('#message').val();
|
||||
var isHuman = grecaptcha.getResponse();
|
||||
|
||||
if(name == '') {
|
||||
formControl = false;
|
||||
frmGrpName.addClass('has-error');
|
||||
}
|
||||
|
||||
if(email == '') {
|
||||
formControl = false;
|
||||
frmGrpEmail.addClass('has-error');
|
||||
}
|
||||
|
||||
if(message == '') {
|
||||
formControl = false;
|
||||
frmGrpMessage.addClass('has-error');
|
||||
}
|
||||
|
||||
if(isHuman.length == 0) {
|
||||
formControl = false;
|
||||
}
|
||||
|
||||
if(formControl) {
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'send.php',
|
||||
data: {
|
||||
name:name,
|
||||
email:email,
|
||||
telefon:telefon,
|
||||
message:message,
|
||||
isHuman:isHuman
|
||||
}
|
||||
}).done(function(response){
|
||||
respMessage.html(response);
|
||||
respMessage.addClass('alert');
|
||||
respMessage.addClass('alert-success');
|
||||
});
|
||||
} else {
|
||||
respMessage.html("Bitte alle gekennzeichneten Felder ausfüllen und bestätigen, dass Sie kein Roboter sind!");
|
||||
respMessage.addClass('alert');
|
||||
respMessage.addClass('alert-danger');
|
||||
}
|
||||
return false;
|
||||
});
|
||||
78
blitzkiste.net/js/forms.js
Normal file
78
blitzkiste.net/js/forms.js
Normal file
@@ -0,0 +1,78 @@
|
||||
function formhash(form, password) {
|
||||
// Erstelle ein neues Feld für das gehashte Passwort.
|
||||
var p = document.createElement("input");
|
||||
|
||||
// Füge es dem Formular hinzu.
|
||||
form.appendChild(p);
|
||||
p.name = "p";
|
||||
p.type = "hidden";
|
||||
p.value = hex_sha512(password.value);
|
||||
|
||||
// Sorge dafür, dass kein Text-Passwort geschickt wird.
|
||||
password.value = "";
|
||||
|
||||
// Reiche das Formular ein.
|
||||
form.submit();
|
||||
}
|
||||
|
||||
function regformhash(form, uid, password, conf) {
|
||||
// Überprüfe, ob jedes Feld einen Wert hat
|
||||
if (uid.value == '' ||
|
||||
password.value == '' ||
|
||||
conf.value == '') {
|
||||
|
||||
alert('Bitte alle Felder ausfüllen!');
|
||||
return false;
|
||||
}
|
||||
|
||||
// Überprüfe den Benutzernamen
|
||||
|
||||
re = /^\w+$/;
|
||||
if(!re.test(form.username.value)) {
|
||||
alert("Der Benutzername darf nur Ziffern, Groß- und Kleinbuchstaben und Unterstriche enthalten.");
|
||||
form.username.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Überprüfe, dass Passwort lang genug ist (min 6 Zeichen)
|
||||
// Die Überprüfung wird unten noch einmal wiederholt, aber so kann man dem
|
||||
// Benutzer mehr Anleitung geben
|
||||
if (password.value.length < 6) {
|
||||
alert('Das Passwort muss mindestens 6 Zeichen lang sein.');
|
||||
form.password.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Mindestens eine Ziffer, ein Kleinbuchstabe und ein Großbuchstabe
|
||||
// Mindestens sechs Zeichen
|
||||
|
||||
var re = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/;
|
||||
if (!re.test(password.value)) {
|
||||
alert('Das Passwort muss mindestens eine Ziffer, einen Klein- und einen Großbuchstaben enthalten!');
|
||||
return false;
|
||||
}
|
||||
|
||||
// Überprüfe die Passwörter und bestätige, dass sie gleich sind
|
||||
if (password.value != conf.value) {
|
||||
alert('Die Passwörter stimmen nicht überein!');
|
||||
form.password.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Erstelle ein neues Feld für das gehashte Passwort.
|
||||
var p = document.createElement("input");
|
||||
|
||||
// Füge es dem Formular hinzu.
|
||||
form.appendChild(p);
|
||||
p.name = "p";
|
||||
p.type = "hidden";
|
||||
p.value = hex_sha512(password.value);
|
||||
|
||||
// Sorge dafür, dass kein Text-Passwort geschickt wird.
|
||||
password.value = "";
|
||||
conf.value = "";
|
||||
|
||||
// Reiche das Formular ein.
|
||||
form.submit();
|
||||
return true;
|
||||
}
|
||||
32
blitzkiste.net/js/inViewport.js
Normal file
32
blitzkiste.net/js/inViewport.js
Normal file
@@ -0,0 +1,32 @@
|
||||
$.fn.isOnScreen = function(){
|
||||
|
||||
var win = $(window);
|
||||
|
||||
var viewport = {
|
||||
top : win.scrollTop(),
|
||||
left : win.scrollLeft()
|
||||
};
|
||||
viewport.right = viewport.left + win.width();
|
||||
viewport.bottom = viewport.top + win.height();
|
||||
|
||||
var bounds = this.offset();
|
||||
bounds.right = bounds.left + this.outerWidth();
|
||||
bounds.bottom = bounds.top + this.outerHeight();
|
||||
|
||||
return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
|
||||
|
||||
};
|
||||
$.first_time = true;
|
||||
$(document).ready(function(){
|
||||
$(window).scroll(function(){
|
||||
if ($('#counter').isOnScreen()) {
|
||||
if($.first_time == true){
|
||||
$('#bilder').animateNumber({number: 1458},5000);
|
||||
$('#durchschn').animateNumber({number: 800},5000);
|
||||
$('#trau').animateNumber({number: 48},5000);
|
||||
$('#nackt').animateNumber({number: 18},5000);
|
||||
$.first_time = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
6
blitzkiste.net/js/isInViewport.min.js
vendored
Normal file
6
blitzkiste.net/js/isInViewport.min.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery"),require("window")):"function"==typeof define&&define.amd?define("isInViewport",["jquery","window"],n):n(e.$,e.window)}(this,function(e,n){"use strict";function t(n){var t=this;if(1===arguments.length&&"function"==typeof n&&(n=[n]),!(n instanceof Array))throw new SyntaxError("isInViewport: Argument(s) passed to .do/.run should be a function or an array of functions");return n.forEach(function(n){"function"!=typeof n?(console.warn("isInViewport: Argument(s) passed to .do/.run should be a function or an array of functions"),console.warn("isInViewport: Ignoring non-function values in array and moving on")):[].slice.call(t).forEach(function(t){return n.call(e(t))})}),this}function o(n){var t=e("<div></div>").css({width:"100%"});n.append(t);var o=n.width()-t.width();return t.remove(),o}function r(t,i){var a=t.getBoundingClientRect(),u=a.top,c=a.bottom,f=a.left,l=a.right,d=e.extend({tolerance:0,viewport:n},i),s=!1,p=d.viewport.jquery?d.viewport:e(d.viewport);p.length||(console.warn("isInViewport: The viewport selector you have provided matches no element on page."),console.warn("isInViewport: Defaulting to viewport as window"),p=e(n));var w=p.height(),h=p.width(),v=p[0].toString();if(p[0]!==n&&"[object Window]"!==v&&"[object DOMWindow]"!==v){var g=p[0].getBoundingClientRect();u-=g.top,c-=g.top,f-=g.left,l-=g.left,r.scrollBarWidth=r.scrollBarWidth||o(p),h-=r.scrollBarWidth}return d.tolerance=~~Math.round(parseFloat(d.tolerance)),d.tolerance<0&&(d.tolerance=w+d.tolerance),l<=0||f>=h?s:s=d.tolerance?u<=d.tolerance&&c>=d.tolerance:c>0&&u<=w}function i(n){if(n){var t=n.split(",");return 1===t.length&&isNaN(t[0])&&(t[1]=t[0],t[0]=void 0),{tolerance:t[0]?t[0].trim():void 0,viewport:t[1]?e(t[1].trim()):void 0}}return{}}e="default"in e?e.default:e,n="default"in n?n.default:n,/**
|
||||
* @author Mudit Ameta
|
||||
* @license https://github.com/zeusdeux/isInViewport/blob/master/license.md MIT
|
||||
*/
|
||||
e.extend(e.expr[":"],{"in-viewport":e.expr.createPseudo?e.expr.createPseudo(function(e){return function(n){return r(n,i(e))}}):function(e,n,t){return r(e,i(t[3]))}}),e.fn.isInViewport=function(e){return this.filter(function(n,t){return r(t,e)})},e.fn.run=t});
|
||||
//# sourceMappingURL=isInViewport.min.js.map
|
||||
4
blitzkiste.net/js/jquery-2.1.3.min.js
vendored
Normal file
4
blitzkiste.net/js/jquery-2.1.3.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
13
blitzkiste.net/js/jquery-ui.min.js
vendored
Normal file
13
blitzkiste.net/js/jquery-ui.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
174
blitzkiste.net/js/jquery.animateNumber.js
Normal file
174
blitzkiste.net/js/jquery.animateNumber.js
Normal file
@@ -0,0 +1,174 @@
|
||||
/** @preserve jQuery animateNumber plugin v0.0.14
|
||||
* (c) 2013, Alexandr Borisov.
|
||||
* https://github.com/aishek/jquery-animateNumber
|
||||
*/
|
||||
|
||||
// ['...'] notation using to avoid names minification by Google Closure Compiler
|
||||
(function($) {
|
||||
var reverse = function(value) {
|
||||
return value.split('').reverse().join('');
|
||||
};
|
||||
|
||||
var defaults = {
|
||||
numberStep: function(now, tween) {
|
||||
var floored_number = Math.floor(now),
|
||||
target = $(tween.elem);
|
||||
|
||||
target.text(floored_number);
|
||||
}
|
||||
};
|
||||
|
||||
var handle = function( tween ) {
|
||||
var elem = tween.elem;
|
||||
if ( elem.nodeType && elem.parentNode ) {
|
||||
var handler = elem._animateNumberSetter;
|
||||
if (!handler) {
|
||||
handler = defaults.numberStep;
|
||||
}
|
||||
handler(tween.now, tween);
|
||||
}
|
||||
};
|
||||
|
||||
if (!$.Tween || !$.Tween.propHooks) {
|
||||
$.fx.step.number = handle;
|
||||
} else {
|
||||
$.Tween.propHooks.number = {
|
||||
set: handle
|
||||
};
|
||||
}
|
||||
|
||||
var extract_number_parts = function(separated_number, group_length) {
|
||||
var numbers = separated_number.split('').reverse(),
|
||||
number_parts = [],
|
||||
current_number_part,
|
||||
current_index,
|
||||
q;
|
||||
|
||||
for(var i = 0, l = Math.ceil(separated_number.length / group_length); i < l; i++) {
|
||||
current_number_part = '';
|
||||
for(q = 0; q < group_length; q++) {
|
||||
current_index = i * group_length + q;
|
||||
if (current_index === separated_number.length) {
|
||||
break;
|
||||
}
|
||||
|
||||
current_number_part = current_number_part + numbers[current_index];
|
||||
}
|
||||
number_parts.push(current_number_part);
|
||||
}
|
||||
|
||||
return number_parts;
|
||||
};
|
||||
|
||||
var remove_precending_zeros = function(number_parts) {
|
||||
var last_index = number_parts.length - 1,
|
||||
last = reverse(number_parts[last_index]);
|
||||
|
||||
number_parts[last_index] = reverse(parseInt(last, 10).toString());
|
||||
return number_parts;
|
||||
};
|
||||
|
||||
$.animateNumber = {
|
||||
numberStepFactories: {
|
||||
/**
|
||||
* Creates numberStep handler, which appends string to floored animated number on each step.
|
||||
*
|
||||
* @example
|
||||
* // will animate to 100 with "1 %", "2 %", "3 %", ...
|
||||
* $('#someid').animateNumber({
|
||||
* number: 100,
|
||||
* numberStep: $.animateNumber.numberStepFactories.append(' %')
|
||||
* });
|
||||
*
|
||||
* @params {String} suffix string to append to animated number
|
||||
* @returns {Function} numberStep-compatible function for use in animateNumber's parameters
|
||||
*/
|
||||
append: function(suffix) {
|
||||
return function(now, tween) {
|
||||
var floored_number = Math.floor(now),
|
||||
target = $(tween.elem);
|
||||
|
||||
target.prop('number', now).text(floored_number + suffix);
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates numberStep handler, which format floored numbers by separating them to groups.
|
||||
*
|
||||
* @example
|
||||
* // will animate with 1 ... 217,980 ... 95,217,980 ... 7,095,217,980
|
||||
* $('#world-population').animateNumber({
|
||||
* number: 7095217980,
|
||||
* numberStep: $.animateNumber.numberStepFactories.separator(',')
|
||||
* });
|
||||
* @example
|
||||
* // will animate with 1% ... 217,980% ... 95,217,980% ... 7,095,217,980%
|
||||
* $('#salesIncrease').animateNumber({
|
||||
* number: 7095217980,
|
||||
* numberStep: $.animateNumber.numberStepFactories.separator(',', 3, '%')
|
||||
* });
|
||||
*
|
||||
* @params {String} [separator=' '] string to separate number groups
|
||||
* @params {String} [group_length=3] number group length
|
||||
* @params {String} [suffix=''] suffix to append to number
|
||||
* @returns {Function} numberStep-compatible function for use in animateNumber's parameters
|
||||
*/
|
||||
separator: function(separator, group_length, suffix) {
|
||||
separator = separator || ' ';
|
||||
group_length = group_length || 3;
|
||||
suffix = suffix || '';
|
||||
|
||||
return function(now, tween) {
|
||||
var negative = now < 0,
|
||||
floored_number = Math.floor((negative ? -1 : 1) * now),
|
||||
separated_number = floored_number.toString(),
|
||||
target = $(tween.elem);
|
||||
|
||||
if (separated_number.length > group_length) {
|
||||
var number_parts = extract_number_parts(separated_number, group_length);
|
||||
|
||||
separated_number = remove_precending_zeros(number_parts).join(separator);
|
||||
separated_number = reverse(separated_number);
|
||||
}
|
||||
|
||||
target.prop('number', now).text((negative ? '-' : '') + separated_number + suffix);
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.animateNumber = function() {
|
||||
var options = arguments[0],
|
||||
settings = $.extend({}, defaults, options),
|
||||
|
||||
target = $(this),
|
||||
args = [settings];
|
||||
|
||||
for(var i = 1, l = arguments.length; i < l; i++) {
|
||||
args.push(arguments[i]);
|
||||
}
|
||||
|
||||
// needs of custom step function usage
|
||||
if (options.numberStep) {
|
||||
// assigns custom step functions
|
||||
var items = this.each(function(){
|
||||
this._animateNumberSetter = options.numberStep;
|
||||
});
|
||||
|
||||
// cleanup of custom step functions after animation
|
||||
var generic_complete = settings.complete;
|
||||
settings.complete = function() {
|
||||
items.each(function(){
|
||||
delete this._animateNumberSetter;
|
||||
});
|
||||
|
||||
if ( generic_complete ) {
|
||||
generic_complete.apply(this, arguments);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return target.animate.apply(target, args);
|
||||
};
|
||||
|
||||
}(jQuery));
|
||||
1
blitzkiste.net/js/jquery.inview.min.js
vendored
Normal file
1
blitzkiste.net/js/jquery.inview.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){function i(){var b,c,d={height:f.innerHeight,width:f.innerWidth};return d.height||(b=e.compatMode,(b||!a.support.boxModel)&&(c="CSS1Compat"===b?g:e.body,d={height:c.clientHeight,width:c.clientWidth})),d}function j(){return{top:f.pageYOffset||g.scrollTop||e.body.scrollTop,left:f.pageXOffset||g.scrollLeft||e.body.scrollLeft}}function k(){if(b.length){var e=0,f=a.map(b,function(a){var b=a.data.selector,c=a.$element;return b?c.find(b):c});for(c=c||i(),d=d||j();e<b.length;e++)if(a.contains(g,f[e][0])){var h=a(f[e]),k={height:h[0].offsetHeight,width:h[0].offsetWidth},l=h.offset(),m=h.data("inview");if(!d||!c)return;l.top+k.height>d.top&&l.top<d.top+c.height&&l.left+k.width>d.left&&l.left<d.left+c.width?m||h.data("inview",!0).trigger("inview",[!0]):m&&h.data("inview",!1).trigger("inview",[!1])}}}var c,d,h,b=[],e=document,f=window,g=e.documentElement;a.event.special.inview={add:function(c){b.push({data:c,$element:a(this),element:this}),!h&&b.length&&(h=setInterval(k,250))},remove:function(a){for(var c=0;c<b.length;c++){var d=b[c];if(d.element===this&&d.data.guid===a.guid){b.splice(c,1);break}}b.length||(clearInterval(h),h=null)}},a(f).on("scroll resize scrollstop",function(){c=d=null}),!g.addEventListener&&g.attachEvent&&g.attachEvent("onfocusin",function(){d=null})});
|
||||
55
blitzkiste.net/js/main.js
Normal file
55
blitzkiste.net/js/main.js
Normal file
@@ -0,0 +1,55 @@
|
||||
jQuery(document).ready(function($){
|
||||
// browser window scroll (in pixels) after which the "back to top" link is shown
|
||||
var offset = 300,
|
||||
//browser window scroll (in pixels) after which the "back to top" link opacity is reduced
|
||||
offset_opacity = 1200,
|
||||
//duration of the top scrolling animation (in ms)
|
||||
scroll_top_duration = 700,
|
||||
//grab the "back to top" link
|
||||
$back_to_top = $('.cd-top');
|
||||
|
||||
//hide or show the "back to top" link
|
||||
$(window).scroll(function(){
|
||||
( $(this).scrollTop() > offset ) ? $back_to_top.addClass('cd-is-visible') : $back_to_top.removeClass('cd-is-visible cd-fade-out');
|
||||
if( $(this).scrollTop() > offset_opacity ) {
|
||||
$back_to_top.addClass('cd-fade-out');
|
||||
}
|
||||
});
|
||||
|
||||
//smooth scroll to top
|
||||
$back_to_top.on('click', function(event){
|
||||
event.preventDefault();
|
||||
$('body,html').animate({
|
||||
scrollTop: 0 ,
|
||||
}, scroll_top_duration
|
||||
);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(function() {
|
||||
|
||||
// Cache the window object
|
||||
var $window = $(window);
|
||||
|
||||
// Parallax background effect
|
||||
$('div[data-type="background"]').each(function() {
|
||||
|
||||
var $bgobj = $(this); //assining the object
|
||||
|
||||
$(window).scroll(function() {
|
||||
|
||||
//scroll the background at var speed
|
||||
// the yPos is a negative value because we're scrolling UP!
|
||||
|
||||
var yPos = -($window.scrollTop() / $bgobj.data('speed'));
|
||||
|
||||
// Put together our final background position
|
||||
var coords = '50% ' + yPos +'px';
|
||||
|
||||
// Move the background
|
||||
$bgobj.css({ backgroundPosition: coords });
|
||||
|
||||
}); // end window scroll
|
||||
});
|
||||
});
|
||||
1406
blitzkiste.net/js/modernizr.js
Normal file
1406
blitzkiste.net/js/modernizr.js
Normal file
File diff suppressed because it is too large
Load Diff
13
blitzkiste.net/js/npm.js
Normal file
13
blitzkiste.net/js/npm.js
Normal file
@@ -0,0 +1,13 @@
|
||||
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
|
||||
require('../../js/transition.js')
|
||||
require('../../js/alert.js')
|
||||
require('../../js/button.js')
|
||||
require('../../js/carousel.js')
|
||||
require('../../js/collapse.js')
|
||||
require('../../js/dropdown.js')
|
||||
require('../../js/modal.js')
|
||||
require('../../js/tooltip.js')
|
||||
require('../../js/popover.js')
|
||||
require('../../js/scrollspy.js')
|
||||
require('../../js/tab.js')
|
||||
require('../../js/affix.js')
|
||||
653
blitzkiste.net/js/odometer.js
Normal file
653
blitzkiste.net/js/odometer.js
Normal file
@@ -0,0 +1,653 @@
|
||||
(function() {
|
||||
var COUNT_FRAMERATE, COUNT_MS_PER_FRAME, DIGIT_FORMAT, DIGIT_HTML, DIGIT_SPEEDBOOST, DURATION, FORMAT_MARK_HTML, FORMAT_PARSER, FRAMERATE, FRAMES_PER_VALUE, MS_PER_FRAME, MutationObserver, Odometer, RIBBON_HTML, TRANSITION_END_EVENTS, TRANSITION_SUPPORT, VALUE_HTML, addClass, createFromHTML, fractionalPart, now, removeClass, requestAnimationFrame, round, transitionCheckStyles, trigger, truncate, wrapJQuery, _jQueryWrapped, _old, _ref, _ref1,
|
||||
__slice = [].slice;
|
||||
|
||||
VALUE_HTML = '<span class="odometer-value"></span>';
|
||||
|
||||
RIBBON_HTML = '<span class="odometer-ribbon"><span class="odometer-ribbon-inner">' + VALUE_HTML + '</span></span>';
|
||||
|
||||
DIGIT_HTML = '<span class="odometer-digit"><span class="odometer-digit-spacer">8</span><span class="odometer-digit-inner">' + RIBBON_HTML + '</span></span>';
|
||||
|
||||
FORMAT_MARK_HTML = '<span class="odometer-formatting-mark"></span>';
|
||||
|
||||
DIGIT_FORMAT = '(,ddd).dd';
|
||||
|
||||
FORMAT_PARSER = /^\(?([^)]*)\)?(?:(.)(d+))?$/;
|
||||
|
||||
FRAMERATE = 30;
|
||||
|
||||
DURATION = 2000;
|
||||
|
||||
COUNT_FRAMERATE = 20;
|
||||
|
||||
FRAMES_PER_VALUE = 2;
|
||||
|
||||
DIGIT_SPEEDBOOST = .5;
|
||||
|
||||
MS_PER_FRAME = 1000 / FRAMERATE;
|
||||
|
||||
COUNT_MS_PER_FRAME = 1000 / COUNT_FRAMERATE;
|
||||
|
||||
TRANSITION_END_EVENTS = 'transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd';
|
||||
|
||||
transitionCheckStyles = document.createElement('div').style;
|
||||
|
||||
TRANSITION_SUPPORT = (transitionCheckStyles.transition != null) || (transitionCheckStyles.webkitTransition != null) || (transitionCheckStyles.mozTransition != null) || (transitionCheckStyles.oTransition != null);
|
||||
|
||||
requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
|
||||
|
||||
MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
|
||||
|
||||
createFromHTML = function(html) {
|
||||
var el;
|
||||
el = document.createElement('div');
|
||||
el.innerHTML = html;
|
||||
return el.children[0];
|
||||
};
|
||||
|
||||
removeClass = function(el, name) {
|
||||
return el.className = el.className.replace(new RegExp("(^| )" + (name.split(' ').join('|')) + "( |$)", 'gi'), ' ');
|
||||
};
|
||||
|
||||
addClass = function(el, name) {
|
||||
removeClass(el, name);
|
||||
return el.className += " " + name;
|
||||
};
|
||||
|
||||
trigger = function(el, name) {
|
||||
var evt;
|
||||
if (document.createEvent != null) {
|
||||
evt = document.createEvent('HTMLEvents');
|
||||
evt.initEvent(name, true, true);
|
||||
return el.dispatchEvent(evt);
|
||||
}
|
||||
};
|
||||
|
||||
now = function() {
|
||||
var _ref, _ref1;
|
||||
return (_ref = (_ref1 = window.performance) != null ? typeof _ref1.now === "function" ? _ref1.now() : void 0 : void 0) != null ? _ref : +(new Date);
|
||||
};
|
||||
|
||||
round = function(val, precision) {
|
||||
if (precision == null) {
|
||||
precision = 0;
|
||||
}
|
||||
if (!precision) {
|
||||
return Math.round(val);
|
||||
}
|
||||
val *= Math.pow(10, precision);
|
||||
val += 0.5;
|
||||
val = Math.floor(val);
|
||||
return val /= Math.pow(10, precision);
|
||||
};
|
||||
|
||||
truncate = function(val) {
|
||||
if (val < 0) {
|
||||
return Math.ceil(val);
|
||||
} else {
|
||||
return Math.floor(val);
|
||||
}
|
||||
};
|
||||
|
||||
fractionalPart = function(val) {
|
||||
return val - round(val);
|
||||
};
|
||||
|
||||
_jQueryWrapped = false;
|
||||
|
||||
(wrapJQuery = function() {
|
||||
var property, _i, _len, _ref, _results;
|
||||
if (_jQueryWrapped) {
|
||||
return;
|
||||
}
|
||||
if (window.jQuery != null) {
|
||||
_jQueryWrapped = true;
|
||||
_ref = ['html', 'text'];
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
property = _ref[_i];
|
||||
_results.push((function(property) {
|
||||
var old;
|
||||
old = window.jQuery.fn[property];
|
||||
return window.jQuery.fn[property] = function(val) {
|
||||
var _ref1;
|
||||
if ((val == null) || (((_ref1 = this[0]) != null ? _ref1.odometer : void 0) == null)) {
|
||||
return old.apply(this, arguments);
|
||||
}
|
||||
return this[0].odometer.update(val);
|
||||
};
|
||||
})(property));
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
})();
|
||||
|
||||
setTimeout(wrapJQuery, 0);
|
||||
|
||||
Odometer = (function() {
|
||||
function Odometer(options) {
|
||||
var e, k, property, v, _base, _i, _len, _ref, _ref1, _ref2,
|
||||
_this = this;
|
||||
this.options = options;
|
||||
this.el = this.options.el;
|
||||
if (this.el.odometer != null) {
|
||||
return this.el.odometer;
|
||||
}
|
||||
this.el.odometer = this;
|
||||
_ref = Odometer.options;
|
||||
for (k in _ref) {
|
||||
v = _ref[k];
|
||||
if (this.options[k] == null) {
|
||||
this.options[k] = v;
|
||||
}
|
||||
}
|
||||
if ((_base = this.options).duration == null) {
|
||||
_base.duration = DURATION;
|
||||
}
|
||||
this.MAX_VALUES = ((this.options.duration / MS_PER_FRAME) / FRAMES_PER_VALUE) | 0;
|
||||
this.resetFormat();
|
||||
this.value = this.cleanValue((_ref1 = this.options.value) != null ? _ref1 : '');
|
||||
this.renderInside();
|
||||
this.render();
|
||||
try {
|
||||
_ref2 = ['innerHTML', 'innerText', 'textContent'];
|
||||
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
|
||||
property = _ref2[_i];
|
||||
if (this.el[property] != null) {
|
||||
(function(property) {
|
||||
return Object.defineProperty(_this.el, property, {
|
||||
get: function() {
|
||||
var _ref3;
|
||||
if (property === 'innerHTML') {
|
||||
return _this.inside.outerHTML;
|
||||
} else {
|
||||
return (_ref3 = _this.inside.innerText) != null ? _ref3 : _this.inside.textContent;
|
||||
}
|
||||
},
|
||||
set: function(val) {
|
||||
return _this.update(val);
|
||||
}
|
||||
});
|
||||
})(property);
|
||||
}
|
||||
}
|
||||
} catch (_error) {
|
||||
e = _error;
|
||||
this.watchForMutations();
|
||||
}
|
||||
this;
|
||||
}
|
||||
|
||||
Odometer.prototype.renderInside = function() {
|
||||
this.inside = document.createElement('div');
|
||||
this.inside.className = 'odometer-inside';
|
||||
this.el.innerHTML = '';
|
||||
return this.el.appendChild(this.inside);
|
||||
};
|
||||
|
||||
Odometer.prototype.watchForMutations = function() {
|
||||
var e,
|
||||
_this = this;
|
||||
if (MutationObserver == null) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (this.observer == null) {
|
||||
this.observer = new MutationObserver(function(mutations) {
|
||||
var newVal;
|
||||
newVal = _this.el.innerText;
|
||||
_this.renderInside();
|
||||
_this.render(_this.value);
|
||||
return _this.update(newVal);
|
||||
});
|
||||
}
|
||||
this.watchMutations = true;
|
||||
return this.startWatchingMutations();
|
||||
} catch (_error) {
|
||||
e = _error;
|
||||
}
|
||||
};
|
||||
|
||||
Odometer.prototype.startWatchingMutations = function() {
|
||||
if (this.watchMutations) {
|
||||
return this.observer.observe(this.el, {
|
||||
childList: true
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
Odometer.prototype.stopWatchingMutations = function() {
|
||||
var _ref;
|
||||
return (_ref = this.observer) != null ? _ref.disconnect() : void 0;
|
||||
};
|
||||
|
||||
Odometer.prototype.cleanValue = function(val) {
|
||||
var _ref;
|
||||
if (typeof val === 'string') {
|
||||
val = val.replace((_ref = this.format.radix) != null ? _ref : '.', '<radix>');
|
||||
val = val.replace(/[.,]/g, '');
|
||||
val = val.replace('<radix>', '.');
|
||||
val = parseFloat(val, 10) || 0;
|
||||
}
|
||||
return round(val, this.format.precision);
|
||||
};
|
||||
|
||||
Odometer.prototype.bindTransitionEnd = function() {
|
||||
var event, renderEnqueued, _i, _len, _ref, _results,
|
||||
_this = this;
|
||||
if (this.transitionEndBound) {
|
||||
return;
|
||||
}
|
||||
this.transitionEndBound = true;
|
||||
renderEnqueued = false;
|
||||
_ref = TRANSITION_END_EVENTS.split(' ');
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
event = _ref[_i];
|
||||
_results.push(this.el.addEventListener(event, function() {
|
||||
if (renderEnqueued) {
|
||||
return true;
|
||||
}
|
||||
renderEnqueued = true;
|
||||
setTimeout(function() {
|
||||
_this.render();
|
||||
renderEnqueued = false;
|
||||
return trigger(_this.el, 'odometerdone');
|
||||
}, 0);
|
||||
return true;
|
||||
}, false));
|
||||
}
|
||||
return _results;
|
||||
};
|
||||
|
||||
Odometer.prototype.resetFormat = function() {
|
||||
var format, fractional, parsed, precision, radix, repeating, _ref, _ref1;
|
||||
format = (_ref = this.options.format) != null ? _ref : DIGIT_FORMAT;
|
||||
format || (format = 'd');
|
||||
parsed = FORMAT_PARSER.exec(format);
|
||||
if (!parsed) {
|
||||
throw new Error("Odometer: Unparsable digit format");
|
||||
}
|
||||
_ref1 = parsed.slice(1, 4), repeating = _ref1[0], radix = _ref1[1], fractional = _ref1[2];
|
||||
precision = (fractional != null ? fractional.length : void 0) || 0;
|
||||
return this.format = {
|
||||
repeating: repeating,
|
||||
radix: radix,
|
||||
precision: precision
|
||||
};
|
||||
};
|
||||
|
||||
Odometer.prototype.render = function(value) {
|
||||
var classes, cls, match, newClasses, theme, _i, _len;
|
||||
if (value == null) {
|
||||
value = this.value;
|
||||
}
|
||||
this.stopWatchingMutations();
|
||||
this.resetFormat();
|
||||
this.inside.innerHTML = '';
|
||||
theme = this.options.theme;
|
||||
classes = this.el.className.split(' ');
|
||||
newClasses = [];
|
||||
for (_i = 0, _len = classes.length; _i < _len; _i++) {
|
||||
cls = classes[_i];
|
||||
if (!cls.length) {
|
||||
continue;
|
||||
}
|
||||
if (match = /^odometer-theme-(.+)$/.exec(cls)) {
|
||||
theme = match[1];
|
||||
continue;
|
||||
}
|
||||
if (/^odometer(-|$)/.test(cls)) {
|
||||
continue;
|
||||
}
|
||||
newClasses.push(cls);
|
||||
}
|
||||
newClasses.push('odometer');
|
||||
if (!TRANSITION_SUPPORT) {
|
||||
newClasses.push('odometer-no-transitions');
|
||||
}
|
||||
if (theme) {
|
||||
newClasses.push("odometer-theme-" + theme);
|
||||
} else {
|
||||
newClasses.push("odometer-auto-theme");
|
||||
}
|
||||
this.el.className = newClasses.join(' ');
|
||||
this.ribbons = {};
|
||||
this.formatDigits(value);
|
||||
return this.startWatchingMutations();
|
||||
};
|
||||
|
||||
Odometer.prototype.formatDigits = function(value) {
|
||||
var digit, valueDigit, valueString, wholePart, _i, _j, _len, _len1, _ref, _ref1;
|
||||
this.digits = [];
|
||||
if (this.options.formatFunction) {
|
||||
valueString = this.options.formatFunction(value);
|
||||
_ref = valueString.split('').reverse();
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
valueDigit = _ref[_i];
|
||||
if (valueDigit.match(/0-9/)) {
|
||||
digit = this.renderDigit();
|
||||
digit.querySelector('.odometer-value').innerHTML = valueDigit;
|
||||
this.digits.push(digit);
|
||||
this.insertDigit(digit);
|
||||
} else {
|
||||
this.addSpacer(valueDigit);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
wholePart = !this.format.precision || !fractionalPart(value) || false;
|
||||
_ref1 = value.toString().split('').reverse();
|
||||
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
|
||||
digit = _ref1[_j];
|
||||
if (digit === '.') {
|
||||
wholePart = true;
|
||||
}
|
||||
this.addDigit(digit, wholePart);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Odometer.prototype.update = function(newValue) {
|
||||
var diff,
|
||||
_this = this;
|
||||
newValue = this.cleanValue(newValue);
|
||||
if (!(diff = newValue - this.value)) {
|
||||
return;
|
||||
}
|
||||
removeClass(this.el, 'odometer-animating-up odometer-animating-down odometer-animating');
|
||||
if (diff > 0) {
|
||||
addClass(this.el, 'odometer-animating-up');
|
||||
} else {
|
||||
addClass(this.el, 'odometer-animating-down');
|
||||
}
|
||||
this.stopWatchingMutations();
|
||||
this.animate(newValue);
|
||||
this.startWatchingMutations();
|
||||
setTimeout(function() {
|
||||
_this.el.offsetHeight;
|
||||
return addClass(_this.el, 'odometer-animating');
|
||||
}, 0);
|
||||
return this.value = newValue;
|
||||
};
|
||||
|
||||
Odometer.prototype.renderDigit = function() {
|
||||
return createFromHTML(DIGIT_HTML);
|
||||
};
|
||||
|
||||
Odometer.prototype.insertDigit = function(digit, before) {
|
||||
if (before != null) {
|
||||
return this.inside.insertBefore(digit, before);
|
||||
} else if (!this.inside.children.length) {
|
||||
return this.inside.appendChild(digit);
|
||||
} else {
|
||||
return this.inside.insertBefore(digit, this.inside.children[0]);
|
||||
}
|
||||
};
|
||||
|
||||
Odometer.prototype.addSpacer = function(chr, before, extraClasses) {
|
||||
var spacer;
|
||||
spacer = createFromHTML(FORMAT_MARK_HTML);
|
||||
spacer.innerHTML = chr;
|
||||
if (extraClasses) {
|
||||
addClass(spacer, extraClasses);
|
||||
}
|
||||
return this.insertDigit(spacer, before);
|
||||
};
|
||||
|
||||
Odometer.prototype.addDigit = function(value, repeating) {
|
||||
var chr, digit, resetted, _ref;
|
||||
if (repeating == null) {
|
||||
repeating = true;
|
||||
}
|
||||
if (value === '-') {
|
||||
return this.addSpacer(value, null, 'odometer-negation-mark');
|
||||
}
|
||||
if (value === '.') {
|
||||
return this.addSpacer((_ref = this.format.radix) != null ? _ref : '.', null, 'odometer-radix-mark');
|
||||
}
|
||||
if (repeating) {
|
||||
resetted = false;
|
||||
while (true) {
|
||||
if (!this.format.repeating.length) {
|
||||
if (resetted) {
|
||||
throw new Error("Bad odometer format without digits");
|
||||
}
|
||||
this.resetFormat();
|
||||
resetted = true;
|
||||
}
|
||||
chr = this.format.repeating[this.format.repeating.length - 1];
|
||||
this.format.repeating = this.format.repeating.substring(0, this.format.repeating.length - 1);
|
||||
if (chr === 'd') {
|
||||
break;
|
||||
}
|
||||
this.addSpacer(chr);
|
||||
}
|
||||
}
|
||||
digit = this.renderDigit();
|
||||
digit.querySelector('.odometer-value').innerHTML = value;
|
||||
this.digits.push(digit);
|
||||
return this.insertDigit(digit);
|
||||
};
|
||||
|
||||
Odometer.prototype.animate = function(newValue) {
|
||||
if (!TRANSITION_SUPPORT || this.options.animation === 'count') {
|
||||
return this.animateCount(newValue);
|
||||
} else {
|
||||
return this.animateSlide(newValue);
|
||||
}
|
||||
};
|
||||
|
||||
Odometer.prototype.animateCount = function(newValue) {
|
||||
var cur, diff, last, start, tick,
|
||||
_this = this;
|
||||
if (!(diff = +newValue - this.value)) {
|
||||
return;
|
||||
}
|
||||
start = last = now();
|
||||
cur = this.value;
|
||||
return (tick = function() {
|
||||
var delta, dist, fraction;
|
||||
if ((now() - start) > _this.options.duration) {
|
||||
_this.value = newValue;
|
||||
_this.render();
|
||||
trigger(_this.el, 'odometerdone');
|
||||
return;
|
||||
}
|
||||
delta = now() - last;
|
||||
if (delta > COUNT_MS_PER_FRAME) {
|
||||
last = now();
|
||||
fraction = delta / _this.options.duration;
|
||||
dist = diff * fraction;
|
||||
cur += dist;
|
||||
_this.render(Math.round(cur));
|
||||
}
|
||||
if (requestAnimationFrame != null) {
|
||||
return requestAnimationFrame(tick);
|
||||
} else {
|
||||
return setTimeout(tick, COUNT_MS_PER_FRAME);
|
||||
}
|
||||
})();
|
||||
};
|
||||
|
||||
Odometer.prototype.getDigitCount = function() {
|
||||
var i, max, value, values, _i, _len;
|
||||
values = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
||||
for (i = _i = 0, _len = values.length; _i < _len; i = ++_i) {
|
||||
value = values[i];
|
||||
values[i] = Math.abs(value);
|
||||
}
|
||||
max = Math.max.apply(Math, values);
|
||||
return Math.ceil(Math.log(max + 1) / Math.log(10));
|
||||
};
|
||||
|
||||
Odometer.prototype.getFractionalDigitCount = function() {
|
||||
var i, parser, parts, value, values, _i, _len;
|
||||
values = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
||||
parser = /^\-?\d*\.(\d*?)0*$/;
|
||||
for (i = _i = 0, _len = values.length; _i < _len; i = ++_i) {
|
||||
value = values[i];
|
||||
values[i] = value.toString();
|
||||
parts = parser.exec(values[i]);
|
||||
if (parts == null) {
|
||||
values[i] = 0;
|
||||
} else {
|
||||
values[i] = parts[1].length;
|
||||
}
|
||||
}
|
||||
return Math.max.apply(Math, values);
|
||||
};
|
||||
|
||||
Odometer.prototype.resetDigits = function() {
|
||||
this.digits = [];
|
||||
this.ribbons = [];
|
||||
this.inside.innerHTML = '';
|
||||
return this.resetFormat();
|
||||
};
|
||||
|
||||
Odometer.prototype.animateSlide = function(newValue) {
|
||||
var boosted, cur, diff, digitCount, digits, dist, end, fractionalCount, frame, frames, i, incr, j, mark, numEl, oldValue, start, _base, _i, _j, _k, _l, _len, _len1, _len2, _m, _ref, _results;
|
||||
oldValue = this.value;
|
||||
fractionalCount = this.getFractionalDigitCount(oldValue, newValue);
|
||||
if (fractionalCount) {
|
||||
newValue = newValue * Math.pow(10, fractionalCount);
|
||||
oldValue = oldValue * Math.pow(10, fractionalCount);
|
||||
}
|
||||
if (!(diff = newValue - oldValue)) {
|
||||
return;
|
||||
}
|
||||
this.bindTransitionEnd();
|
||||
digitCount = this.getDigitCount(oldValue, newValue);
|
||||
digits = [];
|
||||
boosted = 0;
|
||||
for (i = _i = 0; 0 <= digitCount ? _i < digitCount : _i > digitCount; i = 0 <= digitCount ? ++_i : --_i) {
|
||||
start = truncate(oldValue / Math.pow(10, digitCount - i - 1));
|
||||
end = truncate(newValue / Math.pow(10, digitCount - i - 1));
|
||||
dist = end - start;
|
||||
if (Math.abs(dist) > this.MAX_VALUES) {
|
||||
frames = [];
|
||||
incr = dist / (this.MAX_VALUES + this.MAX_VALUES * boosted * DIGIT_SPEEDBOOST);
|
||||
cur = start;
|
||||
while ((dist > 0 && cur < end) || (dist < 0 && cur > end)) {
|
||||
frames.push(Math.round(cur));
|
||||
cur += incr;
|
||||
}
|
||||
if (frames[frames.length - 1] !== end) {
|
||||
frames.push(end);
|
||||
}
|
||||
boosted++;
|
||||
} else {
|
||||
frames = (function() {
|
||||
_results = [];
|
||||
for (var _j = start; start <= end ? _j <= end : _j >= end; start <= end ? _j++ : _j--){ _results.push(_j); }
|
||||
return _results;
|
||||
}).apply(this);
|
||||
}
|
||||
for (i = _k = 0, _len = frames.length; _k < _len; i = ++_k) {
|
||||
frame = frames[i];
|
||||
frames[i] = Math.abs(frame % 10);
|
||||
}
|
||||
digits.push(frames);
|
||||
}
|
||||
this.resetDigits();
|
||||
_ref = digits.reverse();
|
||||
for (i = _l = 0, _len1 = _ref.length; _l < _len1; i = ++_l) {
|
||||
frames = _ref[i];
|
||||
if (!this.digits[i]) {
|
||||
this.addDigit(' ', i >= fractionalCount);
|
||||
}
|
||||
if ((_base = this.ribbons)[i] == null) {
|
||||
_base[i] = this.digits[i].querySelector('.odometer-ribbon-inner');
|
||||
}
|
||||
this.ribbons[i].innerHTML = '';
|
||||
if (diff < 0) {
|
||||
frames = frames.reverse();
|
||||
}
|
||||
for (j = _m = 0, _len2 = frames.length; _m < _len2; j = ++_m) {
|
||||
frame = frames[j];
|
||||
numEl = document.createElement('div');
|
||||
numEl.className = 'odometer-value';
|
||||
numEl.innerHTML = frame;
|
||||
this.ribbons[i].appendChild(numEl);
|
||||
if (j === frames.length - 1) {
|
||||
addClass(numEl, 'odometer-last-value');
|
||||
}
|
||||
if (j === 0) {
|
||||
addClass(numEl, 'odometer-first-value');
|
||||
}
|
||||
}
|
||||
}
|
||||
if (start < 0) {
|
||||
this.addDigit('-');
|
||||
}
|
||||
mark = this.inside.querySelector('.odometer-radix-mark');
|
||||
if (mark != null) {
|
||||
mark.parent.removeChild(mark);
|
||||
}
|
||||
if (fractionalCount) {
|
||||
return this.addSpacer(this.format.radix, this.digits[fractionalCount - 1], 'odometer-radix-mark');
|
||||
}
|
||||
};
|
||||
|
||||
return Odometer;
|
||||
|
||||
})();
|
||||
|
||||
Odometer.options = (_ref = window.odometerOptions) != null ? _ref : {};
|
||||
|
||||
setTimeout(function() {
|
||||
var k, v, _base, _ref1, _results;
|
||||
if (window.odometerOptions) {
|
||||
_ref1 = window.odometerOptions;
|
||||
_results = [];
|
||||
for (k in _ref1) {
|
||||
v = _ref1[k];
|
||||
_results.push((_base = Odometer.options)[k] != null ? (_base = Odometer.options)[k] : _base[k] = v);
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
}, 0);
|
||||
|
||||
Odometer.init = function() {
|
||||
var el, elements, _i, _len, _ref1, _results;
|
||||
if (document.querySelectorAll == null) {
|
||||
return;
|
||||
}
|
||||
elements = document.querySelectorAll(Odometer.options.selector || '.odometer');
|
||||
_results = [];
|
||||
for (_i = 0, _len = elements.length; _i < _len; _i++) {
|
||||
el = elements[_i];
|
||||
_results.push(el.odometer = new Odometer({
|
||||
el: el,
|
||||
value: (_ref1 = el.innerText) != null ? _ref1 : el.textContent
|
||||
}));
|
||||
}
|
||||
return _results;
|
||||
};
|
||||
|
||||
if ((((_ref1 = document.documentElement) != null ? _ref1.doScroll : void 0) != null) && (document.createEventObject != null)) {
|
||||
_old = document.onreadystatechange;
|
||||
document.onreadystatechange = function() {
|
||||
if (document.readyState === 'complete' && Odometer.options.auto !== false) {
|
||||
Odometer.init();
|
||||
}
|
||||
return _old != null ? _old.apply(this, arguments) : void 0;
|
||||
};
|
||||
} else {
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
if (Odometer.options.auto !== false) {
|
||||
return Odometer.init();
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define([], function() {
|
||||
return Odometer;
|
||||
});
|
||||
} else if (typeof exports !== "undefined" && exports !== null) {
|
||||
module.exports = Odometer;
|
||||
} else {
|
||||
window.Odometer = Odometer;
|
||||
}
|
||||
|
||||
}).call(this);
|
||||
9
blitzkiste.net/js/preloader.js
Normal file
9
blitzkiste.net/js/preloader.js
Normal file
@@ -0,0 +1,9 @@
|
||||
// JavaScript Document
|
||||
|
||||
$(document).ready(function() {
|
||||
$('.spinner').delay(3000).fadeOut(400, function() {
|
||||
$('.pre-bg').animate({top: '-100%'}, 400, function() {
|
||||
$('#preloader').fadeOut(10);
|
||||
});
|
||||
});
|
||||
});
|
||||
496
blitzkiste.net/js/sha512.js
Normal file
496
blitzkiste.net/js/sha512.js
Normal file
@@ -0,0 +1,496 @@
|
||||
/*
|
||||
* A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined
|
||||
* in FIPS 180-2
|
||||
* Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.
|
||||
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
|
||||
* Distributed under the BSD License
|
||||
* See http://pajhome.org.uk/crypt/md5 for details.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Configurable variables. You may need to tweak these to be compatible with
|
||||
* the server-side, but the defaults work in most cases.
|
||||
*/
|
||||
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
|
||||
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
|
||||
|
||||
/*
|
||||
* These are the functions you'll usually want to call
|
||||
* They take string arguments and return either hex or base-64 encoded strings
|
||||
*/
|
||||
function hex_sha512(s) { return rstr2hex(rstr_sha512(str2rstr_utf8(s))); }
|
||||
function b64_sha512(s) { return rstr2b64(rstr_sha512(str2rstr_utf8(s))); }
|
||||
function any_sha512(s, e) { return rstr2any(rstr_sha512(str2rstr_utf8(s)), e);}
|
||||
function hex_hmac_sha512(k, d)
|
||||
{ return rstr2hex(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d))); }
|
||||
function b64_hmac_sha512(k, d)
|
||||
{ return rstr2b64(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d))); }
|
||||
function any_hmac_sha512(k, d, e)
|
||||
{ return rstr2any(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d)), e);}
|
||||
|
||||
/*
|
||||
* Perform a simple self-test to see if the VM is working
|
||||
*/
|
||||
function sha512_vm_test()
|
||||
{
|
||||
return hex_sha512("abc").toLowerCase() ==
|
||||
"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a" +
|
||||
"2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f";
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the SHA-512 of a raw string
|
||||
*/
|
||||
function rstr_sha512(s)
|
||||
{
|
||||
return binb2rstr(binb_sha512(rstr2binb(s), s.length * 8));
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the HMAC-SHA-512 of a key and some data (raw strings)
|
||||
*/
|
||||
function rstr_hmac_sha512(key, data)
|
||||
{
|
||||
var bkey = rstr2binb(key);
|
||||
if(bkey.length > 32) bkey = binb_sha512(bkey, key.length * 8);
|
||||
|
||||
var ipad = Array(32), opad = Array(32);
|
||||
for(var i = 0; i < 32; i++)
|
||||
{
|
||||
ipad[i] = bkey[i] ^ 0x36363636;
|
||||
opad[i] = bkey[i] ^ 0x5C5C5C5C;
|
||||
}
|
||||
|
||||
var hash = binb_sha512(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);
|
||||
return binb2rstr(binb_sha512(opad.concat(hash), 1024 + 512));
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a raw string to a hex string
|
||||
*/
|
||||
function rstr2hex(input)
|
||||
{
|
||||
try { hexcase } catch(e) { hexcase=0; }
|
||||
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
|
||||
var output = "";
|
||||
var x;
|
||||
for(var i = 0; i < input.length; i++)
|
||||
{
|
||||
x = input.charCodeAt(i);
|
||||
output += hex_tab.charAt((x >>> 4) & 0x0F)
|
||||
+ hex_tab.charAt( x & 0x0F);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a raw string to a base-64 string
|
||||
*/
|
||||
function rstr2b64(input)
|
||||
{
|
||||
try { b64pad } catch(e) { b64pad=''; }
|
||||
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
var output = "";
|
||||
var len = input.length;
|
||||
for(var i = 0; i < len; i += 3)
|
||||
{
|
||||
var triplet = (input.charCodeAt(i) << 16)
|
||||
| (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
|
||||
| (i + 2 < len ? input.charCodeAt(i+2) : 0);
|
||||
for(var j = 0; j < 4; j++)
|
||||
{
|
||||
if(i * 8 + j * 6 > input.length * 8) output += b64pad;
|
||||
else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
|
||||
}
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a raw string to an arbitrary string encoding
|
||||
*/
|
||||
function rstr2any(input, encoding)
|
||||
{
|
||||
var divisor = encoding.length;
|
||||
var i, j, q, x, quotient;
|
||||
|
||||
/* Convert to an array of 16-bit big-endian values, forming the dividend */
|
||||
var dividend = Array(Math.ceil(input.length / 2));
|
||||
for(i = 0; i < dividend.length; i++)
|
||||
{
|
||||
dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Repeatedly perform a long division. The binary array forms the dividend,
|
||||
* the length of the encoding is the divisor. Once computed, the quotient
|
||||
* forms the dividend for the next step. All remainders are stored for later
|
||||
* use.
|
||||
*/
|
||||
var full_length = Math.ceil(input.length * 8 /
|
||||
(Math.log(encoding.length) / Math.log(2)));
|
||||
var remainders = Array(full_length);
|
||||
for(j = 0; j < full_length; j++)
|
||||
{
|
||||
quotient = Array();
|
||||
x = 0;
|
||||
for(i = 0; i < dividend.length; i++)
|
||||
{
|
||||
x = (x << 16) + dividend[i];
|
||||
q = Math.floor(x / divisor);
|
||||
x -= q * divisor;
|
||||
if(quotient.length > 0 || q > 0)
|
||||
quotient[quotient.length] = q;
|
||||
}
|
||||
remainders[j] = x;
|
||||
dividend = quotient;
|
||||
}
|
||||
|
||||
/* Convert the remainders to the output string */
|
||||
var output = "";
|
||||
for(i = remainders.length - 1; i >= 0; i--)
|
||||
output += encoding.charAt(remainders[i]);
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
/*
|
||||
* Encode a string as utf-8.
|
||||
* For efficiency, this assumes the input is valid utf-16.
|
||||
*/
|
||||
function str2rstr_utf8(input)
|
||||
{
|
||||
var output = "";
|
||||
var i = -1;
|
||||
var x, y;
|
||||
|
||||
while(++i < input.length)
|
||||
{
|
||||
/* Decode utf-16 surrogate pairs */
|
||||
x = input.charCodeAt(i);
|
||||
y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
|
||||
if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
|
||||
{
|
||||
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
|
||||
i++;
|
||||
}
|
||||
|
||||
/* Encode output as utf-8 */
|
||||
if(x <= 0x7F)
|
||||
output += String.fromCharCode(x);
|
||||
else if(x <= 0x7FF)
|
||||
output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
|
||||
0x80 | ( x & 0x3F));
|
||||
else if(x <= 0xFFFF)
|
||||
output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
|
||||
0x80 | ((x >>> 6 ) & 0x3F),
|
||||
0x80 | ( x & 0x3F));
|
||||
else if(x <= 0x1FFFFF)
|
||||
output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
|
||||
0x80 | ((x >>> 12) & 0x3F),
|
||||
0x80 | ((x >>> 6 ) & 0x3F),
|
||||
0x80 | ( x & 0x3F));
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
/*
|
||||
* Encode a string as utf-16
|
||||
*/
|
||||
function str2rstr_utf16le(input)
|
||||
{
|
||||
var output = "";
|
||||
for(var i = 0; i < input.length; i++)
|
||||
output += String.fromCharCode( input.charCodeAt(i) & 0xFF,
|
||||
(input.charCodeAt(i) >>> 8) & 0xFF);
|
||||
return output;
|
||||
}
|
||||
|
||||
function str2rstr_utf16be(input)
|
||||
{
|
||||
var output = "";
|
||||
for(var i = 0; i < input.length; i++)
|
||||
output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
|
||||
input.charCodeAt(i) & 0xFF);
|
||||
return output;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a raw string to an array of big-endian words
|
||||
* Characters >255 have their high-byte silently ignored.
|
||||
*/
|
||||
function rstr2binb(input)
|
||||
{
|
||||
var output = Array(input.length >> 2);
|
||||
for(var i = 0; i < output.length; i++)
|
||||
output[i] = 0;
|
||||
for(var i = 0; i < input.length * 8; i += 8)
|
||||
output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);
|
||||
return output;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert an array of big-endian words to a string
|
||||
*/
|
||||
function binb2rstr(input)
|
||||
{
|
||||
var output = "";
|
||||
for(var i = 0; i < input.length * 32; i += 8)
|
||||
output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);
|
||||
return output;
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the SHA-512 of an array of big-endian dwords, and a bit length
|
||||
*/
|
||||
var sha512_k;
|
||||
function binb_sha512(x, len)
|
||||
{
|
||||
if(sha512_k == undefined)
|
||||
{
|
||||
//SHA512 constants
|
||||
sha512_k = new Array(
|
||||
new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),
|
||||
new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),
|
||||
new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),
|
||||
new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),
|
||||
new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),
|
||||
new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),
|
||||
new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),
|
||||
new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),
|
||||
new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),
|
||||
new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),
|
||||
new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),
|
||||
new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),
|
||||
new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),
|
||||
new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),
|
||||
new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),
|
||||
new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),
|
||||
new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),
|
||||
new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),
|
||||
new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),
|
||||
new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),
|
||||
new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),
|
||||
new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),
|
||||
new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),
|
||||
new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),
|
||||
new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),
|
||||
new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),
|
||||
new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),
|
||||
new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),
|
||||
new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),
|
||||
new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),
|
||||
new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),
|
||||
new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),
|
||||
new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),
|
||||
new int64(-354779690, -840897762), new int64(-176337025, -294727304),
|
||||
new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),
|
||||
new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),
|
||||
new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),
|
||||
new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),
|
||||
new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),
|
||||
new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817));
|
||||
}
|
||||
|
||||
//Initial hash values
|
||||
var H = new Array(
|
||||
new int64(0x6a09e667, -205731576),
|
||||
new int64(-1150833019, -2067093701),
|
||||
new int64(0x3c6ef372, -23791573),
|
||||
new int64(-1521486534, 0x5f1d36f1),
|
||||
new int64(0x510e527f, -1377402159),
|
||||
new int64(-1694144372, 0x2b3e6c1f),
|
||||
new int64(0x1f83d9ab, -79577749),
|
||||
new int64(0x5be0cd19, 0x137e2179));
|
||||
|
||||
var T1 = new int64(0, 0),
|
||||
T2 = new int64(0, 0),
|
||||
a = new int64(0,0),
|
||||
b = new int64(0,0),
|
||||
c = new int64(0,0),
|
||||
d = new int64(0,0),
|
||||
e = new int64(0,0),
|
||||
f = new int64(0,0),
|
||||
g = new int64(0,0),
|
||||
h = new int64(0,0),
|
||||
//Temporary variables not specified by the document
|
||||
s0 = new int64(0, 0),
|
||||
s1 = new int64(0, 0),
|
||||
Ch = new int64(0, 0),
|
||||
Maj = new int64(0, 0),
|
||||
r1 = new int64(0, 0),
|
||||
r2 = new int64(0, 0),
|
||||
r3 = new int64(0, 0);
|
||||
var j, i;
|
||||
var W = new Array(80);
|
||||
for(i=0; i<80; i++)
|
||||
W[i] = new int64(0, 0);
|
||||
|
||||
// append padding to the source string. The format is described in the FIPS.
|
||||
x[len >> 5] |= 0x80 << (24 - (len & 0x1f));
|
||||
x[((len + 128 >> 10)<< 5) + 31] = len;
|
||||
|
||||
for(i = 0; i<x.length; i+=32) //32 dwords is the block size
|
||||
{
|
||||
int64copy(a, H[0]);
|
||||
int64copy(b, H[1]);
|
||||
int64copy(c, H[2]);
|
||||
int64copy(d, H[3]);
|
||||
int64copy(e, H[4]);
|
||||
int64copy(f, H[5]);
|
||||
int64copy(g, H[6]);
|
||||
int64copy(h, H[7]);
|
||||
|
||||
for(j=0; j<16; j++)
|
||||
{
|
||||
W[j].h = x[i + 2*j];
|
||||
W[j].l = x[i + 2*j + 1];
|
||||
}
|
||||
|
||||
for(j=16; j<80; j++)
|
||||
{
|
||||
//sigma1
|
||||
int64rrot(r1, W[j-2], 19);
|
||||
int64revrrot(r2, W[j-2], 29);
|
||||
int64shr(r3, W[j-2], 6);
|
||||
s1.l = r1.l ^ r2.l ^ r3.l;
|
||||
s1.h = r1.h ^ r2.h ^ r3.h;
|
||||
//sigma0
|
||||
int64rrot(r1, W[j-15], 1);
|
||||
int64rrot(r2, W[j-15], 8);
|
||||
int64shr(r3, W[j-15], 7);
|
||||
s0.l = r1.l ^ r2.l ^ r3.l;
|
||||
s0.h = r1.h ^ r2.h ^ r3.h;
|
||||
|
||||
int64add4(W[j], s1, W[j-7], s0, W[j-16]);
|
||||
}
|
||||
|
||||
for(j = 0; j < 80; j++)
|
||||
{
|
||||
//Ch
|
||||
Ch.l = (e.l & f.l) ^ (~e.l & g.l);
|
||||
Ch.h = (e.h & f.h) ^ (~e.h & g.h);
|
||||
|
||||
//Sigma1
|
||||
int64rrot(r1, e, 14);
|
||||
int64rrot(r2, e, 18);
|
||||
int64revrrot(r3, e, 9);
|
||||
s1.l = r1.l ^ r2.l ^ r3.l;
|
||||
s1.h = r1.h ^ r2.h ^ r3.h;
|
||||
|
||||
//Sigma0
|
||||
int64rrot(r1, a, 28);
|
||||
int64revrrot(r2, a, 2);
|
||||
int64revrrot(r3, a, 7);
|
||||
s0.l = r1.l ^ r2.l ^ r3.l;
|
||||
s0.h = r1.h ^ r2.h ^ r3.h;
|
||||
|
||||
//Maj
|
||||
Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);
|
||||
Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);
|
||||
|
||||
int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);
|
||||
int64add(T2, s0, Maj);
|
||||
|
||||
int64copy(h, g);
|
||||
int64copy(g, f);
|
||||
int64copy(f, e);
|
||||
int64add(e, d, T1);
|
||||
int64copy(d, c);
|
||||
int64copy(c, b);
|
||||
int64copy(b, a);
|
||||
int64add(a, T1, T2);
|
||||
}
|
||||
int64add(H[0], H[0], a);
|
||||
int64add(H[1], H[1], b);
|
||||
int64add(H[2], H[2], c);
|
||||
int64add(H[3], H[3], d);
|
||||
int64add(H[4], H[4], e);
|
||||
int64add(H[5], H[5], f);
|
||||
int64add(H[6], H[6], g);
|
||||
int64add(H[7], H[7], h);
|
||||
}
|
||||
|
||||
//represent the hash as an array of 32-bit dwords
|
||||
var hash = new Array(16);
|
||||
for(i=0; i<8; i++)
|
||||
{
|
||||
hash[2*i] = H[i].h;
|
||||
hash[2*i + 1] = H[i].l;
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
//A constructor for 64-bit numbers
|
||||
function int64(h, l)
|
||||
{
|
||||
this.h = h;
|
||||
this.l = l;
|
||||
//this.toString = int64toString;
|
||||
}
|
||||
|
||||
//Copies src into dst, assuming both are 64-bit numbers
|
||||
function int64copy(dst, src)
|
||||
{
|
||||
dst.h = src.h;
|
||||
dst.l = src.l;
|
||||
}
|
||||
|
||||
//Right-rotates a 64-bit number by shift
|
||||
//Won't handle cases of shift>=32
|
||||
//The function revrrot() is for that
|
||||
function int64rrot(dst, x, shift)
|
||||
{
|
||||
dst.l = (x.l >>> shift) | (x.h << (32-shift));
|
||||
dst.h = (x.h >>> shift) | (x.l << (32-shift));
|
||||
}
|
||||
|
||||
//Reverses the dwords of the source and then rotates right by shift.
|
||||
//This is equivalent to rotation by 32+shift
|
||||
function int64revrrot(dst, x, shift)
|
||||
{
|
||||
dst.l = (x.h >>> shift) | (x.l << (32-shift));
|
||||
dst.h = (x.l >>> shift) | (x.h << (32-shift));
|
||||
}
|
||||
|
||||
//Bitwise-shifts right a 64-bit number by shift
|
||||
//Won't handle shift>=32, but it's never needed in SHA512
|
||||
function int64shr(dst, x, shift)
|
||||
{
|
||||
dst.l = (x.l >>> shift) | (x.h << (32-shift));
|
||||
dst.h = (x.h >>> shift);
|
||||
}
|
||||
|
||||
//Adds two 64-bit numbers
|
||||
//Like the original implementation, does not rely on 32-bit operations
|
||||
function int64add(dst, x, y)
|
||||
{
|
||||
var w0 = (x.l & 0xffff) + (y.l & 0xffff);
|
||||
var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);
|
||||
var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);
|
||||
var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);
|
||||
dst.l = (w0 & 0xffff) | (w1 << 16);
|
||||
dst.h = (w2 & 0xffff) | (w3 << 16);
|
||||
}
|
||||
|
||||
//Same, except with 4 addends. Works faster than adding them one by one.
|
||||
function int64add4(dst, a, b, c, d)
|
||||
{
|
||||
var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);
|
||||
var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);
|
||||
var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);
|
||||
var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);
|
||||
dst.l = (w0 & 0xffff) | (w1 << 16);
|
||||
dst.h = (w2 & 0xffff) | (w3 << 16);
|
||||
}
|
||||
|
||||
//Same, except with 5 addends
|
||||
function int64add5(dst, a, b, c, d, e)
|
||||
{
|
||||
var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff);
|
||||
var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16);
|
||||
var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16);
|
||||
var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);
|
||||
dst.l = (w0 & 0xffff) | (w1 << 16);
|
||||
dst.h = (w2 & 0xffff) | (w3 << 16);
|
||||
}
|
||||
20
blitzkiste.net/js/slider.js
Normal file
20
blitzkiste.net/js/slider.js
Normal file
@@ -0,0 +1,20 @@
|
||||
$(document).ready(function(){
|
||||
$('#layerslider').layerSlider({
|
||||
height: 800,
|
||||
autoStart: true,
|
||||
fitScreenWidth: true,
|
||||
firstSlide: 1,
|
||||
skin: 'v6',
|
||||
});
|
||||
$('#examples').layerSlider({
|
||||
height: 600,
|
||||
autoStart: true,
|
||||
fitScreenWidth: true,
|
||||
firstSlide: 1,
|
||||
skin: 'v6',
|
||||
thumbnailNavigation: 'always',
|
||||
tnContainerWidth: '100%',
|
||||
tnWidth: 75,
|
||||
tnHeight: 75
|
||||
});
|
||||
});
|
||||
62
blitzkiste.net/js/submission.js
Normal file
62
blitzkiste.net/js/submission.js
Normal file
@@ -0,0 +1,62 @@
|
||||
$(function()
|
||||
{
|
||||
function after_form_submitted(data)
|
||||
{
|
||||
if(data.result == 'success')
|
||||
{
|
||||
$('form#reused_form').hide();
|
||||
$('#success_message').show();
|
||||
$('#error_message').hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#error_message').append('<ul></ul>');
|
||||
|
||||
jQuery.each(data.errors,function(key,val)
|
||||
{
|
||||
$('#error_message ul').append('<li>'+key+':'+val+'</li>');
|
||||
});
|
||||
$('#success_message').hide();
|
||||
$('#error_message').show();
|
||||
|
||||
//reverse the response on the button
|
||||
$('button[type="button"]', $form).each(function()
|
||||
{
|
||||
$btn = $(this);
|
||||
label = $btn.prop('orig_label');
|
||||
if(label)
|
||||
{
|
||||
$btn.prop('type','submit' );
|
||||
$btn.text(label);
|
||||
$btn.prop('orig_label','');
|
||||
}
|
||||
});
|
||||
|
||||
}//else
|
||||
}
|
||||
|
||||
$('#reused_form').submit(function(e)
|
||||
{
|
||||
e.preventDefault();
|
||||
|
||||
$form = $(this);
|
||||
//show some response on the button
|
||||
$('button[type="submit"]', $form).each(function()
|
||||
{
|
||||
$btn = $(this);
|
||||
$btn.prop('type','button' );
|
||||
$btn.prop('orig_label',$btn.text());
|
||||
$btn.text('Sending ...');
|
||||
});
|
||||
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: 'handler.php',
|
||||
data: $form.serialize(),
|
||||
success: after_form_submitted,
|
||||
dataType: 'json'
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user