aboutsummaryrefslogtreecommitdiffstats
path: root/gum/static/js/libs/gumby.js
diff options
context:
space:
mode:
Diffstat (limited to 'gum/static/js/libs/gumby.js')
-rw-r--r--gum/static/js/libs/gumby.js145
1 files changed, 145 insertions, 0 deletions
diff --git a/gum/static/js/libs/gumby.js b/gum/static/js/libs/gumby.js
new file mode 100644
index 0000000..49b08ac
--- /dev/null
+++ b/gum/static/js/libs/gumby.js
@@ -0,0 +1,145 @@
+/**
+* Gumby Framework
+* ---------------
+*
+* Follow @gumbycss on twitter and spread the love.
+* We worked super hard on making this awesome and released it to the web.
+* All we ask is you leave this intact. #gumbyisawesome
+*
+* Gumby Framework
+* http://gumbyframework.com
+*
+* Built with love by your friends @digitalsurgeons
+* http://www.digitalsurgeons.com
+*
+* Free to use under the MIT license.
+* http://www.opensource.org/licenses/mit-license.php
+*/
+!function() {
+
+ 'use strict';
+
+ function Gumby() {
+ this.$dom = $(document);
+ this.isOldie = !!this.$dom.find('html').hasClass('oldie');
+ this.click = 'click';
+ this.onReady = this.onOldie = this.onTouch = false;
+ this.uiModules = {};
+ this.inits = {};
+ }
+
+ // initialize Gumby
+ Gumby.prototype.init = function() {
+ // init UI modules
+ this.initUIModules();
+
+ var scope = this;
+
+ // call ready() code when dom is ready
+ this.$dom.ready(function() {
+ if(scope.onReady) {
+ scope.onReady();
+ }
+
+ // call oldie() callback if applicable
+ if(scope.isOldie && scope.onOldie) {
+ scope.onOldie();
+ }
+
+ // call touch() callback if applicable
+ if(Modernizr.touch && scope.onTouch) {
+ scope.onTouch();
+ }
+ });
+ };
+
+ // public helper - set Gumby ready callback
+ Gumby.prototype.ready = function(code) {
+ if(code && typeof code === 'function') {
+ this.onReady = code;
+ }
+ };
+
+ // public helper - set oldie callback
+ Gumby.prototype.oldie = function(code) {
+ if(code && typeof code === 'function') {
+ this.onOldie = code;
+ }
+ };
+
+ // public helper - set touch callback
+ Gumby.prototype.touch = function(code) {
+ if(code && typeof code === 'function') {
+ this.onTouch = code;
+ }
+ };
+
+ // public helper - return debuggin object including uiModules object
+ Gumby.prototype.debug = function() {
+ return {
+ $dom: this.$dom,
+ isOldie: this.isOldie,
+ uiModules: this.uiModules,
+ click: this.click
+ };
+ };
+
+
+ // grab attribute value, testing data- gumby- and no prefix
+ Gumby.prototype.selectAttr = function() {
+ var i = 0;
+
+ // any number of attributes can be passed
+ for(; i < arguments.length; i++) {
+ // various formats
+ var attr = arguments[i],
+ dataAttr = 'data-'+arguments[i],
+ gumbyAttr = 'gumby-'+arguments[i];
+
+ // first test for data-attr
+ if(this.attr(dataAttr)) {
+ return this.attr(dataAttr);
+
+ // next test for gumby-attr
+ } else if(this.attr(gumbyAttr)) {
+ return this.attr(gumbyAttr);
+
+ // finally no prefix
+ } else if(this.attr(attr)) {
+ return this.attr(attr);
+ }
+ }
+
+ // none found
+ return false;
+ };
+
+ // add an initialisation method
+ Gumby.prototype.addInitalisation = function(ref, code) {
+ this.inits[ref] = code;
+ };
+
+ // initialize a uiModule
+ Gumby.prototype.initialize = function(ref) {
+ if(this.inits[ref] && typeof this.inits[ref] === 'function') {
+ this.inits[ref]();
+ }
+ };
+
+ // store a UI module
+ Gumby.prototype.UIModule = function(data) {
+ var module = data.module;
+ this.uiModules[module] = data;
+ };
+
+ // loop round and init all UI modules
+ Gumby.prototype.initUIModules = function() {
+ var x;
+ for(x in this.uiModules) {
+ this.uiModules[x].init();
+ }
+ };
+
+ window.Gumby = new Gumby();
+
+}();