var Browser = new Object();
var ua = navigator.userAgent.toLowerCase(); Browser.isMozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined'); Browser.isIE = window.ActiveXObject ? true : false; Browser.isFirefox = (ua.indexOf("firefox")!=-1); Browser.isSafari = (ua.indexOf("safari")!=-1); Browser.isChrome = (ua.indexOf("chrome")!=-1); Browser.isOpera = (typeof window.opera != 'undefined'); var szRoot = ""; var $doc = function(doc) { var ref = doc; if(ref == null) ref = document; this.$ = function() { var elements = new Array(); for (var i = 0; i < arguments.length; i++) { var element = arguments[i]; if (typeof element == 'string') element = ref.getElementById(element); if (arguments.length == 1) return element; elements.push(element); } return elements; }; this.newElement = function(tagName, cssName) { var element = ref.createElement(tagName); if(cssName) element.className = cssName; return element; }; this.newText = function(text) { return ref.createTextNode(text); }; }; function $() { var elements = new Array(); for (var i = 0; i < arguments.length; i++) { var element = arguments[i]; if (typeof element == 'string') element = document.getElementById(element); if (arguments.length == 1) return element; elements.push(element); } return elements; } function _newElement(tagName, cssName) { var element = document.createElement(tagName); if(cssName) element.className = cssName; return element; } function _newText(text) { return document.createTextNode(text); } function _enableEdit(iframe) { var editor = iframe.contentWindow; editor.document.designMode = 'On'; if(Browser.isFirefox) { editor.document.contentEditable = true; editor.document.open(); editor.document.writeln('<html><body></body></html>'); editor.document.close(); } return editor; } function _removeNode(node) { if(node.parentNode) node.parentNode.removeChild(node); } function _removeChildNodes(node) { while(node.firstChild) { node.removeChild(node.firstChild); } } function _replaceNode(node, newNode) { node.parentNode.replaceChild(newNode, node); } function _insertBefore(node, newNode) { node.parentNode.insertBefore(newNode, node); } function _insertAfter(node, newNode) { if(node.nextSibling) { _insertBefore(node.nextSibling, newNode); } else { node.parentNode.appendChild(newNode); } } function _Trace(s) { window.status = s; } function _text(element) { if(Browser.isFirefox) return element.textContent; else if(Browser.isSafari) return element.textContent; else return element.text; } function _innerText(element) { if(Browser.isFirefox) return element.textContent; else return element.innerText; } function _cancelBubble(bCancel, event) { if(Browser.isFirefox) { event.cancelBubble = bCancel; } else { window.event.cancelBubble = bCancel; } } function _setFocus(element) { if(Browser.isFirefox) { window.setTimeout(function(){element.focus();}, 0); } else { element.focus(); } } function _isTag(element, name) { if(element && element.tagName) if(element.tagName.toLowerCase() == name) return true; return false; } function _get(element, aname) { if(typeof element.getAttribute == "undefined") return null; return element.getAttribute(aname); } var Request = new Object(); Request.New = function(url, data, callback) { var req;	if(window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if(window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } req.onreadystatechange = function() { if(req.readyState == 4) { if(req.status < 400) { callback(req, url, data) } else { _Trace("There was a problem loading data :\n" + req.status+ "/" + req.statusText); callback(null, url, data); } } }; return req; }; Request.POST = function(url, data, callback, urlencoded) { var req = Request.New(url, data, callback); req.open("POST", url, true); if(urlencoded == null || urllencoded == true) req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');	req.send(data); return req; }; Request.GET = function(url, callback, data, cache) { if(!cache) { if(url.indexOf('?') > 0) url += "&nocache="+Math.random(); else url += "?nocache="+Math.random(); } var req = Request.New(url, data, callback); req.open("GET", url, true); req.send(null); return req; }; Request.Validate = function(response) { if(response) { var root = response.responseXML.documentElement; if(root) { if(root.tagName == "error") { return null; } return root; } } }; Object.extend=function(destination,source) { for(var property in source) { destination[property]=source[property]; } return destination; }; Object.prototype.extend=function(object) { return Object.extend.apply(this,[this,object]); }; function $inherit(baseClass) { return baseClass.extend(); } function getX(o) { var x = 0; while(o) { x += o.offsetLeft; o = o.offsetParent; } return x; } function getY(o) { var y = 0; while(o) { y += o.offsetTop; o = o.offsetParent; } return y; } function getMouse(event) { var mouse = new Object(); var scrollX = document.documentElement.scrollLeft; var scrollY = document.documentElement.scrollTop; if(Browser.isIE) { mouse.x = scrollX + window.event.clientX; mouse.y = scrollY + window.event.clientY; } else { mouse.x = event.pageX; mouse.y = event.pageY; } return mouse; } function getRect(o) { var rc = new Object(); rc.left = 0; rc.right = 0; rc.top = 0; rc.bottom = 0; var w = o.offsetWidth; var h = o.offsetHeight; while(o) { rc.left += o.offsetLeft; rc.top += o.offsetTop; o = o.offsetParent; } rc.right = rc.left + w; rc.bottom = rc.top + h; return rc; } function PtInRect(x, y, rc) { if( rc.left <= x && rc.right >= x && rc.top <= y && rc.bottom >= y ) return true; else return false; } function PtInObject(x, y, o) { var bIn = false; var rc = getRect(o); if( rc.left < x && rc.right > x && rc.top < y && rc.bottom > y ) { bIn = true; } delete rc; return bIn; } function getCookie(name) { var start = 0; var equal = document.cookie.indexOf('=', start); while(equal > start) { while(document.cookie.charAt(start) == ' ') start++; if(name == document.cookie.substring(start, equal)) { var end = document.cookie.indexOf(';', equal); if(end == -1) end = document.cookie.length; if(end > equal) { return document.cookie.substring(equal+1, end); }	break; } else { var end2 = document.cookie.indexOf(';', equal); if(end2 > equal) { end2++; while(document.cookie.charAt(end2) == ' ') end2++; start = end2; equal = document.cookie.indexOf('=', start); } else break; } } return null; } function setCookie(name, value) { var argc = setCookie.arguments.length; var argv = setCookie.arguments; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + value + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function delCookie (name) { var exp = new Date(); exp.setTime (exp.getTime() - 1000); var cval = getCookie(name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); } function _AttachEvent(element, name, func) { if(element.addEventListener) { if(name == "onmousedown") element.onmousedown = func; else if(name == "onkeydown") element.onkeydown = func; else element.addEventListener(name,func,false); } else if(element.attachEvent) { element.attachEvent(name,func); } } function _DetachEvent(element, name, func) { if(element.removeEventListener) { element.removeEventListener(name,func, false);	} else if(element.detachEvent) { element.detachEvent(name,func); } } function _HookEnterKeyDown(element, func) { function onKeyDown(event) { if(event.which || event.keyCode) { if ((event.which == 13) || (event.keyCode == 13)) { func(); return false; } else { return true; } }	} _AttachEvent(element, "onkeydown", onKeyDown); } ImageZoom = function(img, max) { var w = parseInt(img.width); var h = parseInt(img.height); if( w > max || h > max ) { var f = 1.0; if(w > h) { f = max/w; img.width = max; img.height = h*f; } else { f = max/h; img.height = max; img.width = w*f; } } }; Array.prototype.remove = function (obj) { var n = -1; for(var i=0;i<this.length;i++) { if(this[i] == obj) { n = i + 1; } if(n > 0 && n < this.length) { this[i] = this[n++]; } } return (n > 0 ? true : false); }; var Listener = new Object(); Listener.Add = function(type, obj) { switch(type) { case 'resize': if(typeof Listener.Resize == "undefined") { Listener.Resize = []; } Listener.Resize.push(obj); break; } }; Listener.Del = function(type, obj) { switch(type) { case 'resize': if(Listener.Resize) { Listener.Resize.remove(obj); } break; } }; window.onresize = function() { if(Listener.Resize) { var a = Listener.Resize; for(var i=0; i<a.length; i++) { if(a[i] && a[i].onresize) a[i].onresize(); } } }; var LoadStack = []; function importCSS(href) { var link = _newElement("link"); link.rel = 'stylesheet'; link.href = href; link.type = 'text/css'; var head = document.getElementsByTagName('head'); head[0].appendChild(link); } var AttachFrameOnLoad = function(refData) { var iframe = frames[refData.id]; if(iframe && iframe.window) { iframe.window.onload = function() { if(refData.cssHref) { function importCSS(href) { var doc = iframe.document; var head = doc.getElementsByTagName('head'); var link = doc.createElement("link"); link.rel = 'stylesheet'; if(href.indexOf(':') == -1)                         link.href='http://'+window.location.hostname+href;
else link.href = href; link.type = 'text/css'; head[0].appendChild(link); } for(var i=0; i<refData.cssHref.length; i++) { importCSS(refData.cssHref[i]); } } if(refData.content) { ref.document.body.innerHTML = refData.content; } if(refData.onLoad) { refData.onLoad(iframe.document); } } } return iframe; }; function set_home(o, url) { if (document.all) { o.target = "_self"; o.style.behavior = "url(#default#homepage)"; o.setHomePage(url); } else { o.target = "_search"; try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); prefs.setCharPref('browser.startup.homepage', url); } catch (e) { } } } 
