PJSOL=function(a){this.DOM=document.createElement("div");YAHOO.util.Dom.generateId(this.DOM,"pjsol");this.DOM.className="pjsol_main";this.doc=a.doc;this.base=a.base;this.page=(a.page)?a.page:1;this.center=a.center;this.zoomlevel=a.zoom;this.url=a.url;this.map=null;this.curLayer=null;this.mode="none";this.croplayer=null;this.annolayer=null;this.exitAnno=new YAHOO.util.CustomEvent("exitanno");this.exitCrop=new YAHOO.util.CustomEvent("exitcrop");this.setAlert=new YAHOO.util.CustomEvent("setAlert");this.cropBoxIsOpenPJSOL=new YAHOO.util.CustomEvent("cropboxisopenpjsol");this.mouseControl=new OpenLayers.Control.MousePosition();a.loc.appendChild(this.DOM);};PJSOL.prototype={init:function(){if(!this.map){var a={controls:[],maxExtent:new OpenLayers.Bounds(-8192,-8192,8192,8192),maxResolution:32,numZoomLevels:6};this.map=new OpenLayers.Map(this.DOM.id,a);this.map.addControl(this.mouseControl);this.navcontrol=new OpenLayers.Control.Navigation({handleRightClicks:true,zoomWheelEnabled:false});this.map.addControl(this.navcontrol);this.map.addControl(new OpenLayers.Control.LayerSwitcher());this.map.events.register("click",this,this.handleMapClick);this.map.events.register("zoomend",this,this.zoomEndHandler);YAHOO.util.Dom.setStyle(this.mouseControl.div,"display","none");}if(!this.annolayer){this.annolayer=new AnnoLayer({name:"Annotations",mouse:this.mouseControl,doc:this.doc});this.map.addLayer(this.annolayer.layer);this.annolayer.layer.setZIndex(999);this.annolayer.stopAnnoListen.subscribe(this.modeHalt,this);this.annolayer.exitMode.subscribe(this.exitAnnoMode,this);}if(!this.croplayer){this.croplayer=new CropLayer({name:"CropLayer",doc:this.doc,mouse:this.mouseControl});this.map.addLayer(this.croplayer.layer);this.croplayer.layer.setZIndex(999);this.croplayer.cropReady.subscribe(function(d,c,b){b.cropBoxIsOpenPJSOL.fire(c[0]);},this);this.croplayer.exitCrop.subscribe(this.exitCropMode,this);this.croplayer.stopCropListen.subscribe(this.modeHalt,this);}this.curLayer=new OpenLayers.Layer.PanoJs(this.base,this.url,this.base,{displayInLayerSwitcher:false});this.map.addLayer(this.curLayer);this.map.setBaseLayer(this.curLayer);if(!this.center){this.center=new OpenLayers.LonLat(-4096,4096);}else{this.center=new OpenLayers.LonLat(this.center[0],this.center[1]);}this.map.setCenter(this.center,this.zoomlevel);},changePage:function(d,b,c){this.page=c+1;this.annolayer.page=this.page;var a=this.map.getCenter();this.zoomlevel=this.map.getZoom();if(this.map.layers.length>0){this.map.removeLayer(this.curLayer);this.curLayer=null;}if(this.annolayer.layer){this.annolayer.clearLayer();}this.base=d;this.url=b;this.curLayer=new OpenLayers.Layer.PanoJs(this.base,this.url,this.base,{displayInLayerSwitcher:false});this.map.addLayer(this.curLayer);this.map.setBaseLayer(this.curLayer);this.map.setCenter(a,this.zoomlevel);},handleMapClick:function(a){if(this.mode=="anno"){this.annolayer.createAnno(a,{obj:this.annolayer,page:this.page});}else{if(this.mode=="crop"){this.croplayer.createCropBox(a,{obj:this.croplayer,layer:this.curLayer});}}},resetCenter:function(){var a=new OpenLayers.LonLat(-4000,4000);this.map.setCenter(a,this.zoomlevel);},zoomEndHandler:function(a){this.zoomlevel=this.map.getZoom();},zoom:function(a){if(a>0){if(this.zoomlevel==(this.map.numZoomLevels-1)){this.setAlert.fire("Reached maximum zoom level");}else{this.map.zoomIn();}}else{if(this.zoomlevel==0){this.setAlert.fire("Reached minimum zoom level");}else{this.map.zoomOut();}}},activateZoomScroll:function(){var a=this.map.getControl(this.navcontrol.id);this.nvc.enableZoomWheel();},deactivateZoomScroll:function(){var a=this.map.getControl(this.navcontrol.id);this.nvc.disableZoomWheel();alert(this.nvc);},applyAnnos:function(b,a){this.annolayer.clearLayer();this.annolayer.retrieveAnnos(this.page,b,a);},addAnnoLayer:function(){},enterAnno:function(){if(this.mode=="crop"){this.croplayer.terminate();this.exitCropMode(null,null,this);}this.mode="anno";},enterCrop:function(){if(this.mode=="anno"){this.annolayer.terminate();this.exitAnnoMode(null,null,this);}this.mode="crop";},exitAnnoMode:function(c,b,a){a.exitAnno.fire(true);},exitCropMode:function(c,b,a){a.exitCrop.fire(true);},modeHalt:function(c,b,a){a.mode="none";},stopListeners:function(){if(this.mode=="anno"){this.annolayer.terminate();}else{if(this.mode=="crop"){this.croplayer.terminate();}}this.mode="none";},hide:function(){this.center=this.map.getCenter();YAHOO.util.Dom.setStyle(this.map.div,"display","none");},unhide:function(){this.resetCenter();YAHOO.util.Dom.setStyle(this.map.div,"display","block");this.map.panTo(new OpenLayers.LonLat(-4500,4000));}};