/**
 * LBi Javascript 
 *
 * @module    lbi
 * @version   1.10.100216
 * @requires  jQuery
 * @author    LBi Lost Boys
 */
var LBi=(function($){var j='function';var k='string';var m=function(a){switch(typeof a){case j:return a.call(m,$);case k:m.log(a);break}};$.extend(m,{subscribe:function(a,b){m.Dispatcher.subscribe(a,b)},unsubscribe:function(a,b){m.Dispatcher.unsubscribe(a,b)},setCookie:function(a,b,c){var d=c||{};var e=new Date();e.setTime(e.getTime()+((d.expires||14)*86400000));var f='; expires='+e.toUTCString();var g='; path='+(d.path||'/');var h=d.domain?('; domain='+d.domain):'';var i=d.secure?'; secure':'';document.cookie=a+"="+encodeURIComponent(b)+f+g+h+i},getCookie:function(a){var b=new RegExp(a+'=([^;$]+)','i');var c=b.exec(document.cookie);return(c&&c[1])?decodeURIComponent(c[1]):''},namespace:function(a,b){var c=a.split('.');var l=c.length;var d=this;for(var i=0;i<l;i++){var e=c[i];var f=i===(l-1);if(f){if(d[e]){throw Error('Namespace "'+e+'" is already defined');}else{d[e]=b}}else if(!d[e]){throw Error('Namespace "'+e+'" in "'+a+'" is not defined');}d=d[e]}},AbstractMethod:function(){throw new Error('Method not implemented');},log:function(){try{console.log.apply(console,arguments)}catch(fail){}}});var n={extend:function(a,constructor,b){var c=function(){a.apply(this,arguments);if(constructor){constructor.apply(this,arguments)}};this.implement(c,a.prototype);if(b){this.implement(c,b)}c.prototype.constructor=c;return c},implement:function(a,b){for(var i in b){if(typeof i===k){a.prototype[i]=b[i]}}}};m.namespace('Class',n);Function.prototype.bind=function(a){var b=this;return function(){return b.apply(a,arguments)}};var o=Array.prototype;if(!o.map){o.map=function(a,b){var c=[];var l=this.length;for(var i=0;i<l;i++){if(i in this){c[i]=a.call(b,this[i],i,this)}}return c}}if(!o.forEach){o.forEach=function(a,b){var l=this.length;for(var i=0;i<l;i++){if(i in this){a.call(b,this[i],i,this)}}}}if(!o.filter){o.filter=function(a,b){var c=[];var l=this.length;for(var i=0;i<l;i++){if(i in this){var d=this[i];if(a.call(b,d,i,this)){c.push(d)}}}return c}}if(!o.some){o.some=function(a,b){var l=this.length;for(var i=0;i<l;i++){if(i in this&&a.call(b,this[i],i,this)){return true}}return false}}if(!o.every){o.every=function(a,b){var l=this.length;for(var i=0;i<l;i++){if(i in this&&!a.call(b,this[i],i,this)){return false}}return true}}if(!o.indexOf){o.indexOf=function(a,b){var l=this.length;var c=b||0;if(b<0){c=l-b}for(var i=c;i<l;i++){if(i in this&&this[i]===a){return i}}return-1}}if(!o.lastIndexOf){o.lastIndexOf=function(a,b){var l=this.length-1;var c=b||l;if(b<0){c=l-b}for(var i=c;i>=0;i--){if(i in this&&this[i]===a){return i}}return-1}}var p=function(){this.stack={}};p.prototype={constructor:p,put:function(a,b){this.stack[a]=b},get:function(a){return this.stack[a]},getKeys:function(){var a=[];for(var i in this.stack){if(typeof i===k){a.push(i)}}return a},remove:function(a){delete this.stack[a]},clone:function(){var a=new p();for(var i in this.stack){if(typeof i===k){a.add(i,this.get(i))}}return a},clear:function(){this.stack={}},size:function(){var a=0;for(var i in this.stack){if(typeof i===k){a++}}return a},containsKey:function(a){return this.stack[a]?true:false},containsValue:function(a){for(var i in this.stack){if(typeof i===k&&this.stack[i]===a){return true}}return false}};m.namespace('HashMap',p);var q=function(a){this.set(a)};q.prototype={constructor:q,parse:function(a){if(!a){throw Error('No data provided');}var b=this.template;if(!b){throw Error('The template is not specified');}for(var c in a){if(typeof c===k){var d=new RegExp('\\$'+c,'mg');b=b.replace(d,a[c])}}return b},set:function(a){this.template=a},get:function(){return this.template}};m.namespace('Template',q);var r=function(a){this.animation=a};r.prototype={constructor:r,run:function(a,b,c){var d=$.extend({},r.Defaults,c);return this.animation(a,b,d)}};r.NONE=null;r.TOGGLE=new r(function(a,b,c){$(a)[b?'show':'hide'](c.duration,c.complete)});r.FADE=new r(function(a,b,c){$(a)[b?'fadeIn':'fadeOut'](c.duration,c.complete)});r.SLIDE=new r(function(a,b,c){$(a)[b?'slideDown':'slideUp'](c.duration,c.complete)});r.SMOOTH=new r(function(a,b,c){var d=c.duration;var e=c.property||'padding-top';var f=(c.strength||10)*(b?1:-1);var g={};g[e]=f;var h=$(a);if(b){h.fadeIn(d).animate(g,c)}else{h.fadeOut(d).animate(g,c)}});r.Defaults={duration:1000,complete:null,easing:"linear",queue:false};m.namespace('Animation',r);$.extend($,{registerPlugin:function(b,c){var d={};var e=[];d[b]=function(a){for(var i=0;i<this.length;i++){e.push(new c(this[i],a))}return this};$.extend($.fn,d);return e}});var s=function(a,b,c,e){this.type=a;this.target=b;this.data=c||{};this.event=e;this.returnValue=true;if(e){var d=s.Whitelist;for(var f in d){if(d[f]){(this[f]=e[f])}}}};s.prototype={constructor:s,preventDefault:function(){this.returnValue=false;if(this.event){this.event.preventDefault()}},isDefaultPrevented:function(){return this.event?this.event.isDefaultPrevented():!this.returnValue},stopPropagation:function(){if(this.event){this.event.stopPropagation()}}};s.CLICK='click';s.MOUSEOVER='mouseover';s.MOUSEOUT='mouseout';s.MOUSEUP='mouseup';s.MOUSEDOWN='mousedown';s.MOUSEMOVE='mousemove';s.FOCUS='focus';s.BLUR='blur';s.CHANGE='change';s.SUBMIT='submit';s.RESET='reset';s.AJAX_SUBMIT='ajaxsubmit';s.NODE_INSERTED='DOMNodeInserted';s.NODE_REMOVED='DOMNodeRemoved';s.LAYOUT_CHANGED='layoutchanged';s.Whitelist={relatedTarget:1,button:1,keyCode:1,ctrlKey:1,shiftKey:1,altKey:1,pageX:1,pageY:1,clientX:1,clientY:1,screenX:1,screenY:1};m.namespace('Event',s);var t=function(){this.observers={}};t.prototype={constructor:t,subscribe:function(a,b){var c=this.observers;if(!c[a]){c[a]=[]}c[a].push(b)},unsubscribe:function(a,b){var c=this.observers[a];var l=c.length;for(var i=0;i<l;i++){if(c[i]===b){c.splice(i,1);break}}},notify:function(a,b){var c=this.observers[a];if(c){var l=c.length;for(var i=0;i<l;i++){c[i](b)}}}};m.namespace('Observable',t);var u=new(n.extend(t,null,{capture:function(b,c){var d=this;$(c||document).bind(b,function(e,a){return d.fire(b,e.target,a,e)})},createEvent:function(b,c){var d=this;var f=/(.*):[a-z0-9]+$/i.exec(b)[1];this.subscribe(f,function(e){var a=c(e);if(a&&a.nodeType){return d.fire(b,a,e.data,e)}})},fire:function(a,b,c,d){var e=new s(a,b,c,d);this.notify(a,e);return e.returnValue}}))();m.namespace('Dispatcher',u);var v=function(){this.relations=[];u.subscribe('click:link',this.handleClick.bind(this))};v.prototype={constructor:v,subscribe:function(a,b){var c={expression:a,handler:b};this.relations.push(c);return c},unsubscribe:function(a){for(var i=0;i<this.relations.length;i++){if(this.relations[i]===a){this.relations.splice(i,1);break}}},handleClick:function(e){var a=e.target;var b=a.rel;if(b){for(var i=0;i<this.relations.length;i++){var c=this.relations[i];if(c.expression.test(b)){c.handler(e)}}}}};m.namespace('LinkRelations',v);var w={write:function(a,b){$(a).html(b);u.fire(s.NODE_INSERTED,a)},append:function(a,b){$(a).append(b);u.fire(s.NODE_INSERTED,b)},insertBefore:function(a,b){$(b).before(a);u.fire(s.NODE_INSERTED,a)},insertAfter:function(a,b){$(b).after(a);u.fire(s.NODE_INSERTED,a)},replace:function(a,b){u.fire(s.NODE_REMOVED,b);$(b).replaceWith(a);u.fire(s.NODE_INSERTED,a)},remove:function(a){u.fire(s.NODE_REMOVED,a);$(a).remove()}};m.namespace('DOM',w);var x=function(){u.subscribe(s.NODE_INSERTED,this.nodeInserted.bind(this));u.subscribe(s.NODE_REMOVED,this.nodeRemoved.bind(this))};x.prototype={constructor:x,nodeInserted:m.AbstractMethod,nodeRemoved:m.AbstractMethod};m.namespace('DOMListener',x);u.capture(s.CLICK);u.createEvent('click:link',function(e){var a=$(e.target).closest('a');return a[0]||null});return m})(jQuery);

