/*
*
*
*
*
*/
(function() {
// define the root namespace object
window._axUtils = { };
// ------------------------------------------------------------------------
// Makes an object bindable
// ------------------------------------------------------------------------
_axUtils.makeBindable = function(obj, events) {
if (obj.registeredBindings != null) return;
// copy the events
obj.bindableEvents = events.slice();
obj.registeredBindings = { };
obj.bind = function(eventName, fn) {
var binding = { };
binding.eventName = eventName;
binding.action = fn;
var bindingList = this.registeredBindings[eventName];
if (bindingList == null) {
bindingList = [];
this.registeredBindings[eventName] = bindingList;
}
bindingList[bindingList.length] = binding;
};
obj.unbind = function(eventName) {
if (eventName.indexOf('.') >= 0) {
this.registeredBindings[eventName] = null;
} else {
var event = eventName.split('.')[0];
for (var bindingKey in this.registeredBindings) {
if (bindingKey.split('.')[0] == event) {
this.registeredBindings[bindingKey] = null;
}
}
}
};
obj.triggerEvent = function(eventName, arg) {
for (var bindingKey in this.registeredBindings) {
if (bindingKey.split('.')[0] == eventName) {
var bindings = this.registeredBindings[bindingKey];
for (var i = 0; i < bindings.length; i++) {
if (arg == null) {
bindings[i].action();
} else {
bindings[i].action(arg);
}
}
}
}
};
};
_axUtils.loadCSS = function(url) {
$('head').append('');
};
_axUtils.loadJS = function(url) {
$('head').append('');
};
_axUtils.curry = function(fn) {
var curriedArgs = Array.prototype.slice.call(arguments, [1]);
return function() {
fn.apply(this, curriedArgs.concat(Array.prototype.slice.call(arguments)));
};
};
_axUtils.succeeded = function(result) {
return result && result.success;
};
_axUtils.createUniqueTag = function() {
return Math.random().toString().substring(2) +
Math.random().toString().substring(2) +
Math.random().toString().substring(2) +
Math.random().toString().substring(2);
};
_axUtils.formatDate = function(date) {
var months = [
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var hours = date.getHours();
var amPm = (hours > 11 ? 'PM' : 'AM');
hours = hours % 12;
if (hours == '0') hours = '12';
var minutes = date.getMinutes() + '';
if (minutes.length == 1) {
minutes = '0' + minutes;
}
return [
months[date.getMonth()], ' ', date.getDate(), ' ', date.getFullYear(), ' ',
hours, ':', minutes, ' ', amPm].join('');
};
_axUtils.quickObject = function() {
var returnVal = { };
for (var i = 0; i < arguments.length; i += 2) {
returnVal[arguments[i]] = arguments[i + 1];
}
return returnVal;
};
var matrixBase = {
mul: function(val) {
if (val.x !== undefined) {
return _axUtils.Vector2D(
this.m11 * val.x + this.m12 * val.y + this.tx,
this.m21 * val.x + this.m22 * val.y + this.ty);
} else if (val.m11) {
return _axUtils.Matrix2D(
this.m11 * val.m11 + this.m12 * val.m21,
this.m11 * val.m12 + this.m12 * val.m22,
this.m21 * val.m11 + this.m22 * val.m21,
this.m21 * val.m12 + this.m22 * val.m22,
val.tx + this.tx * val.m11 + this.ty * val.m21,
val.ty + this.tx * val.m12 + this.ty * val.m22
);
} else if (Number(val)) {
var num = Number(val);
return _axUtils.Matrix2D(this.m11 * num, this.m12 * num,
this.m21 * num, this.m22 * num,
this.tx * num, this.ty * num);
} else return undefined;
},
rotate: function(angle) {
var angleRad = angle * Math.PI / 180;
var c = Math.cos(angleRad);
var s = Math.sin(angleRad);
return this.mul(_axUtils.Matrix2D(c, -s, s, c));
}
};
_axUtils.Matrix2D = function(m11, m12, m21, m22, tx, ty) {
return $.extend({
m11: m11 || 0,
m12: m12 || 0,
m21: m21 || 0,
m22: m22 || 0,
tx: tx || 0,
ty: ty || 0
}, matrixBase);
};
_axUtils.Vector2D = function(x, y) {
return { x: x || 0, y: y || 0 };
};
_axUtils.Matrix2D.identity = function() {
return _axUtils.Matrix2D(1, 0, 0, 1, 0, 0);
};
})();