js = {}; js.baseURL = document.baseURI|| document.URL; if(js.baseURL&& js.baseURL.match(/(.*)\/([^\/]+)/)) js.baseURL = RegExp.$1+ "/"; js.rootUrl = js.baseURL.replace(/^(.*:\/\/[^\/]+)(.*)$/, '$1'); var __JS_FILES__ = []; var __CSS_FILES__ = []; if(typeof(__JS_ROOT__) == "undefined"){_findJsFiles(); var _m, i; for(i in __JS_FILES__){_m = i.match(new RegExp("^(.*)(global\\.js)$","i")); if(_m[2] == "global.js") __JS_ROOT__ = _m[1];}}
__JS_ROOT__ = _getRealUrl(__JS_ROOT__); if(typeof(__JS_LANG__) == "undefined")__JS_LANG__ = "gb"; js.sysPrefix = 'sys'; js.useFloatPanel = false; js.cookidDomain = ""; js.ENTER_KEYCODE = 13; js.ESC_KEYCODE = 27; js.SHIFT_KEYCODE = 16; js.CTRL_KEYCODE = 17; js.ALT_KEYCODE = 18; js.SHIFT = "shift"; js.CTRL = "ctrl"; js.ALT = "alt"; js.zIndex_buttonMenu = 10000; js.objMenu = null; var id_counter = 0; js.generateId = function(el, prefix){prefix = prefix|| 'js_id_'; if(el){el = js.Dom.findObj(el); if(!el.id) el.id = prefix+id_counter++; return el.id;}
return prefix+id_counter++;}
js.loadJs = function(baseName, dirName){var _file_path = _getRealUrl((dirName ? dirName : __JS_ROOT__)+baseName); if(!__JS_FILES__[_file_path])_findJsFiles(); if(!__JS_FILES__[_file_path]){var head = document.getElementsByTagName("HEAD")[0]; var script = document.createElement("script"); script.src = _file_path; head.appendChild(script); __JS_FILES__[_file_path] = _file_path;}}
js.loadCss = function(baseName, dirName){var _file_path = _getRealUrl((dirName ? dirName : __JS_ROOT__)+baseName); if(!__CSS_FILES__[_file_path])_findCssFiles(); if(!__CSS_FILES__[_file_path]){var head = document.getElementsByTagName("HEAD")[0]; var _css = document.createElement("LINK"); _css.rel='stylesheet'; _css.type='text/css'; head.appendChild(_css); _css.href = _file_path; __CSS_FILES__[_file_path] = _file_path;}}
function _findJsFiles(){var _src; var script_elements = document.getElementsByTagName("script"); for(i in script_elements){if(script_elements[i]&& script_elements[i].src){_src = _getRealUrl(script_elements[i].src); __JS_FILES__[_src] = _src;}}}
function _findCssFiles(){var _href; var css_elements = document.getElementsByTagName("LINK"); for(i in css_elements){if(css_elements[i]&& css_elements[i].href){_href = _getRealUrl(css_elements[i].href); __CSS_FILES__[_href] = _href;}}}
function _getRealUrl(url){url = url.replace(/\\/, "/"); if(!new RegExp(":\/\/").test(url)){if(new RegExp("^\/").test(url))url = js.rootUrl+url; else url = js.baseURL+url;}
url = url.replace(/\/[^\/]*\/\.\.\//, "/"); url = url.replace(/\/\.\//, "/"); return url;}
function reportError(msg,url,line){var str = "You have found an error as below: \n\n"; str+= "Err: "+msg+ " on line: "+line; alert(str); return true;}
js.Browse = new function(){var agt = navigator.userAgent.toLowerCase(); this.ie =((agt.indexOf("msie") != -1)&&(agt.indexOf("opera") == -1)); if(this.ie){new RegExp("msie (.*);","i").exec(agt); this.ie_version = RegExp.$1; this.ie_old =(this.ie_version < 5.5);}
this.win =((agt.indexOf("win")!=-1)||(agt.indexOf("16bit")!=-1)); this.opera =(agt.indexOf("opera") != -1); this.mac =(agt.indexOf("mac") != -1); this.mac_ie =(this.ie&& this.mac); this.win_ie =(this.ie&& !this.mac); this.gecko =(navigator.product == "Gecko"); this.ns =(document.layers); this.dom_n = document.all?(document.getElementById ? 2 : 1):(document.getElementById ? 4 :(document.layers ? 3 : 0));}
js.Dom = new function(){this.findObj = function(n, d){if(!n)return n; if(typeof(n) == "object")return n; var p,i,x; if(!d) d=document; if(d.all)x = d.all.n|| d.all[n]; if(!x)x = d[n]; for(i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=this.findObj(n,d.layers[i].document); if(!x&& d.getElementById) x=d.getElementById(n); return x;}
this.getPageX = function(obj){var x=0; if(js.Browse.ns) x=obj.pageX; else {while(eval(obj)){x+=obj.offsetLeft; obj=obj.offsetParent;}} return x;}; this.getPageY = function(obj){var y=0; if(js.Browse.ns) y=obj.pageY; else {while(eval(obj)){y+=obj.offsetTop; obj=obj.offsetParent;}} return y;}; this.getH = function(obj){return(js.Browse.ns)?((obj.height)?obj.height:obj.clip.height):((js.Browse.opera&&typeof obj.style.pixelHeight!='undefined')?obj.style.pixelHeight:obj.offsetHeight);}; this.setH = function(obj,h){h = parseInt(h)+"px"; if(obj.clip) obj.clip.height=h; else if(js.Browse.opera&& typeof obj.style.pixelHeight != 'undefined') obj.style.pixelHeight=h; else obj.style.height=h;}; this.getW = function(obj){return(js.Browse.ns)?((obj.width)?obj.width:obj.clip.width):((js.Browse.opera&&typeof obj.style.pixelWidth!='undefined')?w=obj.style.pixelWidth:obj.offsetWidth);}; this.setW = function(obj,w){w = parseInt(w)+"px"; if(obj.clip) obj.clip.width=w; else if(js.Browse.opera&& typeof obj.style.pixelWidth != 'undefined') obj.style.pixelWidth=w; else obj.style.width=w;}; this.getX = function(obj){return(js.Browse.ns)?obj.left:((obj.style.pixelLeft)?obj.style.pixelLeft:obj.offsetLeft);}; this.setX = function(obj,x){x = parseInt(x)+"px"; if(js.Browse.ns) obj.left=x; else {if(typeof obj.style.pixelLeft != 'undefined') obj.style.pixelLeft=x;if(typeof obj.style.left != 'undefined') obj.style.left=x;}}; this.getY = function(obj){return(js.Browse.ns)?obj.top:((obj.style.pixelTop)?obj.style.pixelTop:obj.offsetTop);}; this.setY = function(obj,y){y = parseInt(y)+"px"; if(js.Browse.ns) obj.top=y; else {if(typeof obj.style.pixelTop != 'undefined') obj.style.pixelTop=y;if(typeof obj.style.top != 'undefined') obj.style.top=y;}}; this.getZ = function(obj){return(js.Browse.ns)?obj.zIndex:obj.style.zIndex;}; this.setZ = function(obj,z){if(js.Browse.ns)obj.zIndex=z;else obj.style.zIndex=z;}; this.setXY = function(obj,x,y){if(x)this.setX(obj,x);if(y)this.setY(obj,y);}; this.showObj = function(obj,disp){(js.Browse.ns)? obj.visibility='show':obj.style.visibility='visible'; obj.style.display="";}; this.hideObj = function(obj,disp){(js.Browse.ns)? obj.visibility='hide':obj.style.visibility='hidden'; obj.style.display="none";}; this.removeClass = function(obj, className){if(!(obj&& obj.className)) return false; var cls = obj.className.split(" "); var ar = new Array(); for(var i = cls.length; i > 0;){if(cls[--i] != className){ar[ar.length] = cls[i];}}
obj.className = ar.join(" ");}
this.addClass = function(obj, className){this.removeClass(obj, className); obj.className+= " "+className;}
this.hasClass = function(obj, className){if(!(obj&& obj.className)) return false; var cls = obj.className.split(" "); for(var i = cls.length; i > 0;){if(cls[--i] == className) return true;}
return false;}
this.getIframeEl = function(name){return this.findObj(name);}
this.getIframeDom = function(name){return window.frames[name];}
this.createDiv = function(parentId, childText){if(typeof(parentId) == "string")parentId = this.findObj(parentId); if(!parentId)parentId = document.body; return this.createElement("div", parentId, childText);}
this.createElement = function(sType, parentId, childText){if(!sType)return null; var oEl = null; if(sType == 'text'&& childText)oEl = document.createTextNode(childText); else {oEl = document.createElement(sType); if(childText){var type_childText = typeof(childText); if(type_childText == "object")oEl.appendChild(childText); else this.writeHTML(oEl,childText);}}
if(oEl){parentId = this.findObj(parentId); if(parentId) parentId.appendChild(oEl);}
return oEl;}
this.writeHTML = function(obj,str){if(document.layers){var doc=obj.document; doc.write(str); doc.close();}else if(navigator.product == "Gecko"){var r = document.createRange(); r.selectNodeContents(obj); r.deleteContents(); var df = r.createContextualFragment(str); obj.appendChild(df);}else if(typeof obj.innerHTML != 'undefined')obj.innerHTML=str;}
this.removeNode = function(node){for(var i =(node.childNodes.length - 1); i >= 0; i--)this.removeNode(node.childNodes[i]); node.parentNode.removeChild(node);}
this.removeChildNodes = function(node){for(var i =(node.childNodes.length - 1); i >= 0; i--)this.removeNode(node.childNodes[i]);}
this.getScroll = function(){if(js.Browse.ie){var _doc = document.compatMode != "CSS1Compat" ? document.body : document.documentElement; return {left:_doc.scrollLeft, top:_doc.scrollTop, width:_doc.clientWidth, height:_doc.clientHeight};}else {return {left:window.pageXOffset, top:window.pageYOffset, width:window.innerWidth, height:window.innerHeight};}}}
js.Event={addEvent:function(obj,evType,fn){try {if(obj.addEventListener){obj.addEventListener(evType,fn,false); return true;}else if(obj.attachEvent){var r=obj.attachEvent("on"+evType,fn); js.EventCache.add(obj,evType,fn); return r;}else {return false;}}
catch(e){}}, removeEvent:function(obj,evType,fn){if(obj.removeEventListener){obj.removeEventListener(evType,fn,false); return true;}else if(obj.detachEvent){var r=obj.detachEvent("on"+evType,fn); return r;}else{return false;}}, getEvent:function(e){e=window.event||e; e.leftButton=false; if(e.srcElement==null&&e.target!=null){e.srcElement=e.target; e.leftButton=(e.button==1);}else if(e.target==null&&e.srcElement!=null){e.target=e.srcElement; e.leftButton=(e.button==0);}else if(e.srcElement!=null&&e.target!=null){}else{return null}
 if(document.body&&document.documentElement){e.mouseX=e.pageX||(e.clientX+Math.max(document.body.scrollLeft,document.documentElement.scrollLeft)); e.mouseY=e.pageY||(e.clientY+Math.max(document.body.scrollTop,document.documentElement.scrollTop));}else {e.mouseX=-1; e.mouseY=-1;}
 return e;}, stopEvent:function(e){if(e&&e.cancelBubble!=null){e.cancelBubble=true; e.returnValue=false;}
 if(e&&e.stopPropagation&&e.preventDefault){e.stopPropagation(); e.preventDefault();}
 return false;}}; js.EventCache=function(){var listEvents=[]; return{listEvents:listEvents, add:function(node,sEventName,fHandler,bCapture){listEvents[listEvents.length]=arguments;}, flush:function(){var i,item; for(i=listEvents.length-1; i>=0; i=i-1){item=listEvents[i]; if(item[0].removeEventListener){item[0].removeEventListener(item[1],item[2],item[3]);}; if(item[1].substring(0,2)!="on"){item[1]="on"+item[1];}; if(item[0].detachEvent){item[0].detachEvent(item[1],item[2]);}; item[0][item[1]]=null;};}};}(); js.Event.addEvent(window,"unload",js.EventCache.flush); function error_handler(a,b,c){window.status=(c+"\n"+b+"\n\n"+a+"\n\n"+error_handler.caller); return true;}
js.Common = new function(){this.openWin = function(url,winName,width,height,scrollbars){if(!scrollbars)scrollbars='no'; var x =(screen.availWidth-width) / 2; var y =(screen.availHeight-height) / 2; var newWin = window.open(url,winName,'width='+width+',height='+height+',scrollbars='+scrollbars+',resizable=no,titlebar=0,top='+y+ ',left='+x); newWin.focus();}
this.show_hide_obj = function(ctrl_id, div_id, ctrl_show_text, ctrl_hide_text){var objCtrl = this.findObj(ctrl_id); var objDiv = this.findObj(div_id); if(objCtrl.innerHTML == ctrl_show_text){objDiv.style.display = ""; this.writeHTML(objCtrl, ctrl_hide_text);}else {objDiv.style.display = "none"; this.writeHTML(objCtrl, ctrl_show_text);}}
this.trim = function(str){if(str) return str.replace(/(^[\sĦĦ]*)|([\sĦĦ]*$)/g, "");}
this.subStr = function(str,len){var templen = 0; var tempstr=""; for(var i = 0; i < str.length; i++){var c = str.charAt(i); if(isCnChar(c)) templen+= 2; else templen+= 1; tempstr+=c; if(templen >= len) break;}
return tempstr;}
function isCnChar(c){if(c.length > 1) return true; else if(c == "") return false; else {if(/^([\uFF66-\uFF9F]|[\u0000-\u00FF])*$/gi.test(c)) return false; else return true;}}}
js.Img = {}; js.Img.preloadImages = function(){var d=document; if(d.images){var i,p=new Array(),a=js.Img.preloadImages.arguments; for(i=0; i<a.length; i++){p[i]=new Image; p[i].src=a[i];}}}
js.Img.zoomImage = function(objImg, dstW, dstH){if(typeof(objImg) == 'string')objImg = js.Dom.findObj(objImg); if(objImg.tagName){if(objImg.tagName.toLowerCase() == "img"){var srcW = objImg.width; var srcH = objImg.height; var newSize = js.Img.getZoomSize(srcW, srcH, dstW, dstH); if(newSize[2] == "in"){js.Dom.setW(objImg, newSize[0]); js.Dom.setH(objImg, newSize[1]); objImg.style.cursor = "hand Pointer"; js.Event.addEvent(objImg,"click",function(){window.open(objImg.src, "", "");});}}else {for(var i = objImg.firstChild; i; i = i.nextSibling) js.Img.zoomImage(i, dstW, dstH);}}}
js.Img.getZoomSize = function(srcW, srcH, dstW, dstH){var x = srcW / dstW; var y = dstH > 0 ? srcH / dstH : 0; if(x > 1|| y > 1) zoom = "in"; else zoom = "out"; if(x > y){srcW = Math.ceil(srcW/x); srcH = Math.ceil(srcH/x);}else {srcW = Math.ceil(srcW/y); srcH = Math.ceil(srcH/y);}
return new Array(srcW, srcH, zoom);}