
var VE_AJAXAPI="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx";
var VE_VERSION="6.1";
var liveHelpUrl="http://help.live.com/help.aspx?mkt=en-us";
var IDX_OPACY=0.7;
var IDX_AREA_OPACY=0.4;
var IDX_BKG_OPACY=0.2;
var IDX_FULL_OPACY=1;
var IDX_AREA_WIDTH=1;
var IDX_FULL_WIDTH=2;
var g_objVEMap=null;
var g_objVEAreaLayer=null;
var g_objVEFadingLayer=null;
var g_objBrowser=new BrowserInfo();
var g_aMapPolygons=new Array();
var g_aSelectedArea=new Array();
var g_aAllSelectedArea=new Array();
var g_oVEColorOverlay=null;
var g_oVEColorArea=null;
var g_oVEColorBkg=null;
var g_oVEColorSelect=null;
var g_sErrorGeneral="Error occured in IDX mapping page.";
if(g_objBrowser.VESupported)
{
document.write("<script type='text/javascript' src='"+VE_AJAXAPI+"?v="+VE_VERSION+"'><"+"/script>");
}
function InitIDXSearchMap(p_sMapBoundID)
{
try
{
$("spanIDXMapLoading").style.display="none";
$("spanIDXMapNotSupported").style.display="none";
$(p_sMapBoundID).style.display="block";
g_objVEMap=new VEMap(p_sMapBoundID);
g_objVEMap.LoadMap(null,null,"r",true);
g_objVEMap.EnableShapeDisplayThreshold(false);
$(p_sMapBoundID).style.cursor="pointer";
g_oVEColorOverlay=new VEColor(220,220,220,IDX_OPACY);
g_oVEColorArea=new VEColor(0,128,0,IDX_AREA_OPACY);
g_oVEColorSelect=new VEColor(235,100,80,IDX_FULL_OPACY);
g_oVEColorBkg=new VEColor(235,100,80,IDX_BKG_OPACY);
var bShapeAvailable=ZoomToBestFit();
if(bShapeAvailable)
{
OverlayIDXMapShadow();
AddMapAreaLayer();
}
else
{
$("divMapCriteriaArea").style.display="none";
$("spanIDXMapNotConfigured").style.display="inline";
}
var objSelect=$("selMapArea");
var objEntireArea=$("chkEntireArea");
if(objSelect!=null)
{
var sFieldRef=objSelect.getAttribute("FieldRef");
var aFieldRefs=sFieldRef.split("-");
document.forms[0].GeoFieldID.value=aFieldRefs[0];
document.forms[0].GeoFieldOrder.value=aFieldRefs[1];
if(objSelect.selectedIndex!=-1&&bShapeAvailable)
{
SynchronizeControlAndMap();
}
}
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","InitIDXSearchMap");
}
}
function ZoomToBestFit()
{
var bMapShapeAvailable=true;
try
{
if(typeof(g_bZoomToParentArea)=="undefined"||!g_bZoomToParentArea)
{
var iMinLatitude=null;
var iMaxLatitude=null;
var iMinLongitude=null;
var iMaxLongitude=null;
var sAreaKey="";
for(sAreaKey in g_aMapPolygons)
{
if(g_aMapPolygons[sAreaKey].PolyPoints!=null)
{
for(var iPolyPntIdx=0;iPolyPntIdx<g_aMapPolygons[sAreaKey].PolyPoints.length;iPolyPntIdx++)
{
if(iMinLatitude==null||iMinLatitude>g_aMapPolygons[sAreaKey].PolyPoints[iPolyPntIdx].Latitude)
{
iMinLatitude=g_aMapPolygons[sAreaKey].PolyPoints[iPolyPntIdx].Latitude;
}
if(iMinLongitude==null||iMinLongitude>g_aMapPolygons[sAreaKey].PolyPoints[iPolyPntIdx].Longitude)
{
iMinLongitude=g_aMapPolygons[sAreaKey].PolyPoints[iPolyPntIdx].Longitude;
}
if(iMaxLatitude==null||iMaxLatitude<g_aMapPolygons[sAreaKey].PolyPoints[iPolyPntIdx].Latitude)
{
iMaxLatitude=g_aMapPolygons[sAreaKey].PolyPoints[iPolyPntIdx].Latitude;
}
if(iMaxLongitude==null||iMaxLongitude<g_aMapPolygons[sAreaKey].PolyPoints[iPolyPntIdx].Longitude)
{
iMaxLongitude=g_aMapPolygons[sAreaKey].PolyPoints[iPolyPntIdx].Longitude;
}
}
}
}
if(iMinLatitude!=null&&iMinLongitude!=null&&iMaxLatitude!=null&&iMaxLongitude!=null)
{
var objVELatLngRec=new VELatLongRectangle(new VELatLong(iMinLatitude,iMinLongitude),
new VELatLong(iMaxLatitude,iMaxLongitude));
g_objVEMap.SetMapView(objVELatLngRec);
}
else
{
bMapShapeAvailable=false;
}
}
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","ZoomToBestFit");
}
return bMapShapeAvailable;
}
function OverlayIDXMapShadow()
{
try
{
if(g_objVEFadingLayer==null)
{
g_objVEFadingLayer=new VEShapeLayer();
g_objVEMap.AddShapeLayer(g_objVEFadingLayer);
}
var objVECurLatLngRec=g_objVEMap.GetMapView();
var fLowerRightLat=objVECurLatLngRec.BottomRightLatLong.Latitude;
var fLowerRightLng=objVECurLatLngRec.BottomRightLatLong.Longitude;
var fTopLeftLat=objVECurLatLngRec.TopLeftLatLong.Latitude;
var fTopLeftLng=objVECurLatLngRec.TopLeftLatLong.Longitude;
var aPolyLatLongs=new Array(new VELatLong(fTopLeftLat,fTopLeftLng),
new VELatLong(fLowerRightLat,fTopLeftLng),
new VELatLong(fLowerRightLat,fLowerRightLng),
new VELatLong(fTopLeftLat,fLowerRightLng));
var objCoverPoly=new VEShape(VEShapeType.Polygon,aPolyLatLongs);
objCoverPoly.SetLineWidth(IDX_AREA_WIDTH);
objCoverPoly.SetLineColor(g_oVEColorOverlay);
objCoverPoly.SetFillColor(g_oVEColorOverlay);
objCoverPoly.SetCustomIcon("<span></span>");
g_objVEFadingLayer.AddShape(objCoverPoly);
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","OverlayIDXMapShadow");
}
}
function AddMapAreaLayer()
{
try
{
if(g_objVEAreaLayer==null)
{
g_objVEAreaLayer=new VEShapeLayer();
g_objVEMap.AddShapeLayer(g_objVEAreaLayer);
}
var sAreaKey="";
for(sAreaKey in g_aMapPolygons)
{
if(g_aMapPolygons[sAreaKey].PolyPoints!=null)
{
AddMapAreaPolygon(sAreaKey);
}
}
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","AddMapAreaLayer");
}
}
function AddMapAreaPolygon(p_sAreaKey)
{
try
{
var objAreaPolygon=new VEShape(VEShapeType.Polygon,g_aMapPolygons[p_sAreaKey].PolyPoints);
objAreaPolygon.Primitives[0].symbol.stroke_dashstyle="Solid";
var oFillColor=g_oVEColorArea;
var sCustomIcon="<span style='color:blue;font-weight:bold;font-color:blue;font-size:8pt'>"+g_aMapPolygons[p_sAreaKey].Description+"</span>";
if(g_aMapPolygons[p_sAreaKey].IsParent)
{
objAreaPolygon.Primitives[0].symbol.stroke_dashstyle="ShortDot";
oFillColor=g_oVEColorBkg;
sCustomIcon="<span></span>";
}
objAreaPolygon.SetLineWidth(IDX_AREA_WIDTH);
objAreaPolygon.SetFillColor(oFillColor);
objAreaPolygon.SetCustomIcon(sCustomIcon);
g_objVEAreaLayer.AddShape(objAreaPolygon);
g_aMapPolygons[p_sAreaKey].Polygon=objAreaPolygon;
if(!g_aMapPolygons[p_sAreaKey].IsParent)
{
var objPolygonShape=$(objAreaPolygon.Primitives[0].iid);
var objPolygonLink=$(objAreaPolygon.Primitives[0].iid+"_l");
if(objPolygonShape!=null)
{
objPolygonShape.onclick=function(){onMapAreaSelect(objAreaPolygon,p_sAreaKey);};
}
if(objPolygonLink!=null)
{
objPolygonLink.onclick=function(){onMapAreaSelect(objAreaPolygon,p_sAreaKey);};
}
}
else
{
var objVELatLngRec=new VELatLongRectangle(new VELatLong(objAreaPolygon.Boundingbox.y1,objAreaPolygon.Boundingbox.x1),
new VELatLong(objAreaPolygon.Boundingbox.y2,objAreaPolygon.Boundingbox.x2));
g_objVEMap.SetMapView(objVELatLngRec);
}
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","AddMapAreaPolygon");
}
}
function onMapAreaSelect(p_objPolygon,p_sAreaKey)
{
try
{
if(p_objPolygon==null)
{
p_objPolygon=g_aMapPolygons[p_sAreaKey].Polygon;
}
FlipPolygonStatus(p_objPolygon,p_sAreaKey,g_aMapPolygons[p_sAreaKey].Selected);
SelectAreaInControl(p_sAreaKey,g_aMapPolygons[p_sAreaKey].Selected);
ConstructMapAreaValue();
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","onMapAreaSelect");
}
}
function SelectAreaInControl(p_sAreaKey,p_bSelected)
{
try
{
g_aSelectedArea=new Array();
g_aAllSelectedArea=new Array();
var objSelectControl=$("selMapArea");
var iAreaCount=objSelectControl.options.length;
for(var i=0;i<iAreaCount;i++)
{
if(objSelectControl.options[i].value==p_sAreaKey)
{
objSelectControl.options[i].selected=p_bSelected;
break;
}
}
for(var i=0;i<iAreaCount;i++)
{
if(objSelectControl.options[i].selected)
{
g_aAllSelectedArea.push(i);
if(g_aMapPolygons[objSelectControl.options[i].value]!=null)
{
g_aSelectedArea.push(i);
}
}
}
$('chkEntireArea').checked=(g_aAllSelectedArea.length==iAreaCount);
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","SelectAreaInControl");
}
}
function FlipPolygonStatus(p_objPolygon,p_sAreaKey,p_bSelected)
{
try
{
if(p_objPolygon==null)
{
p_objPolygon=g_aMapPolygons[p_sAreaKey].Polygon;
}
if(p_bSelected)
{
p_objPolygon.SetLineWidth(IDX_AREA_WIDTH);
p_objPolygon.SetFillColor(g_oVEColorArea);
}
else
{
p_objPolygon.SetLineWidth(IDX_FULL_WIDTH);
p_objPolygon.SetFillColor(g_oVEColorSelect);
}
g_aMapPolygons[p_sAreaKey].Selected=!p_bSelected;
p_objPolygon.onclick=function(){onPolygonSelect(p_objPolygon,p_sAreaKey);}
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","FlipPolygonStatus");
}
}
function SynchronizeControlAndMap()
{
try
{
var objSelectControl=$("selMapArea");
var iAreaCount=objSelectControl.options.length;
var aSelectedIndex=new Array();
var aSelectedIndexInMap=new Array();
for(var i=0;i<iAreaCount;i++)
{
if(objSelectControl.options[i].selected)
{
aSelectedIndex.push(i);
if(g_aMapPolygons[objSelectControl.options[i].value]!=null)
{
aSelectedIndexInMap.push(i);
}
}
}
if($("divMapCriteriaArea")!=null)
{
var aRemovedIndex=new Array();
var aAddedIndex=new Array();
for(var i=0;i<g_aSelectedArea.length;i++)
{
if(!ArrayContains(aSelectedIndexInMap,g_aSelectedArea[i]))
{
aRemovedIndex.push(g_aSelectedArea[i]);
}
}
for(var i=0;i<aSelectedIndexInMap.length;i++)
{
if(!ArrayContains(g_aSelectedArea,aSelectedIndexInMap[i]))
{
aAddedIndex.push(aSelectedIndexInMap[i]);
}
}
if(aRemovedIndex.length>0)
{
for(var i=0;i<aRemovedIndex.length;i++)
{
FlipPolygonStatus(null,objSelectControl.options[aRemovedIndex[i]].value,true);
}
}
if(aAddedIndex.length>0)
{
for(var i=0;i<aAddedIndex.length;i++)
{
FlipPolygonStatus(null,objSelectControl.options[aAddedIndex[i]].value,false);
}
}
}
g_aSelectedArea=aSelectedIndexInMap;
g_aAllSelectedArea=aSelectedIndex;
$('chkEntireArea').checked=(g_aAllSelectedArea.length==iAreaCount);
ConstructMapAreaValue();
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","SynchronizeControlAndMap");
}
}
function SelectEntireArea(p_bSelectAll)
{
try
{
var objSelectControl=$("selMapArea");
var iAreaCount=objSelectControl.options.length;
for(var i=0;i<iAreaCount;i++)
{
objSelectControl.options[i].selected=p_bSelectAll;
}
SynchronizeControlAndMap();
ConstructMapAreaValue();
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","SelectEntireArea");
}
}
function CheckAndSelectAllChildren()
{
try
{
if(ValidateMapAreaField())
{
var iGeoFieldOrder=document.forms[0].GeoFieldOrder.value;
if(iGeoFieldOrder>1)
{
if($("chkEntireArea")!=null&&$("selMapArea")!=null&&$("selMapArea").selectedIndex==-1)
{
SelectEntireArea(true);
}
}
}
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","CheckAndSelectAllChildren");
}
}
function ConstructMapAreaValue()
{
try
{
if(ValidateMapAreaField())
{
var iGeoFieldID=document.forms[0].GeoFieldID.value;
var iGeoFieldOrder=document.forms[0].GeoFieldOrder.value;
var sCurGeoValue=document.forms[0].GeoValues.value;
var sGeoValueFmt="F"+String(iGeoFieldID)+"-"+String(iGeoFieldOrder)+":";
var regExpGeoValue=new RegExp(sGeoValueFmt+"[^\;]+\;");
var sMapAreaValue="";
var objSelectControl=$("selMapArea");
if(objSelectControl!=null&&objSelectControl.selectedIndex!=-1)
{
for(var i=0;i<objSelectControl.options.length;i++)
{
if(objSelectControl.options[i].selected)
{
sMapAreaValue+=objSelectControl.options[i].value+"|";
}
}
sMapAreaValue=sMapAreaValue.substr(0,sMapAreaValue.length-1);
sMapAreaValue=sGeoValueFmt+sMapAreaValue+";";
}
if(regExpGeoValue.test(sCurGeoValue))
{
sCurGeoValue=sCurGeoValue.replace(regExpGeoValue,sMapAreaValue);
}
else
{
sCurGeoValue+=sMapAreaValue;
}
document.forms[0].GeoValues.value=sCurGeoValue;
}
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","ConstructMapAreaValue");
}
}
function ValidateMapAreaField()
{
try
{
return(document.forms!=null&&document.forms[0]!=null&&
typeof(document.forms[0].GeoValues)!="undefined"&&
typeof(document.forms[0].GeoFieldID)!="undefined"&&
typeof(document.forms[0].GeoFieldOrder)!="undefined"&&
document.forms[0].GeoFieldID.value!=""&&document.forms[0].GeoFieldOrder.value!="");
}
catch(e)
{
DisplayErrorDialog(g_sErrorGeneral,e,"IDXMapping.js","ValidateMapAreaField");
}
}
