/** Kis JS Keep It Simple JS Library Copyright Timothy J. Warren License Public Domain Version 0.0.1 */ (function(){ "use strict"; var $_, $, kis; $_ = {}; window.$_ = window.$_ || $_; window.$_.hb = (history.pushState) ? false : true; $ = function(a) { var x = document.querySelectorAll(a); return (x.length === 1) ? x[0] : x; }; window.$ = window.$ || $; /** * Ajax * * Object for making ajax requests */ (function() { var $_ = $_ || {}; var ajax = { _req: function() { return (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); }, _do: function(url, data, callback, isPost) { var request = this._req(); var type = (isPost) ? "POST" : "GET"; url += (type === "GET") ? "?" + this._serialize(data) : ''; request.open(type, url); request.onreadystatechange = function(){ if(request.readyState === 4) { callback(request.responseText); } }; if(type === "POST") { request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.send(this._serialize(data)); } else { request.send(null); } }, _serialize: function(data) { var pairs = []; for (var name in data) { if(!data.hasOwnProperty(name)) continue; if(typeof data[name] === "function") continue; var value = data[name].toString(); name = encodeURIComponent(name.replace(" ", "+")); value = encodeURIComponent(value.replace(" ","+")); pairs.push(name + "=" + value); } return pairs.join("&"); } }; window.$_.get = function(url, data, callback) { ajax._do(url, data, callback, false); }; window.$_.post = function(url, data, callback) { ajax._do(url, data, callback, true); }; }()); /** * Qs * * Object for encoding and decoding querystrings and hashbang strings */ (function(){ var qs = { parse: function(hb) { hb = hb || $_.hb; var h, i, hString, pairs, pLen, data, y; data = {}; if(hb === true) { h = location.hash.split('#!/'); hString = (h.length > 1) ? h[1] : ''; } else if(hb === false || hb === undefined) { hString = window.location.search.substring(1); } else { return false; } pairs = hString.split('&'); pLen = pairs.length; for(i=0;i<pLen;i++) { y = pairs[i].split('='); if(y.length < 2) { return data; } data[y[0]] = y[1]; } return data; }, set: function(key, value, hb) { hb = hb || $_.hb; var pairs = this.parse(hb); if(key !== undefined && value !== undefined) { pairs[key] = value; } var vars = []; for (var x in pairs) { if(pairs.hasOwnProperty(x)) { vars.push(x+'='+pairs[x]); } } var qs = vars.join('&'); if(hb === true) { qs = '!/'+ qs; location.hash = qs; } return qs; }, get: function(key, hb) { hb = hb || $_.hb; var pairs = this.parse(hb); return (pairs[key]) ? pairs[key] : ''; } }; window.$_.qs = qs; }()); /** * Store object * * Wrapper for localstorage data serialization */ (function(){ var store = { get: function(key) { return JSON.parse(localStorage.getItem(key)); }, set: function(key, value) { if(typeof value === "object") { value = JSON.stringify(value); } ls.setItem(key, value); }, getAll: function() { var i, len, data; len = localStorage.length; data = {}; for(i=0;i<len;i++) { var name = localStorage.key(i); var value = localStorage.getTime(name); data[name] = value; } return data; } }; window.$_.store = store; }()); })();