//
//  iweb - iwebsite.js
//  copyright (c) 2007 apple inc. all rights reserved.
//
//
//  this file includes a copy of the prototype javascript framework:
//
//  prototype javascript framework, version 1.5.0
//  (c) 2005-2007 sam stephenson
//
//  prototype is freely distributable under the terms of an mit-style license.
//  for details, see the prototype web site: http://prototype.conio.net/

var windowsinternetexplorer=false;var isgecko=false;var ismozilla=false;var isfirefox=false;var iscamino=false;var issafari=false;var isns=false;var iswebkit=false;var isopera=false;var isiphone=false;var isearlywebkitversion=false;var browserdetected=false;var listofie7floatsfix=[];function detectbrowser()
{if(browserdetected===false)
{windowsinternetexplorer=false;var appversion=navigator.appversion;if((appversion.indexof("msie")!=-1)&&(appversion.indexof("macintosh")==-1))
{var temp=appversion.split("msie");browserversion=parsefloat(temp[1]);windowsinternetexplorer=true;if(typeof(node)=="undefined")
{node={};node.element_node=1;node.attribute_node=2;node.text_node=3;node.cdata_section_node=4;node.entity_reference_node=5;node.entity_node=6;node.processing_instruction_node=7;node.comment_node=8;}}
else
{var ua=navigator.useragent.tolowercase();isgecko=(ua.indexof('gecko')!=-1);ismozilla=(this.isgecko&&ua.indexof("gecko/")+14==ua.length);isfirefox=(this.isgecko&&ua.indexof("firefox")!=-1);iscamino=(this.isgecko&&ua.indexof("camino")!=-1);issafari=(this.isgecko&&ua.indexof("safari")!=-1);isns=((this.isgecko)?(ua.indexof('netscape')!=-1):((ua.indexof('mozilla')!=-1)&&(ua.indexof('spoofer')==-1)&&(ua.indexof('compatible')==-1)&&(ua.indexof('opera')==-1)&&(ua.indexof('webtv')==-1)&&(ua.indexof('hotjava')==-1)));isopera=!!window.opera;var matchresult=ua.match(/applewebkit\/(\d+)/);if(matchresult)
{isiphone=(ua.indexof("mobile/")!=-1);iswebkit=true;webkitversion=parseint(matchresult[1]);isearlywebkitversion=(webkitversion<522);}}
browserdetected=true;}}
function shouldapplycssbackgroundpngfix()
{detectbrowser();return(windowsinternetexplorer&&(browserversion<7));}
function photocasthelper(url)
{var feed=new iwurl(url);var iphotoversionmin=600;var iphotomimetypeplugin="application/photo";if(navigator.mimetypes&&navigator.mimetypes.length>0)
{var iphoto=navigator.mimetypes[iphotomimetypeplugin];if(iphoto)
{var description=iphoto.description;try
{var components=description.split(" ");if(components&&components.length>1)
{var pluginversion=components[1];if(pluginversion>=iphotoversionmin)
{feed.mprotocol="photo";}}}
catch(exception)
{}}}
window.location=feed.tourlstring();}
function loadcss(file)
{var cssnode=document.createelement('link');cssnode.setattribute('rel','stylesheet');cssnode.setattribute('type','text/css');cssnode.setattribute('href',file);document.getelementsbytagname('head')[0].appendchild(cssnode);}
function loadmozillacss(file)
{detectbrowser();if((ismozilla)||(isfirefox)||(iscamino))
{loadcss(file);}}
function utf8sequence(c)
{if(c<=0x0000007f)return[c];if(c<=0x000007ff)return[(0xc0|(c>>>6)),(0x80|(c&0x3f))];if(c<=0x0000ffff)return[(0xe0|(c>>>12)),(0x80|((c>>>6)&0x3f)),(0x80|(c&0x3f))];if(c<=0x001fffff)return[(0xf0|(c>>>18)),(0x80|((c>>>12)&0x3f)),(0x80|((c>>>6)&0x3f)),(0x80|(c&0x3f))];if(c<=0x03ffffff)return[(0xf8|(c>>>24)),(0x80|((c>>>18)&0x3f)),(0x80|((c>>>12)&0x3f)),(0x80|((c>>>6)&0x3f)),(0x80|(c&0x3f))];if(c<=0x7fffffff)return[(0xfc|(c>>>30)),(0x80|((c>>>24)&0x3f)),(0x80|((c>>>18)&0x3f)),(0x80|((c>>>12)&0x3f)),(0x80|((c>>>6)&0x3f)),(0x80|(c&0x3f))];return[];}
function utf8encode(s)
{var result=[];var firstsurrogate=0;for(var i=0;i<s.length;++i)
{var code=s.charcodeat(i);if(firstsurrogate!=0)
{if((code>=0xdc00)&&(code<=0xdfff))
{code=(firstsurrogate-0xd800)*0x400+(code-0xdc00)+0x10000;firstsurrogate=0;}}
else
{if((code<0xd800)||(code>0xdfff))
{}
else if((code>=0xd800)&&(code<0xdc00))
{firstsurrogate=code;continue;}
else
{continue;}}
result=result.concat(utf8sequence(code));}
var resultstring="";for(i=0;i<result.length;++i)
{resultstring+=string.fromcharcode(result[i]);}
return resultstring;}
function ielatin1munge(utf8string)
{var munged="";for(var i=0;i<utf8string.length;i++)
{var c=utf8string.charcodeat(i);switch(c){case 0x0080:c=0x20ac;break;case 0x0081:break;case 0x0082:c=0x201a;break;case 0x0083:c=0x0192;break;case 0x0084:c=0x201e;break;case 0x0085:c=0x2026;break;case 0x0086:c=0x2020;break;case 0x0087:c=0x2021;break;case 0x0088:c=0x02c6;break;case 0x0089:c=0x2030;break;case 0x008a:c=0x0160;break;case 0x008b:c=0x2039;break;case 0x008c:c=0x0152;break;case 0x008d:break;case 0x008e:c=0x017d;break;case 0x008f:break;case 0x0090:break;case 0x0091:c=0x2018;break;case 0x0092:c=0x2019;break;case 0x0093:c=0x201c;break;case 0x0094:c=0x201d;break;case 0x0095:c=0x2022;break;case 0x0096:c=0x2013;break;case 0x0097:c=0x2014;break;case 0x0098:c=0x02dc;break;case 0x0099:c=0x2122;break;case 0x009a:c=0x0161;break;case 0x009b:c=0x203a;break;case 0x009c:c=0x0153;break;case 0x009d:break;case 0x009e:c=0x017e;break;case 0x009f:c=0x0178;break;}
munged+=string.fromcharcode(c);}
return munged;}
function ieconverturlforpngfix(urlstring)
{var result=urlstring;detectbrowser();if(windowsinternetexplorer)
{var decoded=decodeuri(urlstring);if(decoded.match(/[^\x00-\x7f]/))
{result=ielatin1munge(utf8encode(decodeuri(urlstring)));}}
return result;}
function fixalliepngs(transparentgif)
{detectbrowser();if(windowsinternetexplorer)
{for(var i=0;i<document.images.length;++i)
{if(document.images[i].src.slice(-4).tolowercase()==".png")
{var img=$(document.images[i]);var fixpng=function(img)
{if(!img.originalsrc)
{if((img.style.width=="")&&(img.style.height==""))
{var width=img.width;var height=img.height;img.style.width=width+"px";img.style.height=height+"px";}
var filtername='progid:dximagetransform.microsoft.alphaimageloader';var filterparams='src="'+ieconverturlforpngfix(img.src)+'", sizingmethod="scale"';img.setfilter(filtername,filterparams);img.originalsrc=img.src;img.src=transparentgif;}};if(img.complete)
{fixpng(img);}
else
{img.onload=fixpng.bind(null,img);}}}}}
function topixels(value)
{var converted=0;var px_per_pt=window.screen.logicalxdpi?(window.screen.logicalxdpi/72.0):1.3333;if(value.indexof("px")>0)
{converted=parsefloat(value);}
else if(value.indexof("pt")>0)
{converted=px_per_pt*parsefloat(value);}
else if(value.indexof("in")>0)
{converted=72*px_per_pt*parsefloat(value);}
else if(value.indexof("pc")>0)
{converted=12*px_per_pt*parsefloat(value);}
else if(value.indexof("mm")>0)
{converted=2.83465*px_per_pt*parsefloat(value);}
else if(value.indexof("cm")>0)
{converted=28.3465*px_per_pt*parsefloat(value);}
return converted;}
function topixelsatelement(element,value,vertical)
{var converted=0;if(value.indexof("%")>0)
{var containersize=0;if(vertical)
{containersize=$(element.parentnode).getheight();}
else
{containersize=$(element.parentnode).getwidth();}
converted=containersize*parsefloat(value)/100.0;}
else if(value.indexof("em")>0)
{converted=parsefloat(value)*topixels(element.getstyle(element,'fontsize'));}
else
{converted=topixels(value);}
return converted;}
function backgroundpositiondimension(oblock,currentbgposition,blockdimension,imagedimension)
{var position=0;if(currentbgposition==='center')
{position=(blockdimension/2)-(imagedimension/2);}
else if((currentbgposition==='right')||(currentbgposition==='bottom'))
{position=blockdimension-imagedimension;}
else if((currentbgposition==='left')||(currentbgposition==='top'))
{position=0;}
else if(currentbgposition.indexof("px")>0)
{position=parsefloat(currentbgposition);}
else if(currentbgposition.indexof("em")>0)
{position=parsefloat(currentbgposition)*topixels(oblock.currentstyle.fontsize);}
else if(currentbgposition.indexof("%")>0)
{position=parsefloat(currentbgposition)*blockdimension/100.0;}
else if((currentbgposition.indexof("pt")>0)||(currentbgposition.indexof("in")>0)||(currentbgposition.indexof("pc")>0)||(currentbgposition.indexof("cm")>0)||(currentbgposition.indexof("mm")>0))
{position=topixels(currentbgposition);}
return position;}
function elementhascssbgpng(element)
{return(element.currentstyle&&element.currentstyle.backgroundimage&&(element.currentstyle.backgroundimage.indexof('url(')!=-1)&&(element.currentstyle.backgroundimage.indexof('.png")')!=-1));}
function fixupiepngbg(oblock)
{if(oblock)
{if(elementhascssbgpng(oblock))
{var currentbgimage=oblock.currentstyle.backgroundimage;var currentbgrepeat=oblock.currentstyle.backgroundrepeat;var currentbgpositionx=oblock.currentstyle.backgroundpositionx;var currentbgpositiony=oblock.currentstyle.backgroundpositiony;var urlstart=currentbgimage.indexof('url(');var urlend=currentbgimage.indexof(')',urlstart);var imageurl=currentbgimage.substring(urlstart+4,urlend);if(imageurl.charat(0)=='"')
{imageurl=imageurl.substring(1);}
if(imageurl.charat(imageurl.length-1)=='"')
{imageurl=imageurl.substring(0,imageurl.length-1);}
imageurl=ieconverturlforpngfix(imageurl);var overriderepeat=false;var filterstyle="progid:dximagetransform.microsoft.alphaimageloader(src='"+
imageurl+"', sizingmethod='crop');";if(regexp("/c[0-9a-f]{8}.png$").exec(imageurl)!==null)
{filterstyle="progid:dximagetransform.microsoft.alphaimageloader(src='"+
imageurl+"', sizingmethod='scale');";overriderepeat=true;}
var fixupiepngbg_helper=function(img)
{var tilewidth=img.width;var tileheight=img.height;var blockwidth=0;var blockheight=0;if(oblock.style.width)
{blockwidth=parseint(oblock.style.width,10);}
else
{blockwidth=oblock.offsetwidth;}
if(oblock.style.height)
{blockheight=parseint(oblock.style.height,10);}
else
{blockheight=oblock.offsetheight;}
var blockpaddingleft=parseint(oblock.style.paddingleft||0,10);if((blockwidth===0)||(blockheight===0))
{return;}
var wholerows=1;var wholecols=1;var extraheight=0;var extrawidth=0;if((currentbgrepeat.indexof("no-repeat")!=-1)||((tilewidth===0)&&(tileheight===0))||overriderepeat)
{tilewidth=blockwidth;tileheight=blockheight;}
else if((currentbgrepeat.indexof("repeat-x")!=-1)||(tileheight===0))
{wholecols=math.floor(blockwidth/tilewidth);extrawidth=blockwidth-(tilewidth*wholecols);tileheight=blockheight;}
else if(currentbgrepeat.indexof("repeat-y")!=-1)
{wholerows=math.floor(blockheight/tileheight);extraheight=blockheight-(tileheight*wholerows);tilewidth=blockwidth;}
else
{wholecols=math.floor(blockwidth/tilewidth);wholerows=math.floor(blockheight/tileheight);extrawidth=blockwidth-(tilewidth*wholecols);extraheight=blockheight-(tileheight*wholerows);}
var wrappedcontent=document.createelement("div");var pngbgfixiswrappedcontentempty=true;wrappedcontent.style.position="relative";wrappedcontent.style.zindex="1";wrappedcontent.style.left="0px";wrappedcontent.style.top="0px";wrappedcontent.style.background="transparent";if(!isnan(parseint(oblock.style.width,10)))
{wrappedcontent.style.width=""+blockwidth+"px";}
if(!isnan(parseint(oblock.style.height,10)))
{wrappedcontent.style.height=""+blockheight+"px";}
while(oblock.haschildnodes())
{if(oblock.firstchild.nodetype==3)
{if(regexp("^ *$").exec(oblock.firstchild.data)===null)
{pngbgfixiswrappedcontentempty=false;}}
else
{pngbgfixiswrappedcontentempty=false;}
wrappedcontent.appendchild(oblock.firstchild);}
if(pngbgfixiswrappedcontentempty)
{wrappedcontent.style.lineheight="0px";}
var bgpositionx=backgroundpositiondimension(oblock,currentbgpositionx,blockwidth,img.width);var bgpositiony=backgroundpositiondimension(oblock,currentbgpositiony,blockheight,img.height);bgpositionx-=blockpaddingleft;var newmarkup="";for(var currentrow=0;currentrow<wholerows;currentrow++)
{for(currentcol=0;currentcol<wholecols;currentcol++)
{newmarkup+="<div class='pngtile' style="+"\"position: absolute; line-height: 0px; "+"width: "+tilewidth+"px; "+"height: "+tileheight+"px; "+"left:"+(bgpositionx+(currentcol*tilewidth))+"px; "+"top:"+(bgpositiony+(currentrow*tileheight))+"px; "+"filter:"+filterstyle+"\" > </div>";}
if(extrawidth!==0)
{newmarkup+="<div class='pngtile' style="+"\"position: absolute; line-height: 0px; "+"width: "+extrawidth+"px; "+"height: "+tileheight+"px; "+"left:"+(bgpositionx+(currentcol*tilewidth))+"px; "+"top:"+(bgpositiony+(currentrow*tileheight))+"px; "+"filter:"+filterstyle+"\" > </div>";}}
if(extraheight!==0)
{for(currentcol=0;currentcol<wholecols;currentcol++)
{newmarkup+="<div class='pngtile' style="+"\"position: absolute; line-height: 0px; "+"width: "+tilewidth+"px; "+"height: "+extraheight+"px; "+"left:"+(bgpositionx+(currentcol*tilewidth))+"px; "+"top:"+(bgpositiony+(currentrow*tileheight))+"px; "+"filter:"+filterstyle+"\" > </div>";}
if(extrawidth!==0)
{newmarkup+="<div class='pngtile' style="+"\"position: absolute; line-height: 0px; "+"width: "+extrawidth+"px; "+"height: "+extraheight+"px; "+"left:"+(bgpositionx+(currentcol*tilewidth))+"px; "+"top:"+(bgpositiony+(currentrow*tileheight))+"px; "+"filter:"+filterstyle+"\" > </div>";}}
oblock.innerhtml=newmarkup;if(!pngbgfixiswrappedcontentempty)
{oblock.appendchild(wrappedcontent);}
oblock.style.background="";}
var backgroundimage=new image();backgroundimage.src=imageurl;if(backgroundimage.complete)
{fixupiepngbg_helper(backgroundimage);}
else
{backgroundimage.onload=fixupiepngbg_helper.bind(null,backgroundimage);}}}}
function fixupiepngbgsintree(oancestor,forceautofixup)
{if(shouldapplycssbackgroundpngfix())
{try
{var alldivs=$a(oancestor.getelementsbytagname('div'));if(isdiv(oancestor))
{alldivs.push(oancestor);}
alldivs.each(function(onode)
{if(!$(onode).hasclassname("noautopngfix")||forceautofixup)
{fixupiepngbg(onode);}});}
catch(e)
{}}}
function fixupalliepngbgs()
{settimeout(fixupiepngbgsintree.bind(null,document),1);}
function optoutofcssbackgroundpngfix(element)
{if(shouldapplycssbackgroundpngfix())
{var alldivs=$a(element.getelementsbytagname("div"));alldivs.each(function(item)
{if(elementhascssbgpng(item))
{$(item).addclassname("noautopngfix");}});}}
function fixupiecss3opacity(strelementid)
{detectbrowser();if(windowsinternetexplorer)
{var onode=$(strelementid);if(onode&&(onode.getstyle('opacity')<1))
{var opacity=onode.getstyle('opacity');onode.style.height=''+onode.offsetheight+'px';var targetnode=onode;if(onode.tagname.tolowercase()=='img')
{targetnode=$(document.createelement('div'));targetnode.style.position=onode.style.position;targetnode.style.top=onode.style.top;targetnode.style.left=onode.style.left;targetnode.style.width=onode.style.width;targetnode.style.height=onode.style.height;targetnode.style.opacity=onode.style.opacity;targetnode.style.zindex=onode.style.zindex;onode.style.left='0px';onode.style.top='0px';onode.style.opacity='';if(onode.parentnode.tagname.tolowercase()=='a')
{var anchor=onode.parentnode;anchor.parentnode.insertbefore(targetnode,anchor);targetnode.appendchild(anchor);}
else
{onode.parentnode.insertbefore(targetnode,onode);targetnode.appendchild(onode);}}
else if(onode.tagname.tolowercase()=='div')
{var bufferwidth=100;var onodewidth=onode.offsetwidth;var onodeheight=onode.offsetheight;extents=new iwextents(-bufferwidth,-bufferwidth,onodewidth+bufferwidth,onodeheight*2+bufferwidth);var positionstyleval=onode.getstyle("position");var floatstyleval=onode.getstyle("float");var positioned=((positionstyleval=="relative")||(positionstyleval=="absolute"));var absolutelypositioned=(positionstyleval=="absolute"&&(floatstyleval=="none"));targetnode=$(document.createelement('div'));var classstring=onode.classname;classstring=classstring.replace(/(shadow_\d+)/g,'');classstring=classstring.replace(/(stroke_\d+)/g,'');classstring=classstring.replace(/(reflection_\d+)/g,'');targetnode.classname=classstring;targetnode.style.position=positioned?positionstyleval:"relative";targetnode.style.stylefloat=floatstyleval;targetnode.style.clear=onode.getstyle("clear");targetnode.style.width=extents.right-extents.left+"px";targetnode.style.height=extents.bottom-extents.top+"px";targetnode.style.opacity=onode.style.opacity;targetnode.style.zindex=onode.style.zindex;if(absolutelypositioned)
{targetnode.style.top=(parsefloat(onode.getstyle("top"))||0)+extents.top+"px";targetnode.style.left=(parsefloat(onode.getstyle("left"))||0)+extents.left+"px";}
else
{targetnode.style.margintop=(parsefloat(onode.getstyle("margintop"))||0)+extents.top+"px";targetnode.style.marginleft=(parsefloat(onode.getstyle("marginleft"))||0)+extents.left+"px";targetnode.style.marginbottom=(parsefloat(onode.getstyle("marginbottom"))||0)-
(extents.bottom-onodeheight)+"px";targetnode.style.marginright=(parsefloat(onode.getstyle("marginright"))||0)-
(extents.right-onodewidth)+"px";}
onode.style.position="absolute";onode.style.stylefloat="none";onode.style.clear="none";onode.style.left=-extents.left+"px";onode.style.top=-extents.top+"px";onode.style.margin='0px';onode.style.verticalalign='baseline';onode.style.display='block';onode.style.opacity='';if(browserversion<7)
{onode.classname=onode.classname.replace(/(shadow_\d+)/g,'');}
onode.parentnode.insertbefore(targetnode,onode);targetnode.appendchild(onode);}
$(targetnode).setfilter('progid:dximagetransform.microsoft.basicimage','opacity='+opacity);}}}
function iwsetdivopacity(div,fraction,suppressfilterremoval)
{if(windowsinternetexplorer)
{if(fraction<.99||(suppressfilterremoval==true))
{$(div).setfilter('alpha','opacity='+fraction*100);}
else
{$(div).killfilter('alpha');}}
else
{div.style.opacity=fraction;}}
function impreload(path,name,areaindex)
{var rollovername=name+'_rollover_'+areaindex;var rolloverpath=path+'/'+rollovername+'.png';self[rollovername]=new image();self[rollovername].src=rolloverpath;var linkname=name+'_link_'+areaindex;var linkpath=path+'/'+linkname+'.png';self[linkname]=new image();self[linkname].src=linkpath;return true;}
function swapalphaimageloaderfiltersrc(img,src)
{var filtername='progid:dximagetransform.microsoft.alphaimageloader';var filterparams='src="'+ieconverturlforpngfix(src)+'", sizingmethod="scale"';img.setfilter(filtername,filterparams);img.originalsrc=img.src;}
function immouseover(name,areaindex)
{var rollovername=name+'_rollover_'+areaindex;var linkname=name+'_link_'+areaindex;var img=document.getelementbyid(linkname);if(img)
{detectbrowser();if(windowsinternetexplorer&&img.originalsrc)
{swapalphaimageloaderfiltersrc(img,self[rollovername].src);}
else
{img.src=self[rollovername].src;}}
return true;}
function immouseout(name,areaindex)
{var linkname=name+'_link_'+areaindex;var img=document.getelementbyid(linkname);if(img)
{detectbrowser();if(windowsinternetexplorer&&img.originalsrc)
{swapalphaimageloaderfiltersrc(img,self[linkname].src);}
else
{img.src=self[linkname].src;}}
return true;}
var quicktimeavailable=false;var quicktimeversion702=false;var isquicktimedetectioninitialized=false;var minversionnum=0x7028000;var minversionarray=['7','0','2'];function initializequicktimedetection()
{if((navigator.plugins!==null)&&(navigator.plugins.length>0))
{for(i=0;i<navigator.plugins.length;i++)
{var plugin=navigator.plugins[i];if(plugin.name.tolowercase().indexof('quicktime plug-in ')!=-1)
{quicktimeavailable=true;quicktimeversionstring=plugin.name.substring(18);var qtversionarray=quicktimeversionstring.split('.');for(j=0;j<minversionarray.length&&j<qtversionarray.length;j++)
{var qtversioncomponent=qtversionarray[j];var minversioncomponent=minversionarray[j];if((qtversioncomponent>minversioncomponent)||((qtversioncomponent==minversioncomponent)&&(j==minversionarray.length-1)))
{quicktimeversion702=true;break;}
else if(qtversioncomponent<minversioncomponent)
{break;}}
break;}}}
else if(window.activexobject)
{try
{quicktimeobj=new activexobject('quicktimecheckobject.quicktimecheck.1');if(quicktimeobj!==null)
{quicktimeavailable=true;quicktimeversionnum=quicktimeobj.quicktimeversion;if(quicktimeversionnum>=minversionnum)
{quicktimeversion702=true;}}}
catch(e)
{}}
isquictimedetectioninitialized=true;}
function fixuppodcast(mediaid,anchorid)
{if(!isquicktimedetectioninitialized)
{initializequicktimedetection();}
if(!quicktimeversion702)
{var omediaelem=document.getelementbyid(mediaid);var oanchorelem=document.getelementbyid(anchorid);if(omediaelem&&oanchorelem)
{oanchorelem.style.display='inline';omediaelem.parentnode.removechild(omediaelem);}}}
function alllistbulletimagescontainedby(node)
{var result=[];for(var i=0;i<node.childnodes.length;++i)
{var child=node.childnodes[i];if((child.nodename=="img")&&((node.nodename=="span")||(node.nodename=="a"))&&(node.parentnode!=null)&&(node.parentnode.nodename=="p")&&(node.parentnode.parentnode!=null)&&(node.parentnode.parentnode.nodename=="li"))
{result=result.concat([child]);}
result=result.concat(alllistbulletimagescontainedby(child));}
return result;}
function hidealllistbulletimagescontainedby(node)
{var images=alllistbulletimagescontainedby(node);for(var i=0;((images!=null)&&(i<images.length));++i)
{images[i].style.display="none";}}
function showalllistbulletimagescontainedby(node)
{var images=alllistbulletimagescontainedby(node);for(var i=0;((images!=null)&&(i<images.length));++i)
{images[i].style.display="";}}
function getchildoftype(oparent,snodename,requestedindex)
{var childrenoftype=oparent.getelementsbytagname(snodename);return(requestedindex<childrenoftype.length)?childrenoftype.item(requestedindex):null;}
function isdescendantinsidefixedheightdescendantofancestor(odescendant,oancestor)
{if(odescendant===oancestor||odescendant==null)
{return false;}
else if(parsefloat(odescendant.style.height)>0)
{return true;}
else
{return isdescendantinsidefixedheightdescendantofancestor(odescendant.parentnode,oancestor);}}
function getshrinkableparadescendants(oancestor)
{var oparadescendants=[];var opotentialparagraphs=oancestor.getelementsbytagname('div');for(var iindex=0;iindex<opotentialparagraphs.length;iindex++)
{var onode=opotentialparagraphs.item(iindex);if(onode.classname.lastindexof('paragraph')!=-1)
{if(isdescendantinsidefixedheightdescendantofancestor(onode,oancestor))
{continue;}
oparadescendants.push(onode);}}
var opotentialparagraphs=oancestor.getelementsbytagname('p');for(var iindex=0;iindex<opotentialparagraphs.length;iindex++)
{var onode=opotentialparagraphs.item(iindex);if(isdescendantinsidefixedheightdescendantofancestor(onode,oancestor))
{continue;}
oparadescendants.push(onode);}
return oparadescendants;}
var minimum_font="10";var units="";function elementfontsize(element)
{var fontsize=minimum_font;if(document.defaultview)
{var computedstyle=document.defaultview.getcomputedstyle(element,null);if(computedstyle)
{fontsize=computedstyle.getpropertyvalue("font-size");}}
else if(element.currentstyle)
{fontsize=element.currentstyle.fontsize;}
if((units.length===0)&&(fontsize!=minimum_font))
{units=fontsize.substring(fontsize.length-2,fontsize.length);}
return parsefloat(fontsize);}
function isexceptiontoonelinerule(element)
{return($(element).hasclassname("header"))}
var height_error_margin=2;function adjustfontsizeiftoobig(idofelement)
{var oparagraphdiv;var ospan;var otextboxinnerdiv;var otextboxouterdiv=document.getelementbyid(idofelement);if(otextboxouterdiv)
{otextboxinnerdiv=getelementsbytagandclassname(otextboxouterdiv,"div","text-content")[0];if(otextboxinnerdiv)
{hidealllistbulletimagescontainedby(otextboxinnerdiv);var offsetheight=otextboxinnerdiv.offsetheight;var specifiedheight=offsetheight;if(otextboxouterdiv.style.height!=="")
{specifiedheight=parsefloat(otextboxouterdiv.style.height);}
if(offsetheight>(specifiedheight+height_error_margin))
{var smallestfontsize=200;var aparachildren=getshrinkableparadescendants(otextboxinnerdiv);var oneline=false;var exceptiontoonelinerule=false;for(i=0;i<aparachildren.length;i++)
{oparagraphdiv=aparachildren[i];var lineheight=elementlineheight(oparagraphdiv);if(!isnan(lineheight))
{oneline=oneline||(lineheight*1.5>=specifiedheight);exceptiontoonelinerule=oneline&&isexceptiontoonelinerule(oparagraphdiv);}
var fontsize=elementfontsize(oparagraphdiv);if(!isnan(fontsize))
{smallestfontsize=math.min(smallestfontsize,fontsize);}
for(j=0;j<oparagraphdiv.childnodes.length;j++)
{ospan=oparagraphdiv.childnodes[j];if((ospan.nodename=="span")||(ospan.nodename=="a"))
{fontsize=elementfontsize(ospan);if(!isnan(fontsize))
{smallestfontsize=math.min(smallestfontsize,fontsize);}}}}
var minimum=parsefloat(minimum_font);var count=0;while((smallestfontsize>minimum)&&(offsetheight>(specifiedheight+height_error_margin))&&(count<10))
{++count;if(oneline&&!exceptiontoonelinerule)
{var oldwidth=parseint(otextboxouterdiv.style.width,10);otextboxinnerdiv.style.width=""+oldwidth*math.pow(1.05,count)+"px";}
else
{var scale=math.max(0.95,minimum/smallestfontsize);for(i=0;i<aparachildren.length;i++)
{oparagraphdiv=aparachildren[i];var parafontsize=elementfontsize(oparagraphdiv)*scale;var paralineheight=elementlineheight(oparagraphdiv)*scale;for(j=0;j<oparagraphdiv.childnodes.length;j++)
{ospan=oparagraphdiv.childnodes[j];if((ospan.nodename=="span")||(ospan.nodename=="a"))
{var spanlineheight=elementlineheight(ospan)*scale;if(!isnan(spanlineheight))
{ospan.style.lineheight=spanlineheight+units;}
var spanfontsize=elementfontsize(ospan)*scale;if(!isnan(spanfontsize))
{ospan.style.fontsize=spanfontsize+units;smallestfontsize=math.min(smallestfontsize,spanfontsize);}}}
if(!isnan(paralineheight))
{oparagraphdiv.style.lineheight=paralineheight+units;}
if(!isnan(parafontsize))
{oparagraphdiv.style.fontsize=parafontsize+units;smallestfontsize=math.min(smallestfontsize,parafontsize);}}}
offsetheight=otextboxinnerdiv.offsetheight;}}
showalllistbulletimagescontainedby(otextboxinnerdiv);}}}
function elementlineheight(element)
{var lineheight=minimum_font;if(document.defaultview)
{var computedstyle=document.defaultview.getcomputedstyle(element,null);if(computedstyle)
{lineheight=computedstyle.getpropertyvalue("line-height");}}
else if(element.currentstyle)
{lineheight=element.currentstyle.lineheight;}
if((units.length===0)&&(lineheight!=minimum_font))
{units=lineheight.substring(lineheight.length-2,lineheight.length);}
return parsefloat(lineheight);}
function adjustlineheightiftoobig(idofelement)
{var otextboxinnerdiv;var otextboxouterdiv=document.getelementbyid(idofelement);if(otextboxouterdiv)
{otextboxinnerdiv=getelementsbytagandclassname(otextboxouterdiv,"div","text-content")[0];if(otextboxinnerdiv)
{hidealllistbulletimagescontainedby(otextboxinnerdiv);var offsetheight=otextboxinnerdiv.offsetheight;var specifiedheight=offsetheight;if(otextboxouterdiv.style.height!=="")
{specifiedheight=parsefloat(otextboxouterdiv.style.height);}
if(offsetheight>(specifiedheight+height_error_margin))
{var adjusted=true;var count=0;while((adjusted)&&(offsetheight>(specifiedheight+height_error_margin))&&(count<10))
{adjusted=false;++count;var aparachildren=getshrinkableparadescendants(otextboxinnerdiv);for(i=0;i<aparachildren.length;i++)
{var fontsize;var lineheight;var oparagraphdiv=aparachildren[i];fontsize=elementfontsize(oparagraphdiv);lineheight=elementlineheight(oparagraphdiv)*0.95;if(!isnan(lineheight)&&lineheight>=(fontsize*1.1))
{oparagraphdiv.style.lineheight=lineheight+units;adjusted=true;}
for(j=0;j<oparagraphdiv.childnodes.length;j++)
{var ospan=oparagraphdiv.childnodes[j];if((ospan.nodename=="span")||(ospan.nodename=="a"))
{fontsize=elementfontsize(ospan);lineheight=elementlineheight(ospan)*0.95;if(!isnan(lineheight)&&lineheight>=(fontsize*1.1))
{ospan.style.lineheight=lineheight+units;adjusted=true;}}}}
offsetheight=otextboxinnerdiv.offsetheight;}}
showalllistbulletimagescontainedby(otextboxinnerdiv);}}}
function isdiv(node)
{return(node.nodetype==node.element_node)&&(node.tagname=="div");}
function fixupallmozinlineblocks()
{detectbrowser();if(isfirefox||iscamino)
{var oinlineblocks=getelementsbytagandclassname(document.body,"div","inline-block");for(var i=0,inlineblockslength=oinlineblocks.length;i<inlineblockslength;++i)
{var oinlineblock=oinlineblocks[i];var ointerposingdiv=document.createelement("div");ointerposingdiv.style.position="relative";ointerposingdiv.style.overflow="visible";for(var j=0,childnodeslength=oinlineblock.childnodes.length;j<childnodeslength;++j)
{var ochildnode=oinlineblock.childnodes[0];oinlineblock.removechild(ochildnode);ointerposingdiv.appendchild(ochildnode);}
oinlineblock.appendchild(ointerposingdiv);}}}
function getwidthdefiningancestor(elem)
{var ancestor=elem.up('[style~="width:"]');if(!ancestor)
{ancestor=$$('body')[0];}
return ancestor;}
function updatelistofie7floatsfix(div)
{var div=$(div);var floatvalue=div.getstyle("float");if(floatvalue=="left"||floatvalue=="right")
{var commonancestor=getwidthdefiningancestor(div);var floatdescendants=commonancestor.getelementsbyselector('[style~="float:"]');while(floatdescendants.length>0)
{var floatelem=floatdescendants.shift();floatvalue=floatelem.getstyle("float");if(floatvalue=="left"||floatvalue=="right")
{var floatancestor=getwidthdefiningancestor(floatelem);if(floatancestor===commonancestor)
{if(!listofie7floatsfix.include(floatelem))
{listofie7floatsfix.push(floatelem);}}}}}}
function fixupfloatsifie7()
{detectbrowser();if(windowsinternetexplorer&&browserversion==7)
{if(listofie7floatsfix.length>0)
{var floatstorestore=[];var floatelem;var displaystyle;while(listofie7floatsfix.length>0)
{floatelem=listofie7floatsfix.shift();displaystyle=floatelem.getstyle("display");floatelem.setstyle({"display":"none"});floatstorestore.push({element:floatelem,displaystyle:displaystyle});}
while(floatstorestore.length>0)
{var queueentry=floatstorestore.shift();floatelem=queueentry.element;displaystyle=queueentry.displaystyle;floatelem.setstyle({"display":displaystyle});}}}}
function performposteffectsfixups()
{fixupallmozinlineblocks();fixupfloatsifie7();}
function reduceleftmarginifie6(element)
{detectbrowser();if(windowsinternetexplorer&&browserversion<7)
{$(element).style.marginleft=px(parsefloat($(element).style.marginleft||0)-1);}}
function reducerightmarginifie6(element)
{detectbrowser();if(windowsinternetexplorer&&browserversion<7)
{$(element).style.marginright=px(parsefloat($(element).style.marginright||0)-1);}}
if(object.keys===undefined)
{object.keys=function(obj)
{var result=[];for(attr in obj)
result.push(attr);return result;}}
object.objecttype=function(obj)
{var result=typeof obj;if(result=="object")
{if(obj.constructor==array)
result="array";}
return result;}
array.prototype.contains=function(value)
{for(var i=0;i<this.length;++i)
{if(this[i]==value)
{return true;}}
return false;};array.prototype.foreach=function(f)
{for(var i=0;i<this.length;++i)
{f(this[i]);}};array.prototype.indexof=function(value)
{for(var i=0;i<this.length;++i)
{if(this[i]==value)
{return i;}}
return null;};array.prototype.isequal=function(that)
{if(this.length==that.length)
{for(var i=0;i<this.length;++i)
{if(this[i]!=that[i])
return false;}
return true;}
return false;}
array.prototype.minusarray=function(that)
{var i=0;while(i<this.length)
{if(that.contains(this[i]))
this.splice(i,1);else
++i;}}
string.stringwithformat=function(format)
{var formatted="";var nextargument=1;var formatpattern=/%((\d+)\$)?([%s])?/;while(true)
{foundindex=format.search(formatpattern);if(foundindex==-1)
{formatted+=format;break;}
if(foundindex>0)
{formatted+=format.substring(0,foundindex)}
var matchinfo=format.match(formatpattern);var formatcharacter=matchinfo[3];if(formatcharacter=="%")
{formatted+="%";}
else
{if(matchinfo[2])
{argumentnumber=parseint(matchinfo[2]);}
else
{argumentnumber=nextargument++;}
argument=(argumentnumber<arguments.length)?arguments[argumentnumber]:"";if(formatcharacter=="s")
{formatted+=argument;}}
format=format.substring(foundindex+matchinfo[0].length);}
return formatted;}
string.prototype.hassuffix=function(suffix)
{return this.slice(-1*suffix.length)==suffix;};string.prototype.hasprefix=function(prefix)
{return this.substr(0,prefix.length)==prefix;}
string.prototype.lastpathcomponent=function()
{return this.substr(this.lastindexof("/")+1);};string.prototype.stringbydeletinglastpathcomponent=function()
{return this.substr(0,this.lastindexof("/"));};string.prototype.stringbydeletingpathextension=function()
{var lastseparatorindex=this.lastindexof("/");var lastdotindex=this.lastindexof(".");if((lastdotindex>lastseparatorindex+1)&&lastdotindex>0)
return this.slice(0,lastdotindex);return this;}
string.prototype.stringbyappendingpathcomponent=function(component)
{if(this.hassuffix("/"))
{return this+component;}
return this+"/"+component;};string.prototype.stringbyappendingasquerystring=function(parameters)
{var result=this;if(parameters)
{var prependchar="?";object.keys(parameters).foreach(function(key)
{if(parameters.hasownproperty(key))
{result+=prependchar+escape(key)+"="+escape(parameters[key]);prependchar="&";}});}
return result;};string.prototype.stringbyunescapingxml=function()
{var str=this.replace(/&lt;/g,'<');str=str.replace(/&gt;/g,'>');str=str.replace(/&quot;/g,'"');str=str.replace(/&apos;/g,"'");str=str.replace(/&amp;/g,'&');return str;};string.prototype.stringbyescapingxml=function(escapeadditionalcharacters)
{var str=this.replace(/&/g,'&amp;');str=str.replace(/</g,'&lt;');if(escapeadditionalcharacters)
{str=str.replace(/>/g,'&gt;');str=str.replace(/"/g,'&quot;');str=str.replace(/'/g,'&apos;');}
return str;};string.prototype.stringbyconvertingnewlinestobreaktags=function()
{return this.replace(/\n\r|\n|\r/g,'<br />');};string.prototype.urlstringbydeletingqueryandfragment=function()
{var result=this;var lastindex=result.lastindexof("?");if(lastindex>0)
return result.substr(0,lastindex);lastindex=result.lastindexof("#");if(lastindex>0)
result=result.substr(0,lastindex);return result;}
string.prototype.torelativeurl=function(baseurl)
{var result=this;if(baseurl&&this.indexof(baseurl)==0)
{var chop=baseurl.length;if(this.charat(chop)=='/')
++chop;result=this.substring(chop);}
return result;}
string.prototype.toabsoluteurl=function()
{var result=this;if(this.indexof(":/")==-1)
{var pageurl=document.url.urlstringbydeletingqueryandfragment();var pathurl=pageurl.stringbydeletinglastpathcomponent();result=pathurl.stringbyappendingpathcomponent(this);}
return result;}
string.prototype.torebasedurl=function(baseurl)
{return this.torelativeurl(baseurl).toabsoluteurl();}
string.prototype.replacestringwithstring=function(target,replacement,global)
{var result=this;while(true)
{var pos=result.indexof(target);if(pos==-1)
break;result=result.substr(0,pos)+replacement+result.substr(pos+target.length);pos+=replacement.length;if(pos>=result.length||!global)
break;}
return result;}
var trace=function(){};function ajaxrequest(url,func,obj)
{if(window.xmlhttprequest)
{var req=new xmlhttprequest();}
else if(window.activexobject)
{isie=true;try
{req=new activexobject("msxml2.xmlhttp");}
catch(e)
{req=new activexobject("microsoft.xmlhttp");}}
if(func)
{req.onreadystatechange=function(){func(req,obj);}}
req.open('get',url,true);req.setrequestheader('x-requested-with','xmlhttprequest');if(req.overridemimetype)
{req.overridemimetype("text/xml");}
req.send(null);return false;}
function isajaxrequestready(req)
{var result=req.readystate==4&&(req.status==null||req.status==0||req.status==200);return result;}
function ajaxgetdocumentelement(req)
{var elem=null;if(req.responsexml.documentelement)
{elem=req.responsexml.documentelement;}
else
{var dom=new activexobject("msxml.domdocument");dom.loadxml(req.responsetext);elem=dom.documentelement;}
return elem;}
function iwlog(str)
{if(window.console)
{window.console.log(str);}
else if(window.dump)
{window.dump(str+"\n");}}
function position(abs,left,top,width,height)
{var pos="";if(abs)
pos="position: absolute; ";var size="";if(width&&height)
size=' width: '+width+'px; height: '+height+'px;';return pos+'left: '+left+'px; top: '+top+'px;'+size;}
var giwutilstransparentgifurl="";function settransparentgifurl(url)
{if(giwutilstransparentgifurl=="")
{giwutilstransparentgifurl=url;}}
function transparentgifurl()
{(function(){return giwutilstransparentgifurl!=""}).assert("transparent image url not set");return giwutilstransparentgifurl;}
function imgmarkup(src,style,attributes,alt)
{var markup="";if(src)
{if(style==null)
{style="";}
if(attributes==null)
{attributes="";}
if(alt==null)
{alt="";}
detectbrowser();if(windowsinternetexplorer)
{style+=" filter:progid:dximagetransform.microsoft.alphaimageloader(src='"+ieconverturlforpngfix(src)+"', sizingmethod='scale');";src=giwutilstransparentgifurl;}
if(style.length>0)
{style=' style="'+style+'"';}
if(attributes.length>0)
{attributes=' '+attributes;}
if(alt.length>0)
{alt=' alt="'+alt.stringbyescapingxml(true)+'"';}
markup='<img src="'+src+'"'+style+attributes+alt+' />';}
return markup;}
function setimgsrc(imgelement,src)
{detectbrowser();if(windowsinternetexplorer&&src.slice(-4).tolowercase()==".png")
{$(imgelement).setfilter('progid:dximagetransform.microsoft.alphaimageloader','src="'+ieconverturlforpngfix(src)+'", sizingmethod="scale"');imgelement.src=giwutilstransparentgifurl;}
else
{imgelement.src=src;}}
function iwopacity(opacity)
{var style="";detectbrowser();if(windowsinternetexplorer)
{style=" progid:dximagetransform.microsoft.alpha(opacity="+opacity*100+"); ";}
else
{style=" opacity: "+opacity+"; ";}
return style;}
function getelementsbytagandclassname(that,tagname,classname)
{var elementsbyclassandtag=[];var elementsbyclass=$(that).getelementsbyclassname(classname);if(tagname=='*')
{elementsbyclassandtag=elementsbyclass;}
else
{tagname=tagname.tolowercase();for(var i=0,len=elementsbyclass.length;i<len;++i)
{if(elementsbyclass[i].tagname.tolowercase()==tagname)
{elementsbyclassandtag.push(elementsbyclass[i]);}}}
return elementsbyclassandtag;}
function getargs()
{var args=new object();var query=location.search.substring(1);var pairs=query.split("&");for(var i=0;i<pairs.length;++i)
{var pair=pairs[i];var pos=pair.indexof('=');if(pos>0)
{var argname=decodeuricomponent(pair.substring(0,pos));var value=decodeuricomponent(pair.substring(pos+1));args[argname]=value;}}
return args;}
function iwrange(location,length)
{this.setlocation(location);this.setlength(length);}
iwrange.prototype.length=function()
{return this.p_length;}
iwrange.prototype.setlength=function(length)
{this.p_length=parsefloat(length);}
iwrange.prototype.location=function()
{return this.p_location;}
iwrange.prototype.setlocation=function(location)
{this.p_location=parsefloat(location);}
iwrange.prototype.max=function()
{return this.location()+this.length();}
iwrange.prototype.min=function()
{return this.location();}
iwrange.prototype.shift=function(amount)
{this.setlocation(this.location()+amount);}
iwrange.prototype.containslocation=function(location)
{return((location>=this.min())&&(location<this.max()));}
function iwpagerange(location,length)
{iwrange.apply(this,arguments);}
iwpagerange.prototype=new iwrange();iwpagerange.prototype.constructor=iwrange;iwpagerange.prototype.setmax=function(newmax)
{var maxlength=this.p_lengthformax(newmax);this.setlocation(math.max(newmax-maxlength,0))
this.setlength(newmax-this.location());}
iwpagerange.prototype.shift=function(amount)
{iwrange.prototype.shift.call(this,amount);this.setmax(this.max());}
iwpagerange.prototype.p_lengthformax=function(max)
{return(max<=9)?5:3;}
function px(s)
{return s.tostring()+"px";}
function depx(s)
{return parseint(s||0);}
function globaloriginofdivnode(div)
{(function(){return div!==null;}).assert("div must not be null");(function(){return div.offsetparent!==null;}).assert("div has null offset parent, maybe hidden?");var p=position.cumulativeoffset(div);return new iwpoint(p[0],p[1]);}
function globalrectofdivnode(div)
{var globalorigin=globaloriginofdivnode(div);var size=new iwsize(div.offsetwidth,div.offsetheight);return new iwrect(globalorigin,size);}
function pagesetbodylayerresidentrectangle(divid,rectangle)
{var div=$(divid);if(div)
{if(window.bodylayerresidents===undefined)
{window.bodylayerresidents=new hash({});}
if(rectangle===null)
{bodylayerresidents.remove(divid);}
else
{bodylayerresidents[divid]=rectangle;}
var desiredbottom=0;bodylayerresidents.each(function(pair)
{var itembottom=pair.value.origin.y+pair.value.size.height;desiredbottom=math.max(desiredbottom,itembottom);});var bodylayer=$('body_layer');if(bodylayer)
{var bodylayerspacer=bodylayer.getelementsbyclassname('spacer')[0];if(bodylayerspacer)
{var bodyspacerrect=globalrectofdivnode(bodylayerspacer);var desiredheight=desiredbottom-bodyspacerrect.origin.y;bodylayerspacer.style.height=px(desiredheight);}}}}
function locationhref()
{var result=window.location.href;if(result.match(/file:\/[^\/]/))
{result="file://"+result.substr(5);}
return result;}
function iwsize(width,height)
{this.width=width;this.height=height;}
function iwzerosize()
{return new iwsize(0,0);}
iwsize.prototype.scale=function(hscale,vscale,round)
{if(round===undefined)round=false;if(vscale===undefined)vscale=hscale;var scaled=new iwsize(this.width*hscale,this.height*vscale);if(round)
{scaled.width=math.round(scaled.width);scaled.height=math.round(scaled.height);}
return scaled;}
iwsize.prototype.round=function()
{return this.scale(1,1,true);}
iwsize.prototype.tostring=function()
{return"size("+this.width+", "+this.height+")";}
iwsize.prototype.aspectratio=function()
{return this.width/this.height;}
iwsize.prototype.subtractsize=function(s)
{return new iwsize(this.width-s.width,this.height-s.height);}
function iwpoint(x,y)
{this.x=x;this.y=y;}
function iwzeropoint()
{return new iwpoint(0,0);}
iwpoint.prototype.scale=function(hscale,vscale,round)
{if(round===undefined)round=false;if(vscale===undefined)vscale=hscale;var scaled=new iwpoint(this.x*hscale,this.y*vscale);if(round)
{scaled.x=math.round(scaled.x);scaled.y=math.round(scaled.y);}
return scaled;}
iwpoint.prototype.round=function()
{return this.scale(1,1,true);}
iwpoint.prototype.offset=function(deltax,deltay)
{return new iwpoint(this.x+deltax,this.y+deltay);}
iwpoint.prototype.tostring=function()
{return"point("+this.x+", "+this.y+")";}
function iwrect()
{if(arguments.length==1)
{this.origin=arguments[0].origin;this.size=arguments[0].size;}
else if(arguments.length==2)
{this.origin=arguments[0];this.size=arguments[1];}
else if(arguments.length==4)
{this.origin=new iwpoint(arguments[0],arguments[1]);this.size=new iwsize(arguments[2],arguments[3]);}}
iwrect.prototype.clone=function()
{return new iwrect(this.origin.x,this.origin.y,this.size.width,this.size.height);}
function iwzerorect()
{return new iwrect(0,0,0,0);}
iwrect.prototype.tostring=function()
{return"rect("+this.origin.tostring()+", "+this.size.tostring()+")";}
iwrect.prototype.maxx=function()
{return this.origin.x+this.size.width;}
iwrect.prototype.maxy=function()
{return this.origin.y+this.size.height;}
iwrect.prototype.union=function(that)
{var minx=math.min(this.origin.x,that.origin.x);var miny=math.min(this.origin.y,that.origin.y);var maxx=math.max(this.maxx(),that.maxx());var maxy=math.max(this.maxy(),that.maxy());return new iwrect(minx,miny,maxx-minx,maxy-miny);}
iwrect.prototype.intersection=function(that)
{var intersectionrect;var minx=math.max(this.origin.x,that.origin.x);var miny=math.max(this.origin.y,that.origin.y);var maxx=math.min(this.maxx(),that.maxx());var maxy=math.min(this.maxy(),that.maxy());if((minx<maxx)&&(miny<maxy))
{intersectionrect=new iwrect(minx,miny,maxx-minx,maxy-miny);}
else
{intersectionrect=new iwrect(0,0,0,0);}
return intersectionrect;}
iwrect.prototype.scale=function(hscale,vscale,round)
{if(round===undefined)round=false;if(vscale===undefined)vscale=hscale;var scaledorigin=this.origin.scale(hscale,vscale,round);var scaledsize=this.size.scale(hscale,vscale,round);return new iwrect(scaledorigin.x,scaledorigin.y,scaledsize.width,scaledsize.height);}
iwrect.prototype.scalesize=function(hscale,vscale,round)
{var scaledsize=this.size.scale(hscale,vscale,round);return new iwrect(this.origin.x,this.origin.y,scaledsize.width,scaledsize.height);}
iwrect.prototype.round=function()
{return this.scale(1,1,true);}
iwrect.prototype.offset=function(deltax,deltay)
{var offsetorigin=this.origin.offset(deltax,deltay);return new iwrect(offsetorigin.x,offsetorigin.y,this.size.width,this.size.height);}
iwrect.prototype.offsettoorigin=function()
{return this.offset(-this.origin.x,-this.origin.y)}
iwrect.prototype.centerpoint=function()
{return this.offset(this.size.width/2,this.size.height/2);}
iwrect.prototype.position=function()
{return"position: absolute; left: "+this.origin.x+"px; top: "+this.origin.y+"px; width: "+this.size.width+"px; height: "+this.size.height+"px; ";}
iwrect.prototype.clip=function()
{return"clip: rect("+this.origin.y+"px, "+this.maxx()+"px, "+this.maxy()+"px, "+this.origin.x+"px);";}
iwrect.prototype.toextents=function()
{return new iwextents(this.origin.x,this.origin.y,this.origin.x+this.size.width,this.origin.y+this.size.height);}
iwrect.prototype.paddingtorect=function(padded)
{return new iwpadding(this.origin.x-padded.origin.x,this.origin.y-padded.origin.y,padded.maxx()-this.maxx(),padded.maxy()-this.maxy());}
function iwextents(left,top,right,bottom)
{this.left=left;this.top=top;this.right=right;this.bottom=bottom;}
iwextents.prototype.clone=function()
{return new iwextents(this.left,this.top,this.right,this.bottom);}
iwextents.prototype.torect=function()
{return new iwrect(this.left,this.top,this.right-this.left,this.bottom-this.top);}
function iwpadding(left,top,right,bottom)
{this.left=left;this.top=top;this.right=right;this.bottom=bottom;}
iwrect.prototype.fill=function(context)
{context.fillrect(this.origin.x,this.origin.y,this.size.width,this.size.height);}
iwrect.prototype.clear=function(context)
{context.clearrect(this.origin.x,this.origin.y,this.size.width,this.size.height);}
var notificationcenter=new iwnotificationcenter();function iwnotificationcenter()
{this.mdispatchtable=new array();}
iwnotificationcenter.prototype.addobserver=function(observer,method,name,object)
{this.p_observersforname(name).push(new array(observer,method,object));}
iwnotificationcenter.prototype.removeobserver=function(observer)
{}
iwnotificationcenter.prototype.postnotification=function(notification)
{if(notification.name()!=null)
{var observersforname=this.mdispatchtable[notification.name()];this.p_postnotificationtoobservers(notification,observersforname);}
var observersfornullname=this.mdispatchtable[null];this.p_postnotificationtoobservers(notification,observersfornullname);}
iwnotificationcenter.prototype.postnotificationwithinfo=function(name,object,userinfo)
{this.postnotification(new iwnotification(name,object,userinfo));}
iwnotificationcenter.prototype.p_postnotificationtoobservers=function(notification,observers)
{if(notification!=null&&observers!=null)
{for(var i=0;i<observers.length;i++)
{var observer=observers[i][0];var method=observers[i][1];var obj=observers[i][2];if(obj==null||obj===notification.object())
{method.call(observer,notification);}}}}
iwnotificationcenter.prototype.p_observersforname=function(name)
{if(this.mdispatchtable[name]===undefined)
{this.mdispatchtable[name]=new array();}
return this.mdispatchtable[name];}
function iwnotification(name,object,userinfo)
{this.mname=name;this.mobject=object;this.muserinfo=userinfo;}
iwnotification.prototype.name=function()
{return this.mname;}
iwnotification.prototype.object=function()
{return this.mobject;}
iwnotification.prototype.userinfo=function()
{return this.muserinfo;}
var iwassertionsenabled=true;function iwassert(func,description)
{if(iwassertionsenabled)
{function iwassertionfailed(func,description)
{var formatter=new regexp("return[\t\r ]*([^};\r]*)");var assertiontext=func.tostring().match(formatter)[1];var message='assertion failed: "'+assertiontext+'"';if(description!=null)
message+='.  '+description;iwlog(message);}
function iwcoreassert(func,description)
{if(func()==false)
{iwassertionfailed(func,description);}}
iwcoreassert(function(){return typeof(func)=='function'},"iwassert requires its first argument to be a function.  "+"try wrapping your assertion in function(){return ... }");var result=func();iwcoreassert(function(){return result!=null},"the result of your assertion function is null; "+"did you remember your return statement?");iwcoreassert(function(){return result==true||result==false},"the result of your assertion function is neither true nor false");if(result==false)
{iwassertionfailed(func,description);}}}
function.prototype.assert=function(description)
{iwassert(this,description);}
function makeajaxhandler(callback)
{return function(request)
{if(request.readystate==4)
{callback(request,(request.status==200)||(request.status===undefined)||(request.status==0));}};}
function makexmlhttprequest(url,handler)
{var request=false;if(window.xmlhttprequest)
{request=new xmlhttprequest();}
else if(window.activexobject)
{try
{request=new activexobject("sxml2.xmlhttp");}
catch(e)
{request=new activexobject("microsoft.xmlhttp");}}
if(!request)
{return false;}
if(handler)
{request.onreadystatechange=function(){handler(request);};}
try
{request.open('get',url,true);request.setrequestheader('x-requested-with','xmlhttprequest');request.setrequestheader('if-modified-since','wed, 15 nov 1995 00:00:00 gmt');if(request.overridemimetype)
{request.overridemimetype('text/xml');}
request.send(null);}
catch(e)
{return false;}
return true;}
function gettextfromnode(node)
{var result="";if(node.nodetype==node.element_node)
{var children=node.childnodes;for(var i=0;i<children.length;++i)
{result=result+gettextfromnode(children[i]);}}
else if(node.nodetype==node.text_node)
{return node.nodevalue;}
return result;}
function getchildelementsbytagname(node,name)
{var result=[];for(var i=0;i<node.childnodes.length;++i)
{if(node.childnodes[i].tagname==name)
{result.push(node.childnodes[i]);}}
return result;}
function getchildelementsbytagnamens(node,ns,nsprefix,localname)
{var result=[];for(var i=0;i<node.childnodes.length;++i)
{var childnode=node.childnodes[i];if(childnode.namespaceuri)
{if(childnode.namespaceuri==ns)
{if(childnode.localname&&(childnode.localname==localname))
{result.push(childnode);}
else if(childnode.tagname==(nsprefix+":"+localname))
{result.push(childnode);}}}
else
{if((ns=="")&&(childnode.tagname==localname))
{result.push(childnode);}}}
return result;}
function getfirstchildelementbytagnamens(node,ns,nsprefix,localname)
{var children=getchildelementsbytagnamens(node,ns,nsprefix,localname);if(children.length>0)
return children[0];return null;}
function getfirstchildelementbytagname(node,name)
{for(var i=0;i<node.childnodes.length;++i)
{if(node.childnodes[i].tagname==name)
{return node.childnodes[i];}}
return null;}
function getchildelementtextbytagname(node,tagname)
{var result="";if(node!==null)
{var children=getchildelementsbytagname(node,tagname);if(children.length>1)
{throw"multipleresults";}
if(children.length==1)
{result=gettextfromnode(children[0]);}}
return result;}
function getchildelementtextbytagnamens(node,ns,nsprefix,localname)
{var result="";if(node)
{var children=getchildelementsbytagnamens(node,ns,nsprefix,localname);if(children.length>1)
throw"multipleresults";if(children.length==1)
{result=gettextfromnode(children[0]);}}
return result;}
function getchildelements(node)
{var result=[];for(var i=0;i<node.childnodes.length;++i)
{var child=node.childnodes[i];if(child.nodetype==node.element_node)
result.push(child);}
return result;}
function adjustnodeids(node,suffix)
{var undefined;if(node.id!="")
{node.id+=("$"+suffix);}
var childelements=getchildelements(node);for(var i=0;i<childelements.length;++i)
{adjustnodeids(childelements[i],suffix);}}
function removeallchildnodes(node)
{while(node.childnodes.length>0)
{node.removechild(node.childnodes[0]);}}
function nodeischildof(node,ancestor)
{if(node)
{if(node.parentnode==ancestor)
return true;else
return nodeischildof(node.parentnode,ancestor)}
return false;}
function substitutespans(parentnode,replacements)
{object.keys(replacements).foreach(function(key)
{var spans=getelementsbytagandclassname(parentnode,"span",key);spans.foreach(function(node)
{var contenttype=replacements[key][0];var newcontent=replacements[key][1];if(contenttype=="text")
{removeallchildnodes(node);node.appendchild(document.createtextnode(newcontent));}
else if(contenttype=="html")
{node.innerhtml=newcontent;}});});}
var prototype={version:'1.5.0',browserfeatures:{xpath:!!document.evaluate},scriptfragment:'(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',emptyfunction:function(){},k:function(x){return x}}
var class={create:function(){return function(){this.initialize.apply(this,arguments);}}}
var abstract=new object();object.extend=function(destination,source){for(var property in source){destination[property]=source[property];}
return destination;}
object.extend(object,{inspect:function(object){try{if(object===undefined)return'undefined';if(object===null)return'null';return object.inspect?object.inspect():object.tostring();}catch(e){if(e instanceof rangeerror)return'...';throw e;}},keys:function(object){var keys=[];for(var property in object)
keys.push(property);return keys;},values:function(object){var values=[];for(var property in object)
values.push(object[property]);return values;},clone:function(object){return object.extend({},object);}});function.prototype.bind=function(){var __method=this,args=$a(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($a(arguments)));}}
function.prototype.bindaseventlistener=function(object){var __method=this,args=$a(arguments),object=args.shift();return function(event){return __method.apply(object,[(event||window.event)].concat(args).concat($a(arguments)));}}
object.extend(number.prototype,{tocolorpart:function(){var digits=this.tostring(16);if(this<16)return'0'+digits;return digits;},succ:function(){return this+1;},times:function(iterator){$r(0,this,true).each(iterator);return this;}});var try={these:function(){var returnvalue;for(var i=0,length=arguments.length;i<length;i++){var lambda=arguments[i];try{returnvalue=lambda();break;}catch(e){}}
return returnvalue;}}
var periodicalexecuter=class.create();periodicalexecuter.prototype={initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyexecuting=false;this.registercallback();},registercallback:function(){this.timer=setinterval(this.ontimerevent.bind(this),this.frequency*1000);},stop:function(){if(!this.timer)return;clearinterval(this.timer);this.timer=null;},ontimerevent:function(){if(!this.currentlyexecuting){try{this.currentlyexecuting=true;this.callback(this);}finally{this.currentlyexecuting=false;}}}}
string.interpret=function(value){return value==null?'':string(value);}
object.extend(string.prototype,{gsub:function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.preparereplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=string.interpret(replacement(match));source=source.slice(match.index+match[0].length);}else{result+=source,source='';}}
return result;},sub:function(pattern,replacement,count){replacement=this.gsub.preparereplacement(replacement);count=count===undefined?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},scan:function(pattern,iterator){this.gsub(pattern,iterator);return this;},truncate:function(length,truncation){length=length||30;truncation=truncation===undefined?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:this;},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');},striptags:function(){return this.replace(/<\/?[^>]+>/gi,'');},stripscripts:function(){return this.replace(new regexp(prototype.scriptfragment,'img'),'');},extractscripts:function(){var matchall=new regexp(prototype.scriptfragment,'img');var matchone=new regexp(prototype.scriptfragment,'im');return(this.match(matchall)||[]).map(function(scripttag){return(scripttag.match(matchone)||['',''])[1];});},evalscripts:function(){return this.extractscripts().map(function(script){return eval(script)});},escapehtml:function(){var div=document.createelement('div');var text=document.createtextnode(this);div.appendchild(text);return div.innerhtml;},unescapehtml:function(){var div=document.createelement('div');div.innerhtml=this.striptags();return div.childnodes[0]?(div.childnodes.length>1?$a(div.childnodes).inject('',function(memo,node){return memo+node.nodevalue}):div.childnodes[0].nodevalue):'';},toqueryparams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match)return{};return match[1].split(separator||'&').inject({},function(hash,pair){if((pair=pair.split('='))[0]){var name=decodeuricomponent(pair[0]);var value=pair[1]?decodeuricomponent(pair[1]):undefined;if(hash[name]!==undefined){if(hash[name].constructor!=array)
hash[name]=[hash[name]];if(value)hash[name].push(value);}
else hash[name]=value;}
return hash;});},toarray:function(){return this.split('');},succ:function(){return this.slice(0,this.length-1)+
string.fromcharcode(this.charcodeat(this.length-1)+1);},camelize:function(){var parts=this.split('-'),len=parts.length;if(len==1)return parts[0];var camelized=this.charat(0)=='-'?parts[0].charat(0).touppercase()+parts[0].substring(1):parts[0];for(var i=1;i<len;i++)
camelized+=parts[i].charat(0).touppercase()+parts[i].substring(1);return camelized;},capitalize:function(){return this.charat(0).touppercase()+this.substring(1).tolowercase();},underscore:function(){return this.gsub(/::/,'/').gsub(/([a-z]+)([a-z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([a-z])/,'#{1}_#{2}').gsub(/-/,'_').tolowercase();},dasherize:function(){return this.gsub(/_/,'-');},inspect:function(usedoublequotes){var escapedstring=this.replace(/\\/g,'\\\\');if(usedoublequotes)
return'"'+escapedstring.replace(/"/g,'\\"')+'"';else
return"'"+escapedstring.replace(/'/g,'\\\'')+"'";}});string.prototype.gsub.preparereplacement=function(replacement){if(typeof replacement=='function')return replacement;var template=new template(replacement);return function(match){return template.evaluate(match)};}
string.prototype.parsequery=string.prototype.toqueryparams;var template=class.create();template.pattern=/(^|.|\r|\n)(#\{(.*?)\})/;template.prototype={initialize:function(template,pattern){this.template=template.tostring();this.pattern=pattern||template.pattern;},evaluate:function(object){return this.template.gsub(this.pattern,function(match){var before=match[1];if(before=='\\')return match[2];return before+string.interpret(object[match[3]]);});}}
var $break=new object();var $continue=new object();var enumerable={each:function(iterator){var index=0;try{this._each(function(value){try{iterator(value,index++);}catch(e){if(e!=$continue)throw e;}});}catch(e){if(e!=$break)throw e;}
return this;},eachslice:function(number,iterator){var index=-number,slices=[],array=this.toarray();while((index+=number)<array.length)
slices.push(array.slice(index,index+number));return slices.map(iterator);},all:function(iterator){var result=true;this.each(function(value,index){result=result&&!!(iterator||prototype.k)(value,index);if(!result)throw $break;});return result;},any:function(iterator){var result=false;this.each(function(value,index){if(result=!!(iterator||prototype.k)(value,index))
throw $break;});return result;},collect:function(iterator){var results=[];this.each(function(value,index){results.push((iterator||prototype.k)(value,index));});return results;},detect:function(iterator){var result;this.each(function(value,index){if(iterator(value,index)){result=value;throw $break;}});return result;},findall:function(iterator){var results=[];this.each(function(value,index){if(iterator(value,index))
results.push(value);});return results;},grep:function(pattern,iterator){var results=[];this.each(function(value,index){var stringvalue=value.tostring();if(stringvalue.match(pattern))
results.push((iterator||prototype.k)(value,index));})
return results;},include:function(object){var found=false;this.each(function(value){if(value==object){found=true;throw $break;}});return found;},ingroupsof:function(number,fillwith){fillwith=fillwith===undefined?null:fillwith;return this.eachslice(number,function(slice){while(slice.length<number)slice.push(fillwith);return slice;});},inject:function(memo,iterator){this.each(function(value,index){memo=iterator(memo,value,index);});return memo;},invoke:function(method){var args=$a(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args);});},max:function(iterator){var result;this.each(function(value,index){value=(iterator||prototype.k)(value,index);if(result==undefined||value>=result)
result=value;});return result;},min:function(iterator){var result;this.each(function(value,index){value=(iterator||prototype.k)(value,index);if(result==undefined||value<result)
result=value;});return result;},partition:function(iterator){var trues=[],falses=[];this.each(function(value,index){((iterator||prototype.k)(value,index)?trues:falses).push(value);});return[trues,falses];},pluck:function(property){var results=[];this.each(function(value,index){results.push(value[property]);});return results;},reject:function(iterator){var results=[];this.each(function(value,index){if(!iterator(value,index))
results.push(value);});return results;},sortby:function(iterator){return this.map(function(value,index){return{value:value,criteria:iterator(value,index)};}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0;}).pluck('value');},toarray:function(){return this.map();},zip:function(){var iterator=prototype.k,args=$a(arguments);if(typeof args.last()=='function')
iterator=args.pop();var collections=[this].concat(args).map($a);return this.map(function(value,index){return iterator(collections.pluck(index));});},size:function(){return this.toarray().length;},inspect:function(){return'#<enumerable:'+this.toarray().inspect()+'>';}}
object.extend(enumerable,{map:enumerable.collect,find:enumerable.detect,select:enumerable.findall,member:enumerable.include,entries:enumerable.toarray});var $a=array.from=function(iterable){if(!iterable)return[];if(iterable.toarray&&!(window.opera&&iterable.callee)){return iterable.toarray();}else{var results=[];for(var i=0,length=iterable.length;i<length;i++)
results.push(iterable[i]);return results;}}
object.extend(array.prototype,enumerable);if(!array.prototype._reverse)
array.prototype._reverse=array.prototype.reverse;object.extend(array.prototype,{_each:function(iterator){for(var i=0,length=this.length;i<length;i++)
iterator(this[i]);},clear:function(){this.length=0;return this;},first:function(){return this[0];},last:function(){return this[this.length-1];},compact:function(){return this.select(function(value){return value!=null;});},flatten:function(){return this.inject([],function(array,value){return array.concat(value&&value.constructor==array?value.flatten():[value]);});},without:function(){var values=$a(arguments);return this.select(function(value){return!values.include(value);});},indexof:function(object){for(var i=0,length=this.length;i<length;i++)
if(this[i]==object)return i;return-1;},reverse:function(inline){return(inline!==false?this:this.toarray())._reverse();},reduce:function(){return this.length>1?this:this[0];},uniq:function(){return this.inject([],function(array,value){return array.include(value)?array:array.concat([value]);});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return'['+this.map(object.inspect).join(', ')+']';}});array.prototype.toarray=array.prototype.clone;function $w(string){string=string.strip();return string?string.split(/\s+/):[];}
if(window.opera){array.prototype.concat=function(){var array=[];for(var i=0,length=this.length;i<length;i++)array.push(this[i]);for(var i=0,length=arguments.length;i<length;i++){if(arguments[i].constructor==array){for(var j=0,arraylength=arguments[i].length;j<arraylength;j++)
array.push(arguments[i][j]);}else{array.push(arguments[i]);}}
return array;}}
var hash=function(obj){object.extend(this,obj||{});};object.extend(hash,{toquerystring:function(obj){var parts=[];this.prototype._each.call(obj,function(pair){if(!pair.key)return;if(pair.value&&pair.value.constructor==array){var values=pair.value.compact();if(values.length<2)pair.value=values.reduce();else{key=encodeuricomponent(pair.key);values.each(function(value){value=value!=undefined?encodeuricomponent(value):'';parts.push(key+'='+encodeuricomponent(value));});return;}}
if(pair.value==undefined)pair[1]='';parts.push(pair.map(encodeuricomponent).join('='));});return parts.join('&');}});object.extend(hash.prototype,enumerable);object.extend(hash.prototype,{_each:function(iterator){for(var key in this){var value=this[key];if(value&&value==hash.prototype[key])continue;var pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}},keys:function(){return this.pluck('key');},values:function(){return this.pluck('value');},merge:function(hash){return $h(hash).inject(this,function(mergedhash,pair){mergedhash[pair.key]=pair.value;return mergedhash;});},remove:function(){var result;for(var i=0,length=arguments.length;i<length;i++){var value=this[arguments[i]];if(value!==undefined){if(result===undefined)result=value;else{if(result.constructor!=array)result=[result];result.push(value)}}
delete this[arguments[i]];}
return result;},toquerystring:function(){return hash.toquerystring(this);},inspect:function(){return'#<hash:{'+this.map(function(pair){return pair.map(object.inspect).join(': ');}).join(', ')+'}>';}});function $h(object){if(object&&object.constructor==hash)return object;return new hash(object);};objectrange=class.create();object.extend(objectrange.prototype,enumerable);object.extend(objectrange.prototype,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ();}},include:function(value){if(value<this.start)
return false;if(this.exclusive)
return value<this.end;return value<=this.end;}});var $r=function(start,end,exclusive){return new objectrange(start,end,exclusive);}
var ajax={gettransport:function(){return try.these(function(){return new xmlhttprequest()},function(){return new activexobject('msxml2.xmlhttp')},function(){return new activexobject('microsoft.xmlhttp')})||false;},activerequestcount:0}
ajax.responders={responders:[],_each:function(iterator){this.responders._each(iterator);},register:function(responder){if(!this.include(responder))
this.responders.push(responder);},unregister:function(responder){this.responders=this.responders.without(responder);},dispatch:function(callback,request,transport,json){this.each(function(responder){if(typeof responder[callback]=='function'){try{responder[callback].apply(responder,[request,transport,json]);}catch(e){}}});}};object.extend(ajax.responders,enumerable);ajax.responders.register({oncreate:function(){ajax.activerequestcount++;},oncomplete:function(){ajax.activerequestcount--;}});ajax.base=function(){};ajax.base.prototype={setoptions:function(options){this.options={method:'post',asynchronous:true,contenttype:'application/x-www-form-urlencoded',encoding:'utf-8',parameters:''}
object.extend(this.options,options||{});this.options.method=this.options.method.tolowercase();if(typeof this.options.parameters=='string')
this.options.parameters=this.options.parameters.toqueryparams();}}
ajax.request=class.create();ajax.request.events=['uninitialized','loading','loaded','interactive','complete'];ajax.request.prototype=object.extend(new ajax.base(),{_complete:false,initialize:function(url,options){this.transport=ajax.gettransport();this.setoptions(options);this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=this.options.parameters;if(!['get','post'].include(this.method)){params['_method']=this.method;this.method='post';}
params=hash.toquerystring(params);if(params&&/konqueror|safari|khtml/.test(navigator.useragent))params+='&_='
if(this.method=='get'&&params)
this.url+=(this.url.indexof('?')>-1?'&':'?')+params;try{ajax.responders.dispatch('oncreate',this,this.transport);this.transport.open(this.method.touppercase(),this.url,this.options.asynchronous);if(this.options.asynchronous)
settimeout(function(){this.respondtoreadystate(1)}.bind(this),10);this.transport.onreadystatechange=this.onstatechange.bind(this);this.setrequestheaders();var body=this.method=='post'?(this.options.postbody||params):null;this.transport.send(body);if(!this.options.asynchronous&&this.transport.overridemimetype)
this.onstatechange();}
catch(e){this.dispatchexception(e);}},onstatechange:function(){var readystate=this.transport.readystate;if(readystate>1&&!((readystate==4)&&this._complete))
this.respondtoreadystate(this.transport.readystate);},setrequestheaders:function(){var headers={'x-requested-with':'xmlhttprequest','x-prototype-version':prototype.version,'accept':'text/javascript, text/html, application/xml, text/xml, */*'};if(this.method=='post'){headers['content-type']=this.options.contenttype+
(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overridemimetype&&(navigator.useragent.match(/gecko\/(\d{4})/)||[0,2005])[1]<2005)
headers['connection']='close';}
if(typeof this.options.requestheaders=='object'){var extras=this.options.requestheaders;if(typeof extras.push=='function')
for(var i=0,length=extras.length;i<length;i+=2)
headers[extras[i]]=extras[i+1];else
$h(extras).each(function(pair){headers[pair.key]=pair.value});}
for(var name in headers)
this.transport.setrequestheader(name,headers[name]);},success:function(){return!this.transport.status||(this.transport.status>=200&&this.transport.status<300);},respondtoreadystate:function(readystate){var state=ajax.request.events[readystate];var transport=this.transport,json=this.evaljson();if(state=='complete'){try{this._complete=true;(this.options['on'+this.transport.status]||this.options['on'+(this.success()?'success':'failure')]||prototype.emptyfunction)(transport,json);}catch(e){this.dispatchexception(e);}
if((this.getheader('content-type')||'text/javascript').strip().match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
this.evalresponse();}
try{(this.options['on'+state]||prototype.emptyfunction)(transport,json);ajax.responders.dispatch('on'+state,this,transport,json);}catch(e){this.dispatchexception(e);}
if(state=='complete'){this.transport.onreadystatechange=prototype.emptyfunction;}},getheader:function(name){try{return this.transport.getresponseheader(name);}catch(e){return null}},evaljson:function(){try{var json=this.getheader('x-json');return json?eval('('+json+')'):null;}catch(e){return null}},evalresponse:function(){try{return eval(this.transport.responsetext);}catch(e){this.dispatchexception(e);}},dispatchexception:function(exception){(this.options.onexception||prototype.emptyfunction)(this,exception);ajax.responders.dispatch('onexception',this,exception);}});ajax.updater=class.create();object.extend(object.extend(ajax.updater.prototype,ajax.request.prototype),{initialize:function(container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))}
this.transport=ajax.gettransport();this.setoptions(options);var oncomplete=this.options.oncomplete||prototype.emptyfunction;this.options.oncomplete=(function(transport,param){this.updatecontent();oncomplete(transport,param);}).bind(this);this.request(url);},updatecontent:function(){var receiver=this.container[this.success()?'success':'failure'];var response=this.transport.responsetext;if(!this.options.evalscripts)response=response.stripscripts();if(receiver=$(receiver)){if(this.options.insertion)
new this.options.insertion(receiver,response);else
receiver.update(response);}
if(this.success()){if(this.oncomplete)
settimeout(this.oncomplete.bind(this),10);}}});ajax.periodicalupdater=class.create();ajax.periodicalupdater.prototype=object.extend(new ajax.base(),{initialize:function(container,url,options){this.setoptions(options);this.oncomplete=this.options.oncomplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start();},start:function(){this.options.oncomplete=this.updatecomplete.bind(this);this.ontimerevent();},stop:function(){this.updater.options.oncomplete=undefined;cleartimeout(this.timer);(this.oncomplete||prototype.emptyfunction).apply(this,arguments);},updatecomplete:function(request){if(this.options.decay){this.decay=(request.responsetext==this.lasttext?this.decay*this.options.decay:1);this.lasttext=request.responsetext;}
this.timer=settimeout(this.ontimerevent.bind(this),this.decay*this.frequency*1000);},ontimerevent:function(){this.updater=new ajax.updater(this.container,this.url,this.options);}});function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++)
elements.push($(arguments[i]));return elements;}
if(typeof element=='string')
element=document.getelementbyid(element);return element.extend(element);}
if(prototype.browserfeatures.xpath){document._getelementsbyxpath=function(expression,parentelement){var results=[];var query=document.evaluate(expression,$(parentelement)||document,null,xpathresult.ordered_node_snapshot_type,null);for(var i=0,length=query.snapshotlength;i<length;i++)
results.push(query.snapshotitem(i));return results;};}
document.getelementsbyclassname=function(classname,parentelement){if(prototype.browserfeatures.xpath){var q=".//*[contains(concat(' ', @class, ' '), ' "+classname+" ')]";return document._getelementsbyxpath(q,parentelement);}else{var children=($(parentelement)||document.body).getelementsbytagname('*');var elements=[],child;for(var i=0,length=children.length;i<length;i++){child=children[i];if(element.hasclassname(child,classname))
elements.push(element.extend(child));}
return elements;}};if(!window.element)
var element=new object();element.extend=function(element){if(!element||_nativeextensions||element.nodetype==3)return element;if(!element._extended&&element.tagname&&element!=window){var methods=object.clone(element.methods),cache=element.extend.cache;if(element.tagname=='form')
object.extend(methods,form.methods);if(['input','textarea','select'].include(element.tagname))
object.extend(methods,form.element.methods);object.extend(methods,element.methods.simulated);for(var property in methods){var value=methods[property];if(typeof value=='function'&&!(property in element))
element[property]=cache.findorstore(value);}}
element._extended=true;return element;};element.extend.cache={findorstore:function(value){return this[value]=this[value]||function(){return value.apply(null,[this].concat($a(arguments)));}}};element.methods={visible:function(element){return $(element).style.display!='none';},toggle:function(element){element=$(element);element[element.visible(element)?'hide':'show'](element);return element;},hide:function(element){$(element).style.display='none';return element;},show:function(element){$(element).style.display='';return element;},remove:function(element){element=$(element);element.parentnode.removechild(element);return element;},update:function(element,html){html=typeof html=='undefined'?'':html.tostring();$(element).innerhtml=html.stripscripts();settimeout(function(){html.evalscripts()},10);return element;},replace:function(element,html){element=$(element);html=typeof html=='undefined'?'':html.tostring();if(element.outerhtml){element.outerhtml=html.stripscripts();}else{var range=element.ownerdocument.createrange();range.selectnodecontents(element);element.parentnode.replacechild(range.createcontextualfragment(html.stripscripts()),element);}
settimeout(function(){html.evalscripts()},10);return element;},inspect:function(element){element=$(element);var result='<'+element.tagname.tolowercase();$h({'id':'id','classname':'class'}).each(function(pair){var property=pair.first(),attribute=pair.last();var value=(element[property]||'').tostring();if(value)result+=' '+attribute+'='+value.inspect(true);});return result+'>';},recursivelycollect:function(element,property){element=$(element);var elements=[];while(element=element[property])
if(element.nodetype==1)
elements.push(element.extend(element));return elements;},ancestors:function(element){return $(element).recursivelycollect('parentnode');},descendants:function(element){return $a($(element).getelementsbytagname('*'));},immediatedescendants:function(element){if(!(element=$(element).firstchild))return[];while(element&&element.nodetype!=1)element=element.nextsibling;if(element)return[element].concat($(element).nextsiblings());return[];},previoussiblings:function(element){return $(element).recursivelycollect('previoussibling');},nextsiblings:function(element){return $(element).recursivelycollect('nextsibling');},siblings:function(element){element=$(element);return element.previoussiblings().reverse().concat(element.nextsiblings());},match:function(element,selector){if(typeof selector=='string')
selector=new selector(selector);return selector.match($(element));},up:function(element,expression,index){return selector.findelement($(element).ancestors(),expression,index);},down:function(element,expression,index){return selector.findelement($(element).descendants(),expression,index);},previous:function(element,expression,index){return selector.findelement($(element).previoussiblings(),expression,index);},next:function(element,expression,index){return selector.findelement($(element).nextsiblings(),expression,index);},getelementsbyselector:function(){var args=$a(arguments),element=$(args.shift());return selector.findchildelements(element,args);},getelementsbyclassname:function(element,classname){return document.getelementsbyclassname(classname,element);},readattribute:function(element,name){element=$(element);if(document.all&&!window.opera){var t=element._attributetranslations;if(t.values[name])return t.values[name](element,name);if(t.names[name])name=t.names[name];var attribute=element.attributes[name];if(attribute)return attribute.nodevalue;}
return element.getattribute(name);},getheight:function(element){return $(element).getdimensions().height;},getwidth:function(element){return $(element).getdimensions().width;},classnames:function(element){return new element.classnames(element);},hasclassname:function(element,classname){if(!(element=$(element)))return;var elementclassname=element.classname;if(elementclassname.length==0)return false;if(elementclassname==classname||elementclassname.match(new regexp("(^|\\s)"+classname+"(\\s|$)")))
return true;return false;},addclassname:function(element,classname){if(!(element=$(element)))return;element.classnames(element).add(classname);return element;},removeclassname:function(element,classname){if(!(element=$(element)))return;element.classnames(element).remove(classname);return element;},toggleclassname:function(element,classname){if(!(element=$(element)))return;element.classnames(element)[element.hasclassname(classname)?'remove':'add'](classname);return element;},observe:function(){event.observe.apply(event,arguments);return $a(arguments).first();},stopobserving:function(){event.stopobserving.apply(event,arguments);return $a(arguments).first();},cleanwhitespace:function(element){element=$(element);var node=element.firstchild;while(node){var nextnode=node.nextsibling;if(node.nodetype==3&&!/\s/.test(node.nodevalue))
element.removechild(node);node=nextnode;}
return element;},empty:function(element){return $(element).innerhtml.match(/^\s*$/);},descendantof:function(element,ancestor){element=$(element),ancestor=$(ancestor);while(element=element.parentnode)
if(element==ancestor)return true;return false;},scrollto:function(element){element=$(element);var pos=position.cumulativeoffset(element);window.scrollto(pos[0],pos[1]);return element;},getstyle:function(element,style){element=$(element);if(['float','cssfloat'].include(style))
style=(typeof element.style.stylefloat!='undefined'?'stylefloat':'cssfloat');style=style.camelize();var value=element.style[style];if(!value){if(document.defaultview&&document.defaultview.getcomputedstyle){var css=document.defaultview.getcomputedstyle(element,null);value=css?css[style]:null;}else if(element.currentstyle){value=element.currentstyle[style];}}
if((value=='auto')&&['width','height'].include(style)&&(element.getstyle('display')!='none'))
value=element['offset'+style.capitalize()]+'px';if(window.opera&&['left','top','right','bottom'].include(style))
if(element.getstyle(element,'position')=='static')value='auto';if(style=='opacity'){if(value)return parsefloat(value);if(value=(element.getstyle('filter')||'').match(/alpha\(opacity=(.*)\)/))
if(value[1])return parsefloat(value[1])/100;return 1.0;}
return value=='auto'?null:value;},setstyle:function(element,style){element=$(element);for(var name in style){var value=style[name];if(name=='opacity'){if(value==1){value=(/gecko/.test(navigator.useragent)&&!/konqueror|safari|khtml/.test(navigator.useragent))?0.999999:1.0;if(/msie/.test(navigator.useragent)&&!window.opera)
element.style.filter=element.getstyle('filter').replace(/alpha\([^\)]*\)/gi,'');}else if(value==''){if(/msie/.test(navigator.useragent)&&!window.opera)
element.style.filter=element.getstyle('filter').replace(/alpha\([^\)]*\)/gi,'');}else{if(value<0.00001)value=0;if(/msie/.test(navigator.useragent)&&!window.opera)
element.style.filter=element.getstyle('filter').replace(/alpha\([^\)]*\)/gi,'')+'alpha(opacity='+value*100+')';}}else if(['float','cssfloat'].include(name))name=(typeof element.style.stylefloat!='undefined')?'stylefloat':'cssfloat';element.style[name.camelize()]=value;}
return element;},getdimensions:function(element){element=$(element);var display=$(element).getstyle('display');if(display!='none'&&display!=null)
return{width:element.offsetwidth,height:element.offsetheight};var els=element.style;var originalvisibility=els.visibility;var originalposition=els.position;var originaldisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalwidth=element.clientwidth;var originalheight=element.clientheight;els.display=originaldisplay;els.position=originalposition;els.visibility=originalvisibility;return{width:originalwidth,height:originalheight};},makepositioned:function(element){element=$(element);var pos=element.getstyle(element,'position');if(pos=='static'||!pos){element._madepositioned=true;element.style.position='relative';if(window.opera){element.style.top=0;element.style.left=0;}}
return element;},undopositioned:function(element){element=$(element);if(element._madepositioned){element._madepositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}
return element;},makeclipping:function(element){element=$(element);if(element._overflow)return element;element._overflow=element.style.overflow||'auto';if((element.getstyle(element,'overflow')||'visible')!='hidden')
element.style.overflow='hidden';return element;},undoclipping:function(element){element=$(element);if(!element._overflow)return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element;}};object.extend(element.methods,{childof:element.methods.descendantof});element._attributetranslations={};element._attributetranslations.names={colspan:"colspan",rowspan:"rowspan",valign:"valign",datetime:"datetime",accesskey:"accesskey",tabindex:"tabindex",enctype:"enctype",maxlength:"maxlength",readonly:"readonly",longdesc:"longdesc"};element._attributetranslations.values={_getattr:function(element,attribute){return element.getattribute(attribute,2);},_flag:function(element,attribute){return $(element).hasattribute(attribute)?attribute:null;},style:function(element){return element.style.csstext.tolowercase();},title:function(element){var node=element.getattributenode('title');return node.specified?node.nodevalue:null;}};object.extend(element._attributetranslations.values,{href:element._attributetranslations.values._getattr,src:element._attributetranslations.values._getattr,disabled:element._attributetranslations.values._flag,checked:element._attributetranslations.values._flag,readonly:element._attributetranslations.values._flag,multiple:element._attributetranslations.values._flag});element.methods.simulated={hasattribute:function(element,attribute){var t=element._attributetranslations;attribute=t.names[attribute]||attribute;return $(element).getattributenode(attribute).specified;}};if(document.all&&!window.opera){element.methods.update=function(element,html){element=$(element);html=typeof html=='undefined'?'':html.tostring();var tagname=element.tagname.touppercase();if(['thead','tbody','tr','td'].include(tagname)){var div=document.createelement('div');switch(tagname){case'thead':case'tbody':div.innerhtml='<table><tbody>'+html.stripscripts()+'</tbody></table>';depth=2;break;case'tr':div.innerhtml='<table><tbody><tr>'+html.stripscripts()+'</tr></tbody></table>';depth=3;break;case'td':div.innerhtml='<table><tbody><tr><td>'+html.stripscripts()+'</td></tr></tbody></table>';depth=4;}
$a(element.childnodes).each(function(node){element.removechild(node)});depth.times(function(){div=div.firstchild});$a(div.childnodes).each(function(node){element.appendchild(node)});}else{element.innerhtml=html.stripscripts();}
settimeout(function(){html.evalscripts()},10);return element;}};object.extend(element,element.methods);var _nativeextensions=false;if(/konqueror|safari|khtml/.test(navigator.useragent))
['','form','input','textarea','select'].each(function(tag){var classname='html'+tag+'element';if(window[classname])return;var klass=window[classname]={};klass.prototype=document.createelement(tag?tag.tolowercase():'div').__proto__;});element.addmethods=function(methods){object.extend(element.methods,methods||{});function copy(methods,destination,onlyifabsent){onlyifabsent=onlyifabsent||false;var cache=element.extend.cache;for(var property in methods){var value=methods[property];if(!onlyifabsent||!(property in destination))
destination[property]=cache.findorstore(value);}}
if(typeof htmlelement!='undefined'){copy(element.methods,htmlelement.prototype);copy(element.methods.simulated,htmlelement.prototype,true);copy(form.methods,htmlformelement.prototype);[htmlinputelement,htmltextareaelement,htmlselectelement].each(function(klass){copy(form.element.methods,klass.prototype);});_nativeextensions=true;}}
var toggle=new object();toggle.display=element.toggle;abstract.insertion=function(adjacency){this.adjacency=adjacency;}
abstract.insertion.prototype={initialize:function(element,content){this.element=$(element);this.content=content.stripscripts();if(this.adjacency&&this.element.insertadjacenthtml){try{this.element.insertadjacenthtml(this.adjacency,this.content);}catch(e){var tagname=this.element.tagname.touppercase();if(['tbody','tr'].include(tagname)){this.insertcontent(this.contentfromanonymoustable());}else{throw e;}}}else{this.range=this.element.ownerdocument.createrange();if(this.initializerange)this.initializerange();this.insertcontent([this.range.createcontextualfragment(this.content)]);}
settimeout(function(){content.evalscripts()},10);},contentfromanonymoustable:function(){var div=document.createelement('div');div.innerhtml='<table><tbody>'+this.content+'</tbody></table>';return $a(div.childnodes[0].childnodes[0].childnodes);}}
var insertion=new object();insertion.before=class.create();insertion.before.prototype=object.extend(new abstract.insertion('beforebegin'),{initializerange:function(){this.range.setstartbefore(this.element);},insertcontent:function(fragments){fragments.each((function(fragment){this.element.parentnode.insertbefore(fragment,this.element);}).bind(this));}});insertion.top=class.create();insertion.top.prototype=object.extend(new abstract.insertion('afterbegin'),{initializerange:function(){this.range.selectnodecontents(this.element);this.range.collapse(true);},insertcontent:function(fragments){fragments.reverse(false).each((function(fragment){this.element.insertbefore(fragment,this.element.firstchild);}).bind(this));}});insertion.bottom=class.create();insertion.bottom.prototype=object.extend(new abstract.insertion('beforeend'),{initializerange:function(){this.range.selectnodecontents(this.element);this.range.collapse(this.element);},insertcontent:function(fragments){fragments.each((function(fragment){this.element.appendchild(fragment);}).bind(this));}});insertion.after=class.create();insertion.after.prototype=object.extend(new abstract.insertion('afterend'),{initializerange:function(){this.range.setstartafter(this.element);},insertcontent:function(fragments){fragments.each((function(fragment){this.element.parentnode.insertbefore(fragment,this.element.nextsibling);}).bind(this));}});element.classnames=class.create();element.classnames.prototype={initialize:function(element){this.element=$(element);},_each:function(iterator){this.element.classname.split(/\s+/).select(function(name){return name.length>0;})._each(iterator);},set:function(classname){this.element.classname=classname;},add:function(classnametoadd){if(this.include(classnametoadd))return;this.set($a(this).concat(classnametoadd).join(' '));},remove:function(classnametoremove){if(!this.include(classnametoremove))return;this.set($a(this).without(classnametoremove).join(' '));},tostring:function(){return $a(this).join(' ');}};object.extend(element.classnames.prototype,enumerable);var selector=class.create();selector.prototype={initialize:function(expression){this.params={classnames:[]};this.expression=expression.tostring().strip();this.parseexpression();this.compilematcher();},parseexpression:function(){function abort(message){throw'parse error in selector: '+message;}
if(this.expression=='')abort('empty expression');var params=this.params,expr=this.expression,match,modifier,clause,rest;while(match=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){params.attributes=params.attributes||[];params.attributes.push({name:match[2],operator:match[3],value:match[4]||match[5]||''});expr=match[1];}
if(expr=='*')return this.params.wildcard=true;while(match=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)){modifier=match[1],clause=match[2],rest=match[3];switch(modifier){case'#':params.id=clause;break;case'.':params.classnames.push(clause);break;case'':case undefined:params.tagname=clause.touppercase();break;default:abort(expr.inspect());}
expr=rest;}
if(expr.length>0)abort(expr.inspect());},buildmatchexpression:function(){var params=this.params,conditions=[],clause;if(params.wildcard)
conditions.push('true');if(clause=params.id)
conditions.push('element.readattribute("id") == '+clause.inspect());if(clause=params.tagname)
conditions.push('element.tagname.touppercase() == '+clause.inspect());if((clause=params.classnames).length>0)
for(var i=0,length=clause.length;i<length;i++)
conditions.push('element.hasclassname('+clause[i].inspect()+')');if(clause=params.attributes){clause.each(function(attribute){var value='element.readattribute('+attribute.name.inspect()+')';var splitvalueby=function(delimiter){return value+' && '+value+'.split('+delimiter.inspect()+')';}
switch(attribute.operator){case'=':conditions.push(value+' == '+attribute.value.inspect());break;case'~=':conditions.push(splitvalueby(' ')+'.include('+attribute.value.inspect()+')');break;case'|=':conditions.push(splitvalueby('-')+'.first().touppercase() == '+attribute.value.touppercase().inspect());break;case'!=':conditions.push(value+' != '+attribute.value.inspect());break;case'':case undefined:conditions.push('element.hasattribute('+attribute.name.inspect()+')');break;default:throw'unknown operator '+attribute.operator+' in selector';}});}
return conditions.join(' && ');},compilematcher:function(){this.match=new function('element','if (!element.tagname) return false; \
      element = $(element); \
      return '+this.buildmatchexpression());},findelements:function(scope){var element;if(element=$(this.params.id))
if(this.match(element))
if(!scope||element.childof(element,scope))
return[element];scope=(scope||document).getelementsbytagname(this.params.tagname||'*');var results=[];for(var i=0,length=scope.length;i<length;i++)
if(this.match(element=scope[i]))
results.push(element.extend(element));return results;},tostring:function(){return this.expression;}}
object.extend(selector,{matchelements:function(elements,expression){var selector=new selector(expression);return elements.select(selector.match.bind(selector)).map(element.extend);},findelement:function(elements,expression,index){if(typeof expression=='number')index=expression,expression=false;return selector.matchelements(elements,expression||'*')[index||0];},findchildelements:function(element,expressions){return expressions.map(function(expression){return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null],function(results,expr){var selector=new selector(expr);return results.inject([],function(elements,result){return elements.concat(selector.findelements(result||element));});});}).flatten();}});function $$(){return selector.findchildelements(document,$a(arguments));}
var form={reset:function(form){$(form).reset();return form;},serializeelements:function(elements,gethash){var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){var key=element.name,value=$(element).getvalue();if(value!=undefined){if(result[key]){if(result[key].constructor!=array)result[key]=[result[key]];result[key].push(value);}
else result[key]=value;}}
return result;});return gethash?data:hash.toquerystring(data);}};form.methods={serialize:function(form,gethash){return form.serializeelements(form.getelements(form),gethash);},getelements:function(form){return $a($(form).getelementsbytagname('*')).inject([],function(elements,child){if(form.element.serializers[child.tagname.tolowercase()])
elements.push(element.extend(child));return elements;});},getinputs:function(form,typename,name){form=$(form);var inputs=form.getelementsbytagname('input');if(!typename&&!name)return $a(inputs).map(element.extend);for(var i=0,matchinginputs=[],length=inputs.length;i<length;i++){var input=inputs[i];if((typename&&input.type!=typename)||(name&&input.name!=name))
continue;matchinginputs.push(element.extend(input));}
return matchinginputs;},disable:function(form){form=$(form);form.getelements().each(function(element){element.blur();element.disabled='true';});return form;},enable:function(form){form=$(form);form.getelements().each(function(element){element.disabled='';});return form;},findfirstelement:function(form){return $(form).getelements().find(function(element){return element.type!='hidden'&&!element.disabled&&['input','select','textarea'].include(element.tagname.tolowercase());});},focusfirstelement:function(form){form=$(form);form.findfirstelement().activate();return form;}}
object.extend(form,form.methods);form.element={focus:function(element){$(element).focus();return element;},select:function(element){$(element).select();return element;}}
form.element.methods={serialize:function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getvalue();if(value!=undefined){var pair={};pair[element.name]=value;return hash.toquerystring(pair);}}
return'';},getvalue:function(element){element=$(element);var method=element.tagname.tolowercase();return form.element.serializers[method](element);},clear:function(element){$(element).value='';return element;},present:function(element){return $(element).value!='';},activate:function(element){element=$(element);element.focus();if(element.select&&(element.tagname.tolowercase()!='input'||!['button','reset','submit'].include(element.type)))
element.select();return element;},disable:function(element){element=$(element);element.disabled=true;return element;},enable:function(element){element=$(element);element.blur();element.disabled=false;return element;}}
object.extend(form.element,form.element.methods);var field=form.element;var $f=form.element.getvalue;form.element.serializers={input:function(element){switch(element.type.tolowercase()){case'checkbox':case'radio':return form.element.serializers.inputselector(element);default:return form.element.serializers.textarea(element);}},inputselector:function(element){return element.checked?element.value:null;},textarea:function(element){return element.value;},select:function(element){return this[element.type=='select-one'?'selectone':'selectmany'](element);},selectone:function(element){var index=element.selectedindex;return index>=0?this.optionvalue(element.options[index]):null;},selectmany:function(element){var values,length=element.length;if(!length)return null;for(var i=0,values=[];i<length;i++){var opt=element.options[i];if(opt.selected)values.push(this.optionvalue(opt));}
return values;},optionvalue:function(opt){return element.extend(opt).hasattribute('value')?opt.value:opt.text;}}
abstract.timedobserver=function(){}
abstract.timedobserver.prototype={initialize:function(element,frequency,callback){this.frequency=frequency;this.element=$(element);this.callback=callback;this.lastvalue=this.getvalue();this.registercallback();},registercallback:function(){setinterval(this.ontimerevent.bind(this),this.frequency*1000);},ontimerevent:function(){var value=this.getvalue();var changed=('string'==typeof this.lastvalue&&'string'==typeof value?this.lastvalue!=value:string(this.lastvalue)!=string(value));if(changed){this.callback(this.element,value);this.lastvalue=value;}}}
form.element.observer=class.create();form.element.observer.prototype=object.extend(new abstract.timedobserver(),{getvalue:function(){return form.element.getvalue(this.element);}});form.observer=class.create();form.observer.prototype=object.extend(new abstract.timedobserver(),{getvalue:function(){return form.serialize(this.element);}});abstract.eventobserver=function(){}
abstract.eventobserver.prototype={initialize:function(element,callback){this.element=$(element);this.callback=callback;this.lastvalue=this.getvalue();if(this.element.tagname.tolowercase()=='form')
this.registerformcallbacks();else
this.registercallback(this.element);},onelementevent:function(){var value=this.getvalue();if(this.lastvalue!=value){this.callback(this.element,value);this.lastvalue=value;}},registerformcallbacks:function(){form.getelements(this.element).each(this.registercallback.bind(this));},registercallback:function(element){if(element.type){switch(element.type.tolowercase()){case'checkbox':case'radio':event.observe(element,'click',this.onelementevent.bind(this));break;default:event.observe(element,'change',this.onelementevent.bind(this));break;}}}}
form.element.eventobserver=class.create();form.element.eventobserver.prototype=object.extend(new abstract.eventobserver(),{getvalue:function(){return form.element.getvalue(this.element);}});form.eventobserver=class.create();form.eventobserver.prototype=object.extend(new abstract.eventobserver(),{getvalue:function(){return form.serialize(this.element);}});if(!window.event){var event=new object();}
object.extend(event,{key_backspace:8,key_tab:9,key_return:13,key_esc:27,key_left:37,key_up:38,key_right:39,key_down:40,key_delete:46,key_home:36,key_end:35,key_pageup:33,key_pagedown:34,element:function(event){return event.target||event.srcelement;},isleftclick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},pointerx:function(event){return event.pagex||(event.clientx+
(document.documentelement.scrollleft||document.body.scrollleft));},pointery:function(event){return event.pagey||(event.clienty+
(document.documentelement.scrolltop||document.body.scrolltop));},stop:function(event){if(event.preventdefault){event.preventdefault();event.stoppropagation();}else{event.returnvalue=false;event.cancelbubble=true;}},findelement:function(event,tagname){var element=event.element(event);while(element.parentnode&&(!element.tagname||(element.tagname.touppercase()!=tagname.touppercase())))
element=element.parentnode;return element;},observers:false,_observeandcache:function(element,name,observer,usecapture){if(!this.observers)this.observers=[];if(element.addeventlistener){this.observers.push([element,name,observer,usecapture]);element.addeventlistener(name,observer,usecapture);}else if(element.attachevent){this.observers.push([element,name,observer,usecapture]);element.attachevent('on'+name,observer);}},unloadcache:function(){if(!event.observers)return;for(var i=0,length=event.observers.length;i<length;i++){event.stopobserving.apply(this,event.observers[i]);event.observers[i][0]=null;}
event.observers=false;},observe:function(element,name,observer,usecapture){element=$(element);usecapture=usecapture||false;if(name=='keypress'&&(navigator.appversion.match(/konqueror|safari|khtml/)||element.attachevent))
name='keydown';event._observeandcache(element,name,observer,usecapture);},stopobserving:function(element,name,observer,usecapture){element=$(element);usecapture=usecapture||false;if(name=='keypress'&&(navigator.appversion.match(/konqueror|safari|khtml/)||element.detachevent))
name='keydown';if(element.removeeventlistener){element.removeeventlistener(name,observer,usecapture);}else if(element.detachevent){try{element.detachevent('on'+name,observer);}catch(e){}}}});if(navigator.appversion.match(/\bmsie\b/))
event.observe(window,'unload',event.unloadcache,false);var position={includescrolloffsets:false,prepare:function(){this.deltax=window.pagexoffset||document.documentelement.scrollleft||document.body.scrollleft||0;this.deltay=window.pageyoffset||document.documentelement.scrolltop||document.body.scrolltop||0;},realoffset:function(element){var valuet=0,valuel=0;do{valuet+=element.scrolltop||0;valuel+=element.scrollleft||0;element=element.parentnode;}while(element);return[valuel,valuet];},cumulativeoffset:function(element){var valuet=0,valuel=0;do{valuet+=element.offsettop||0;valuel+=element.offsetleft||0;element=element.offsetparent;}while(element);return[valuel,valuet];},positionedoffset:function(element){var valuet=0,valuel=0;do{valuet+=element.offsettop||0;valuel+=element.offsetleft||0;element=element.offsetparent;if(element){if(element.tagname=='body')break;var p=element.getstyle(element,'position');if(p=='relative'||p=='absolute')break;}}while(element);return[valuel,valuet];},offsetparent:function(element){if(element.offsetparent)return element.offsetparent;if(element==document.body)return element;while((element=element.parentnode)&&element!=document.body)
if(element.getstyle(element,'position')!='static')
return element;return document.body;},within:function(element,x,y){if(this.includescrolloffsets)
return this.withinincludingscrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=this.cumulativeoffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetheight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetwidth);},withinincludingscrolloffsets:function(element,x,y){var offsetcache=this.realoffset(element);this.xcomp=x+offsetcache[0]-this.deltax;this.ycomp=y+offsetcache[1]-this.deltay;this.offset=this.cumulativeoffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetheight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetwidth);},overlap:function(mode,element){if(!mode)return 0;if(mode=='vertical')
return((this.offset[1]+element.offsetheight)-this.ycomp)/element.offsetheight;if(mode=='horizontal')
return((this.offset[0]+element.offsetwidth)-this.xcomp)/element.offsetwidth;},page:function(forelement){var valuet=0,valuel=0;var element=forelement;do{valuet+=element.offsettop||0;valuel+=element.offsetleft||0;if(element.offsetparent==document.body)
if(element.getstyle(element,'position')=='absolute')break;}while(element=element.offsetparent);element=forelement;do{if(!window.opera||element.tagname=='body'){valuet-=element.scrolltop||0;valuel-=element.scrollleft||0;}}while(element=element.parentnode);return[valuel,valuet];},clone:function(source,target){var options=object.extend({setleft:true,settop:true,setwidth:true,setheight:true,offsettop:0,offsetleft:0},arguments[2]||{})
source=$(source);var p=position.page(source);target=$(target);var delta=[0,0];var parent=null;if(element.getstyle(target,'position')=='absolute'){parent=position.offsetparent(target);delta=position.page(parent);}
if(parent==document.body){delta[0]-=document.body.offsetleft;delta[1]-=document.body.offsettop;}
if(options.setleft)target.style.left=(p[0]-delta[0]+options.offsetleft)+'px';if(options.settop)target.style.top=(p[1]-delta[1]+options.offsettop)+'px';if(options.setwidth)target.style.width=source.offsetwidth+'px';if(options.setheight)target.style.height=source.offsetheight+'px';},absolutize:function(element){element=$(element);if(element.style.position=='absolute')return;position.prepare();var offsets=position.positionedoffset(element);var top=offsets[1];var left=offsets[0];var width=element.clientwidth;var height=element.clientheight;element._originalleft=left-parsefloat(element.style.left||0);element._originaltop=top-parsefloat(element.style.top||0);element._originalwidth=element.style.width;element._originalheight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px';},relativize:function(element){element=$(element);if(element.style.position=='relative')return;position.prepare();element.style.position='relative';var top=parsefloat(element.style.top||0)-(element._originaltop||0);var left=parsefloat(element.style.left||0)-(element._originalleft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalheight;element.style.width=element._originalwidth;}}
if(/konqueror|safari|khtml/.test(navigator.useragent)){position.cumulativeoffset=function(element){var valuet=0,valuel=0;do{valuet+=element.offsettop||0;valuel+=element.offsetleft||0;if(element.offsetparent==document.body)
if(element.getstyle(element,'position')=='absolute')break;element=element.offsetparent;}while(element);return[valuel,valuet];}}
element.addmethods();element.addmethods({appendchildrenfrommarkup:function(element,markup)
{element=$(element);try
{detectbrowser();if(windowsinternetexplorer&&browserversion==7)
{element.insertadjacenthtml("beforeend",markup);}
else
{var dummydiv=$(document.createelement('div'));dummydiv.innerhtml=markup;dummydiv.immediatedescendants().each(function(child){element.appendchild(child);});}}
catch(e)
{}
return element;},ensurehaslayoutforie:function(element)
{element=$(element);detectbrowser();if(windowsinternetexplorer&&browserversion<7)
{if(!element.currentstyle.haslayout)
{element.style.zoom=1;}}},setfilter:function(element,filtername,filterparams)
{element=$(element);var regex=new regexp(filtername+'\\([^\\)]*\\);','gi');element.style.filter=element.style.filter.replace(regex,'')+
filtername+'('+filterparams+'); ';return element;},killfilter:function(element,filtername)
{element=$(element);var regex=new regexp(filtername+'\\([^\\)]*\\);','gi');element.style.filter=element.style.filter.replace(regex,'');return element;}});function iwurl(urlstring)
{try
{if((arguments.length==0)||(arguments.length==1&&(urlstring==""||urlstring==null)))
{this.p_initwithparts(null,null,null,null,null);}
else if(arguments.length==1)
{urlstring.replace("file://localhost/","file:///");var urlparts=urlstring.match(/^([a-z]+):\/\/([^/]*)((\/[^?#]*)(\?([^#]*))?(#(.*))?)?/i);if(urlparts)
{this.p_initwithparts(urlparts[1],urlparts[2],urlparts[4]||"/",urlparts[6]||null,urlparts[8]||null);}
else
{urlparts=urlstring.match(/^([^?#]*)(\?([^#]*))?(#(.*))?/);if(urlparts)
{this.p_initwithparts(null,null,urlparts[1],urlparts[3]||null,urlparts[5]||null);}
else
{}}}}
catch(e)
{print("exception parsing url:"+e);}}
object.extend(iwurl,{p_normalizepathcomponents:function(components)
{var index=0;while(index<components.length)
{var component=components[index];if(component==""||component==".")
{components.splice(index,1);}
else if(component=="..")
{if(index>0)
{var previouscomponent=components[index-1];if(previouscomponent=="/")
{components.splice(index,1);}
else if(previouscomponent!="..")
{components.splice(index-1,2);index-=1;}
else
{index+=1;}}
else
{index+=1;}}
else
{index+=1;}}
return components;}});object.extend(iwurl.prototype,{p_initwithparts:function(inprotocol,inauthority,inpath,inquery,infragment)
{this.mprotocol=inprotocol;this.mauthority=inauthority;this.mquery=inquery;this.mfragment=infragment;this.mpathcomponents=null;if(inpath)
{this.mpathcomponents=inpath.split('/');if(this.mpathcomponents[0]=="")
this.mpathcomponents[0]='/';for(var i=0;i<this.mpathcomponents.length;++i)
{this.mpathcomponents[i]=decodeuricomponent(this.mpathcomponents[i]);}
this.mpathcomponents=iwurl.p_normalizepathcomponents(this.mpathcomponents);}},copy:function()
{var copy=new iwurl();copy.mprotocol=this.mprotocol;copy.mauthority=this.mauthority;copy.mquery=this.mquery;copy.mfragment=this.mfragment;copy.mpathcomponents=null;if(this.mpathcomponents)
{copy.mpathcomponents=[];for(var i=0;i<this.mpathcomponents.length;++i)
{copy.mpathcomponents[i]=string(this.mpathcomponents[i]);}}
return copy;},tostring:function()
{var path="null";if(this.c)
{path="";this.mpathcomponents.each(function(component)
{if(path=="")
path="[ "+component;else
path+=", "+component;});if(path=="")
path="[]";else
path+=" ]";}
var result="{"+this.mprotocol+", "+this.mauthority+", "+path+", "+this.mquery+", "+this.mfragment+"}";return result;},isabsolute:function()
{return(this.mpathcomponents&&this.mpathcomponents.length&&this.mpathcomponents[0]=="/");},isrelative:function()
{return(this.mprotocol==null);},encodedpathcomponents:function()
{var result=[];var index=0;while(index<this.mpathcomponents.length)
{if((index==0)&&(this.mpathcomponents[0]=="/"))
{result.push("/");}
else
{result.push(encodeuricomponent(this.mpathcomponents[index]));}
index+=1;}
return result;},encodedpath:function()
{if(this.isabsolute())
{return"/"+this.encodedpathcomponents().slice(1).join("/");}
else
{return this.encodedpathcomponents().join("/");}},tourlstring:function()
{if(this.isrelative())
{return this.encodedpath()+
(this.mquery?"?"+this.mquery:"")+
(this.mfragment?"#"+this.mfragment:"");}
else
{return this.mprotocol+":"+"//"+this.mauthority+this.encodedpath()+
(this.mquery?"?"+this.mquery:"")+
(this.mfragment?"#"+this.mfragment:"");}},isequal:function(that)
{var pathmatches=true;if((this.mpathcomponents)&&(that.mpathcomponents)&&(this.mpathcomponents.length==that.mpathcomponents.length))
{for(var index=0;index<this.mpathcomponents.length;++index)
{if(this.mpathcomponents[index]!=that.mpathcomponents[index])
{pathmatches=false;break;}}}
else
{pathmatches=false;}
return(this.mprotocol==that.mprotocol)&&(this.mauthority==that.mauthority)&&pathmatches&&(this.mquery==that.mquery)&&(this.mfragment==that.mfragment);},resolve:function(base)
{if(!this.isrelative())
return new iwurl(this.tourlstring());var resolved=base.copy();resolved.mquery=null;resolved.mfragment=null;if(resolved.mpathcomponents==null)
{resolved.mpathcomponents=[];}
this.mpathcomponents.each(function(component)
{resolved.mpathcomponents.push(component);});resolved.mpathcomponents=iwurl.p_normalizepathcomponents(resolved.mpathcomponents);return resolved;},relativize:function(base)
{if(base&&(base.mpathcomponents&&base.mpathcomponents.length>0)&&(this.mprotocol==base.mprotocol)&&(this.mauthority==base.mauthority))
{var commonancestorindex=0;for(var index=0;index<math.min(this.mpathcomponents.length,base.mpathcomponents.length);++index)
{if(this.mpathcomponents[index]==base.mpathcomponents[index])
commonancestorindex=index;else
break;}
var relativepath=[];for(var up=base.mpathcomponents.length-1;up>commonancestorindex;--up)
{relativepath.push("..");}
for(var down=commonancestorindex+1;down<this.mpathcomponents.length;++down)
{relativepath.push(this.mpathcomponents[down]);}
var relativized=new iwurl();relativized.mpathcomponents=iwurl.p_normalizepathcomponents(relativepath);relativized.mquery=this.mquery;relativized.mfragment=this.mfragment;return relativized;}
else
{return this.copy();}}});