/* This notice must be untouched at all times.

wz_jsgraphics.js    v. 3.02
The latest version is available at
http://www.walterzorn.com
or http://www.devira.com
or http://www.walterzorn.de

Copyright (c) 2002-2004 Walter Zorn. All rights reserved.
Created 3. 11. 2002 by Walter Zorn (Web: http://www.walterzorn.com )
Last modified: 26. 10. 2007

Performance optimizations for Internet Explorer
by Thomas Frank and John Holdsworth.
fillPolygon method implemented by Matthieu Haller.

High Performance JavaScript Graphics Library.
Provides methods
- to draw lines, rectangles, ellipses, polygons
	with specifiable line thickness,
- to fill rectangles, polygons, ellipses and arcs
- to draw text.
NOTE: Operations, functions and branching have rather been optimized
to efficiency and speed than to shortness of source code.

LICENSE: LGPL

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License (LGPL) as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA,
or see http://www.gnu.org/copyleft/lesser.html
*/
var jg_ok,jg_ie,jg_fast,jg_dom,jg_moz;function _chkDHTM(x,i){x=document.body||null;jg_ie=x&&typeof x.insertAdjacentHTML!="undefined"&&document.createElement;jg_dom=(x&&!jg_ie&&typeof x.appendChild!="undefined"&&typeof document.createRange!="undefined"&&typeof(i=document.createRange()).setStartBefore!="undefined"&&typeof i.createContextualFragment!="undefined");jg_fast=jg_ie&&document.all&&!window.opera;jg_moz=jg_dom&&typeof x.style.MozOpacity!="undefined";jg_ok=!!(jg_ie||jg_dom)}function _pntCnvDom(){var x=this.wnd.document.createRange();x.setStartBefore(this.cnv);x=x.createContextualFragment(jg_fast?this._htmRpc():this.htm);if(this.cnv)this.cnv.appendChild(x);this.htm=""}function _pntCnvIe(){if(this.cnv)this.cnv.insertAdjacentHTML("BeforeEnd",jg_fast?this._htmRpc():this.htm);this.htm=""}function _pntDoc(){this.wnd.document.write(jg_fast?this._htmRpc():this.htm);this.htm=''}function _pntN(){}function _mkDiv(x,y,w,h){this.htm+='<div style="position:absolute;'+'left:'+x+'px;'+'top:'+y+'px;'+'width:'+w+'px;'+'height:'+h+'px;'+'clip:rect(0,'+w+'px,'+h+'px,0);'+'background-color:'+this.color+(!jg_moz?';overflow:hidden':'')+';"><\/div>'}function _mkDivIe(x,y,w,h){this.htm+='%%'+this.color+';'+x+';'+y+';'+w+';'+h+';'}function _mkDivPrt(x,y,w,h){this.htm+='<div style="position:absolute;'+'border-left:'+w+'px solid '+this.color+';'+'left:'+x+'px;'+'top:'+y+'px;'+'width:0px;'+'height:'+h+'px;'+'clip:rect(0,'+w+'px,'+h+'px,0);'+'background-color:'+this.color+(!jg_moz?';overflow:hidden':'')+';"><\/div>'}var _regex=/%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g;function _htmRpc(){return this.htm.replace(_regex,'<div style="overflow:hidden;position:absolute;background-color:'+'$1;left:$2;top:$3;width:$4;height:$5"></div>\n')}function _htmPrtRpc(){return this.htm.replace(_regex,'<div style="overflow:hidden;position:absolute;background-color:'+'$1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n')}function _mkLin(x1,y1,x2,y2){if(x1>x2){var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2}var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1;if(dx>=dy){var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx,ox=x;while(dx>0){--dx;++x;if(p>0){this._mkDiv(ox,y,x-ox,1);y+=yIncr;p+=pru;ox=x}else p+=pr}this._mkDiv(ox,y,x2-ox+1,1)}else{var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy,oy=y;if(y2<=y1){while(dy>0){--dy;if(p>0){this._mkDiv(x++,y,1,oy-y+1);y+=yIncr;p+=pru;oy=y}else{y+=yIncr;p+=pr}}this._mkDiv(x2,y2,1,oy-y2+1)}else{while(dy>0){--dy;y+=yIncr;if(p>0){this._mkDiv(x++,oy,1,y-oy);p+=pru;oy=y}else p+=pr}this._mkDiv(x2,oy,1,y2-oy+1)}}}function _mkLin2D(x1,y1,x2,y2){if(x1>x2){var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2}var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1;var s=this.stroke;if(dx>=dy){if(dx>0&&s-3>0){var _s=(s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy)/dx;_s=(!(s-4)?Math.ceil(_s):Math.round(_s))+1}else var _s=s;var ad=Math.ceil(s/2);var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx,ox=x;while(dx>0){--dx;++x;if(p>0){this._mkDiv(ox,y,x-ox+ad,_s);y+=yIncr;p+=pru;ox=x}else p+=pr}this._mkDiv(ox,y,x2-ox+ad+1,_s)}else{if(s-3>0){var _s=(s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy)/dy;_s=(!(s-4)?Math.ceil(_s):Math.round(_s))+1}else var _s=s;var ad=Math.round(s/2);var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy,oy=y;if(y2<=y1){++ad;while(dy>0){--dy;if(p>0){this._mkDiv(x++,y,_s,oy-y+ad);y+=yIncr;p+=pru;oy=y}else{y+=yIncr;p+=pr}}this._mkDiv(x2,y2,_s,oy-y2+ad)}else{while(dy>0){--dy;y+=yIncr;if(p>0){this._mkDiv(x++,oy,_s,y-oy+ad);p+=pru;oy=y}else p+=pr}this._mkDiv(x2,oy,_s,y2-oy+ad+1)}}}function _mkLinDott(x1,y1,x2,y2){if(x1>x2){var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2}var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1,drw=true;if(dx>=dy){var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx;while(dx>0){--dx;if(drw)this._mkDiv(x,y,1,1);drw=!drw;if(p>0){y+=yIncr;p+=pru}else p+=pr;++x}}else{var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy;while(dy>0){--dy;if(drw)this._mkDiv(x,y,1,1);drw=!drw;y+=yIncr;if(p>0){++x;p+=pru}else p+=pr}}if(drw)this._mkDiv(x,y,1,1)}function _mkOv(left,top,width,height){var a=(++width)>>1,b=(++height)>>1,wod=width&1,hod=height&1,cx=left+a,cy=top+b,x=0,y=b,ox=0,oy=b,aa2=(a*a)<<1,aa4=aa2<<1,bb2=(b*b)<<1,bb4=bb2<<1,st=(aa2>>1)*(1-(b<<1))+bb2,tt=(bb2>>1)-aa2*((b<<1)-1),w,h;while(y>0){if(st<0){st+=bb2*((x<<1)+3);tt+=bb4*(++x)}else if(tt<0){st+=bb2*((x<<1)+3)-aa4*(y-1);tt+=bb4*(++x)-aa2*(((y--)<<1)-3);w=x-ox;h=oy-y;if((w&2)&&(h&2)){this._mkOvQds(cx,cy,x-2,y+2,1,1,wod,hod);this._mkOvQds(cx,cy,x-1,y+1,1,1,wod,hod)}else this._mkOvQds(cx,cy,x-1,oy,w,h,wod,hod);ox=x;oy=y}else{tt-=aa2*((y<<1)-3);st-=aa4*(--y)}}w=a-ox+1;h=(oy<<1)+hod;y=cy-oy;this._mkDiv(cx-a,y,w,h);this._mkDiv(cx+ox+wod-1,y,w,h)}function _mkOv2D(left,top,width,height){var s=this.stroke;width+=s+1;height+=s+1;var a=width>>1,b=height>>1,wod=width&1,hod=height&1,cx=left+a,cy=top+b,x=0,y=b,aa2=(a*a)<<1,aa4=aa2<<1,bb2=(b*b)<<1,bb4=bb2<<1,st=(aa2>>1)*(1-(b<<1))+bb2,tt=(bb2>>1)-aa2*((b<<1)-1);if(s-4<0&&(!(s-2)||width-51>0&&height-51>0)){var ox=0,oy=b,w,h,pxw;while(y>0){if(st<0){st+=bb2*((x<<1)+3);tt+=bb4*(++x)}else if(tt<0){st+=bb2*((x<<1)+3)-aa4*(y-1);tt+=bb4*(++x)-aa2*(((y--)<<1)-3);w=x-ox;h=oy-y;if(w-1){pxw=w+1+(s&1);h=s}else if(h-1){pxw=s;h+=1+(s&1)}else pxw=h=s;this._mkOvQds(cx,cy,x-1,oy,pxw,h,wod,hod);ox=x;oy=y}else{tt-=aa2*((y<<1)-3);st-=aa4*(--y)}}this._mkDiv(cx-a,cy-oy,s,(oy<<1)+hod);this._mkDiv(cx+a+wod-s,cy-oy,s,(oy<<1)+hod)}else{var _a=(width-(s<<1))>>1,_b=(height-(s<<1))>>1,_x=0,_y=_b,_aa2=(_a*_a)<<1,_aa4=_aa2<<1,_bb2=(_b*_b)<<1,_bb4=_bb2<<1,_st=(_aa2>>1)*(1-(_b<<1))+_bb2,_tt=(_bb2>>1)-_aa2*((_b<<1)-1),pxl=new Array(),pxt=new Array(),_pxb=new Array();pxl[0]=0;pxt[0]=b;_pxb[0]=_b-1;while(y>0){if(st<0){pxl[pxl.length]=x;pxt[pxt.length]=y;st+=bb2*((x<<1)+3);tt+=bb4*(++x)}else if(tt<0){pxl[pxl.length]=x;st+=bb2*((x<<1)+3)-aa4*(y-1);tt+=bb4*(++x)-aa2*(((y--)<<1)-3);pxt[pxt.length]=y}else{tt-=aa2*((y<<1)-3);st-=aa4*(--y)}if(_y>0){if(_st<0){_st+=_bb2*((_x<<1)+3);_tt+=_bb4*(++_x);_pxb[_pxb.length]=_y-1}else if(_tt<0){_st+=_bb2*((_x<<1)+3)-_aa4*(_y-1);_tt+=_bb4*(++_x)-_aa2*(((_y--)<<1)-3);_pxb[_pxb.length]=_y-1}else{_tt-=_aa2*((_y<<1)-3);_st-=_aa4*(--_y);_pxb[_pxb.length-1]--}}}var ox=-wod,oy=b,_oy=_pxb[0],l=pxl.length,w,h;for(var i=0;i<l;i++){if(typeof _pxb[i]!="undefined"){if(_pxb[i]<_oy||pxt[i]<oy){x=pxl[i];this._mkOvQds(cx,cy,x,oy,x-ox,oy-_oy,wod,hod);ox=x;oy=pxt[i];_oy=_pxb[i]}}else{x=pxl[i];this._mkDiv(cx-x,cy-oy,1,(oy<<1)+hod);this._mkDiv(cx+ox+wod,cy-oy,1,(oy<<1)+hod);ox=x;oy=pxt[i]}}this._mkDiv(cx-a,cy-oy,1,(oy<<1)+hod);this._mkDiv(cx+ox+wod,cy-oy,1,(oy<<1)+hod)}}function _mkOvDott(left,top,width,height){var a=(++width)>>1,b=(++height)>>1,wod=width&1,hod=height&1,hodu=hod^1,cx=left+a,cy=top+b,x=0,y=b,aa2=(a*a)<<1,aa4=aa2<<1,bb2=(b*b)<<1,bb4=bb2<<1,st=(aa2>>1)*(1-(b<<1))+bb2,tt=(bb2>>1)-aa2*((b<<1)-1),drw=true;while(y>0){if(st<0){st+=bb2*((x<<1)+3);tt+=bb4*(++x)}else if(tt<0){st+=bb2*((x<<1)+3)-aa4*(y-1);tt+=bb4*(++x)-aa2*(((y--)<<1)-3)}else{tt-=aa2*((y<<1)-3);st-=aa4*(--y)}if(drw&&y>=hodu)this._mkOvQds(cx,cy,x,y,1,1,wod,hod);drw=!drw}}function _mkRect(x,y,w,h){var s=this.stroke;this._mkDiv(x,y,w,s);this._mkDiv(x+w,y,s,h);this._mkDiv(x,y+h,w+s,s);this._mkDiv(x,y+s,s,h-s)}function _mkRectDott(x,y,w,h){this.drawLine(x,y,x+w,y);this.drawLine(x+w,y,x+w,y+h);this.drawLine(x,y+h,x+w,y+h);this.drawLine(x,y,x,y+h)}function jsgFont(){this.PLAIN='font-weight:normal;';this.BOLD='font-weight:bold;';this.ITALIC='font-style:italic;';this.ITALIC_BOLD=this.ITALIC+this.BOLD;this.BOLD_ITALIC=this.ITALIC_BOLD}var Font=new jsgFont();function jsgStroke(){this.DOTTED=-1}var Stroke=new jsgStroke();function jsGraphics(cnv,wnd){this.setColor=function(x){this.color=x.toLowerCase()};this.setStroke=function(x){this.stroke=x;if(!(x+1)){this.drawLine=_mkLinDott;this._mkOv=_mkOvDott;this.drawRect=_mkRectDott}else if(x-1>0){this.drawLine=_mkLin2D;this._mkOv=_mkOv2D;this.drawRect=_mkRect}else{this.drawLine=_mkLin;this._mkOv=_mkOv;this.drawRect=_mkRect}};this.setPrintable=function(arg){this.printable=arg;if(jg_fast){this._mkDiv=_mkDivIe;this._htmRpc=arg?_htmPrtRpc:_htmRpc}else this._mkDiv=arg?_mkDivPrt:_mkDiv};this.setFont=function(fam,sz,sty){this.ftFam=fam;this.ftSz=sz;this.ftSty=sty||Font.PLAIN};this.drawPolyline=this.drawPolyLine=function(x,y){for(var i=x.length-1;i;){--i;this.drawLine(x[i],y[i],x[i+1],y[i+1])}};this.fillRect=function(x,y,w,h){this._mkDiv(x,y,w,h)};this.drawPolygon=function(x,y){this.drawPolyline(x,y);this.drawLine(x[x.length-1],y[x.length-1],x[0],y[0])};this.drawEllipse=this.drawOval=function(x,y,w,h){this._mkOv(x,y,w,h)};this.fillEllipse=this.fillOval=function(left,top,w,h){var a=w>>1,b=h>>1,wod=w&1,hod=h&1,cx=left+a,cy=top+b,x=0,y=b,oy=b,aa2=(a*a)<<1,aa4=aa2<<1,bb2=(b*b)<<1,bb4=bb2<<1,st=(aa2>>1)*(1-(b<<1))+bb2,tt=(bb2>>1)-aa2*((b<<1)-1),xl,dw,dh;if(w)while(y>0){if(st<0){st+=bb2*((x<<1)+3);tt+=bb4*(++x)}else if(tt<0){st+=bb2*((x<<1)+3)-aa4*(y-1);xl=cx-x;dw=(x<<1)+wod;tt+=bb4*(++x)-aa2*(((y--)<<1)-3);dh=oy-y;this._mkDiv(xl,cy-oy,dw,dh);this._mkDiv(xl,cy+y+hod,dw,dh);oy=y}else{tt-=aa2*((y<<1)-3);st-=aa4*(--y)}}this._mkDiv(cx-a,cy-oy,w,(oy<<1)+hod)};this.fillArc=function(iL,iT,iW,iH,fAngA,fAngZ){var a=iW>>1,b=iH>>1,iOdds=(iW&1)|((iH&1)<<16),cx=iL+a,cy=iT+b,x=0,y=b,ox=x,oy=y,aa2=(a*a)<<1,aa4=aa2<<1,bb2=(b*b)<<1,bb4=bb2<<1,st=(aa2>>1)*(1-(b<<1))+bb2,tt=(bb2>>1)-aa2*((b<<1)-1),xEndA,yEndA,xEndZ,yEndZ,iSects=(1<<(Math.floor((fAngA%=360.0)/180.0)<<3))|(2<<(Math.floor((fAngZ%=360.0)/180.0)<<3))|((fAngA>=fAngZ)<<16),aBndA=new Array(b+1),aBndZ=new Array(b+1);fAngA*=Math.PI/180.0;fAngZ*=Math.PI/180.0;xEndA=cx+Math.round(a*Math.cos(fAngA));yEndA=cy+Math.round(-b*Math.sin(fAngA));_mkLinVirt(aBndA,cx,cy,xEndA,yEndA);xEndZ=cx+Math.round(a*Math.cos(fAngZ));yEndZ=cy+Math.round(-b*Math.sin(fAngZ));_mkLinVirt(aBndZ,cx,cy,xEndZ,yEndZ);while(y>0){if(st<0){st+=bb2*((x<<1)+3);tt+=bb4*(++x)}else if(tt<0){st+=bb2*((x<<1)+3)-aa4*(y-1);ox=x;tt+=bb4*(++x)-aa2*(((y--)<<1)-3);this._mkArcDiv(ox,y,oy,cx,cy,iOdds,aBndA,aBndZ,iSects);oy=y}else{tt-=aa2*((y<<1)-3);st-=aa4*(--y);if(y&&(aBndA[y]!=aBndA[y-1]||aBndZ[y]!=aBndZ[y-1])){this._mkArcDiv(x,y,oy,cx,cy,iOdds,aBndA,aBndZ,iSects);ox=x;oy=y}}}this._mkArcDiv(x,0,oy,cx,cy,iOdds,aBndA,aBndZ,iSects);if(iOdds>>16){if(iSects>>16){var xl=(yEndA<=cy||yEndZ>cy)?(cx-x):cx;this._mkDiv(xl,cy,x+cx-xl+(iOdds&0xffff),1)}else if((iSects&0x01)&&yEndZ>cy)this._mkDiv(cx-x,cy,x,1)}};this.fillPolygon=function(array_x,array_y){var i;var y;var miny,maxy;var x1,y1;var x2,y2;var ind1,ind2;var ints;var n=array_x.length;if(!n)return;miny=array_y[0];maxy=array_y[0];for(i=1;i<n;i++){if(array_y[i]<miny)miny=array_y[i];if(array_y[i]>maxy)maxy=array_y[i]}for(y=miny;y<=maxy;y++){var polyInts=new Array();ints=0;for(i=0;i<n;i++){if(!i){ind1=n-1;ind2=0}else{ind1=i-1;ind2=i}y1=array_y[ind1];y2=array_y[ind2];if(y1<y2){x1=array_x[ind1];x2=array_x[ind2]}else if(y1>y2){y2=array_y[ind1];y1=array_y[ind2];x2=array_x[ind1];x1=array_x[ind2]}else continue;if((y>=y1)&&(y<y2))polyInts[ints++]=Math.round((y-y1)*(x2-x1)/(y2-y1)+x1);else if((y==maxy)&&(y>y1)&&(y<=y2))polyInts[ints++]=Math.round((y-y1)*(x2-x1)/(y2-y1)+x1)}polyInts.sort(_CompInt);for(i=0;i<ints;i+=2)this._mkDiv(polyInts[i],y,polyInts[i+1]-polyInts[i]+1,1)}};this.drawString=function(txt,x,y){this.htm+='<div style="position:absolute;white-space:nowrap;'+'left:'+x+'px;'+'top:'+y+'px;'+'font-family:'+this.ftFam+';'+'font-size:'+this.ftSz+';'+'color:'+this.color+';'+this.ftSty+'">'+txt+'<\/div>'};this.drawStringRect=function(txt,x,y,width,halign){this.htm+='<div style="position:absolute;overflow:hidden;'+'left:'+x+'px;'+'top:'+y+'px;'+'width:'+width+'px;'+'text-align:'+halign+';'+'font-family:'+this.ftFam+';'+'font-size:'+this.ftSz+';'+'color:'+this.color+';'+this.ftSty+'">'+txt+'<\/div>'};this.drawImage=function(imgSrc,x,y,w,h,a){this.htm+='<div style="position:absolute;'+'left:'+x+'px;'+'top:'+y+'px;'+'width:'+w+'px;'+'height:'+h+'px;">'+'<img src="'+imgSrc+'" width="'+w+'" height="'+h+'"'+(a?(' '+a):'')+'>'+'<\/div>'};this.clear=function(){this.htm="";if(this.cnv)this.cnv.innerHTML=""};this._mkOvQds=function(cx,cy,x,y,w,h,wod,hod){var xl=cx-x,xr=cx+x+wod-w,yt=cy-y,yb=cy+y+hod-h;if(xr>xl+w){this._mkDiv(xr,yt,w,h);this._mkDiv(xr,yb,w,h)}else w=xr-xl+w;this._mkDiv(xl,yt,w,h);this._mkDiv(xl,yb,w,h)};this._mkArcDiv=function(x,y,oy,cx,cy,iOdds,aBndA,aBndZ,iSects){var xrDef=cx+x+(iOdds&0xffff),y2,h=oy-y,xl,xr,w;if(!h)h=1;x=cx-x;if(iSects&0xff0000){y2=cy-y-h;if(iSects&0x00ff){if(iSects&0x02){xl=Math.max(x,aBndZ[y]);w=xrDef-xl;if(w>0)this._mkDiv(xl,y2,w,h)}if(iSects&0x01){xr=Math.min(xrDef,aBndA[y]);w=xr-x;if(w>0)this._mkDiv(x,y2,w,h)}}else this._mkDiv(x,y2,xrDef-x,h);y2=cy+y+(iOdds>>16);if(iSects&0xff00){if(iSects&0x0100){xl=Math.max(x,aBndA[y]);w=xrDef-xl;if(w>0)this._mkDiv(xl,y2,w,h)}if(iSects&0x0200){xr=Math.min(xrDef,aBndZ[y]);w=xr-x;if(w>0)this._mkDiv(x,y2,w,h)}}else this._mkDiv(x,y2,xrDef-x,h)}else{if(iSects&0x00ff){if(iSects&0x02)xl=Math.max(x,aBndZ[y]);else xl=x;if(iSects&0x01)xr=Math.min(xrDef,aBndA[y]);else xr=xrDef;y2=cy-y-h;w=xr-xl;if(w>0)this._mkDiv(xl,y2,w,h)}if(iSects&0xff00){if(iSects&0x0100)xl=Math.max(x,aBndA[y]);else xl=x;if(iSects&0x0200)xr=Math.min(xrDef,aBndZ[y]);else xr=xrDef;y2=cy+y+(iOdds>>16);w=xr-xl;if(w>0)this._mkDiv(xl,y2,w,h)}}};this.setStroke(1);this.setFont("verdana,geneva,helvetica,sans-serif","12px",Font.PLAIN);this.color="#000000";this.htm="";this.wnd=wnd||window;if(!jg_ok)_chkDHTM();if(jg_ok){if(cnv){if(typeof(cnv)=="string")this.cont=document.all?(this.wnd.document.all[cnv]||null):document.getElementById?(this.wnd.document.getElementById(cnv)||null):null;else if(cnv==window.document)this.cont=document.getElementsByTagName("body")[0];else this.cont=cnv;this.cnv=this.wnd.document.createElement("div");this.cnv.style.fontSize=0;this.cont.appendChild(this.cnv);this.paint=jg_dom?_pntCnvDom:_pntCnvIe}else this.paint=_pntDoc}else this.paint=_pntN;this.setPrintable(false)}function _mkLinVirt(aLin,x1,y1,x2,y2){var dx=Math.abs(x2-x1),dy=Math.abs(y2-y1),x=x1,y=y1,xIncr=(x1>x2)?-1:1,yIncr=(y1>y2)?-1:1,p,i=0;if(dx>=dy){var pr=dy<<1,pru=pr-(dx<<1);p=pr-dx;while(dx>0){--dx;if(p>0){aLin[i++]=x;y+=yIncr;p+=pru}else p+=pr;x+=xIncr}}else{var pr=dx<<1,pru=pr-(dy<<1);p=pr-dy;while(dy>0){--dy;y+=yIncr;aLin[i++]=x;if(p>0){x+=xIncr;p+=pru}else p+=pr}}for(var len=aLin.length,i=len-i;i;)aLin[len-(i--)]=x};function _CompInt(x,y){return(x-y)}


//MooCanvas, My Object Oriented Canvas Element. Copyright (c) 2007 Olmo Maldonado, <http://ibolmo.no-ip.info/sandbox/moocanvas/>, MIT Style License.
var Canvas=new Class({initialize:function(id,props){var el;if($type(id)=='string'){props=$merge({width:300,height:150},props,{'id':id});el=new Element('canvas',props);if(!el.getContext){if(!CanvasRenderingContext2D.cssFixed){document.createStyleSheet().cssText='canvas{display:inline-block;overflow:hidden;text-align:left;cursor:default;}'+'v\\:*{behavior:url(#default#VML)}'+'o\\:*{behavior:url(#default#VML)}';CanvasRenderingContext2D.cssFixed=true}el.set({styles:{width:props.width,height:props.height,display:'inline-block',overflow:'hidden'},getContext:function(){this.context=this.context||new CanvasRenderingContext2D(el);return this.context}});el.attachEvent('onpropertychange',this.onPropertyChange);el.attachEvent('onresize',this.onResize)}}return el},onPropertyChange:function(e){var el=e.srcElement;switch(e.propertyName){case'width':case'height':el.setStyle(e.propertyName,el.getAttribute('height'));el.getContext().clearRect()}},onResize:function(e){e=e.srcElement;if(e.firstChild)e.setStyles({width:e.clientWidth,height:e.clientHeight})}});var CanvasRenderingContext2D=new Class({initialize:function(el){this.parent=el;this.fragment=document.createDocumentFragment();this.element=new Element('div',{styles:{width:el.clientWidth||el.width,height:el.clientHeight||el.height,overflow:'hidden',position:'absolute'}});this.fragment.appendChild(this.element);this.m=[[1,0,0],[0,1,0],[0,0,1]];this.rot=0;this.state=[];this.path=[];this.delay=30;this.max=10;this.i=0;this.Z=10;this.Z2=this.Z/2;this.arcScaleX=1;this.arcScaleY=1;this.currentX=0;this.currentY=0;this.miterLimit=this.Z*1},lineWidth:1,strokeStyle:'#000',fillStyle:'#fff',globalAlpha:1,globalCompositeOperation:'source-over',lineCap:'butt',lineJoin:'miter',shadowBlur:0,shadowColor:'#000',shadowOffsetX:0,shadowOffsetY:0});CanvasRenderingContext2D.implement({beginPath:function(){this.path=[];this.moved=false},moveTo:function(x,y){this.path.push('m',this.coord(x,y));this.currentX=x;this.currentY=y;this.moved=true},closePath:function(){this.path.push('x')},lineTo:function(x,y){this.path.push((this.moved?'l':','),this.coord(x,y));this.currentX=x;this.currentY=y;this.moved=false},quadraticCurveTo:function(cpx,cpy,x,y){var cx=2*cpx,cy=2*cpy;this.bezierCurveTo((cx+this.currentX)/3,(cy+this.currentY)/3,(cx+x)/3,(cy+y)/3,x,y)},bezierCurveTo:function(cp0x,cp0y,cp1x,cp1y,x,y){this.path.push(' c ',this.coord(cp0x,cp0y),",",this.coord(cp1x,cp1y),",",this.coord(x,y));this.currentX=x;this.currentY=y},arcTo:function(x,y,w,h){},arc:function(x,y,rad,a0,a1,cw){if(this.rot===0)rad*=this.Z;var x0=Math.cos(a0)*rad,y0=Math.sin(a0)*rad,x1=Math.cos(a1)*rad,y1=Math.sin(a1)*rad;if(this.rot!==0){var da=Math.PI/24;this.lineTo(x0+x,y0+y);if(cw){if(a0<a1)a0+=2*Math.PI;while(a0-da>a1)this.lineTo(x+Math.cos(a0-=da)*rad,y+Math.sin(a0)*rad)}else{if(a1<a0)a1+=2*Math.PI;while(a0+da<a1)this.lineTo(x+Math.cos(a0+=da)*rad,y+Math.sin(a0)*rad)}this.lineTo(x1+x,y1+y);return}if(x0==x1&&!cw)x0+=0.125;var c=this.getCoords(x,y);this.path.push(cw?'at ':'wa ',Math.round(c.x-this.arcScaleX*rad)+','+Math.round(c.y-this.arcScaleY*rad),' ',Math.round(c.x+this.arcScaleX*rad)+','+Math.round(c.y+this.arcScaleY*rad),' ',this.coord(x0+x-this.Z2,y0+y-this.Z2),' ',this.coord(x1+x-this.Z2,y1+y-this.Z2))},rect:function(x,y,w,h){this.moveTo(x,y);this.lineTo(x+w,y);this.lineTo(x+w,y+h);this.lineTo(x,y+h);this.closePath()},fill:function(){this.stroke(true)},stroke:function(fill){if(!this.path.length)return;var a,color;if(fill){a=[1000,'<v:fill '+this.processColorObject(this.fillStyle)+'></v:fill>']}else{color=this.processColor(this.strokeStyle);a=[10,'<v:stroke '+'endcap="'+((this.lineCap=='butt')?'flat':this.lineCap)+'" '+'joinstyle="'+this.lineJoin+'" '+'color="'+color.color+'" '+'opacity="'+color.opacity+'"'+'/>']}this.element.insertAdjacentHTML('beforeEnd','<v:shape '+'path="'+this.path.join('')+'e" '+'stroked="'+!fill+'" '+(!fill?('strokeweight="'+0.8*this.lineWidth*this.m[0][0]+'" '):'')+'filled="'+!!fill+'" '+'coordsize="'+this.Z*a[0]+','+this.Z*a[0]+'" '+'style="width:'+a[0]+'px; height:'+a[0]+'px; position: absolute;">'+a[1]+'</v:shape>');this.parent.appendChild(this.fragment);if(fill&&this.fillStyle.img)this.element.getLast().fill.alignshape=false;this.path=[]},clip:function(){},isPointInPath:function(x,y){},processColor:function(col){var a=this.globalAlpha;if(col.substr(0,3)=='rgb'){if(col.charAt(3)=="a"){a*=col.match(/([\d.]*)\)$/)[1]}col=col.rgbToHex()}return{color:col,opacity:a}},processColorObject:function(obj){var ret='',col;if(obj.addColorStop){ret+=((obj.r0)?('type="gradientradial" '+'focusposition="0.2, 0.2" '+'focussize="0.2, 0.2" '):('type="gradient" '+'focus="0" '+'angle="'+(180+(180*obj.angle(obj.x0,obj.y0,obj.x1,obj.y1)/Math.PI))+'" '))+'color="'+obj.col0.color+'" '+'opacity="'+obj.col0.opacity*100+'%" '+'color2="'+obj.col1.color+'" '+'o:opacity2="'+obj.col1.opacity*100+'%" '+'colors="';if(obj.stops){for(var i=0,l=obj.stops.length;i<l;i++){ret+=Math.round(100*obj.stops[i][0])+'% '+obj.stops[i][1]}}ret+='" '}else if(obj.img){ret+='type="tile" '+'src="'+obj.img.src+'" '}else{col=this.processColor(obj);ret+='color="'+col.color+'" '+'opacity="'+col.opacity+'" '}return ret},getCoords:function(x,y){var m=this.m;return{x:this.Z*(x*m[0][0]+y*m[1][0]+m[2][0])-this.Z2,y:this.Z*(x*m[0][1]+y*m[1][1]+m[2][1])-this.Z2}},coord:function(x,y){var m=this.m;return[Math.round(this.Z*(x*m[0][0]+y*m[1][0]+m[2][0])-this.Z2),',',Math.round(this.Z*(x*m[0][1]+y*m[1][1]+m[2][1])-this.Z2)].join('')}});CanvasRenderingContext2D.implement({clearRect:function(x,y,w,h){this.element.innerHTML=''},fillRect:function(x,y,w,h){this.rect(x,y,w,h);this.fill()},strokeRect:function(x,y,w,h){this.rect(x,y,w,h);this.stroke()}});CanvasRenderingContext2D.implement({scale:function(x,y){this.arcScaleX*=x;this.arcScaleY*=y;this.matMult([[x,0,0],[0,y,0],[0,0,1]])},rotate:function(ang){this.rot+=ang;var c=Math.cos(ang),s=Math.sin(ang);this.matMult([[c,s,0],[-s,c,0],[0,0,1]])},translate:function(x,y){this.matMult([[1,0,0],[0,1,0],[x,y,1]])},transform:function(m11,m12,m21,m22,dx,dy){this.matMult([[m11,m21,dx],[m12,m22,dy],[0,0,1]])},setTransform:function(m11,m12,m21,m22,dx,dy){this.m=[[1,0,0],[0,1,0],[0,0,1]];this.transform(m11,m12,m21,m22,dx,dy)},matMult:function(b){var m=this.m,o=[[0,0,0],[0,0,0],[0,0,0]];for(var i=0;i<3;i++){if(b[0][i]!==0)this.sum(o[0],this.mult(b[0][i],m[i]));if(b[1][i]!==0)this.sum(o[1],this.mult(b[1][i],m[i]));if(b[2][i]!==0)this.sum(o[2],this.mult(b[2][i],m[i]))}this.m=[o[0],o[1],o[2]]},mult:function(x,y){return[x*y[0],x*y[1],x*y[2]]},sum:function(o,v){o[0]+=v[0];o[1]+=v[1];o[2]+=v[2]}});CanvasRenderingContext2D.implement({drawImage:function(image,var_args){var args=arguments,length=args.length,off=(length==9)?4:0;if(!((length+'').test(/3|5|9/)))throw'Wrong number of arguments';var w0=image.runtimeStyle.width,h0=image.runtimeStyle.height;image.runtimeStyle.width='auto';image.runtimeStyle.height='auto';var w=image.width,h=image.height;image.runtimeStyle.width=w0;image.runtimeStyle.height=h0;var sx=0,sy=0,sw=w,sh=h,dx=args[1+off],dy=args[2+off],dw=args[3+off]||w,dh=args[4+off]||h;if(length==9){sx=args[1];sy=args[2];sw=args[3];sh=args[4]}var d=this.getCoords(dx,dy),vmlStr='<v:group coordsize="'+this.Z*10+','+this.Z*10+'" '+'coordorigin="0,0" '+'style="width:10;height:10;position:absolute;';if(this.m[0][0]!=1||this.m[0][1]){var max=Math.max(this.getCoords(dx+dw,dy),this.getCoords(dx,dy+dh),this.getCoords(dx+dw,dy+dh));vmlStr+='padding:0;'+'padding-right:'+Math.round(Math.max(d.x,max)/this.Z)+'px;'+'padding-bottom:'+Math.round(Math.max(d.y,max)/this.Z)+'px;'+'filter:progid:DXImageTransform.Microsoft.Matrix('+"M11='"+this.m[0][0]+"', M12='"+this.m[1][0]+"', "+"M21='"+this.m[0][1]+"', M22='"+this.m[1][1]+"', "+"Dx='"+Math.round(d.x/this.Z)+"', Dy='"+Math.round(d.y/this.Z)+"', "+"sizingmethod='clip'"+');'}else{vmlStr+='top:'+Math.round(d.y/this.Z)+'px;'+'left:'+Math.round(d.x/this.Z)+'px;'}this.element.insertAdjacentHTML('BeforeEnd',vmlStr+'"><v:image src="'+image.src+'" '+'style="width:'+this.Z*dw+';height:'+this.Z*dh+';" '+'cropleft="'+sx/w+'" '+'croptop="'+sy/h+'" '+'cropright="'+(w-sx-sw)/w+'" '+'cropbottom="'+(h-sy-sh)/h+'" '+'/></v:group>');this.parent.appendChild(this.fragment)},drawImageFromRect:Function.empty,getImageData:function(sx,sy,sw,sh){},putImageData:function(image,dx,dy){},getCoords:function(x,y){var m=this.m;return{x:this.Z*(x*m[0][0]+y*m[1][0]+m[2][0])-this.Z2,y:this.Z*(x*m[0][1]+y*m[1][1]+m[2][1])-this.Z2}}});CanvasRenderingContext2D.implement({states:['strokeStyle','fillStyle','globalAlpha','lineWidth','lineCap','lineJoin','miterLimit','shadowOffsetX','shadowOffsetY','shadowBlur','shadowColor','globalCompositeOperation'],save:function(){var o={};this.copyState(o);this.aStack.push(o);this.mStack.push(this.m)},restore:function(){this.copyState(this.aStack.pop());this.m=this.mStack.pop()},copyState:function(obj){this.states.each(function(prop){obj[prop]=this[prop]},this);return obj},mStack:[],aStack:[]});



var MapLabel=new Class({options:{fade:{duration:500,opacity:1},image:null,imagePath:'.'},initialize:function(c){this.setOptions(c);this.image=this.options.image;this.shown=false;this.over=false;if(!this.options.width){this.options.width=150}this.container=new Element('div',{'styles':{'position':'absolute','z-index':95,'width':this.options.width}}).injectBefore(this.image);this.left=new Element('div').injectInside(this.container);this.right=new Element('div').injectInside(this.left);this.center=new Element('div').injectInside(this.right);this.textContainer=new Element('div',{'styles':{'padding-top':window.ie?3:7,'vertical-align':'middle','font-size':'.9em','font-weight':'bold','color':'white','text-align':'center','white-space':'nowrap'}}).injectInside(this.center);this.fx={fade:this.container.effect('opacity',{duration:this.options.fade.duration,wait:false}).set(0),move:new Fx.Styles(this.container,{duration:1000,wait:false}),text:new Fx.Styles(this.textContainer,{duration:500,wait:false})};var d=[this.options.imagePath+'/labelLeft.png',this.options.imagePath+'/labelTile.png',this.options.imagePath+'/labelRight.png'];if(window.ie){d.each(function(a,i){d[i]=a.replace(/png$/,'gif')})}this.loadedImages={};var e=[];new Asset.images(d,{onProgress:function(i){e[i]=this},onComplete:function(){e.each(function(a){var b=a.getProperty('src');if(b.match(/left.(png|gif|jpg)/i)){this.loadedImages.left=a}else if(b.match(/right.(png|gif|jpg)/i)){this.loadedImages.right=a}else if(b.match(/tile.(png|gif|jpg)/i)){this.loadedImages.tile=a}else{alert('Unknown image loaded: '+b)}},this);if(this.loadedImages.left){this.container.setStyle('height',this.loadedImages.left.height);this.left.setStyles({'height':this.loadedImages.left.height,'padding-left':this.loadedImages.left.width,'background':'url('+this.loadedImages.left.src+') no-repeat left'})}if(this.loadedImages.right){this.right.setStyles({'height':this.loadedImages.right.height,'padding-right':this.loadedImages.right.width,'background':'url('+this.loadedImages.right.src+') no-repeat right'})}if(this.loadedImages.tile){this.center.setStyles({'height':this.loadedImages.tile.height,'background':'url('+this.loadedImages.tile.src+') repeat-x'})}}.bind(this)})},show:function(a,b,c){this.imagePos=this.image.getCoordinates();this.lastPosition=a;var d={'top':this.imagePos.top+a.y,'left':this.imagePos.left+a.x,'width':c};if(!this.shown){this.container.setStyles(d);this.shown=true;this.textContainer.setText(b)}else{this.container.setStyles(d);this.currentText=b;this.textContainer.setText(this.currentText)}this.currentText=b;(function(){if(this.over){this.fx.fade.set(1)}}.bind(this)).delay(100);this.over=true},hide:function(){(function(){if(!this.over){this.fx.fade.set(0);this.shown=false}else{this.fx.fade.set(1)}}.bind(this)).delay(500);this.over=false;return;(function(){if(!this.over){this.fx.fade.start(0).chain(function(){if(this.fx.fade.now==0){this.shown=false}}.bind(this))}}.bind(this)).delay(500);this.over=false}});MapLabel.implement(new Options);
var AreaCanvas={init:function(a){this.canvas=a;this.context=a.getContext('2d');if(window.ie&&typeof(window['jsGraphics'])!=='undefined'){this.jsg=new jsGraphics(this.canvas)}else{this.jsg=null}},clear:function(){if(this.jsg){this.jsg.clear()}else{var a=this.canvas.getSize().size;this.context.clearRect(0,0,a.x,a.y)}},drawShape:function(a,b,c,d,e){if(this.jsg){this._drawJSG(this.jsg,a,b,c,d,e)}else{this._drawMooCanvas(this.context,a,b,c,d,e)}},_drawJSG:function(b,c,d,e,f,g){d.each(function(a,i){d[i]=parseInt(a)});b.setColor('#'+e);if(c=='rect'){b.fillRect(d[0],d[1],(d[2]-d[0])+1,(d[3]-d[1])+1);if(g){b.setStroke(g*1.5);b.setColor(f);b.drawRect(d[0],d[1],(d[2]-d[0])+1,(d[3]-d[1])+1)}}else if(c=='circle'){b.fillEllipse(d[0]-d[2],d[1]-d[2],d[2]*2,d[2]*2);if(g){b.setStroke(g*1.5);b.setColor(f);b.drawEllipse(d[0]-parseInt(d[2]),d[1]-parseInt(d[2]),d[2]*2,d[2]*2)}}else{var x=[],y=[],j;for(j=0;j<d.length;j+=2){x.push(d[j]);y.push(d[j+1])}b.fillPolygon(x,y);if(g){b.setStroke(g);b.setColor(f);b.drawPolyline(x,y)}}b.paint()},_drawMooCanvas:function(a,b,c,d,e,f){a.beginPath();switch(b){case'rect':a.rect(0.5+parseInt(c[0]),0.5+parseInt(c[1]),parseInt(c[2]-c[0]),parseInt(c[3]-c[1]));break;case'circle':a.arc(0.5+parseInt(c[0]),0.5+parseInt(c[1]),parseInt(c[2]),0,(Math.PI/180)*360,false);break;default:a.moveTo(parseInt(c[0]),parseInt(c[1]));for(t=2;t<c.length;t+=2){a.lineTo(parseInt(c[t]),parseInt(c[t+1]))}break}a.closePath();a.fillStyle='rgba('+AreaCanvas._fixColor(d)+',1)';a.lineWidth=f;a.fill();if(f){a.strokeStyle='rgba('+AreaCanvas._fixColor(e)+',1)';a.stroke()}},_fixColor:function(b){function hex2dec(a){return(Math.max(0,Math.min(parseInt(a,16),255)))}var c=hex2dec(b.substr(0,2)),cg=hex2dec(b.substr(2,2)),cb=hex2dec(b.substr(4,2));return c+','+cg+','+cb}};var MapOverlay=new Class({options:{fade:{duration:500,opacity:1},color:"000000",borderColor:"000000",borderSize:1,container:null},initialize:function(b,c,d,e){this.setOptions(e);this.visible=false;this.image=c;this.area=b;this.label=d;this.labelText=this.area.element.getProperty('title');this.selected=false;this.areaOptions={color:this.options.color,borderColor:this.options.borderColor,borderSize:this.options.borderSize,labelX:100,labelY:100,labelWidth:150,noLabel:false};var f=this.area.element.getProperty('alt');if(f&&f.match(/^\{(.*)\}$/)){this.areaOptions=$merge(this.areaOptions,Json.evaluate(f));}this._setupCanvas();this._drawCanvas();this.binds={mouseover:this._onMouseOver.bindAsEventListener(this),mouseout:this._onMouseOut.bindAsEventListener(this)};this.area.element.titleOld=this.area.element.getProperty('title');this.area.element.altOld=this.area.element.getProperty('alt');this.area.element.setProperty('title','');this.area.element.setProperty('alt','');this.area.element.addEvent('mouseover',this.binds.mouseover);this.area.element.addEvent('mouseout',this.binds.mouseout);if(this.area.href!='#'){var g=$$('a[href="'+this.area.element.getProperty('href')+'"]');if(g.length){g.each(function(a){a.setProperty('rel',this.area.element.getProperty('rel'));a.addEvent('mouseover',this.binds.mouseover);a.addEvent('mouseout',this.binds.mouseout)},this)}}},show:function(){if(this.label&&!this.areaOptions.noLabel){this.label.show({x:this.labelPos.x,y:this.labelPos.y},this.labelText,this.labelWidth)}this.canvasFx.start(this.options.fade.opacity).chain(function(){if(this.canvasFx.now==1){this.visible=true}}.bind(this))},hide:function(){if(this.label&&!this.areaOptions.noLabel){this.label.hide()}this.canvasFx.start(0).chain(function(){if(this.canvasFx.current==0){this.visible=false}}.bind(this))},setSelected:function(a){this.selected=a;if(this.selected){this.show()}else{this.hide()}},getSelected:function(){return this.selected},_setupCanvas:function(){var a=this.image.getSize().size;this.canvas=new Canvas('Canvas'+(this.image.getProperty('id')||'InvalidId'+Math.floor(Math.random()*256)),{'width':a.x,'height':a.y}).setStyles({'position':'absolute','z-index':90,'width':a.x,'height':a.y});if(this.options.container){this.options.container.adopt(this.canvas)}else{this.canvas.injectBefore(this.image)}this.canvasFx=this.canvas.effect('opacity',{duration:this.options.fade.duration,wait:false}).set(0);AreaCanvas.init(this.canvas)},_drawCanvas:function(){var d=this.image.getSize().size;this.labelWidth=this.areaOptions.labelWidth;this.labelPos={x:this.areaOptions.labelX,y:this.areaOptions.labelY};AreaCanvas.clear();this.area.areas.each(function(a,i){var t=0;var b=a.getProperty('shape').toLowerCase();var c=a.getProperty('coords').split(',');AreaCanvas.drawShape(b,c,this.areaOptions.color,this.areaOptions.borderColor,this.areaOptions.borderSize)},this)},_onMouseOver:function(a){a=new Event(a).stop();if(!this.selected&&!this.visible){this.show()}},_onMouseOut:function(a){a=new Event(a).stop();if(!this.selected){this.hide()}}});MapOverlay.implement(new Options);
var MooMapper=new Class({options:{fade:{duration:500,opacity:.5},color:"000000",borderColor:"000000",borderSize:1,imagePath:'.',multipleHighlight:false},initialize:function(a,b){this.setOptions(b);this.image=$(a);this.layers={};if(!this._updateImageMap()){return}this._setupImage();this._setupAreas();var c=navigator.appVersion.match(/MSIE (\d+\.\d+)/,'');if(c!=null&&Number(c[1])>=5.5&&Number(c[1])<7.0){var d=(this.image.getProperty('rel')&&this.image.getProperty('rel')=='scale');var e=this.image.getProperty('oldSrc');if(!e){e=this.image.getProperty('src')}if(e.match(/\.png$/i)){this.image.setStyles({'width':this.image.getProperty('width'),'height':this.image.getProperty('height')});var f=null;var g=e.lastIndexOf('/');if(g!=-1){f=e.substr(g+1)}else{f=e}var h=new RegExp(f,"i");if(h.exec(e)){this.image.setProperty('src',e.replace(h,'spacer.gif'))}}}},setAreaSelection:function(b,c){this.areas.each(function(a){if(a.element.getProperty('id')==b||(this.options.multipleHighlight&&b===null)){a.overlay.setSelected(c)}else if(c&&!this.options.multipleHighlight){if(a.overlay.getSelected()){a.overlay.setSelected(false)}}},this)},getAreaSelection:function(b){this.areas.each(function(a){if(a.element.getProperty('id')==b){return a.overlay.getSelected()}},this);return false},selectArea:function(a){return setAreaSelection(a,true)},selectAll:function(){return setAreaSelection(null,true)},deselectArea:function(a){return setAreaSelection(a,false)},deselectAll:function(){return setAreaSelection(null,false)},toggleArea:function(b){var c=false;this.areas.each(function(a){if(a.element.getProperty('id')==b){c=!a.overlay.getSelected();a.overlay.setSelected(c)}},this)},_setupAreas:function(){this.canvases=new Element('div',{}).injectBefore(this.image);var h=[];var i=this.options;i.image=this.image;this.label=new MapLabel(this.options);var j=0;var k=$$('map[name='+this.imageMap.name+'] area');k.each(function(a){var b=[];var c=a.getProperty('id'),displayId=null;if(c&&c.match(/^Mouse/)){displayId=c.replace(/^Mouse/,'Display');if(displayId&&$(displayId)){b.push($(displayId))}else{var d=1;var e='';while(true){e=displayId+d;if($(e)){b.push($(e))}else{break}d=d+1}}}if(!b.length){b.push($(a))}var f={areas:b,element:a};var g=new MapOverlay(f,this.image,this.label,$merge(this.options,{container:this.canvases}));f.overlay=g;h.push(f)},this);this.areas=h},_updateImageMap:function(){this.imageMap={element:null,name:null};this.displayMap={element:null,name:null};var a=this.image.getProperty('useMap');if(!a){alert('moomapper > Invalid image map on image: ',this.image);return false}a=a.split("#");var b='map[name='+a[1]+']';var c=$$(b);if(c.length){this.imageMap.name=a[1];this.imageMap.element=c[0];if(this.imageMap.name.match(/Mouse$/)){var d=this.imageMap.name.replace(/Mouse$/,'Display');b='map[name='+d+']';c=$$(b);if(c.length){this.displayMap.name=d;this.displayMap.element=c[0]}}}else{alert('moomapper > Map element not found: ',b);return false}return true},_setupImage:function(){var a=this.image.getSize().size;var b=this.image.getProperty('oldSrc');if(!b){b=this.image.getProperty('src')}this.layers.background=new Element('div',{'styles':{'width':a.x,'height':a.y,'background':'url('+b+')','z-index':50}}).injectAfter(this.image);var c=navigator.appVersion.match(/MSIE (\d+\.\d+)/,'');if(c!=null&&Number(c[1])>=5.5&&Number(c[1])<7.0){var d=(this.image.getProperty('rel')&&this.image.getProperty('rel')=='scale');if(b.match(/\.png$/i)){this.layers.background.setStyles({'background':'none','filter':"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+b+"', sizingMethod='"+(d?'scale':'crop')+"')"})}}this.image.setStyles({'position':'absolute','z-index':100});if(window.ie){this.image.style.filter="Alpha(opacity=0)"}else{this.image.style.opacity=0}}});MooMapper.implement(new Events,new Options);function MooMapperCviCompat(){window.addEvent('domready',function(){$$('.mapper').each(function(b){var c={fade:{opacity:.33,duration:300},color:'000000',borderColor:'0000ff'};if(b.hasClass('noborder')){c.borderSize=0}else{}if(b.hasClass('nofade')){c.fade.duration=0}var d=b.className.split(' ');d.each(function(a){if(a.match(/^iborder([a-z0-9]{6})$/i)){a=a.substr(7);c.borderColor=a}else if(a.match(/^icolor([a-z0-9]{6})$/i)){a=a.substr(6);c.color=a}else if(a.match(/^iopacity([0-9]{1,3})$/i)){a=a.substr(8);a=parseInt(a);a=Math.max(1,a);a=Math.min(100,a);a=a/100;c.fade.opacity=a}});new MooMapper(b,c)})})}
