var MINPOINTS=3;
var MAXPOINTS=30;
var EDGEDIST=30;
var polyShape;
var polygonMode;
var polygonDepth=20;
var polyPoints=Array();
var rawPoints=Array();
var encodedPoly=null;
var drawMode;
var oldMarker;
var marker;
var geocoder=null;
var fillColor="#0000FF";
var lineColor="#000000";
var opacity=0.3;
var lineWeight=2;
var kmlFillColor="7dff0000";
var drawing=false;
var listener;
var bandLstnr;
var ruler=null;
var looper=null;
var movedir=null;
var reloadFN=null;
var reloadOBJ=null;
var icon=new GIcon();
icon.image="/img/sphere-small-r.gif";
icon.iconSize=new GSize(10,10);
icon.iconAnchor=new GPoint(5,5);
icon.infoWindowAnchor=new GPoint(0,0);
var iconBig=new GIcon();
iconBig.image="/img/sphere-large-r.gif";
iconBig.iconSize=new GSize(16,16);
iconBig.iconAnchor=new GPoint(8,8);
iconBig.infoWindowAnchor=new GPoint(0,0);
var delSmall=new GIcon();
delSmall.image="/img/sphere-del-small.gif?1";
delSmall.iconSize=new GSize(10,10);
delSmall.iconAnchor=new GPoint(5,5);
delSmall.infoWindowAnchor=new GPoint(0,0);
var delBig=new GIcon();
delBig.image="/img/sphere-del-large.gif?1";
delBig.iconSize=new GSize(16,16);
delBig.iconAnchor=new GPoint(8,8);
delBig.infoWindowAnchor=new GPoint(0,0);
var posMarker=null;
var delMarker=null;
var smallMarker=null;
var bigMarker=null;
var delSmallMarker=null;
var delBigMarker=null;
function polyInit(_1,_2){
reloadOBJ=_1;
reloadFN=_2;
}
function hasPoly(){
return (polyPoints!=null&&polyPoints.length>0);
}
function getEncodedPoly(){
if(drawing){
return null;
}
return encodedPoly;
}
function loadPoly(_3){
var _4=decodeLine(_3);
for(var i=0;i<(_4.length);i++){
mapClick(null,new GLatLng(parseFloat(_4[i].y.toFixed(5)),parseFloat(_4[i].x.toFixed(5))),null,true);
}
encodedPoly=_3;
}
function bleh(){
if(ruler!==null){
RasMap.removeOverlay(ruler);
}
stopPan();
}
function drawLine(_6){
if(ruler!=null){
RasMap.removeOverlay(ruler);
}
if(polyPoints==null||polyPoints.length<1){
return;
}
var _7=Array();
_7.push(_6);
_7.push(polyPoints[polyPoints.length-1]);
ruler=new GPolyline(_7,"#000000",2,0.2);
RasMap.addOverlay(ruler);
checkEdges(_6);
}
function startDraw(){
var _8=RasMap;
updateInstr();
if(!drawing){
MapHelper.logJSError("Start Drawing");
RasMap.clearOverlays();
drawing=true;
if(polyPoints.length>0){
polyPoints.pop();
setupMarkers(true);
drawCoordinates(polyPoints,0,0);
}
listener=GEvent.addListener(RasMap,"click",mapClick);
var d=_8.getDragObject();
_8.getDragObject().setDraggableCursor("crosshair");
_8.getDragObject().setDraggingCursor("crosshair");
GEvent.addListener(RasMap,"mouseout",bleh);
bandLstnr=GEvent.addListener(RasMap,"mousemove",drawLine);
}
}
function stopDraw(_a,_b){
var _c=RasMap;
if(drawing){
if(_a&&polyPoints.length<MINPOINTS){
alert("You must draw at least "+MINPOINTS+" points to make the sketch.");
return false;
}
posMarker=null;
_c.getDragObject().setDraggableCursor("url(http://maps.google.com/intl/en_us/mapfiles/openhand.cur), default");
_c.getDragObject().setDraggingCursor("url(http://maps.google.com/intl/en_us/mapfiles/closedhand.cur), move");
drawing=false;
if(polyPoints.length>0){
polyPoints.push(polyPoints[0]);
}
clearMarkers();
GEvent.removeListener(listener);
GEvent.removeListener(bandLstnr);
clearInterval(looper);
if(ruler){
RasMap.removeOverlay(ruler);
}
drawCoordinates(polyPoints,0,0);
if(!_b){
encodedPoly=createEncodings(polyPoints);
}
updateInstr();
reloadOBJ[reloadFN]();
return true;
}
return true;
}
function toggleDraw(_d){
var _e=RasMap;
if(!drawing&&_d){
startDraw();
}else{
if(!_d){
stopDraw();
}
}
}
function checkEdges(_f){
if(_f!=null){
var _10=G_NORMAL_MAP.getProjection();
var _11=RasMap.getZoom();
var _12=_10.fromLatLngToPixel(_f,_11);
var _13=_10.fromLatLngToPixel(RasMap.getBounds().getSouthWest(),_11);
var _14=_10.fromLatLngToPixel(RasMap.getBounds().getNorthEast(),_11);
dir=new GSize(0,0);
var _15=100;
if(_12.x-_13.x<EDGEDIST){
dir.width=EDGEDIST;
}else{
if(_14.x-_12.x<(EDGEDIST-10)){
dir.width=-EDGEDIST;
}else{
if(_13.y-_12.y<EDGEDIST){
dir.height=-EDGEDIST;
}else{
if(_12.y-_14.y<EDGEDIST){
dir.height=EDGEDIST;
}
}
}
}
if(dir.width!=0||dir.height!=0){
if(!dir.equals(movedir)){
movedir=dir;
if(looper!=null){
clearInterval(looper);
}
looper=setInterval(function(){
autoPan(dir);
},60);
}
}else{
stopPan();
}
}
}
function stopPan(){
clearInterval(looper);
looper=null;
movedir=null;
}
function autoPan(_16){
RasMap.panBy(_16);
}
function markerClick(a,b,c){
alert(b);
}
function mapClick(_1a,_1b,_1c,_1d){
if(_1a){
_1b=_1c;
}
if(_1b==null){
alert("no point");
return;
}
var _1e=G_NORMAL_MAP.getProjection();
var _1f=RasMap.getZoom();
polygonMode=true;
oldMarker=_1a;
if(polyPoints.length>=(MAXPOINTS-1)){
alert("You may not have more than "+MAXPOINTS+" points in your shape.");
return;
}
if(_1b.lat()>41.000660212720824||_1b.lat()<36.99290861700243||_1b.lng()<-109.04997646808624||_1b.lng()>-102.04220920801163){
alert("Please restrict your sketch to inside Colorado");
return;
}
var _20=_1e.fromLatLngToPixel(_1b,_1f);
var _21=new GPoint(_20.x,_20.y);
var _22=_1e.fromPixelToLatLng(_21,_1f);
_22.x=parseFloat(_22.x.toFixed(5));
_22.y=parseFloat(_22.y.toFixed(5));
polyPoints.push(_22);
setupMarkers();
rawPoints.push(_1b);
if(!_1d){
drawCoordinates(polyPoints,0,0);
}
updateInstr();
}
function updateInstr(){
if(polyPoints.length==1){
get("samText").innerHTML="Keep clicking to create your sketch. You need at least "+MINPOINTS+" points";
}else{
if(polyPoints.length>1){
get("samText").innerHTML="Save your search for email updates inside your sketch.";
if(drawing){
if(polyPoints.length==2){
get("samText").innerHTML="Drag &amp; zoom map as normal, or move to an edge to pan.";
}
if(polyPoints.length==0){
get("samText").innerHTML="Your results will be constrained to your sketch only.";
}
if(polyPoints.length>=3){
get("samText").innerHTML="Click original point <img src=\"img/sphere-small-r.gif\"/> to complete the sketch, <img src=\"/img/sphere-del-small.gif?1\"/> to remove last point.";
}
}
}else{
get("samText").innerHTML="Click on the map to start drawing (don't drag).";
}
}
}
function setupMarkers(_23){
if(polyPoints.length>=MINPOINTS&&(posMarker==null||_23)){
smallMarker=new GMarker(polyPoints[0],icon);
bigMarker=new GMarker(polyPoints[0],iconBig);
GEvent.addListener(smallMarker,"mouseover",function(){
switchMarker(bigMarker);
});
GEvent.addListener(bigMarker,"mouseout",function(){
switchMarker(smallMarker);
});
GEvent.addListener(bigMarker,"click",function(){
toggleDraw();
});
posMarker=smallMarker;
RasMap.addOverlay(bigMarker);
bigMarker.hide();
RasMap.addOverlay(posMarker);
}else{
if(polyPoints.length<MINPOINTS&&posMarker!=null){
RasMap.removeOverlay(posMarker);
posMarker=null;
}
}
if(polyPoints.length>0){
if(delMarker!=null){
RasMap.removeOverlay(delMarker);
}
delSmallMarker=new GMarker(polyPoints[polyPoints.length-1],delSmall);
delBigMarker=new GMarker(polyPoints[polyPoints.length-1],delBig);
GEvent.addListener(delSmallMarker,"mouseover",function(){
switchDelMarker(delBigMarker);
});
GEvent.addListener(delBigMarker,"mouseout",function(){
switchDelMarker(delSmallMarker);
});
GEvent.addListener(delBigMarker,"click",function(){
deleteLastPoint();
});
delMarker=delSmallMarker;
RasMap.addOverlay(delBigMarker);
delBigMarker.hide();
RasMap.addOverlay(delSmallMarker);
}
}
function switchMarker(_24){
if(posMarker!=_24){
if(posMarker!=null){
posMarker.hide();
}
_24.show();
posMarker=_24;
}
}
function switchDelMarker(_25){
if(delMarker!=_25){
if(delMarker!=null){
delMarker.hide();
}
_25.show();
delMarker=_25;
}
}
function clearMarkers(){
if(posMarker!=null){
RasMap.removeOverlay(posMarker);
}
if(delMarker!=null){
RasMap.removeOverlay(delMarker);
}
posMarker=null;
delMarker=null;
}
function clearMap(_26){
updateInstr();
clearMarkers();
encodedPoly=null;
if(polyShape){
RasMap.removeOverlay(polyShape);
}
var p=polyPoints.pop();
while(p!=null){
try{
RasMap.removeOverlay(p);
RasMap.removeOverlay(polyShape);
}
catch(err){
}
p=polyPoints.pop();
}
polyPoints=Array();
if(_26){
reloadOBJ[reloadFN]();
}
}
function toggleDrawMode(){
RasMap.clearOverlays();
polygonMode=true;
drawCoordinates();
}
function deleteLastPoint(){
if(drawing){
RasMap.removeOverlay(delMarker);
delMarker=null;
try{
RasMap.removeOverlay(polyPoints.pop());
RasMap.removeOverlay(polyShape);
}
catch(err){
}
drawCoordinates();
setupMarkers();
updateInstr();
}
}
function drawCoordinates(){
if(polyShape){
RasMap.removeOverlay(polyShape);
}
if(polyPoints.length<=0){
return;
}
polyShape=new GPolygon(polyPoints,lineColor,lineWeight,opacity,fillColor,opacity,{"clickable":false});
RasMap.addOverlay(polyShape);
}
function polyRefresh(){
if(drawing){
setupMarkers(true);
}
drawCoordinates();
}
function encodeSignedNumber(num){
var _29=num<<1;
if(num<0){
_29=~(_29);
}
return (encodeNumber(_29));
}
function encodeNumber(num){
var _2b="";
while(num>=32){
_2b+=(String.fromCharCode((32|(num&31))+63));
num>>=5;
}
_2b+=(String.fromCharCode(num+63));
return _2b;
}
function createEncodings(_2c){
var i=0;
var _2e=0;
var _2f=0;
var _30="";
for(i=0;i<_2c.length;++i){
var _31=_2c[i];
var lat=_31.y;
var lng=_31.x;
var _34=Math.floor(lat*100000);
var _35=Math.floor(lng*100000);
dlat=_34-_2e;
dlng=_35-_2f;
_2e=_34;
_2f=_35;
_30+=encodeSignedNumber(dlat)+encodeSignedNumber(dlng);
}
return _30;
}
function decodeLine(_36){
var len=_36.length;
var _38=0;
var _39=[];
var lat=0;
var lng=0;
try{
while(_38<len){
var b;
var _3d=0;
var _3e=0;
do{
b=_36.charCodeAt(_38++)-63;
_3e|=(b&31)<<_3d;
_3d+=5;
}while(b>=32);
var _3f=((_3e&1)?~(_3e>>1):(_3e>>1));
lat+=_3f;
_3d=0;
_3e=0;
do{
b=_36.charCodeAt(_38++)-63;
_3e|=(b&31)<<_3d;
_3d+=5;
}while(b>=32);
var _40=((_3e&1)?~(_3e>>1):(_3e>>1));
lng+=_40;
_39.push(new GLatLng((lat*0.00001),(lng*0.00001)));
}
}
catch(ex){
alert("dec error "+ex);
}
return _39;
}

