if (!Array.prototype.pop){Array.prototype.pop = function(){if (!this.length) return null;var last = this[this.length - 1];--this.length;return last;}}
if (!Array.prototype.push){Array.prototype.push = function(){for (var i=0,n=arguments.length;i<n;i++)this[this.length] = arguments[i];return this.length;}}
if (!Array.prototype.indexOf){Array.prototype.indexOf = function(value,idx){if (typeof(idx) != 'number') idx = 0;else if (idx < 0) idx = this.length + idx;for (var i=idx,n=this.length;i<n;i++)if (this[i] === value) return i;return -1;}}
function Browser(){this.name = navigator.userAgent;this.isWinIE = this.isMacIE = false;this.isGecko  = this.name.match(/Gecko\//);this.isSafari = this.name.match(/AppleWebKit/);this.isKHTML  = this.isSafari || navigator.appVersion.match(/Konqueror|KHTML/);this.isOpera  = window.opera;if (document.all && !this.isGecko && !this.isSafari && !this.isOpera){this.isWinIE = this.name.match(/Win/);this.isMacIE = this.name.match(/Mac/);}}
var Browser = new Browser();
if (!window.Event) var Event = new Object;
Event = {cache : false,getEvent : function(evnt){return (evnt) ? evnt : ((window.event) ? window.event : null);},getKey : function(evnt){evnt = this.getEvent(evnt);return (evnt.which) ? evnt.which : evnt.keyCode;},stop : function(evnt){try{evnt.stopPropagation()}catch(err){};evnt.cancelBubble = true;try{evnt.preventDefault()}catch(err){};return (evnt.returnValue = false);},register : function(object, type, handler){if (type == 'keypress' && (Browser.isKHTML || object.attachEvent)) type = 'keydown';if (type == 'mousewheel' && Browser.isGecko) type = 'DOMMouseScroll';if (!this.cache) this.cache = [];if (object.addEventListener){this.cache.push([object,type,handler]);object.addEventListener(type, handler, false);}else if (object.attachEvent){this.cache.push([object,type,handler]);object.attachEvent(['on',type].join(''),handler);}else{object[['on',type].join('')] = handler;}},deregister : function(object, type, handler){if (type == 'keypress' && (Browser.isKHTML || object.attachEvent)) type = 'keydown';if (type == 'mousewheel' && Browser.isGecko) type = 'DOMMouseScroll';if (object.removeEventListener)object.removeEventListener(type, handler, false);else if (object.detachEvent)object.detachEvent(['on',type].join(''), handler);else object[['on',type].join('')] = null;},deregisterAll : function(){if (!Event.cache) return; for (var i=0,n=Event.cache.length;i<n;i++){Event.deregister(Event.cache[i]);Event.cache[i][0] = null;}Event.cache = false;}};
Event.register(window, 'unload', Event.deregisterAll);
document.getElemetsByClassName = function(name,target){var result = [];var object  = null;var search = new RegExp(['(^|\\s)',name,'(\\s|$)'].join(''));if (target && target.getElementsByTagName) object = target.getElementsByTagName('*');if (!object) object = document.getElementsByTagName ? document.getElementsByTagName('*') : document.all;for (var i=0,n=object.length;i<n;i++){var check = object[i].getAttribute('class') || object[i].className;if (check.match(search)) result.push(object[i]);}return result;}
function Library(){this._path = '';this._cache = [];this.lang = '';this.base = '';return this._init();}
Library.prototype = {_init : function(){var rs_path = document.getElementsByName('X-Resource-Dir')[0];var js_path = document.getElementsByName('X-Script-Dir')[0];if (rs_path){this.base = this._check_path(rs_path.getAttribute('content'));if (!js_path) this._path = [this.base,'js/'].join('');}if (js_path)this._path = this._check_path(js_path.getAttribute('content'));return this;},_initLang : function(){var html = document.getElementsByTagName('html')[0];if (!html) return;this.lang = html.getAttribute('xml:lang') || html.getAttribute('lang');},_check_path : function(path){if (!path) return '';if (!path.match(/\/$/)) path = [path,'/'].join('');return path;},require : function(libs){var pre  = '\n<script type="text/javascript" src="';var post = '.js"></script>';for (var i=0,n=libs.length;i<n;i++)		{if (this._cache.indexOf(libs[i]) > -1) continue;document.write([pre,this._path,libs[i],post].join(''));this._cache.push(libs[i]);}},path : function(path){this._path = this._check_path(path);}}
var Library = new Library();
Event.register(window,'load',function(){Library._initLang()});