
 //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
 //                                                                        
 //  This file was created by rjc from system/js/ii_maps.js%
 //  on 2002/11/03 01:20:43.
 //                                                                        
 //    Copyright 1999-2002 Interactive Information Ltd, All Rights Reserved 
 //    http://information.overlaid.com
 //                                                                        
 //  It is almost certainly a bad idea to edit it.
 //  
 //  ------------------------------------------------------------------------
 //  
 //  Version:	2.3.0 for Map Weasel
 //  Features:	SELECT HSPOPUP HSSTATUS BEANINFO NS IE OPERA BRIGHTEN LABEL DATACOPYRIGHT
 //  Scales:	linear latlong
 //  Hotspots:	rect poly
 //  Markers:	circle cross image
 //  
 //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
var maps_root_url;var all_atlases=[];var all_atlas_names=[];var current_atlas;
var all_mapsets=[];var active_mapsets=[];var current_mapset;var current_level;
var current_cx,current_cy;var current_w,current_h;var previous_mapset;
var previous_level;var previous_cx,previous_cy;var previous_w,previous_h;
var on_mapset_select;var on_level_select;var on_goto_map;var marker_drag_update_all;
var markers_reposition;var maps_clear_area_on_map_change=true;
var the_thumbnail=null;var maps_scale_image=null;var maps_scale_x=null;
var maps_scale_y=null;var chosen_mapset;var chosen_level;var chosen_cx;
var chosen_cy;var chosen_overlap;var chosen_mapwidth;var chosen_d2;
function maps_init(thumb,sc){the_thumbnail=thumb;if(sc!=null)
{var b=sc.split(",");if(b.length==2){maps_scale_x=b[0]-0;maps_scale_y=b[1]-0;
}else maps_scale_image=sc;}if(active_mapsets.length>0)maps_init_mapset(active_mapsets[0]);
}function maps_make_url_raw(mapset,level,cx,cy){if(cx=="scale")
return(maps_root_url+"/"+ "maps_"+mapset.myname+"/"+ mapset.size_name+"/"+ level.myname+"/"+ cy);
var cx_p=(cx+"");var cy_p=(cy+"");cx_p=cx_p.substr((cx_p.charAt(0)=="-"?1:0),2);
cy_p=cy_p.substr((cy_p.charAt(0)=="-"?1:0),2);return(maps_root_url+"/"+ "maps_"+mapset.myname+"/"+ mapset.size_name+"/"+ level.myname+"/"+ cx_p+"/"+ cx+"/"+ cy_p+"/"+ cy+"."+ mapset.format);
}function maps_make_url_maphttpd(mapset,level,cx,cy){return(maps_root_url+"/"+ mapset.format+"/"+ mapset.myname+"/"+ cx+"/"+ cy+"/"+ level.myname+"/"+ mapset.size_name);
}function maps_init_mapset(mapset){if(!easel_page_ok())return;
last_mapset=current_mapset=null;maps_goto_map(mapset,0,mapset.cx,mapset.cy);
}function MapsetLevel(name,xgpp,ygpp,xstep,ystep,cx,cy,xrad,yrad)
{this.myname=name;this.xgpp=xgpp;this.ygpp=ygpp;this.gpp=(xgpp+ygpp)/2.0;
this.xstep=xstep;this.ystep=ystep;this.cx=cx;this.cy=cy;this.xrad=xrad;
this.yrad=yrad;}function Mapset1(name,title,size,format,cx,cy,levels)
{init_Mapset3(this,name,title,null,[size],format,[cx,cy],[ "linear" ],levels,this)
}function Mapset2(name,title,size,format,ui_feats,cart_feats,levels)
{init_Mapset3(this,name,title,null,[size],format,ui_feats,cart_feats,levels,this)
}function Mapset3(name,title,cw,sizes,format,ui_feats,cart_feats,levels)
{init_Mapset3(this,name,title,cw,sizes,format,ui_feats,cart_feats,levels,this)
}var Mapset=Mapset1;function init_Mapset3(obj,name,title,cw,sizes,format,ui_feats,cart_feats,levels)
{var lvs=[];var i;var mw=0,mh=0;for(i=0;i<levels.length;i++){
if(levels[i].length==8)lvs[i]=new MapsetLevel(levels[i][0],levels[i][1],levels[i][1],
levels[i][2],levels[i][3],levels[i][4],levels[i][5],levels[i][6],levels[i][7]);
else lvs[i]=new MapsetLevel(levels[i][0],levels[i][1],levels[i][2],
levels[i][3],levels[i][4],levels[i][5],levels[i][6],levels[i][7],levels[i][8]);
lvs[i].n=i;lvs[i].mapset=obj;if(mw==0){var lv=lvs[i];obj.left=lv.cx+lv.xrad+lv.xstep;
obj.right=lv.cx-lv.xrad-lv.xstep;obj.topedge=lv.cy+lv.yrad+lv.ystep;
obj.botedge=lv.cy-lv.yrad-lv.ystep;if(obj.left>obj.right){var x=obj.left;
obj.left=obj.right;obj.right=x;}if(obj.botedge>obj.topedge){var x=obj.topedge;
obj.topedge=obj.botedge;obj.botedge=x;}mw=1;}lvs["lv"+lvs[i].myname]=lvs[i];
}obj.myname=name;obj.title=title;if(cw!=null){obj.copyright=cw[0];
obj.copyrightUrl=cw[1];}obj.sizes=sizes;obj.format=format;obj.cx=ui_feats[0];
obj.cy=ui_feats[1];obj.scale_image=ui_feats[2];obj.projection=cart_feats[0];
obj.url_maker=cart_feats[1]!=null? cart_feats[1] : maps_make_url_raw;
obj.levels=lvs;all_mapsets[all_mapsets.length]=obj;}function maps_mapset_named(name)
{var i;for(i=0;i<all_mapsets.length;i++){if(all_mapsets[i].myname==name)
return all_mapsets[i];}alert("no mapset:"+name);}function maps_goto(cx,cy,w,h,smaller,min_gpp,max_gpp)
{if(!maps_choose_map(cx,cy,w,h,min_gpp,max_gpp)){if(active_mapsets.length>0)
{chosen_mapset=current_mapset;chosen_level=current_level;chosen_cx=current_cx;
chosen_cy=current_cy;}else alert("No Map Sets");}if(chosen_mapset==current_mapset&&chosen_level==current_level &&chosen_cx==current_cx &&chosen_cy==current_cy)
{var detail=null;if(smaller!=null&&smaller)detail="A smaller rectangle may get a better map.";
easel_brief_message("This is the best map we have covering","that area.",
detail);}else maps_goto_map(chosen_mapset,chosen_level.n,chosen_cx,chosen_cy);
}function maps_goto_delta(dx,dy){var x=current_cx;var y=current_cy;
var w=current_w-10;var h=current_h-10;x+=current_w*dx;y+=current_h*dy;
if(dx!=0)w=2;if(dy!=0)h=2;maps_goto(x,y,w,h);}function maps_lookfor_delta(dx,dy)
{var x=current_cx;var y=current_cy;var w=current_w-10;var h=current_h-10;
x+=current_w*dx;y+=current_h*dy;if(dx!=0)w=2;if(dy!=0)h=2;var res=maps_choose_map(x,y,w,h)&& (chosen_cx!=current_cx||chosen_cy!=current_cy);
return res;}function maps_level_down(){var nlevel=current_mapset.levels[current_level.n+1];
if(nlevel==null){var i;for(i=0;i<active_mapsets.length-1;i++)
if(active_mapsets[i]==current_mapset){nlevel=active_mapsets[i+1].levels[0];
break;}}return nlevel;}function maps_level_up(){var nlevel=current_mapset.levels[current_level.n-1];
if(nlevel==null){var i;for(i=0;i<active_mapsets.length-1;i++)
if(active_mapsets[i+1]==current_mapset){var lvs=active_mapsets[i].levels;
nlevel=lvs[lvs.length-1];break;}}return nlevel;}function maps_zoomin()
{if(!easel_page_ok())return;var r=the_easel.getSelectedArea();
var x,y,w,h;var smaller=false;var nlevel=maps_level_down();if(r==null)
{x=current_cx;y=current_cy;if(nlevel!=null){smaller=true;maps_quantise(x,y,nlevel);
x=qcx;y=qcy;w=current_mapset.size_w*nlevel.xgpp*0.95;h=current_mapset.size_h*nlevel.ygpp*0.95;
}else {w=current_w/4;h=current_h/4;}}else {var p1=the_easel.screenPointToWorld(r.x,r.y);
var p2=the_easel.screenPointToWorld(r.x+r.width,r.y+r.height);
x=(p1.x+p2.x)/2;y=(p1.y+p2.y)/2;w=p2.x-p1.x;h=p1.y-p2.y;smaller=nlevel!=null;
}maps_goto(x,y,w,h,smaller);}function maps_zoomout(){if(!easel_page_ok())
return;maps_goto(current_cx,current_cy,current_w+2,current_h+2,false,current_level.xgpp+0.001);
}function maps_choose_map(cx,cy,w,h,min_gpp,max_gpp){var i;chosen_overlap=-1;
chosen_mapwidth=-1;for(i=active_mapsets.length-1;i>=0;i--)maps_choose_map_from(active_mapsets[i],cx,cy,w,h,min_gpp,max_gpp);
return chosen_overlap>0;}var qcx,qcy;function maps_quantise(cx,cy,level)
{var xquant=level.xstep;var yquant=level.ystep;var xrad=level.xrad;
var yrad=level.yrad;var dx=cx-level.cx;var dy=cy-level.cy;var qdx=Math.floor((0.0+dx)/xquant+0.5)*xquant;
var qdy=Math.floor((0.0+dy)/yquant+0.5)*yquant;while(qdx<-xrad)
qdx+=xquant;while(qdx>xrad)qdx-=xquant;while(qdy<-yrad)qdy+=yquant;
while(qdy>yrad)qdy-=yquant;qcx=Math.floor(qdx+level.cx+0.5);qcy=Math.floor(qdy+level.cy+0.5);
}function maps_get_overlap(a1,a2,b1,b2){var l=(a1>b1? a1: b1);
var r=(a2<b2? a2: b2);return l<=r?(r-l): 0;}function maps_choose_map_from(mapset,cx,cy,w,h,min_gpp,max_gpp)
{var ln;var x=cx-w/2;var y=cy-h/2;if(mapset.prepared==null)maps_mapset_prepare(mapset);
for(ln=mapset.levels.length-1;ln>=0;ln--){var level=mapset.levels[ln];
if((min_gpp!=null&&min_gpp>level.xgpp)|| (max_gpp!=null&&max_gpp<level.xgpp))
continue;var mapwidth=mapset.size_w*level.xgpp;maps_quantise(cx,cy,level);
var xo=maps_get_overlap(qcx-mapwidth,qcx+mapwidth/2,x,x+w);var yo=maps_get_overlap(qcy-mapwidth/2,qcy+mapwidth/2,
y,y+h);var oa=xo*yo;var d2=(cx-qcx)*(cx-qcx)+(cy-qcy)*(cy-qcy);
if(oa>chosen_overlap|| (oa==chosen_overlap&&mapwidth<chosen_mapwidth)|| (oa==chosen_overlap&&mapwidth==chosen_mapwidth&&d2<chosen_d2)
){chosen_mapset=mapset;chosen_level=level;chosen_cx=qcx;chosen_cy=qcy;
chosen_overlap=oa;chosen_mapwidth=mapwidth;chosen_d2=d2;}}}function maps_mapset_prepare(mapset)
{var size,size_w,size_h;var i;for(i=0;i<mapset.sizes.length;i++)
{size=mapset.sizes[i]+"";var sizes=size.split("x");size_w=(sizes[0])-0;
size_h=(sizes[sizes.length-1])-0;if(size_w>=easel_width&&size_h>=easel_height)
break;}mapset.size_name=size;mapset.size_w_name=size_w;mapset.size_h_name=size_h;
mapset.size_w=easel_is_clipping?easel_width:size_w;mapset.size_h=easel_is_clipping?easel_height:size_h;
mapset.prepared=true;}function maps_level_select(mapset,level)
{if(on_level_select!=null)on_level_select(level.myname,level);
if(mapset.scale_image!=null){var url=mapset.url_maker(mapset,level,"scale",mapset.scale_image);
if(maps_scale_image!=null)maps_scale_image.src=url;if(maps_scale_x!=null)
maps_display_scale(url,maps_scale_x,maps_scale_y);}}function maps_display_scale(url,x,y)
{the_easel.setScaleImage(url,x,y);}function maps_mapset_select(mapset)
{if(mapset.prepared==null)maps_mapset_prepare(mapset);if(on_mapset_select!=null)
on_mapset_select(mapset.myname,mapset.title,mapset);easel_data_copyright(mapset.copyright,mapset.copyrightUrl);
if(the_thumbnail!=null){var level=mapset.levels[0];var url=mapset.url_maker(mapset,level,mapset.cx,mapset.cy);
var w=level.xgpp*mapset.size_w;;var h=level.xgpp*mapset.size_h;;
var x=mapset.cx-w/2;var y=mapset.cy-h/2;the_thumbnail.setImageWorld(url,x,y+h,w,-h);
}}function maps_goto_map(mapset,leveln,cx,cy){if(mapset.myname==null)
{mapset=maps_mapset_named(mapset);}var level=mapset.levels[leveln];
if(level==null)level=mapset.levels["lv"+leveln];if(mapset!=current_mapset)
maps_mapset_select(mapset);if(level!=current_level)maps_level_select(mapset,level);
previous_mapset=current_mapset;previous_level=current_level;previous_cx=current_cx;
previous_cy=current_cy;previous_w=current_w;previous_h=current_h;
previous_x=current_x;previous_y=current_y;current_mapset=mapset;
current_level=level;current_cx=cx;current_cy=cy;current_w=level.xgpp*mapset.size_w;
current_h=level.ygpp*mapset.size_h;current_x=cx-current_w/2;current_y=cy-current_h/2;
var url=mapset.url_maker(mapset,level,cx,cy);if(on_goto_map!=null)
on_goto_map(mapset,level,cx,cy);if(maps_clear_area_on_map_change)
easel_remove_area();if(the_thumbnail!=null)the_thumbnail.setAreaWorld(current_x,current_y,
current_x+current_w,current_y+current_h,true);if(marker_drag_update_all!=null)
marker_drag_update_all();the_easel.setProjection(mapset.projection);
the_easel.setImageWorld(url,current_x,current_y+current_h,current_w,-current_h);
if(markers_reposition!=null)markers_reposition();}function maps_remember()
{return current_mapset.myname+"/"+current_level.myname+"/"+current_cx+"/"+current_cy;
}function maps_recall(memory){var bits=memory.split("/");maps_goto_map(bits[0],bits[1],bits[2],bits[3]);
}function maps_define_atlas(name,setnames){var i,ms;var sets=[];
for(i=0;i<setnames.length;i++)if((sets[i]=maps_mapset_named(setnames[i]))==null)
alert("unknown map '"+setnames[i]+"'");all_atlases[name]=[name,sets];
all_atlas_names[all_atlas_names.length]=name;}function maps_select_atlas(atlas)
{current_atlas=atlas;active_mapsets=atlas[1];if(easel_page_loaded)
maps_init_mapset(atlas[1][0]);}function maps_select_atlas_byname(name)
{maps_select_atlas(all_atlases[name]);}function maps_select_default_atlas()
{maps_select_atlas(all_atlases[all_atlas_names[0]]);}

