function BR_AgentContains_(str){if(str in BR_AgentContains_cache_){return BR_AgentContains_cache_[str]}return BR_AgentContains_cache_[str]=(navigator.userAgent.toLowerCase().indexOf(str)!=-1)}var BR_AgentContains_cache_={};function BR_IsIE(){return BR_AgentContains_("msie")&&!window.opera}function BR_IsKonqueror(){return BR_AgentContains_("konqueror")}function BR_IsSafari(){return BR_AgentContains_("safari")||BR_IsKonqueror()}function BR_IsNav(){return !BR_IsIE()&&!BR_IsSafari()&&BR_AgentContains_("mozilla")}function BR_IsWin(){return BR_AgentContains_("win")}function BR_IsMac(){return BR_AgentContains_("macintosh")||BR_AgentContains_("mac_powerpc")}function BR_IsLinux(){return BR_AgentContains_("linux")}var BACKSPACE_KEYCODE=8;var COMMA_KEYCODE=188;var DEBUG_KEYCODE=68;var DELETE_KEYCODE=46;var DOWN_KEYCODE=40;var ENTER_KEYCODE=13;var ESC_KEYCODE=27;var LEFT_KEYCODE=37;var RIGHT_KEYCODE=39;var SPACE_KEYCODE=32;var TAB_KEYCODE=9;var UP_KEYCODE=38;var SHIFT_KEYCODE=16;var PAGE_DOWN_KEYCODE=34;var PAGE_UP_KEYCODE=33;function GetSemicolonKeyCode(){return BR_IsIE()?186:59}var MAX_EMAIL_ADDRESS_LENGTH=320;var MAX_SIGNATURE_LENGTH=1000;function raise(msg){if(typeof Error!="undefined"){throw new Error(msg||"Assertion Failed")}else{throw (msg)}}function Fail(opt_msg){opt_msg=opt_msg||"Assertion failed";if(IsDefined(DumpError)){DumpError(opt_msg+"\n")}raise(opt_msg)}function AssertTrue(expression,opt_msg){if(!expression){opt_msg=opt_msg||"Assertion failed";Fail(opt_msg)}}function AssertEquals(val1,val2,opt_msg){if(val1!=val2){opt_msg=opt_msg||"AssertEquals failed: <"+val1+"> != <"+val2+">";Fail(opt_msg)}}function AssertType(value,type,opt_msg){if(typeof value==type){return}if(value||value==""){try{if(type==AssertTypeMap[typeof value]||value instanceof type){return}}catch(e){}}var makeMsg=opt_msg===undefined;if(makeMsg){if(typeof type=="function"){var match=type.toString().match(/^\s*function\s+([^\s\{]+)/);if(match){type=match[1]}}opt_msg="AssertType failed: <"+value+"> not typeof "+type}Fail(opt_msg)}var AssertTypeMap={"string":String,"number":Number,"boolean":Boolean};function AssertNumArgs(num,opt_msg){var caller=AssertNumArgs.caller;if(caller&&caller.arguments.length!=num){opt_msg=opt_msg||caller.name+" expected "+num+" arguments "+" but received "+caller.arguments.length;Fail(opt_msg)}}var ILLEGAL_COOKIE_CHARS_RE=/[\s;]/;function SetCookie(name,value,opt_max_age,opt_path,opt_domain){value=""+value;AssertTrue((typeof name=="string"&&typeof value=="string"&&!name.match(ILLEGAL_COOKIE_CHARS_RE)&&!value.match(ILLEGAL_COOKIE_CHARS_RE)),"trying to set an invalid cookie");if(!IsDefined(opt_max_age)){opt_max_age=-1}if(!IsDefined(opt_path)){opt_path="/"}if(!IsDefined(opt_domain)){opt_domain=null}var domain_str=(opt_domain==null)?"":";domain="+opt_domain;var path_str=(opt_path==null)?"":";path="+opt_path;var expires_str;if(opt_max_age<0){expires_str=""}else{if(opt_max_age==0){var pastDate=new Date(1970,1,1);expires_str=";expires="+pastDate.toUTCString()}else{var futureDate=new Date(Now()+opt_max_age*1000);expires_str=";expires="+futureDate.toUTCString()}}document.cookie=name+"="+value+domain_str+path_str+expires_str}var EXPIRED_COOKIE_VALUE="EXPIRED";function ExpireCookie(name,opt_path,opt_domain){SetCookie(name,EXPIRED_COOKIE_VALUE,0,opt_path,opt_domain)}function GetCookie(name){var nameeq=name+"=";var cookie=String(document.cookie);for(var pos=-1;(pos=cookie.indexOf(nameeq,pos+1))>=0;){var i=pos;while(--i>=0){var ch=cookie.charAt(i);if(ch==";"){i=-1;break}else{if(" \t".indexOf(ch)<0){break}}}if(-1===i){var end=cookie.indexOf(";",pos);if(end<0){end=cookie.length}return cookie.substring(pos+nameeq.length,end)}}return""}function Now(){return(new Date()).getTime()}function MaybeGetElement(win,id){return win.document.getElementById(id)}function GetElement(win,id){var el=win.document.getElementById(id);if(!el){DumpError("Element "+id+" not found.")}return el}function GetElements(win,id){return win.document.getElementsByName(id)}function GetParentNode(n){try{return n.parentNode
}catch(e){return n}}function IsDescendant(parent,child){do{if(parent===child){return true}child=GetParentNode(child)}while(child&&child!==document.body);return false}function GetAttribute(node,attribute){if(!node.getAttribute){return null}var attr=node.getAttribute(attribute);if(BR_IsIE()&&attribute=="style"){return attr.value}else{return attr}}function SetInnerHTML(win,id,html){try{GetElement(win,id).innerHTML=html}catch(ex){DumpException(ex)}}function GetInnerHTML(win,id){try{return GetElement(win,id).innerHTML}catch(ex){DumpException(ex);return""}}function ClearInnerHTML(win,id){try{GetElement(win,id).innerHTML=""}catch(ex){DumpException(ex)}}function SetCssStyle(win,id,name,value){try{var elem=GetElement(win,id);elem.style[name]=value}catch(ex){DumpException(ex)}}function GetStyleProperty(style,name){var i=style.indexOf(name);if(i!=-1){var j=style.indexOf(";",i);if(j==-1){j=style.length}return CollapseWhitespace(style.substring(i+name.length+1,j))}return null}function GetCellIndex(cell){if(cell.cellIndex){return cell.cellIndex}else{if(cell.parentNode){return FindInArray(cell.parentNode.cells,cell)}else{return null}}}function ShowElement(el,show){el.style.display=show?"":"none"}function ShowBlockElement(el,show){el.style.display=show?"block":"none"}function ShowInlineElement(el,show){el.style.display=show?"inline":"none"}function SetButtonText(button,text){button.childNodes[0].nodeValue=text}function AppendNewElement(win,parent,tag){var e=win.document.createElement(tag);parent.appendChild(e);return e}function FindChildWithID(parent,id){var el;for(el=parent.firstChild;el&&el.id!=id;el=el.nextSibling){}return el}function AddMenuDisabledOption(win,menu,html){var op=AppendNewElement(win,menu,"OPTION");op.disabled=true;op.innerHTML=html;return op}function AddMenuOption(win,menu,value,html){var op=AppendNewElement(win,menu,"OPTION");op.value=value;op.innerHTML=html;return op}function CreateDIV(win,id){var div=MaybeGetElement(win,id);if(!div){div=AppendNewElement(win,win.document.body,"div");div.id=id}return div}function CreateIFRAME(win,id,url){var iframe=MaybeGetElement(win,id);if(!iframe){var div=AppendNewElement(win,win.document.body,"div");div.innerHTML="<iframe id="+id+" name="+id+" src="+url+"></iframe>";iframe=GetElement(win,id)}return iframe}function Tr(win,tds){var tr=win.document.createElement("TR");for(var i=0;i<tds.length;i++){tr.appendChild(tds[i])}return tr}function Td(win,opt_colspan){var td=win.document.createElement("TD");if(opt_colspan){td.colSpan=opt_colspan}return td}function HasClass(el,cl){if(el==null||el.className==null){return false}if(el.className==cl){return true}var classes=el.className.split(" ");for(var i=0;i<classes.length;i++){if(classes[i]==cl){return true}}return false}function AddClass(el,cl){if(HasClass(el,cl)){return}el.className+=" "+cl}function RemoveClass(el,cl){if(el.className==null){return}if(el.className==cl){el.className="";return}var classes=el.className.split(" ");var result=[];var changed=false;for(var i=0;i<classes.length;i++){if(classes[i]!=cl){if(classes[i]){result.push(classes[i])}}else{changed=true}}if(changed){el.className=result.join(" ")}}function GetElementsBySelector(root,selector){var nodes=[];for(var child=root.firstChild;child;child=child.nextSibling){AddElementBySelector_(child,selector,nodes)}return nodes}function AddElementBySelector_(root,selector,nodes){if(selector.select(root)){nodes.push(root)}for(var child=root.firstChild;child;child=child.nextSibling){AddElementBySelector_(child,selector,nodes)}}function GetPageOffsetLeft(el){var x=el.offsetLeft;if(el.offsetParent!=null){x+=GetPageOffsetLeft(el.offsetParent)}return x}function GetPageOffsetTop(el){var y=el.offsetTop;if(el.offsetParent!=null){y+=GetPageOffsetTop(el.offsetParent)}return y}function GetPageOffset(el){var x=el.offsetLeft;var y=el.offsetTop;if(el.offsetParent!=null){var pos=GetPageOffset(el.offsetParent);x+=pos.x;y+=pos.y}return{x:x,y:y}}function GetPageOffsetRight(el){return GetPageOffsetLeft(el)+el.offsetWidth
}function GetPageOffsetBottom(el){return GetPageOffsetTop(el)+el.offsetHeight}function GetScrollTop(win){return GetWindowPropertyByBrowser_(win,getScrollTopGetters_)}var getScrollTopGetters_={ieQuirks_:function(win){return win.document.body.scrollTop},ieStandards_:function(win){return win.document.documentElement.scrollTop},dom_:function(win){return win.pageYOffset}};function GetScrollLeft(win){return GetWindowPropertyByBrowser_(win,getScrollLeftGetters_)}var getScrollLeftGetters_={ieQuirks_:function(win){return win.document.body.scrollLeft},ieStandards_:function(win){return win.document.documentElement.scrollLeft},dom_:function(win){return win.pageXOffset}};function IsScrollAtEnd(win,opt_isHoriz){var total=(opt_isHoriz)?document.body.offsetWidth:document.body.offsetHeight;var inner=(opt_isHoriz)?GetWindowWidth(win):GetWindowHeight(win);var offset=(opt_isHoriz)?GetScrollLeft(win):GetScrollTop(win);return(inner+offset>=total||total<inner)}function ScrollTo(win,el,position){var y=GetPageOffsetTop(el);y-=GetWindowHeight(win)*position;win.scrollTo(0,y)}var ALIGN_BOTTOM="b";var ALIGN_MIDDLE="m";var ALIGN_TOP="t";function ScrollIntoView(win,el,alignment){var el_top=GetPageOffsetTop(el);var el_bottom=el_top+el.offsetHeight;var win_top=GetScrollTop(win);var win_height=GetWindowHeight(win);var win_bottom=win_top+win_height;if(el_top<win_top||el_bottom>win_bottom){var scrollto_y;if(alignment==ALIGN_BOTTOM){scrollto_y=el_bottom-win_height+5}else{if(alignment==ALIGN_MIDDLE){scrollto_y=(el_top+el_bottom)/2-win_height/2}else{scrollto_y=el_top-5}}win.scrollTo(0,scrollto_y)}}function IsElementVisible(win,id){var el=MaybeGetElement(win,id);if(el==null){return false}var el_top=GetPageOffsetTop(el);var el_bottom=el_top+el.offsetHeight;var win_top=GetScrollTop(win);var win_bottom=win_top+GetWindowHeight(win);if(el_top>=win_top&&el_bottom<=win_bottom){return true}return false}function GetWindowWidth(win){return GetWindowPropertyByBrowser_(win,getWindowWidthGetters_)}var getWindowWidthGetters_={ieQuirks_:function(win){return win.document.body.clientWidth},ieStandards_:function(win){return win.document.documentElement.clientWidth},dom_:function(win){return win.innerWidth}};function GetWindowHeight(win){return GetWindowPropertyByBrowser_(win,getWindowHeightGetters_)}var getWindowHeightGetters_={ieQuirks_:function(win){return win.document.body.clientHeight},ieStandards_:function(win){return win.document.documentElement.clientHeight},dom_:function(win){return win.innerHeight}};function GetWindowPropertyByBrowser_(win,getters){try{if(BR_IsSafari()){return getters.dom_(win)}else{if(!window.opera&&"compatMode" in win.document&&win.document.compatMode=="CSS1Compat"){return getters.ieStandards_(win)}else{if(BR_IsIE()){return getters.ieQuirks_(win)}}}}catch(e){}return getters.dom_(win)}function GetAvailScreenWidth(win){return win.screen.availWidth}function GetAvailScreenHeight(win){return win.screen.availHeight}function GetNiceWindowHeight(win){return Math.floor(0.8*GetAvailScreenHeight(win))}function GetCenteringLeft(win,width){return(win.screen.availWidth-width)>>1}function GetCenteringTop(win,height){return(win.screen.availHeight-height)>>1}function Popup(url,opt_name,opt_width,opt_height,opt_center,opt_hide_scrollbars,opt_noresize,opt_blocked_msg){if(!opt_height){opt_height=Math.floor(GetWindowHeight(window.top)*0.8)}if(!opt_width){opt_width=Math.min(GetAvailScreenWidth(window),opt_height)}var features="resizable="+(opt_noresize?"no":"yes")+","+"scrollbars="+(opt_hide_scrollbars?"no":"yes")+","+"width="+opt_width+",height="+opt_height;if(opt_center){features+=",left="+GetCenteringLeft(window,opt_width)+","+"top="+GetCenteringTop(window,opt_height)}return OpenWindow(window,url,opt_name,features,opt_blocked_msg)}function OpenWindow(win,url,opt_name,opt_features,opt_blocked_msg){var newwin=OpenWindowHelper(top,url,opt_name,opt_features);if(!newwin||newwin.closed||!newwin.focus){newwin=OpenWindowHelper(win,url,opt_name,opt_features)}if(!newwin||newwin.closed||!newwin.focus){if(opt_blocked_msg){alert(opt_blocked_msg)
}}else{newwin.focus()}return newwin}function OpenWindowHelper(win,url,name,features){var newwin;if(features){newwin=win.open(url,name,features)}else{if(name){newwin=win.open(url,name)}else{newwin=win.open(url)}}return newwin}function MaybeEscape(str,escape){return escape?HtmlEscape(str):str}var windata=[];function GetWindowData(win){var data=windata[win.name];if(!data){windata[win.name]=data=[]}return data}function ClearWindowData(win_name){if(windata[win_name]){windata[win_name]=null}}var amp_re_=/&/g;var lt_re_=/</g;var gt_re_=/>/g;function HtmlEscape(str){if(!str){return""}return str.replace(amp_re_,"&amp;").replace(lt_re_,"&lt;").replace(gt_re_,"&gt;").replace(quote_re_,"&quot;")}function HtmlUnescape(str){if(!str){return""}return str.replace(/&#(\d+);/g,function(_,n){return String.fromCharCode(parseInt(n,10))}).replace(/&#x([a-f0-9]+);/gi,function(_,n){return String.fromCharCode(parseInt(n,16))}).replace(/&(\w+);/g,function(_,entity){entity=entity.toLowerCase();return entity in HtmlUnescape_unesc_?HtmlUnescape_unesc_[entity]:"?"})}var HtmlUnescape_unesc_={lt:"<",gt:">",quot:'"',nbsp:" ",amp:"&",apos:"'"};var dbsp_re_=/  /g;var ret_re_=/\r/g;var nl_re_=/\n/g;function HtmlWhitespaceEscape(str){str=HtmlEscape(str);str=str.replace(dbsp_re_,"&nbsp;&nbsp;");str=str.replace(ret_re_,"");str=str.replace(nl_re_,"<br>");return str}var quote_re_=/\"/g;function QuoteEscape(str){return HtmlEscape(str).replace(quote_re_,"&quot;")}var JS_SPECIAL_RE_=/[\'\\\r\n\b\"<>&\u0085\u2028\u2029]/g;function JSEscOne_(s){return JSEscOne_.js_escs_[s]}function ToJSString(s){if(!JSEscOne_.js_escs_){var escapes={};escapes["\\"]="\\\\";escapes["'"]="\\047";escapes["\b"]="\\b";escapes['"']="\\042";escapes["<"]="\\074";escapes[">"]="\\076";escapes["&"]="\\046";escapes["\n"]="\\n";escapes["\r"]="\\r";escapes["\u0085"]="\\205";escapes["\u2028"]="\\u2028";escapes["\u2029"]="\\u2029";JSEscOne_.js_escs_=escapes}return"'"+s.toString().replace(JS_SPECIAL_RE_,JSEscOne_)+"'"}var spc_re_=/\s+/g;var beg_spc_re_=/^ /;var end_spc_re_=/ $/;function CollapseWhitespace(str){if(!str){return""}return str.replace(spc_re_," ").replace(beg_spc_re_,"").replace(end_spc_re_,"")}var newline_re_=/\r?\n/g;var spctab_re_=/[ \t]+/g;var nbsp_re_=/\xa0/g;function StripNewlines(str){if(!str){return""}return str.replace(newline_re_," ")}function CanonicalizeNewlines(str){if(!str){return""}return str.replace(newline_re_,"\n")}function HtmlifyNewlines(str){if(!str){return""}return str.replace(newline_re_,"<br>")}function NormalizeSpaces(str){if(!str){return""}return str.replace(spctab_re_," ").replace(nbsp_re_," ")}function UrlEncode(str){return encodeURIComponent(str)}var plus_re_=/\+/g;function UrlDecode(str){return decodeURIComponent(str.replace(plus_re_," "))}function Trim(str){if(!str){return""}return str.replace(/^\s+/,"").replace(/\s+$/,"")}function EndsWith(str,suffix){if(!str){return !suffix}return(str.lastIndexOf(suffix)==(str.length-suffix.length))}function IsEmpty(str){return CollapseWhitespace(str)==""}function IsLetterOrDigit(ch){return((ch>="a"&&ch<="z")||(ch>="A"&&ch<="Z")||(ch>="0"&&ch<="9"))}function IsSpace(ch){return(" \t\r\n".indexOf(ch)>=0)}var eol_re_=/\r\n?/g;var trailingspc_re_=/[\n\t ]+$/;function NormalizeText(str){return str.replace(eol_re_,"\n").replace(trailingspc_re_,"")}function HtmlEscapeInsertWbrs(str,n,chars_to_break_after,chars_to_break_before){AssertNumArgs(4);var out="";var strpos=0;var spc=0;for(var i=1;i<str.length;++i){var prev_char=str.charAt(i-1);var next_char=str.charAt(i);if(IsSpace(next_char)){spc=i}else{if(i-spc==n||chars_to_break_after.indexOf(prev_char)!=-1||chars_to_break_before.indexOf(next_char)!=-1){out+=HtmlEscape(str.substring(strpos,i))+"<wbr>";strpos=i;spc=i}}}out+=HtmlEscape(str.substr(strpos));return out}var illegal_chars_re_=/[ \/(){}&|\\\"\000]/g;function CanonicalizeLabel(str,lowercase){var uppercase=str.replace(illegal_chars_re_,"-");return lowercase?uppercase.toLowerCase():uppercase}function CompareStringsIgnoreCase(s1,s2){s1=s1.toLowerCase();
s2=s2.toLowerCase();if(s1<s2){return -1}else{if(s1==s2){return 0}else{return 1}}}function GetCursorPos(win,textfield){try{if(IsDefined(textfield.selectionEnd)){return textfield.selectionEnd}else{if(win.document.selection&&win.document.selection.createRange){var tr=win.document.selection.createRange();if(tr.parentElement()!=textfield){return -1}var tr2=tr.duplicate();tr2.moveToElementText(textfield);tr2.setEndPoint("EndToStart",tr);var cursor=tr2.text.length;if(cursor>textfield.value.length){return -1}return cursor}else{Debug("Unable to get cursor position for: "+navigator.userAgent);return textfield.value.length}}}catch(e){DumpException(e,"Cannot get cursor pos")}return -1}function SetCursorPos(win,textfield,pos){if(IsDefined(textfield.selectionEnd)&&IsDefined(textfield.selectionStart)){textfield.selectionStart=pos;textfield.selectionEnd=pos}else{if(win.document.selection&&textfield.createTextRange){var sel=textfield.createTextRange();sel.collapse(true);sel.move("character",pos);sel.select()}}}function FindInArray(array,x){for(var i=0;i<array.length;i++){if(array[i]==x){return i}}return -1}function InsertArray(array,x){if(FindInArray(array,x)==-1){array[array.length]=x}}function DeleteArrayElement(array,x){var i=0;while(i<array.length&&array[i]!=x){i++}array.splice(i,1)}function CopyArray(array){var copy=[];for(var i=0;i<array.length;i++){copy[i]=array[i]}return copy}function CloneObject(x){if((typeof x)=="object"){var y=[];for(var i in x){y[i]=CloneObject(x[i])}return y}return x}function CloneEvent(ev){var clone={};clone.clientX=ev.clientX;clone.clientY=ev.clientY;clone.pageX=ev.pageX;clone.pageY=ev.pageY;clone.type=ev.type;clone.srcElement=ev.srcElement;clone.target=ev.target;clone.cancelBubble=ev.cancelBubble;clone.explicitOriginalTarget=ev.explicitOriginalTarget;clone.button=ev.button;clone.shiftKey=ev.shiftKey;clone.ctrlKey=ev.ctrlKey;return clone}function GetEventTarget(ev){return ev.srcElement||ev.target}function CancelEvent(ev){if(BR_IsIE()){ev.cancelBubble=true}else{if(ev.stopPropagation){ev.stopPropagation()}}}function CancelDefaultAction(ev){if(BR_IsIE()){ev.returnValue=false}else{ev.preventDefault()}}function PrintArray(array,data){AssertEquals(array.length,data.length*2+1);for(var i=0,idx=1;i<data.length;i++,idx+=2){array[idx]=data[i]}return array.join("")}function ImageHtml(url,attributes){return"<img "+attributes+" src="+url+">"}function MakeId3(idprefix,m,n){return idprefix+m+"_"+n}function ParseAddress(addr){var name="";var address="";for(var i=0;i<addr.length;){var token=GetEmailToken(addr,i);if(token.charAt(0)=="<"){var end=token.indexOf(">");address=token.substring(1,(end!=-1)?end:token.length)}else{if(address==""){name+=token}}i+=token.length}if(address==""&&name.indexOf("@")!=-1){address=name;name=""}name=CollapseWhitespace(name);name=StripQuotes(name,"'");name=StripQuotes(name,'"');address=CollapseWhitespace(address);return[name,address]}function GetAddress(address){return ParseAddress(address)[1]}function GetAddressUsername(address){address=GetAddress(address);var at=address.indexOf("@");return(at==-1)?address:address.substr(0,at)}function GetPersonal(address){return ParseAddress(address)[0]}function GetPersonalElseUsername(address){var personal=GetPersonal(address);if(personal!=""){return personal}else{return GetAddressUsername(address)}}function StripQuotes(str,quotechar){var len=str.length;if(str.charAt(0)==quotechar&&str.charAt(len-1)==quotechar){return str.substring(1,len-1)}return str}function EmailsToArray(str){var result=[];var email="";var token;for(var i=0;i<str.length;){token=GetEmailToken(str,i);if(token==","){AddEmailAddress(result,email);email="";i++;continue}email+=token;i+=token.length}if(email!=""||token==","){AddEmailAddress(result,email)}return result}var openers_='"<([';var closers_='">)]';function GetEmailToken(str,pos){var ch=str.charAt(pos);var p=openers_.indexOf(ch);if(p==-1){return ch}var end_pos=str.indexOf(closers_.charAt(p),pos+1);var token=(end_pos>=0)?str.substring(pos,end_pos+1):str.substr(pos);
return token}function AddEmailAddress(result,email){email=CleanEmailAddress(email);result[result.length]=email}var specialchars_re_=/[()<>@,;:\\\".\[\]]/;function CleanEmailAddress(str){var name_address=ParseAddress(str);var name=name_address[0];var address=name_address[1];if(name.indexOf('"')==-1){var quote_needed=specialchars_re_.test(name);if(quote_needed){name='"'+name+'"'}}if(name==""){return address}else{if(address==""){return name}else{return name+" <"+address+">"}}}function SafeTimeout(win,fn,ms){if(!win){win=window}if(!win._tm){win._tm=[]}var timeoutfn=SafeTimeoutFunction_(win,fn);var id=win.setTimeout(timeoutfn,ms);timeoutfn.id=id;win._tm[id]=1;return id}function SafeTimeoutFunction_(win,fn){var timeoutfn=function(){try{fn(win);var t=win._tm;if(t){delete t[timeoutfn.id]}}catch(e){DumpException(e)}};return timeoutfn}function CancelTimeout(win,id){if(!win){win=window}win.clearTimeout(id);if(win._tm){delete win._tm[id]}}function CancelAllTimeouts(win){if(win&&win._tm){try{for(var i in win._tm){win.clearTimeout(i)}win._tm=[]}catch(e){DumpException(e)}}}function CompareID(a,b){if(a.length!=b.length){return(a.length-b.length)}else{return(a<b)?-1:(a>b)?1:0}}function IsDefined(value){return(typeof value)!="undefined"}function GetKeyCode(event){var code;if(event.keyCode){code=event.keyCode}else{if(event.which){code=event.which}}return code}function forid_1(id){return document.getElementById(id)}function forid_2(id){return document.all[id]}var forid=document.getElementById?forid_1:forid_2;function GetFnName(func){AssertTrue(func,"func passed to GetFnName() is undefined");var name;if(!("name" in func)){var match=/\W*function\s+([\w\$]+)\(/.exec(func);if(!match){throw new Error("Cannot extract name from function: "+func)}name=match[1];func.name=name}else{name=func.name}if(!name||name=="anonymous"){throw new Error("Anonymous function has no name: "+func)}return func.name}function log(msg){try{if(window.parent!=window&&window.parent.log){window.parent.log(window.name+"::"+msg);return}}catch(e){}var logPane=forid("log");if(logPane){var logText="<p class=logentry><span class=logdate>"+new Date()+"</span><span class=logmsg>"+msg+"</span></p>";logPane.innerHTML=logText+logPane.innerHTML}else{window.status=msg}};
