/*  BridgeJS 1.1.1
 *  (c) 2010-2011 Nick Stakenburg - http://www.nickstakenburg.com
 *
 *  Bridge is freely distributable under the terms of an MIT-style license.
 *
 *  Adapter API largely based on PrototypeJS (http://www.prototypejs.org)
 *
 *  GitHub: https://github.com/staaky/bridgejs
 */

(function(){window.Bridge||(window.Bridge={});var a=window.Bridge,b={Version:"1.1.1",options:{adapter:"auto",path:!1},Framework:{Prototype:{included:!!window.Prototype&&Prototype.Version,required:"1.7"},jQuery:{included:!!window.jQuery&&jQuery.fn.jquery,required:"1.5"}},insertScript:function(a){try{document.write("<script type='text/javascript' src='"+a+"'></script>")}catch(b){var c=document.head||document.getElementsByTagName("head")[0],d=document.createElement("script");d.type="text/javascript",d.src=a,c.appendChild(d)}},start:function(){function c(a){for(var b=(a=a.match(e))&&a[1]&&a[1].split(".")||[],c=0,d=0,f=b.length;d<f;d++)c+=parseInt(b[d]*Math.pow(10,6-d*2));return a&&a[3]?c-1:c}var e=/^(\d+(\.?\d+){0,3})([_-]+[A-Za-z0-9]+)?/;if(a.options)for(var f in a.options)b.options[f]=a.options[f];if((f=this.options.adapter=="auto")||!f&&this.Framework[this.options.adapter]&&!this.Framework[this.options.adapter].included){this.options.adapter=null;for(var g in this.Framework)if(f=this.Framework[g],f.included&&c(f.included)>=c(f.required))this.options.adapter=g;if(!this.options.adapter||this.options.adapter=="auto"){f=[];for(g in this.Framework)f.push(g+" >= "+this.Framework[g].required);g=f.join(", "),(f=g.lastIndexOf(", "))&&(g=g.substring(0,f)+" or "+g.substring(f+2)),alert("BridgeJS requires "+g+" included before bridge.js")}}if(this.options.path)this.path=this.options.path||"",this.path.substr(this.path.length-1)!="/"&&(this.path+="/");else{g=document.getElementsByTagName("script"),f=/bridge([\w\d-_.]+)?\.js(.*)/;for(var h=0,i=g.length;h<i;h++){var j=g[h];j.src.match(f)&&(this.path=j.src.replace(f,""))}}a.Shared||this.insertScript(this.path+"adapters/shared.js"),a.$||this.insertScript(this.path+"adapters/"+this.options.adapter.toLowerCase()+".js")}},c;for(c in b)a[c]=b[c];a.start()})();
