/** Kis JS Keep It Simple JS Library Copyright Timothy J. Warren License Public Domain Version 0.1.0 */ (function(){ "use strict"; //Browser requirements check if(typeof document.querySelectorAll !== "function" || typeof window.addEventListener !== "function") { return; } var $_, $, _sel; $_ = {}; window.$_ = window.$_ || $_; /** * $ * * Simple DOM selector function */ $ = function(a) { var x = document.querySelectorAll(a); return (x.length === 1) ? x[0] : x; }; /** * _sel * * Return the selector for the string */ _sel = function(s) { return (typeof s === "string") ? $(s) : s; }; window.$ = $; /** * Ajax * * Object for making ajax requests */ (function() { var ajax = { _do: function(url, data, callback, isPost) { if(typeof callback === "undefined") { callback = function(){}; } var request = (typeof window.XMLHttpRequest === "function") ? new XMLHttpRequest() : false; var type = (isPost) ? "POST" : "GET"; url += (type === "GET") ? "?" + this._serialize(data, true) : ''; 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, encode) { var pairs = []; for (var name in data) { if(!data.hasOwnProperty(name)){ continue; }; if(typeof data[name] === "function"){ continue; }; var value = data[name].toString(); if(encode === true) { 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(){ window.$_.hb = (history.pushState) ? false : true; 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 1) { len = event.length; for(i=0;i 1) { len = sel.length; for(i=0;i 1) ? cs.join(" ") : cs[0]; if(typeof sel.className !== "undefined") { sel.className = cName; } else if(typeof sel.setAttribute !== "undefined") { sel.setAttribute('class', cName) } else { console.log(sel); } return cName; } } d = { each: function(sel, callback) { if(typeof sel === "string") { sel = $(sel); } var len = sel.length; if(len === 0){ return } if(len === 1){ return callback(sel); } for(var x=0;x 1) { this.each(sel, function(e){ e.style.display = "none"; }); } else { if(sel.style) { sel.style.display = "none"; } } }, show: function(sel, type) { sel = _sel(sel); if(typeof type === "undefined") { type="block"; } if(sel.length > 1) { this.each(sel, function(e){ e.style.display = type; }); } else { sel.style.display = type; } }, attr: function(sel, name, value) { var oldVal; sel = _sel(sel); //Make sure you don't try to get a bunch of elements if(sel.length > 1 && typeof value === "undefined") { console.log(sel); console.log("Must be a singular element"); return; } else if(sel.length > 1 && typeof value !== "undefined") //You can set a bunch, though { this.each(sel, function(e){ _attr(e, name, value); }); } else //Normal behavior { return _attr(sel, name, value); } } }; window.$_.dom= d; }()); })();