function JSArray(){if(typeof Array.prototype.indexOf!="function"){Array.prototype.indexOf=function(e){for(var i=0;i<this.length;i++)if(this[i]==e)return i;return-1}}if(typeof Array.prototype.lastIndexOf!="function"){Array.prototype.lastIndexOf=function(e){for(var i=this.length-1;i>=0;i--)if(this[i]==e)return i;return-1}}if(typeof Array.prototype.remove!="function"){Array.prototype.remove=function(e){var i=this.indexOf(e);if(i!=-1)this.splice(i,1)}}if(typeof Array.prototype.clear!="function"){Array.prototype.clear=function(){this.length=0}}if(typeof Array.prototype.copy!="function"){Array.prototype.copy=function(){var c=[];for(var i=0;i<this.length;i++)c[i]=this[i];return c}}if(typeof Array.prototype.pop!="function"){Array.prototype.pop=function(){var l=null;if(this.length>0){l=this[this.length-1];this.length--}return l}}if(typeof Array.prototype.push!="function"){Array.prototype.push=function(){var l=this.length;var a=arguments;for(var i=0;i<a.length;i++)this[l+i]=a[i];return this.length}}if(typeof Array.prototype.shift!="function"){Array.prototype.shift=function(){var f=this[0];this.splice(0,1);return f}}if(typeof Array.prototype.unshift!="function"){Array.prototype.unshift=function(v){this.splice(0,0,v);return this.length}}if(typeof Array.prototype.splice!="function"){Array.prototype.splice=function(s,c){var t=this.copy();var a=arguments;if(c==null||c=='')c=this.length-s;for(var i=s;i<s+a.length-2;i++)this[i]=a[i-s+2];for(var i=s+a.length-2;i<this.length-c+a.length-2;i++)this[i]=t[i+c-a.length+2];this.length=this.length-c+(a.length-2);return t.slice(s,s+c)}}if(typeof Array.prototype.concat!="function"){Array.prototype.concat=function(s){var f=this.copy();for(var i=0;i<s.length;i++)f[f.length]=s[i];return f}}if(typeof Array.prototype.slice!="function"){Array.prototype.slice=function(s,e){var t;var l=this.length;var a=[];if(e==null||e=='')e=l;else if(e<0)e=l+e;if(s<0)s=l+s;if(e<s){t=e;e=s;s=t}for(var i=0;i<e-s;i++)a[i]=this[s+i];return a}}}Array.prototype=new JSArray();function JSArrayList(){this.extend(Array);this.version="2.0.85";function contains(e){return this.indexOf(e)!=-1}Array.prototype.contains=contains;this.contains=contains;function insertAt(e,i){this.splice(i,0,e)}Array.prototype.insertAt=insertAt;this.insertAt=insertAt;function insertBefore(n,e){var i=this.indexOf(e);if(i==-1)this.push(n);else this.splice(i,0,n)}Array.prototype.insertBefore=insertBefore;this.insertBefore=insertBefore;function removeAt(i){this.splice(i,1)}Array.prototype.removeAt=removeAt;this.removeAt=removeAt;function add(e){this.push(e)}Array.prototype.add=add;this.add=Array.prototype.add;var list=new Array();var a=arguments;if(a.length>0)for(var i=0;i<a.length;i++)list[list.length]=a[i];return list}function JSCookie(){this.version="2.0.85";function set(n,v,c){var e="";if(c){var d=new Date();d.setTime(d.getTime()+c*24*60*60*1000);e="; expires="+d.toGMTString()}document.cookie=escape(n)+"="+v+e+"; path=/"}this.set=set;function get(n){var c=document.cookie;var p=n+"=";var b=c.indexOf("; "+p);if(b==-1){b=c.indexOf(p);if(b!=0)return ""}else b+=2;var e=c.indexOf(";",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e))}this.get=get;function unset(n){return this.set(n,"")}this.unset=unset}var Cookies=new JSCookie();function JSDateUtils(){this.version="2.0.85";function howManyDays(month,year){var m=month;var y=year;if(m>12)m=m %12;m=m-1;if(m==0||m==2||m==4||m==6||m==7||m==9||m==11)return31;if(m==1)return(y %4==0)?29:28;if(m==3||m==5||m==8||m==10)return30}this.howManyDays=howManyDays;function daysBetween(date1,date2){var o=1000*60*60*24;var s=date1.getTime();var e=date2.getTime();var d=Math.abs(s-e);return Math.round(d/o)}this.daysBetween=daysBetween;function getJulianDate(date){var d=date;var m=24*60*60*1000;var n=new Date(d.getFullYear(),0,1);return Math.ceil((d.getTime()-n.getTime())/m)+1}this.getJulianDate=getJulianDate;function getWeekNumber(date){var d=date;var t=4;var r=new Date(d.getFullYear(),d.getMonth(),d.getDate());r.setDate(r.getDate()-r.getDay()+t);return Math.ceil(getJulianDate(r)/7)}this.getWeekNumber=getWeekNumber;function howWeekInYear(year){return52}this.howWeekInYear=howWeekInYear}var DateUtils=new JSDateUtils();function JSDateFormatter(){this.version="2.0.85";this.tokPat=new RegExp("^month_strict|month|Month|MONTH|yyyy|YYYY|mins|MINS|mon_strict|ampm|AMPM|mon|Mon|MON|min|MIN|dd|DD|mm|MM|yy|YY|hh|HH|ss|SS|m|M|d|D|y|Y|h|H|s|S|w|W");this.lowerMonArr={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12};this.monPatArr=new Array();this.monPatArr['mon_strict']=new RegExp(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/);this.monPatArr['Mon']=new RegExp(/Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec/);this.monPatArr['MON']=new RegExp(/JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC/);this.monPatArr['mon']=new RegExp("jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec",'i');this.monthPatArr=new Array();this.monthPatArr['month']=new RegExp(/^january|february|march|april|may|june|july|august|september|october|november|december/i);this.monthPatArr['Month']=new RegExp(/^January|February|March|April|May|June|July|August|September|October|November|December/);this.monthPatArr['MONTH']=new RegExp(/^JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER/);this.monthPatArr['month_strict']=new RegExp(/^january|february|march|april|may|june|july|august|september|october|november|december/);this.cutoffYear=50;this.JSFormatToken=function(token,type){this.token=token;this.type=type};this.parseFormatString=function(formatStr){var tokArr=new Array();var tokInd=0;var strInd=0;var foundTok=0;while(strInd<formatStr.length){if(formatStr.charAt(strInd)=="%"&&(matchArray=formatStr.substr(strInd+1).match(this.tokPat))!=null){strInd+=matchArray[0].length+1;tokArr[tokInd++]=new this.JSFormatToken(matchArray[0],"symbolic")}else{if(tokInd>0&&tokArr[tokInd-1].type=="literal"){tokArr[tokInd-1].token+=formatStr.charAt(strInd++)}else{tokArr[tokInd++]=new this.JSFormatToken(formatStr.charAt(strInd++),"literal")}}}return tokArr};this.buildDate=function buildDate(dateStr,formatStr){var tokArr=this.parseFormatString(formatStr);var strInd=0;var tokInd=0;var intMonth;var intDay;var intYear;var intHour;var intMin;var intSec;var ampm="";var strOffset;var curdate=new Date();intMonth=curdate.getMonth()+1;intDay=curdate.getDate();intYear=curdate.getFullYear();intHour=0;intMin=0;intSec=0;while(strInd<dateStr.length&&tokInd<tokArr.length){if(tokArr[tokInd].type=="literal"){if(dateStr.indexOf(tokArr[tokInd].token,strInd)==strInd){strInd+=tokArr[tokInd++].token.length;continue}else{return "\""+dateStr+"\" does not conform to the expected format: "+formatStr}}switch(tokArr[tokInd].token){case 'm':case 'M':case 'd':case 'D':case 'h':case 'H':case 'min':case 'MIN':case 'w':case 'W':case 's':case 'S':curChar=dateStr.charAt(strInd);nextChar=dateStr.charAt(strInd+1);matchArr=dateStr.substr(strInd).match(/^\d{1,2}/);if(matchArr==null){switch(tokArr[tokInd].token.toLowerCase()){case 'd':var unit="day";break;case 'm':var unit="month";break;case 'h':var unit="hour";break;case 'min':var unit="minute";break;case 's':var unit="second";break}return "Bad "+unit+" \""+curChar+"\" or \""+curChar+nextChar+"\"."}strOffset=matchArr[0].length;switch(tokArr[tokInd].token.toLowerCase()){case 'd':intDay=parseInt(matchArr[0],10);break;case 'm':intMonth=parseInt(matchArr[0],10);break;case 'h':intHour=parseInt(matchArr[0],10);break;case 'min':intMin=parseInt(matchArr[0],10);break;case 's':intSec=parseInt(matchArr[0],10);break}break;case 'mm':case 'MM':case 'dd':case 'DD':case 'hh':case 'HH':case 'mins':case 'MINS':case 'ss':case 'SS':strOffset=2;matchArr=dateStr.substr(strInd).match(/^\d{2}/);if(matchArr==null){switch(tokArr[tokInd].token.toLowerCase()){case 'dd':var unit="day";break;case 'mm':var unit="month";break;case 'hh':var unit="hour";break;case 'mins':var unit="minute";break;case 'ss':var unit="second";break}return "Bad "+unit+" \""+dateStr.substr(strInd,2)+"\"."}switch(tokArr[tokInd].token.toLowerCase()){case 'dd':intDay=parseInt(matchArr[0],10);break;case 'mm':intMonth=parseInt(matchArr[0],10);break;case 'hh':intHour=parseInt(matchArr[0],10);break;case 'mins':intMin=parseInt(matchArr[0],10);break;case 'ss':intSec=parseInt(matchArr[0],10);break}break;case 'y':case 'Y':if(dateStr.substr(strInd,4).search(/\d{4}/)!=-1){intYear=parseInt(dateStr.substr(strInd,4),10);strOffset=4}else{if(dateStr.substr(strInd,2).search(/\d{2}/)!=-1){intYear=parseInt(dateStr.substr(strInd,2),10);if(intYear>=this.cutoffYear){intYear+=1900}else{intYear+=2000}strOffset=2}else{return "Bad year \""+dateStr.substr(strInd,2)+"\". Must be two or four digits."}}break;case 'yy':case 'YY':if(dateStr.substr(strInd,2).search(/\d{2}/)!=-1){intYear=parseInt(dateStr.substr(strInd,2),10);if(intYear>=this.cutoffYear){intYear+=1900}else{intYear+=2000}strOffset=2}else{return "Bad year \""+dateStr.substr(strInd,2)+"\". Must be two digits."}break;case 'yyyy':case 'YYYY':if(dateStr.substr(strInd,4).search(/\d{4}/)!=-1){intYear=parseInt(dateStr.substr(strInd,4),10);strOffset=4}else{return "Bad year \""+dateStr.substr(strInd,4)+"\". Must be four digits."}break;case 'mon':case 'Mon':case 'MON':case 'mon_strict':monPat=this.monPatArr[tokArr[tokInd].token];if(dateStr.substr(strInd,3).search(monPat)!=-1){intMonth=this.lowerMonArr[dateStr.substr(strInd,3).toLowerCase()]}else{switch(tokArr[tokInd].token){case 'mon_strict':caseStat="lower-case";break;case 'Mon':caseStat="mixed-case";break;case 'MON':caseStat="upper-case";break;case 'mon':caseStat="between Jan and Dec";break}return "Bad month \""+dateStr.substr(strInd,3)+"\". Must be "+caseStat+"."}strOffset=3;break;case 'month':case 'Month':case 'MONTH':case 'month_strict':monPat=this.monthPatArr[tokArr[tokInd].token];matchArray=dateStr.substr(strInd).match(monPat);if(matchArray==null){return "Can't find a month beginning at \""+dateStr.substr(strInd)+"\"."}intMonth=this.lowerMonArr[matchArray[0].substr(0,3).toLowerCase()];strOffset=matchArray[0].length;break;case 'ampm':case 'AMPM':matchArr=dateStr.substr(strInd).match(/^(am|pm|AM|PM|a\.m\.|p\.m\.|A\.M\.|P\.M\.)/);if(matchArr==null){return "Missing am/pm designation."}if(matchArr[0].substr(0,1).toLowerCase()=="a"){ampm="am"}else{ampm="pm"}strOffset=matchArr[0].length;break}strInd+=strOffset;tokInd++}if(tokInd!=tokArr.length||strInd!=dateStr.length){return "\""+dateStr+"\" is either missing desired information or has more information than the expected format: "+formatStr}if(intMonth<1||intMonth>12){return "Month must be between 1 and 12."}if(intDay<1||intDay>31){return "Day must be between 1 and 31."}if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&intDay==31){return "Month "+intMonth+" doesn't have 31 days!"}if(intMonth==2){var isleap=(intYear %4==0&&(intYear %100!=0||intYear %400==0));if(intDay>29||(intDay==29&&!isleap)){return "February "+intYear+" doesn't have "+intDay+" days!"}}if(ampm==""){if(intHour<0||intHour>23){return "Hour must be between 0 and 23 for military time."}}else{if(intHour<1||intHour>12){return "Hour must be between 1 and 12 for standard time."}}if(ampm=="am"&&intHour==12){intHour=0}if(ampm=="pm"&&intHour<12){intHour+=12}if(intMin<0||intMin>59){return "Minute must be between 0 and 59."}if(intSec<0||intSec>59){return "Second must be between 0 and 59."}return new Date(intYear,intMonth-1,intDay,intHour,intMin,intSec)};function dateToString(date,format){var m=date.getMonth();m++;var mm=(m<10)?"0"+m:m;var d=date.getDate();var dd=(d<10)?"0"+d:d;var y=date.getFullYear();var yy=StringUtils.right(String(y),2);var yyyy=y;var h=date.getHours();var hh=(h<10)?"0"+h:h;var s=date.getSeconds();var ss=(s<10)?"0"+s:s;var min=date.getMinutes();var mins=(min<10)?"0"+min:min;var token=this.parseFormatString(format);for(var i=0;i<token.length;i++){if(token[i].type=="symbolic"){switch(token[i].token){case "m":case "M":format=StringUtils.replaceAll(format,"%"+token[i].token,m);break;case "mm":case "MM":format=StringUtils.replaceAll(format,"%"+token[i].token,mm);break;case "d":case "D":format=StringUtils.replaceAll(format,"%"+token[i].token,d);break;case "dd":case "DD":format=StringUtils.replaceAll(format,"%"+token[i].token,dd);break;case "y":case "Y":format=StringUtils.replaceAll(format,"%"+token[i].token,y);break;case "yy":case "YY":format=StringUtils.replaceAll(format,"%"+token[i].token,yy);break;case "yyyy":case "YYYY":format=StringUtils.replaceAll(format,"%"+token[i].token,yyyy);break;case "h":case "H":format=StringUtils.replaceAll(format,"%"+token[i].token,h);break;case "hh":case "HH":format=StringUtils.replaceAll(format,"%"+token[i].token,hh);break;case "s":case "S":format=StringUtils.replaceAll(format,"%"+token[i].token,s);break;case "ss":case "SS":format=StringUtils.replaceAll(format,"%"+token[i].token,ss);break;case "min":case "MIN":format=StringUtils.replaceAll(format,"%"+token[i].token,min);break;case "mins":case "MINS":format=StringUtils.replaceAll(format,"%"+token[i].token,mins);break}}}return format}this.dateToString=dateToString;function dateCheck(dateStr,formatStr){var myObj=this.buildDate(dateStr,formatStr);if(typeof myObj=="object"){return true}else{return false}}this.dateCheck=dateCheck;function compareDates(dateArray1,expr,dateArray2){if(typeof dateArray1!="object"||typeof dateArray2!="object"){return alert("Can't compare "+dateArray1+" with "+dateArray2)}var result1=DateFormatter.buildDate(dateArray1[0],dateArray1[1]);var result2=DateFormatter.buildDate(dateArray2[0],dateArray2[1]);return(eval(this.getTime(result1)+""+expr+""+this.getTime(result2)))}this.compareDates=compareDates;this.getTime=function(date){return new Date(date).getTime()}}var DateFormatter=new JSDateFormatter();function JSHashMap(){this.version="2.0.85";this.hash=new Object();function get(name){return this.hash[name]}this.get=get;function keySet(){var k=[];for(var key in this.hash)k[k.length]=key;return k}this.keySet=keySet;function put(name,value){this.hash[name]=value}this.put=put;function containsKey(name){var r=String(this.get(name));return(r!='undefined'&&r!='null')}this.containsKey=containsKey}function JSLocale(){if(typeof window.JSCookie=="undefined"){this.getAvailableLocales=function(){};this.setCurrent=function(){};this.setDefault=function(){};this.getCurrent=function(){};this.getDefault=function(){};this.getCharset=function(){};this.getName=function(){};this.getShortName=function(){};this.include=function(){};this.throwException=function(){};this.isIncluded=function(){};this.getLocaleCode=function(){};return null}var cfg=window.ComponentConfig;this.version="2.0.85";this.currentLocale=(cfg)?cfg.defaultLanguage:"en";this.defaultLocale=(cfg)?cfg.defaultLanguage:"en";this.autoDetect=(cfg)?cfg.autoDetectLanguage:true;this.scriptPath=(cfg)?((cfg.localePath)?cfg.localePath:cfg.scriptPath):"";this.includedLocales=[];this.availableLocales={en:{charset:"windows-1252",name:"English",shortName:"en"},nl:{charset:"windows-1252",name:"Nederlands",shortName:"nl"},ru:{charset:"windows-1251",name:"1056;1091;1089;1089;1082;1080;1081;",shortName:"ru"},uk:{charset:"windows-1251",name:"1059;1082;1088;1072;1111;1085;1089;1100;1082;1072;",shortName:"uk"}};function getAvailableLocales(){return this.availableLocales}this.getAvailableLocales=getAvailableLocales;function setCurrent(newLocale){this.currentLocale=newLocale;this.include("common");setCookieLocale(newLocale)}this.setCurrent=setCurrent;function setDefault(newLocale){this.defaultLocale=newLocale}this.setDefault=setDefault;function getCurrent(){return this.currentLocale}this.getCurrent=getCurrent;function getDefault(){return this.defaultLocale}this.getDefault=getDefault;function getCharset(){return this.availableLocales[this.getCurrent()].charset}this.getCharset=getCharset;function getName(){var t=String(this.availableLocales[this.getCurrent()].name);t=t.split(";");if(t.length==1){return String(this.availableLocales[this.getCurrent()].name)}var n="";for(var i=0;i<t.length;i++){n+=String.fromCharCode(t[i])}return n}this.getName=getName;function getShortName(){return this.availableLocales[this.getCurrent()].shortName}this.getShortName=getShortName;function include(str){var l=this.scriptPath+'locale-'+str+'-'+this.currentLocale+'.js';this.fileName=l;if(!this.isIncluded(l)){this.includedLocales[this.includedLocales.length]=l;document.write('<script src="'+l+'"  type="text/javascript" language="javascript"><\/scr'+'ipt>')}}this.include=include;function throwException(){return alert("Current locale: "+this.currentLocale+"\nFile "+this.scriptPath+""+this.fileName+" not exists.")}this.throwException=throwException;function isIncluded(locale){for(var i=0;i<this.includedLocales.length;i++){if(this.includedLocales[i]==locale){return true}}return false}this.isIncluded=isIncluded;function getLocaleCode(){var l=(this.currentLocale)?this.currentLocale:this.defaultLocale;var c=getCookieLocale();if(c){l=c}else if(navigator.browserLanguage){l=navigator.browserLanguage}else if(navigator.language){l=navigator.language}return l.substring(0,2)}this.getLocaleCode=getLocaleCode;function setCookieLocale(locale){Cookies.set("locale",locale,30)}function getCookieLocale(){return Cookies.get("locale")}if(this.autoDetect){this.currentLocale=this.getLocaleCode()}this.include("common")}var Locale=new JSLocale();function JSNumber(){this.version="2.0.85";function formatBytes(bytes,toCase){var b=bytes;var c=toCase;var u=" b";if(b>1024){b=b/1024;u=" kb"}if(b>1024){b=b/1024;u=" mb"}b=String(b);var d=b.indexOf(".");if(d!=-1){d+=2;b=b.substring(0,d)}if(c&&String(c).toLowerCase()=="upper")u=u.toUpperCase();return b+u}this.formatBytes=formatBytes;function factorial(n){if(isNaN(n)||(n<0))return NaN;var v=n==0?1:n*factorial(n-1);if((String(v).indexOf('.')!=-1)||(v==Number.POSITIVE_INFINITY))return NaN;return v}this.factorial=factorial;function random(maxNumber){return Math.round(Math.abs(Math.sin(new Date().getTime()))*(maxNumber-1))}this.random=random;function hexToDec(hexValue){return parseInt(hexValue,16)}this.hexToDec=hexToDec;function decToHex(decValue){var d=decValue;var h="0123456789ABCDEF";var m=0xf;var r="";while(d!=0){r=h.charAt(d&m)+r;d>>>=4}return r.length==0?"0":r}this.decToHex=decToHex;function valueOf(s){var i=parseInt(Number(s));if(!isNaN(i))return i;else return parseInt(s)}this.valueOf=valueOf;function format(num,decimalNum,bolLeadingZero,bolParens,bolCommas){var n=num;var d=decimalNum;var z=bolLeadingZero;var p=bolParens;var c=bolCommas;if(isNaN(parseInt(n)))return "NaN";d=d?d:-1;var t=n;var i=n<0?-1:1;t*=Math.pow(10,d);t=Math.round(Math.abs(t));t/=Math.pow(10,d);t*=i;var r=new String(t);if(!z&&n<1&&n>-1&&n!=0){if(n>0)r=r.substring(1,r.length);else r="-"+r.substring(2,r.length)}if(c&&(n>=1000||n<=-1000)){var s=r.indexOf(".");if(s<0)s=r.length;s-=3;while(s>=1){r=r.substring(0,s)+","+r.substring(s,r.length);s-=3}}if(p&&n<0){r="("+r.substring(1,r.length)+")"}return r}Number.prototype.format=format;this.format=format}Number.prototype=new JSNumber();var NumberUtils=new JSNumber();function JSObject(){if(typeof Function.prototype.call=="undefined"){Function.prototype.call=function(obj,a,b,c,d,e,f){var o=obj;var p='__call';while(typeof o[p]!="undefined")p+=p;o[p]=this;var v=o[p](a,b,c,d,e,f);delete o[p];return v}}if(typeof Function.prototype.apply=="undefined"){Function.prototype.apply=function(obj,params){var o=obj;var p=params;var a=[];if(o==null||typeof o=="undefined")o=window;p=(p)?p:[];for(var i=0;i<p.length;i++)a[a.length]="p["+i+"]";o.evalMethod=this;var v=eval("o.evalMethod("+a.join(",")+");");o.evalMethod=null;return v}}function extend(superClass){superClass.call(this);this.superClass=superClass}Object.prototype.extend=extend;function getSuperClass(){return(this.superClass)?this.superClass:null}Object.prototype.getSuperClass=getSuperClass;Object.prototype.instanceOf=function(c){return(this.constructor==c)};function clone(deep){var obj=new this.constructor();for(var p in this){if(deep&&typeof(this[p])=='object')obj[p]=this[p].clone(deep);else obj[p]=this[p]}return obj}Object.prototype.clone=clone;function methods(){var m=[];for(var p in this)if(typeof(this[p])=="function")m.push(p);return m}Object.prototype.methods=methods}Object.prototype=new JSObject();function JSRequest(){this.version="2.0.85";function getParameter(n,m){m=(m)?m:"get";if(m=="get"){var a=String(this.getQueryString()).split("&");for(var i=0;i<a.length;i++){var b=String(a[i]).split("=");if(b[0]==n){return b[1]}}}else if(m=="rewrite"){var a=String(document.location).split("/");for(var i=0;i<a.length;i++){if(a[i]==n){return a[i+1]}}}return null}this.getParameter=getParameter;function getProtocol(){return document.location.protocol}this.getProtocol=getProtocol;function getServerName(){return document.location.host}this.getServerName=getServerName;function getServerPort(){var p=document.location.port;return(p)?p:80}this.getServerPort=getServerPort;function getQueryString(){var s=String(document.location.search);s=(s.substring(0)=="?")?s.substring(1,s.length):s;return s}this.getQueryString=getQueryString;function getCookies(){return String(document.cookie).split(";")}this.getCookies=getCookies}var Request=new JSRequest();function JSString(){this.version="2.0.85";this.doubleQuote=String.fromCharCode(34);this.singleQuote=String.fromCharCode(39);this.slash=String.fromCharCode(47);this.backSlash=String.fromCharCode(92);function reverse(s){s=Global.isDefined(s)?String(s):this;var r="";var i=s.length;while(i>0){r+=s.substring(i-1,i);i--}return r}String.prototype.reverse=reverse;this.reverse=reverse;function toAsciiString(s){str=Global.isDefined(s)?String(s):this;var a="";for(var i=0;i<s.length;i++)a+="&#"+s.charCodeAt(i)+";";return a}String.prototype.toAsciiString=toAsciiString;this.toAsciiString=toAsciiString;function equals(str1,str2){str1=Global.isDefined(str2)?String(str1):this;str2=Global.isDefined(str2)?String(str2):str1;return(String(str1)==String(str2))}String.prototype.equals=equals;this.equals=equals;function startsWith(s,p){return(this.left(s,p.length)==p)}this.startsWith=startsWith;function endsWith(s,f){return(this.right(s,f.length)==f)}this.endsWith=endsWith;function makeUncachebleURL(url){return(url+((url.indexOf("?")==-1)?"?":"&")+"nocache="+(new Date().getTime()))}this.makeUncachebleURL=makeUncachebleURL;function replace(original,pattern,replace){return internalReplace(original,pattern,replace)}this.replace=replace;function replaceAll(original,pattern,replace){return internalReplace(original,pattern,replace,"g")}this.replaceAll=replaceAll;function hasPrefix(p,s){return(this.left(s,p.length)==p)}this.hasPrefix=hasPrefix;function hasSuffix(f,s){return(this.right(s,f.length)==f)}this.hasSuffix=hasSuffix;function left(s,c){s=String(s);if(c<=0)return "";else if(c>s.length)return s;else return s.substring(0,c)}this.left=left;function right(s,c){s=String(s);if(c<=0)return "";else if(c>s.length)return str;else{var l=s.length;return s.substring(l,l-c)}}this.right=right;function trimLeft(s){var s=Global.isDefined(s)?String(s):this;return s.replace(/^\s+/,"")}String.prototype.trimLeft=trimLeft;this.trimLeft=trimLeft;function trimRight(s){var s=Global.isDefined(s)?String(s):this;return s.replace(/\s+$/,"")}String.prototype.trimRight=trimRight;this.trimRight=trimRight;function trim(s){s=Global.isDefined(s)?String(s):this;s=s.trimLeft();return s.trimRight()}String.prototype.trim=trim;this.trim=trim;function normalizeLink(link){var l=this.trim(link);if((l.indexOf('http://')!=0)&&(l.indexOf('javascript:')!=0)&&(l.indexOf('/')!=0)&&l!="")l='http://'+l;l=l.replace(/\x22/g,"%20");return l}this.normalizeLink=normalizeLink;function uppercaseFirstLetter(str){var s=str.split(/\s+/g);for(var i=0;i<s.length;i++)s[i]=s[i].substring(0,1).toUpperCase()+s[i].substring(1,s[i].length)+" ";return s.join(" ")}this.uppercaseFirstLetter=uppercaseFirstLetter;function internalReplace(original,pattern,replace,flag){var f=flag||"i";var re=new RegExp(pattern,f);return original.replace(re,replace)}}String.prototype=new JSString();var StringUtils=new JSString();function JSUtil(){this.version="2.0.85";this.classes=["JSArrayList","JSDateUtils","JSDateFormatter","JSHashMap","JSLocale","JSNumberUtils","JSStringUtils"]}var Util=new JSUtil();