mirror of https://github.com/luileito/jsketch.git
74 lines
1.7 KiB
JavaScript
74 lines
1.7 KiB
JavaScript
/**
|
|
* Data binding lib.
|
|
*/
|
|
(function(){
|
|
var cache = [0],
|
|
expando = 'data' + +(new Date);
|
|
function data(elem) {
|
|
var cacheIndex = elem[expando],
|
|
nextCacheIndex = cache.length;
|
|
if (!cacheIndex) {
|
|
cacheIndex = elem[expando] = nextCacheIndex;
|
|
cache[cacheIndex] = {};
|
|
}
|
|
return cache[cacheIndex];
|
|
};
|
|
window.dataBind = data;
|
|
})();
|
|
|
|
/**
|
|
* Event manager.
|
|
*/
|
|
var Event = {
|
|
|
|
add: function(elem, type, fn) {
|
|
if (!elem) return false;
|
|
if (elem.addEventListener) { // W3C standard
|
|
elem.addEventListener(type, fn, false);
|
|
} else if (elem.attachEvent) { // IE versions
|
|
elem.attachEvent("on"+type, fn);
|
|
} else { // Really old browser
|
|
elem[type+fn] = function(){ fn(window.event); };
|
|
}
|
|
},
|
|
|
|
remove: function(elem, type, fn) {
|
|
if (!elem) return false;
|
|
if (elem.removeEventListener) { // W3C standard
|
|
elem.removeEventListener(type, fn, false);
|
|
} else if (elem.detachEvent) { // IE versions
|
|
elem.detachEvent("on"+type, fn);
|
|
} else { // Really old browser
|
|
elem[type+fn] = null;
|
|
}
|
|
},
|
|
|
|
isRightClick: function(ev) {
|
|
if (!ev) ev = window.event;
|
|
if (ev.which) return ev.which === 3;
|
|
else if (ev.button) return e.button === 2;
|
|
return false;
|
|
}
|
|
|
|
};
|
|
|
|
/**
|
|
* A handy method to (deep) extend an object.
|
|
*/
|
|
var deepExtend = function(myObj) {
|
|
myObj = myObj || {};
|
|
for (var i = 1; i < arguments.length; i++) {
|
|
var obj = arguments[i];
|
|
if (!obj) continue;
|
|
for (var key in obj) {
|
|
if (obj.hasOwnProperty(key)) {
|
|
if (typeof obj[key] === 'object')
|
|
deepExtend(myObj[key], obj[key]);
|
|
else
|
|
myObj[key] = obj[key];
|
|
}
|
|
}
|
|
}
|
|
return myObj;
|
|
};
|