/**
 * LBi Javascript 
 *
 * @module    LBi
 * @version   1.00.090907
 * @requires  jQuery
 * @author    LBi Lost Boys
 */
var LBi=(function($){var o='function';var p='string';var q='click';var r='focus';var s='blur';var t='change';var u='submit';var v='ajaxsubmit';var w='DOMNodeInserted';var x='DOMNodeRemoved';var y=function(a){switch(typeof a){case o:return a.call(y,$);case p:y.log(a);break}};$.extend(y,{subscribe:function(a,b,c){y.Dispatcher.subscribe(a,b,c)},unsubscribe:function(a,b){y.Dispatcher.unsubscribe(a,b)},setCookie:function(a,b,c){var d=new Date();d.setTime(d.getTime()+((c||14)*86400000));document.cookie=a+"="+encodeURIComponent(b)+"; expires="+d.toUTCString()+"; path=/"},getCookie:function(a){var b=new RegExp(a+'=([^;$]+)','i');var c=b.exec(document.cookie);return(c&&c[1])?decodeURIComponent(c[1]):''},log:function(){try{console.log.apply(console,arguments)}catch(fail){}}});y.Class={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===p){a.prototype[i]=b[i]}}}};Function.prototype.bind=function(a){var b=this;return function(){return b.apply(a,arguments)}};Function.prototype.partial=function(){var c=this;var d=arguments;return function(){var a=Math.max(d.length,arguments.length);var b=[];for(var i=0;i<a;i++){b[i]=arguments[i]||d[i]}return c.apply(this,b)}};if(!Array.prototype.map){Array.prototype.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(!Array.prototype.forEach){Array.prototype.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(!Array.prototype.filter){Array.prototype.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(!Array.prototype.some){Array.prototype.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(!Array.prototype.every){Array.prototype.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(!Array.prototype.indexOf){Array.prototype.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(!Array.prototype.lastIndexOf){Array.prototype.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}}y.HashMap=function(){this.stack={}};y.HashMap.prototype={constructor:y.HashMap,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===p){a.push(i)}}return a},remove:function(a){delete this.stack[a]},clone:function(){var a=new y.HashMap();for(var i in this.stack){if(typeof i===p){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===p){a++}}return a},containsKey:function(a){return this.stack[a]?true:false},containsValue:function(a){for(var i in this.stack){if(typeof i===p&&this.stack[i]===a){return true}}return false}};y.StringBuffer=function(a){this.stack=[];this.append.apply(this,arguments)};y.StringBuffer.prototype={constructor:y.StringBuffer,append:function(a){this.stack.push.apply(this.stack,arguments);return this},insert:function(a,b){var l=arguments.length-1;for(var i=0;i<l;i++){this.stack.splice(a+i,0,arguments[i+1])}return this},substring:function(a,b){var c=new y.StringBuffer();var i=a;var l=this.stack.length;while(i<l&&i<b){c.append(this.stack[i]);i++}return c},clear:function(){this.stack=[];return this},isEmpty:function(){return(this.stack.length===0)?true:false},toString:function(){return this.stack.join('')}};$.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}});y.Dispatcher={events:{},custom:{},capture:function(b,c){$(c||document).bind(b,function(e,a){return y.Dispatcher.fire(b,e.target,a,e)})},createEvent:function(b,c){if(this.custom[b]){throw new Error('Custom event "'+b+'" is already defined.');}this.custom[b]=c;var d=/(.*):[a-z0-9]+$/i.exec(b)[1];y.Dispatcher.subscribe(d,function(e){var a=c(e,e.data);if(a&&a.nodeType){return y.Dispatcher.fire(b,a,e.data,e)}})},subscribe:function(a,b,c){if(/:/.test(a)&&!this.custom[a]){throw new Error('Custom event "'+a+'" is not defined.');}if(!this.events[a]){this.events[a]=[]}var d=this.events[a];for(var i=0;i<d.length;i++){if(c>d[i].priority){break}}d.splice(i,0,{handler:b,priority:c||1})},unsubscribe:function(a,b){var c=this.events[a]||[];for(var i=0;i<c.length;i++){var e=c[i];if(e.handler===b){c.splice(i,1)}}},fire:function(a,b,c,d){var f=this.events[a];if(f&&f.length){var e=new y.Event(a,b,c,d);for(var i=0;i<f.length;i++){f[i].handler(e)}return e.returnValue}return true}};y.Event=function(a,b,c,e){this.type=a;this.target=b;this.data=c||{};this.event=e;this.returnValue=true;if(e){var d=y.Event.Whitelist;for(var f in d){if(d[f]){(this[f]=e[f])}}}};y.Event.prototype={constructor:y.Event,preventDefault:function(){this.returnValue=false;if(this.event){this.event.preventDefault()}},stopPropagation:function(){if(this.event){this.event.stopPropagation()}}};y.Event.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};y.LinkRelations=function(){this.relations=[];y.subscribe('click:link',this.handleClick.bind(this))};y.LinkRelations.prototype={constructor:y.LinkRelations,subscribe:function(a,b){var c={expression:a,handler:b};this.relations.push(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)}}}}};y.DOM={write:function(a,b){$(a).html(b);y.Dispatcher.fire(w,a)},append:function(a,b){$(a).append(b);y.Dispatcher.fire(w,b)},insertBefore:function(a,b){$(b).before(a);y.Dispatcher.fire(w,a)},insertAfter:function(a,b){$(b).after(a);y.Dispatcher.fire(w,a)},replace:function(a,b){y.Dispatcher.fire(x,b);$(b).replaceWith(a);y.Dispatcher.fire(w,a)},remove:function(a){y.Dispatcher.fire(x,a);$(a).remove()}};y.DOMListener=function(){y.Dispatcher.subscribe(w,this.nodeInserted.bind(this));y.Dispatcher.subscribe(x,this.nodeRemoved.bind(this))};y.DOMListener.prototype={constructor:y.DOMListener,nodeInserted:function(e){throw new Error('Method not implemented');},nodeRemoved:function(e){throw new Error('Method not implemented');}};y.Forms=y.Class.extend(y.DOMListener,function(a){this.settings=$.extend({},y.Forms.Defaults,a);this.parseNode(document)},{parseNode:function(a){var b=$('form',a);var c=this.settings;if(b.length>0){if(c.captureSubmit){y.Dispatcher.capture(u,b)}if(c.captureChange){var d=$('input:text,input:radio,input:checkbox,select,textarea',b);y.Dispatcher.capture(t,d)}if(c.replaceInputs){this.replaceInputs(b)}if(c.hintValues){this.hintValues(b)}}},nodeInserted:function(e){if(this.settings.ajaxEnabled){this.parseNode(e.target)}},nodeRemoved:function(e){if(this.settings.captureSubmit){var a=$('form',e.target);a.unbind()}if(this.settings.captureChange){var b=$('input',e.target);b.unbind()}},hintValues:function(b){var c=/^text/i;var d=$(this.settings.hintSelector,b);var e=this.focusInput.bind(this);var f=this.blurInput.bind(this);d.each(function(){if(!c.test(this.type)){return}var a=$(this);a.bind(r,e);a.bind(s,f)});d.triggerHandler(s)},focusInput:function(e){var a=e.target;if(a.value===a.title){a.value='';$(a).removeClass(this.settings.hintClass)}},blurInput:function(e){var a=e.target;if(a.value===a.title||a.value===''){a.value=a.title;$(a).addClass(this.settings.hintClass)}},replaceInputs:function(h){var i=/(submit|reset)/i;var j=this.settings;var k=j.buttonTemplate;var l=j.replacedClass;var m=j.simulateClick;var n=$(j.buttonSelector,h);n.each(function(){if(!i.test(this.type)){return}var c=this;var d=c.form;var f=$(c);var g=$(k.replace(/\$([a-z]+)/mig,function(a,b){return c[b]||''}));f.addClass(l);f.after(g);if(m){g.bind(q,function(e){e.preventDefault();if($(d).triggerHandler(u,{explicitTarget:c})!==false){f.trigger(q)}})}})},post:function(a,b,c,d){if(!c){if(y.Dispatcher.fire(u,a)){if(b){a.setAttribute('action',b)}a.submit()}}else{if(y.Dispatcher.fire(v,a)){var e=y.Forms.serialize(a);var f=b||a.getAttribute('action');$.post(e,f,c,d)}}}});y.Forms.serialize=function(a){var b=new y.StringBuffer();var c=/(text|select|hidden)/i;var d=/select/i;var e=a.elements||$('input,select,textarea',a);for(var i=0;i<e.length;i++){var f=e[i];var g=f.type;if(c.test(g)||f.checked){if(d.test(f.nodeName)){var h=f.selectedIndex;if(h>=0&&f[h]){var j=f[h];b.append(f.name,'=',encodeURIComponent(j.value||j.text),'&')}}else{b.append(f.name,'=',encodeURIComponent(f.value),'&')}}}return b.toString()};y.Forms.Defaults={captureSubmit:true,captureChange:false,ajaxEnabled:true,hintValues:true,hintSelector:'input[title]',hintClass:'blurred',replaceInputs:true,buttonSelector:'input',buttonTemplate:'<a href="#" class="$className"><span>$value</span></a>',replacedClass:'replaced',simulateClick:true};y.Dispatcher.capture(q);y.Dispatcher.createEvent('click:link',function(e){var a=$(e.target).closest('a');return a[0]||null});y.Dispatcher.createEvent('click:input',function(e){var a=$(e.target).closest('input,select,textarea');return a[0]||null});return y})(jQuery);
