/* 
 * @version    1.01
 * @updated    2007/09/06
 * @author     inamorix <inamorix@metatype.jp>
 * @copyright  Copyright (c) 2007, metatype.
 * @license    The MIT-style license.
 */
port={init:function(){this.version=1.00;this.libs={};this.loaded={};this.installed={};this.standby=[];this.base=this.myself().replace(/[^\/]+\.js([^\/]*)$/,'');this.base_f='http://s3.amazonaws.com/metatype/js/';this.query=RegExp.$1;this.complete();return this;},myself:function(el){var el=this.isset(el)?el:document;return(el.nodeName=='SCRIPT')?el.src:this.myself(el.lastChild);},load:function(file){if(!this.loaded[file]){this.loaded[file]=true;document.write(/\.css$/i.test(file)?('<link href="'+file+'" type="text/css" rel="stylesheet" media="all" />'):('<script src="'+file+'" type="text/javascript"></script>'));}},conf:function(libs){this.libs=libs;this.query.match(/^\?([fim])\=(.*)$/);var q=RegExp.$2.split(',');switch(RegExp.$1){case'i':this.install(q);break;case'm':this.make(q);break;case'f':this.fetch(q);break;}},complete:function(){var fn=this.bind(function(){this.each(this.standby,function(standby){standby();});});var d=document;if(/safari/i.test(navigator.userAgent)){var onreadystatechange=function(){if(/loaded|complete/.test(d.readyState)){clearInterval(timer);fn();}}
var timer=setInterval(onreadystatechange,50);}
else if(d.all&&!window.opera){var src=(location.protocol=='https:')?'://0':'javascript:void(0)';d.write('<script src="'+src+'" defer="defer" id="__tmp__"></script>');d.getElementById('__tmp__').onreadystatechange=function(){if(this.readyState=='complete'){this.parentNode.removeChild(this);fn();}};}
else{d.addEventListener('DOMContentLoaded',fn,false);}},install:function(keys,mode){var keys=(typeof(keys)!='object')?[keys]:keys;var mode=this.isset(mode)?mode:null;this.each(keys,function(key){if(this.libs[key]){if(!this.installed[key]){this.installed[key]=true;if(this.libs[key].extend){this.install(this.libs[key].extend,mode);}
this.each(this.libs[key].require,function(file){var base=(mode=='f')?this.base_f:this.base;var file=(mode=='m')?'COMPRESSED/'+file:file;this.load(base+file);});}}});},make:function(keys){this.install(keys,'m');},fetch:function(keys){this.install(keys,'f');},extend:function(obj){var obj=this.isset(obj.init)?obj.init():obj;this.each(obj,function(key,val){if(key=='standby'){this.standby.push(this.bind(val));}
else if(key!='init'){this[key]=val;}});},isset:function(val){return(typeof(val)!='undefined');},isown:function(obj,key){if(!window.opera&&obj.hasOwnProperty){return obj.hasOwnProperty(key);}
else{return!obj.constructor.prototype[key];}},any:function(){var args=arguments;for(var i=0,ix=args.length;i<ix;i++){if(this.isset(args[i])){return args[i];}}
return null;},bind:function(fn,scope){var scope=this.any(scope,this);return function(){var args=[this];for(var i=0,ix=arguments.length;i<ix;i++){args.push(arguments[i]);}
return fn.apply(scope,args);};},each:function(obj,fn,scope){var scope=this.any(scope,this);for(var i in obj){if(this.isown(obj,i)){var args=(fn.length==2)?[i,obj[i]]:[obj[i]];if(fn.apply(scope,args)===false){break;}}}}}.init();port.load(port.base+'ports.jsonp');
