Ox.Focus = function() { /*** Ox.Focus Basic focus handler Methods blur(id) blur element focus(id) focus element focused() return id of focused element, or null ***/ var stack = []; return { _print: function() { Ox.print(stack); }, blur: function(id) { var index = stack.indexOf(id); if (index > -1 && index == stack.length - 1) { stack.length == 1 ? stack.pop() : stack.splice(stack.length - 2, 0, stack.pop()); //$elements[id].removeClass('OxFocus'); $('.OxFocus').removeClass('OxFocus'); // fixme: the above is better, and should work stack.length && Ox.UI.elements[stack[stack.length - 1]].addClass('OxFocus'); Ox.print('blur', id, stack); } }, focus: function(id) { var index = stack.indexOf(id); if (index == -1 || index < stack.length - 1) { index > -1 && stack.splice(index, 1); stack.push(id); $('.OxFocus').removeClass('OxFocus'); // fixme: see above Ox.UI.elements[id].addClass('OxFocus'); Ox.print('focus', id, stack); } }, focused: function() { return stack.length ? stack[stack.length - 1] : null; } }; }();