Skip to content

Instantly share code, notes, and snippets.

@christopherdebeer
Created August 12, 2011 09:00
Show Gist options
  • Save christopherdebeer/1141739 to your computer and use it in GitHub Desktop.
Save christopherdebeer/1141739 to your computer and use it in GitHub Desktop.
/*
* jQuery Raptorize Plugin 1.0
* www.ZURB.com/playground
* Copyright 2010, ZURB
* Free to use under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
*/
(function($) {
$.fn.raptorize = function(options) {
//Yo' defaults
var defaults = {
enterOn: 'click', //timer, konami-code, click
delayTime: 5000 //time before raptor attacks on timer mode
};
//Extend those options
var options = $.extend(defaults, options);
return this.each(function() {
var _this = $(this);
var audioSupported = false;
//Stupid Browser Checking which should be in jQuery Support
if ($.browser.mozilla && $.browser.version.substr(0, 5) >= "1.9.2" || $.browser.webkit) {
audioSupported = true;
}
//Raptor Vars
var raptorImageMarkup = '<img id="elRaptor" style="display: none" src="http://dl.dropbox.com/u/4420775/rptr/raptor.png" />'
var raptorAudioMarkup = '<audio id="elRaptorShriek" preload="auto"><source src="http://dl.dropbox.com/u/4420775/rptr/raptor-sound.mp3" /><source src="http://dl.dropbox.com/u/4420775/rptr/raptor-sound.ogg" /></audio>';
var locked = false;
//Append Raptor and Style
$('body').append(raptorImageMarkup);
if(audioSupported) { $('body').append(raptorAudioMarkup); }
var raptor = $('#elRaptor').css({
"position":"fixed",
"bottom": "-700px",
"right" : "0",
"display" : "block"
})
// Animating Code
function init() {
locked = true;
//Sound Hilarity
if(audioSupported) {
function playSound() {
document.getElementById('elRaptorShriek').play();
}
playSound();
}
// Movement Hilarity
raptor.animate({
"bottom" : "0"
}, function() {
$(this).animate({
"bottom" : "-130px"
}, 100, function() {
var offset = (($(this).position().left)+400);
$(this).delay(300).animate({
"right" : offset
}, 2200, function() {
raptor = $('#elRaptor').css({
"bottom": "-700px",
"right" : "0"
})
locked = false;
})
});
});
}
//Determine Entrance
if(options.enterOn == 'timer') {
setTimeout(init, options.delayTime);
} else if(options.enterOn == 'click') {
_this.bind('click', function(e) {
e.preventDefault();
if(!locked) {
init();
}
})
} else if(options.enterOn == 'konami-code'){
var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
$(window).bind("keydown.raptorz", function(e){
kkeys.push( e.keyCode );
if ( kkeys.toString().indexOf( konami ) >= 0 ) {
init();
$(window).unbind('keydown.raptorz');
}
}, true);
}
});//each call
}//orbit plugin call
})(jQuery);
$('a').first().raptorize().click();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment