Fixed formatting issues, removed redundant internal function

This commit is contained in:
Timothy Warren 2011-06-29 11:34:05 -04:00
parent b88da57421
commit d43964583a
1 changed files with 384 additions and 385 deletions

579
kis.js
View File

@ -1,21 +1,22 @@
/** /**
Kis JS Keep It Simple JS Library Kis JS Keep It Simple JS Library
Copyright Timothy J. Warren Copyright Timothy J. Warren
License Public Domain License Public Domain
Version 0.1.0 Version 0.1.0
*/ */
(function(){ (function ()
{
"use strict"; "use strict";
//Browser requirements check //Browser requirements check
if(typeof document.querySelectorAll !== "function" || typeof window.addEventListener !== "function") if (typeof document.querySelectorAll !== "function" || typeof window.addEventListener !== "function")
{ {
return; return;
} }
var $_, $, _sel; var $_, $;
$_ = {}; $_ = {};
@ -26,22 +27,13 @@
* *
* Simple DOM selector function * Simple DOM selector function
*/ */
$ = function(a) $ = function (a)
{ {
if (typeof a !== "string"){ return a;}
var x = document.querySelectorAll(a); var x = document.querySelectorAll(a);
return (x.length === 1) ? x[0] : x; return (x.length === 1) ? x[0] : x;
}; };
/**
* _sel
*
* Return the selector for the string
*/
_sel = function(s)
{
return (typeof s === "string") ? $(s) : s;
};
window.$ = $; window.$ = $;
/** /**
@ -49,35 +41,33 @@
* *
* Object for making ajax requests * Object for making ajax requests
*/ */
(function() { (function (){
var ajax = { var ajax = {
_do: function(url, data, callback, isPost) _do: function (url, data, callback, isPost)
{ {
if(typeof callback === "undefined") if (typeof callback === "undefined")
{ {
callback = function(){}; callback = function (){};
} }
var request = (typeof window.XMLHttpRequest === "function") var request = (typeof window.XMLHttpRequest === "function") ? new XMLHttpRequest() : false;
? new XMLHttpRequest()
: false;
var type = (isPost) ? "POST" : "GET"; var type = (isPost) ? "POST" : "GET";
url += (type === "GET") url += (type === "GET") ? "?" + this._serialize(data, true) : '';
? "?" + this._serialize(data, true)
: '';
request.open(type, url); request.open(type, url);
request.onreadystatechange = function(){ request.onreadystatechange = function ()
if(request.readyState === 4) {
if (request.readyState === 4)
{ {
callback(request.responseText); callback(request.responseText);
} }
}; };
if(type === "POST") if (type === "POST")
{ {
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send(this._serialize(data)); request.send(this._serialize(data));
@ -87,21 +77,27 @@
request.send(null); request.send(null);
} }
}, },
_serialize: function(data, encode) _serialize: function (data, encode)
{ {
var pairs = []; var pairs = [];
for (var name in data) for (var name in data)
{ {
if(!data.hasOwnProperty(name)){ continue; }; if (!data.hasOwnProperty(name))
if(typeof data[name] === "function"){ continue; }; {
continue;
}
if (typeof data[name] === "function")
{
continue;
}
var value = data[name].toString(); var value = data[name].toString();
if(encode === true) if (encode === true)
{ {
name = encodeURIComponent(name.replace(" ", "+")); name = encodeURIComponent(name.replace(" ", "+"));
value = encodeURIComponent(value.replace(" ","+")); value = encodeURIComponent(value.replace(" ", "+"));
} }
pairs.push(name + "=" + value); pairs.push(name + "=" + value);
@ -111,12 +107,12 @@
} }
}; };
window.$_.get = function(url, data, callback) window.$_.get = function (url, data, callback)
{ {
ajax._do(url, data, callback, false); ajax._do(url, data, callback, false);
}; };
window.$_.post = function(url, data, callback) window.$_.post = function (url, data, callback)
{ {
ajax._do(url, data, callback, true); ajax._do(url, data, callback, true);
}; };
@ -127,24 +123,25 @@
* *
* Object for encoding and decoding querystrings and hashbang strings * Object for encoding and decoding querystrings and hashbang strings
*/ */
(function(){ (function (){
window.$_.hb = (history.pushState) ? false : true; window.$_.hb = (history.pushState) ? false : true;
var qs = { var qs = {
parse: function(hb) parse: function (hb)
{ {
hb = hb || $_.hb; hb = hb || $_.hb;
var h, i, hString, pairs, pLen, data, y; var h, i, hString, pairs, pLen, data, y;
data = {}; data = {};
if(hb === true) if (hb === true)
{ {
h = location.hash.split('#!/'); h = location.hash.split('#!/');
hString = (h.length > 1) ? h[1] : ''; hString = (h.length > 1) ? h[1] : '';
} }
else if(hb === false || hb === undefined) else if (hb === false || hb === undefined)
{ {
hString = window.location.search.substring(1); hString = window.location.search.substring(1);
} }
@ -157,11 +154,11 @@
pLen = pairs.length; pLen = pairs.length;
for(i=0;i<pLen;i++) for (i = 0; i < pLen; i++)
{ {
y = pairs[i].split('='); y = pairs[i].split('=');
if(y.length < 2) if (y.length < 2)
{ {
return data; return data;
} }
@ -171,12 +168,12 @@
return data; return data;
}, },
set: function(key, value, hb) set: function (key, value, hb)
{ {
hb = hb || $_.hb; hb = hb || $_.hb;
var pairs = this.parse(hb); var pairs = this.parse(hb);
if(key !== undefined && value !== undefined) if (key !== undefined && value !== undefined)
{ {
pairs[key] = value; pairs[key] = value;
} }
@ -185,23 +182,23 @@
for (var x in pairs) for (var x in pairs)
{ {
if(pairs.hasOwnProperty(x)) if (pairs.hasOwnProperty(x))
{ {
vars.push(x+'='+pairs[x]); vars.push(x + '=' + pairs[x]);
} }
} }
var qs = vars.join('&'); var qs = vars.join('&');
if(hb === true) if (hb === true)
{ {
qs = '!/'+ qs; qs = '!/' + qs;
location.hash = qs; location.hash = qs;
} }
return qs; return qs;
}, },
get: function(key, hb) get: function (key, hb)
{ {
hb = hb || $_.hb; hb = hb || $_.hb;
var pairs = this.parse(hb); var pairs = this.parse(hb);
@ -218,27 +215,29 @@
* *
* Wrapper for localstorage data serialization * Wrapper for localstorage data serialization
*/ */
(function(){ (function (){
var store = { var store = {
get: function(key) get: function (key)
{ {
return JSON.parse(localStorage.getItem(key)); return JSON.parse(localStorage.getItem(key));
}, },
set: function(key, value) set: function (key, value)
{ {
if(typeof value !== "string") if (typeof value !== "string")
{ {
value = JSON.stringify(value); value = JSON.stringify(value);
} }
localStorage.setItem(key, value); localStorage.setItem(key, value);
}, },
getAll: function() getAll: function ()
{ {
var i, len, data; var i,
len,
data;
len = localStorage.length; len = localStorage.length;
data = {}; data = {};
for(i=0;i<len;i++) for (i = 0; i < len; i++)
{ {
var name = localStorage.key(i); var name = localStorage.key(i);
var value = localStorage.getItem(name); var value = localStorage.getItem(name);
@ -257,116 +256,112 @@
* *
* Event api wrapper * Event api wrapper
*/ */
(function(){ (function (){
var attach, remove, add_remove, e;
var attach, remove, add_remove, e;
attach = function(sel, event, callback) attach = function (sel, event, callback)
{ {
if(typeof sel.addEventListener === "function") if (typeof sel.addEventListener === "function")
{ {
sel.addEventListener(event, callback, false); sel.addEventListener(event, callback, false);
} }
}; };
remove = function(sel, event, callback) remove = function (sel, event, callback)
{ {
if(typeof sel.removeEventListener === "function") if (typeof sel.removeEventListener === "function")
{ {
sel.removeEventListener(event, callback, false); sel.removeEventListener(event, callback, false);
} }
}; };
add_remove = function (sel, event, callback, add) add_remove = function (sel, event, callback, add)
{ {
var i,len; var i, len;
if(!sel) if (!sel)
{ {
return false; return false;
} }
//Get the DOM object if you give me a selector string //Get the DOM object if you give me a selector string
sel = _sel(sel); sel = $(sel);
//Multiple events? Run recursively! //Multiple events? Run recursively!
event = event.split(" "); event = event.split(" ");
if(event.length > 1) if (event.length > 1)
{ {
len = event.length; len = event.length;
for(i=0;i<len;i++) for (i = 0; i < len; i++)
{ {
add_remove(sel, event[i], callback, add); add_remove(sel, event[i], callback, add);
} }
return; return;
} }
//Check for multiple DOM objects //Check for multiple DOM objects
if(sel.length > 1) if (sel.length > 1)
{ {
len = sel.length; len = sel.length;
for(i=0;i<len;i++) for (i = 0; i < len; i++)
{ {
(add === true) (add === true) ? attach(sel[i], event, callback) : remove(sel[i], event, callback);
? attach(sel[i], event, callback) }
: remove(sel[i], event, callback); }
} else
} {
else (add === true) ? attach(sel, event, callback) : remove(sel, event, callback);
{ }
(add === true) };
? attach(sel, event, callback)
: remove(sel, event, callback);
}
};
e = { e = {
add: function(sel, event, callback) add: function (sel, event, callback)
{ {
add_remove(sel, event, callback, true); add_remove(sel, event, callback, true);
}, },
remove: function(sel, event, callback) remove: function (sel, event, callback)
{ {
add_remove(sel, event, callback, false); add_remove(sel, event, callback, false);
} }
}; };
window.$_.event = e; window.$_.event = e;
}()); }());
/** /**
* Dom manipulation object * Dom manipulation object
* *
*/ */
(function(){ (function (){
var d, len; var d;
//Private function for getting/setting attributes //Private function for getting/setting attributes
function _attr(sel, name, value) function _attr(sel, name, value)
{ {
var oldVal, doAttr; var oldVal, doAttr;
//Get the value of the attribute, if it exists //Get the value of the attribute, if it exists
if(typeof sel.hasAttribute !== "undefined") if (typeof sel.hasAttribute !== "undefined")
{ {
if(sel.hasAttribute(name)) if (sel.hasAttribute(name))
{ {
oldVal = sel.getAttribute(name); oldVal = sel.getAttribute(name);
} }
doAttr = true; doAttr = true;
} }
else if(typeof sel[name] !== "undefined") else if (typeof sel[name] !== "undefined")
{ {
oldVal = sel[name]; oldVal = sel[name];
doAttr = false; doAttr = false;
} }
else if(name === "class" && typeof sel.className !== "undefined") //className attribute else if (name === "class" && typeof sel.className !== "undefined") //className attribute
{ {
name = "className"; name = "className";
oldVal = sel.className; oldVal = sel.className;
@ -374,7 +369,7 @@
} }
//Well, I guess that attribute doesn't exist //Well, I guess that attribute doesn't exist
if(typeof oldVal === "undefined" && (typeof value === "undefined" || value === null)) if (typeof oldVal === "undefined" && (typeof value === "undefined" || value === null))
{ {
console.log(sel); console.log(sel);
console.log("Element does not have the selected attribute"); console.log("Element does not have the selected attribute");
@ -382,212 +377,216 @@
} }
//No value to set? Return the current value //No value to set? Return the current value
if(typeof value === "undefined") if (typeof value === "undefined")
{ {
return oldVal; return oldVal;
} }
//Determine what to do with the attribute //Determine what to do with the attribute
if(typeof value !== "undefined" && value !== null) if (typeof value !== "undefined" && value !== null)
{ {
(doAttr === true) (doAttr === true) ? sel.setAttribute(name, value) : sel[name] = value;
? sel.setAttribute(name, value) }
: sel[name] = value; else if (value === null)
} {
else if(value === null) (doAttr === true) ? sel.removeAttribute(name) : sel[name] = null;
{ }
(doAttr === true)
? sel.removeAttribute(name)
: sel[name] = null;
}
return (typeof value !== "undefined") ? value : oldValue; return (typeof value !== "undefined") ? value : oldValue;
} }
// Private function for class manipulation // Private function for class manipulation
function _class(sel, c, add) function _class(sel, c, add)
{ {
var ec, cs, len, i, classInd; var ec, cs, len, i, classInd;
//We can do this the easy way //We can do this the easy way
if(sel.classList) if (sel.classList)
{ {
if(add === true) if (add === true)
{ {
sel.classList.add(c); sel.classList.add(c);
return; return;
} }
else if(add === false) else if (add === false)
{ {
sel.classList.remove(c); sel.classList.remove(c);
return; return;
} }
} }
else //Or the hard way else //Or the hard way
{ {
//No class attribute? Set an empty string //No class attribute? Set an empty string
ec = _attr(sel, "class"); ec = _attr(sel, "class");
ec = (typeof ec === "string") ? ec : ''; ec = (typeof ec === "string") ? ec : '';
//Convert class attribute string into array
if (typeof ec === "string")
{
cs = (ec !== '') ? ec.split(" ") : [];
//Convert class attribute string into array len = cs.length;
if(typeof ec === "string") classInd = false;
{
cs = (ec !== '') ? ec.split(" ") : [];
len = cs.length; //Check for the class in the array
classInd = false; for (i = 0; i < len; i++)
{
if (cs[i] === c)
{
classInd = i;
break;
}
}
}
//Check for the class in the array //Add or remove from class array
for(var i=0;i<len;i++) if (add === true)
{ {
if(cs[i] === c)
{
classInd = i;
break;
}
}
}
//Add or remove from class array
if(add === true)
{
//Only add the class if isn't already there //Only add the class if isn't already there
if(classInd === false) if (classInd === false)
{ {
cs.push(c); cs.push(c);
} }
} }
else if(add === false) else if (add === false)
{ {
//Make sure the class you want to remove exists //Make sure the class you want to remove exists
if(classInd !== false) if (classInd !== false)
{ {
cs.splice(classInd, 1); cs.splice(classInd, 1);
} }
} }
var cName = (cs.length > 1) ? cs.join(" ") : cs[0]; var cName = (cs.length > 1) ? cs.join(" ") : cs[0];
if(typeof sel.className !== "undefined") if (typeof sel.className !== "undefined")
{ {
sel.className = cName; sel.className = cName;
} }
else if(typeof sel.setAttribute !== "undefined") else if (typeof sel.setAttribute !== "undefined")
{ {
sel.setAttribute('class', cName) sel.setAttribute('class', cName);
} }
else else
{ {
console.log(sel); console.log(sel);
} }
return cName; return cName;
} }
} }
d = { d = {
each: function(sel, callback) each: function (sel, callback)
{ {
if(typeof sel === "string") if (typeof sel === "string")
{ {
sel = $(sel); sel = $(sel);
} }
var len = sel.length; var len = sel.length;
if(len === 0){ return } if (len === 0)
{
return;
}
if(len === 1){ return callback(sel); } if (len === 1)
{
return callback(sel);
}
for(var x=0;x<sel.length;x++) for (var x = 0; x < sel.length; x++)
{ {
callback(sel[x]); callback(sel[x]);
} }
}, },
addClass: function(sel, c) addClass: function (sel, c)
{ {
sel = _sel(sel); sel = $(sel);
this.each(sel, function(e){ this.each(sel, function (e)
_class(e, c, true); {
}); _class(e, c, true);
}, });
removeClass: function(sel, c) },
{ removeClass: function (sel, c)
sel = _sel(sel); {
sel = $(sel);
this.each(sel, function(e){ this.each(sel, function (e)
_class(e, c, false); {
}); _class(e, c, false);
}, });
hide: function(sel) },
{ hide: function (sel)
sel = _sel(sel); {
sel = $(sel);
if(sel.length > 1) if (sel.length > 1)
{ {
this.each(sel, function(e){ this.each(sel, function (e)
e.style.display = "none"; {
}); e.style.display = "none";
} });
else }
{ else
if(sel.style) {
{ if (sel.style)
sel.style.display = "none"; {
} sel.style.display = "none";
} }
}
}, },
show: function(sel, type) show: function (sel, type)
{ {
sel = _sel(sel); sel = $(sel);
if(typeof type === "undefined") if (typeof type === "undefined")
{ {
type="block"; type = "block";
} }
if(sel.length > 1) if (sel.length > 1)
{ {
this.each(sel, function(e){ this.each(sel, function (e)
e.style.display = type; {
}); e.style.display = type;
} });
else }
{ else
sel.style.display = type; {
} sel.style.display = type;
}, }
attr: function(sel, name, value) },
{ attr: function (sel, name, value)
var oldVal; {
sel = $(sel);
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);
}
}
};
//Make sure you don't try to get a bunch of elements window.$_.dom = d;
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; }());
}());
})();