/**
 * jQuery.Plugin - Lazy loading of jQuery Plugins
 * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 3/5/2008
 * @author Ariel Flesler
 * @version 1.0.0
 */
;(function($){var g=$.plugin=function(c,d,e){var f=$.extend(this,g.defaults,e);f.q=[];f.url=f.base+c+f.ext;h(d,function(a,b){f.add(a,b)});if(f.id)g.registry[f.id]=f;if(typeof f.require!='object')f.require=[f.require]};g.register=function(a,b,c){return new g(a,b,c)};g.prototype={constructor:g,queue:function(a,b,c){this.q.push({s:a,n:b,a:c})},add:function(b,c){var d=this;b[c]=function(){if(d.loaded)throw'$.plugin > "'+d.url+'" didn\'t add the method "'+c+'".';d.queue(this,c,arguments);if(!d.loading){var a=d.preload();if(d.sync)return a}return this}},load:function(a){var b=this,c;g.trigger('loading',[b]);$.ajax({cache:b.cache,url:b.url,async:!b.sync,dataType:'script',success:function(){g.trigger('loaded',[b]);b.loaded=true;c=b.execute();if(b.caller){b.caller.missing--;c=b.caller.check()}}});return c},check:function(){if(!this.missing)return this.load()},preload:function(){var b=this,c,d;if(b.loading)return;b.loading=true;c=$(b.require).map(function(i,a){return g.registry[a]});b.missing=c.length;c.each(function(){if(this.loading)b.missing--;else{this.sync=b.sync||this.sync;this.caller=b;d=this.preload()}});return b.sync&&d!=null?d:b.check()},execute:function(){var a,b;while(b=this.q.shift())a=b.s[b.n].apply(b.s,b.a);return a},register:g.register};g.defaults={base:'',ext:'',cache:true,require:[]};g.registry={};$.each(['bind','unbind','trigger'],function(i,d){g[d]=g.prototype[d]=function(a,b,c){return $([this])[d](a,b,c)}});function h(e,f){$.each(e,function(b,c){var d=b=='$'?$:$.fn;if(typeof c=='string')f(d,c);else $.each(c,function(i,a){f(d,a)})})}})(jQuery);

/**
  *jQuery.LowPro
  *
  */
(function($){var addMethods=function(source){var ancestor=this.superclass&&this.superclass.prototype;var properties=$.keys(source);if(!$.keys({toString:true}).length)properties.push("toString","valueOf");for(var i=0,length=properties.length;i<length;i++){var property=properties[i],value=source[property];if(ancestor&&$.isFunction(value)&&$.argumentNames(value)[0]=="$super"){var method=value,value=$.extend($.wrap((function(m){return function(){return ancestor[m].apply(this,arguments)}})(property),method),{valueOf:function(){return method},toString:function(){return method.toString()}})}this.prototype[property]=value}return this};$.extend({keys:function(obj){var keys=[];for(var key in obj)keys.push(key);return keys},argumentNames:function(func){var names=func.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(/, ?/);return names.length==1&&!names[0]?[]:names},bind:function(func,scope){return function(){return func.apply(scope,$.makeArray(arguments))}},wrap:function(func,wrapper){var __method=func;return function(){return wrapper.apply(this,[$.bind(__method,this)].concat($.makeArray(arguments)))}},klass:function(){var parent=null,properties=$.makeArray(arguments);if($.isFunction(properties[0]))parent=properties.shift();var klass=function(){this.initialize.apply(this,arguments)};klass.superclass=parent;klass.subclasses=[];klass.addMethods=addMethods;if(parent){var subclass=function(){};subclass.prototype=parent.prototype;klass.prototype=new subclass;parent.subclasses.push(klass)}for(var i=0;i<properties.length;i++){klass.addMethods(properties[i])}if(!klass.prototype.initialize)klass.prototype.initialize=function(){};klass.prototype.constructor=klass;return klass},delegate:function(rules){return function(e){var target=$(e.target);for(var selector in rules){if(target.is(selector)||((target=target.parents(selector))&&target.length>0))return rules[selector].apply(this,[target].concat($.makeArray(arguments)))}}}});var bindEvents=function(instance){for(var member in instance){if(member.match(/^on(.+)/)&&typeof instance[member]=='function'){instance.element.bind(RegExp.$1,$.bind(instance[member],instance))}}};var behaviorWrapper=function(behavior){return $.klass(behavior,{initialize:function($super,element,args){this.element=$(element);if($super)$super.apply(this,args)}})};var attachBehavior=function(el,behavior,args){var wrapper=behaviorWrapper(behavior);instance=new wrapper(el,args);bindEvents(instance);if(!behavior.instances)behavior.instances=[];behavior.instances.push(instance);return instance};$.fn.extend({attach:function(){var args=$.makeArray(arguments),behavior=args.shift();if($.livequery&&this.selector){return this.livequery(function(){attachBehavior(this,behavior,args)})}else{return this.each(function(){attachBehavior(this,behavior,args)})}},attachAndReturn:function(){var args=$.makeArray(arguments),behavior=args.shift();return $.map(this,function(el){return attachBehavior(el,behavior,args)})},delegate:function(type,rules){return this.bind(type,$.delegate(rules))},attached:function(behavior){var instances=[];if(!behavior.instances)return instances;this.each(function(i,element){$.each(behavior.instances,function(i,instance){if(instance.element.get(0)==element)instances.push(instance)})});return instances},firstAttached:function(behavior){return this.attached(behavior)[0]}})})(jQuery);