
function Map_Widget(htmlId,serverId){this.superclass=Widget_Base;this.superclass(htmlId,serverId);if(this.containerObj){this.mapWidth=this.containerObj.clientWidth;if(isNaN(this.mapWidth)){this.mapWidth=360;}
this.mapHeight=this.containerObj.clientHeight;if(isNaN(this.mapHeight)){this.mapHeight=180;}}
this.imgId=null;this.lastImgUrl=null;this.imgObj=null;this.extent=null;var me=this;this.init=function(){if(this.containerObj){mapImg=document.createElement('img');this.imgId=this.containerId+"Map_Img";mapImg.id=this.imgId;mapImg.src="../images/pixel.gif";mapImg.style.top=0;mapImg.style.left=0;mapImg.style.width=this.mapWidth;mapImg.style.height=this.mapHeight;this.containerObj.appendChild(mapImg);this.containerObj.style.overflow='hidden';this.containerObj.style.position='relative';this.imgObj=document.getElementById(this.imgId);this.imgObj.style.border='0 none';this.imgObj.style.margin='0';this.imgObj.style.padding='0';this.imgObj.style.position='absolute';this.imgObj.style.display='inline';this.imgObj.onmousedown=function(){return false;};this.htmlObj=this.imgObj;this.redrawMap();return true;}else{return false;}}
this.setCursor=function(cursorStyle){this.imgObj.style.cursor=cursorStyle;}
this.redrawMap=function(){prevState=this.getState();if(prevState!=null){this.returnToPrevState(prevState);}else{RequestResponseBroker.makeImmediateMethodCall(this.serverId,'initMap',Array(this.mapWidth,this.mapHeight));}
return true;}
this.updateMap=function(imgURL){me.attachEvent('load',me.mapLoaded);this.imgObj.src=imgURL;this.lastImgURL=imgURL;}
this.getState=function(){jsonState=readCookie(this.serverId+"Loaded");return eval(jsonState);}
this.returnToPrevState=function(prevState){this.updateMap(prevState[0]);this.updateExtents(prevState[1]);}
this.saveState=function(){mapState=JSONstring.make(new Array(me.lastImgURL,me.extent));return createCookie(me.serverId+"Loaded",mapState,0);}
this.updateExtents=function(extents){}
this.mapLoaded=function(e){cancelBubble(e);me.imgObj.style.top=0;me.imgObj.style.left=0;me.detachEvent('load',me.mapLoaded);}
this.attachEvent=function(eventType,listener){addEvent(this.imgObj,eventType,listener,false);}
this.detachEvent=function(eventType,listener){removeEvent(this.imgObj,eventType,listener,false);}}
function extentsObj(){this.minx=0;this.miny=0;this.maxx=0;this.maxy=0;this.centroid=0;this.width=0;this.halfWidth=0;this.height=0;this.halfHeight=0;this.pixelX=0;this.pixelY=0;this.crosses180=null;this.setExtents=function(anExtentArray){for(i=0;i<anExtentArray;i++)parseFloat(this.setDecimalString(anExtentArray[i]));this.minx=anExtentArray['minX'];this.miny=anExtentArray['minY'];this.maxx=anExtentArray['maxX'];this.maxy=anExtentArray['maxY'];this.width=anExtentArray['width'];this.height=anExtentArray['height'];this.halfWidth=this.width/2;this.halfHeight=this.height/2;this.pixelX=anExtentArray['pixelX'];this.pixelY=anExtentArray['pixelY'];if((this.minx+this.width)>180)this.crosses180=true;else this.crosses180=false;};}
function min(a,b){if(a<b){return a;}else{return b;}}
function max(a,b){if(a>b){return a;}else{return b;}}