if(typeof window['iQ'] == "undefined"){ window['iQ'] = new Object(); } var objDirectionsPanel = null; var objDirectionsChecker = null; var objDirectionsDiv = null; var objMap = null; var objMapGeo = null; var objMapProcessing = null; var objOpenPin = null; var intCurrMapPin = 0; var arrMapPoints =[]; var arrMapShapes =[]; var strGEOData = ''; var bRecenter = false var strMapDivID = ''; var strDirectionsDivID = ''; var strDirectionsHTML = '
Starting Address
'; var MapChangedCallBack = ''; var strBubbleHTML = '
'; var iQMapPoint = function(){return{ DBTable:null, KeyField:null, KeyData:null, Lat:null, Lon:null, Address:null, CustomIcon:'', CustomIcon_Class:'', CustomIcon_Over_Class:'', ZoomLevel:10, //CustomIcon:'', //CustomIconOver:'', Contents:'' //END Point Constructor }} function doInitMap(options){ strMapDivID = options.DivID; bRecenter = options.Recenter; MapChangedCallBack = options.OnChangeCallBack; try{ if(objMap == null){ objMap = new VEMap(strMapDivID); if(options.MapType.toLowerCase() != 'default'){ objMap.SetDashboardSize(VEDashboardSize.Tiny); } objMap.AttachEvent("onmousewheel",function(){return true}); objMap.LoadMap(); //objMap.ShowMiniMap(); } var objLatLong = new VELatLong(options.Lat,options.Lon); objMap.SetCenterAndZoom(objLatLong,options.ZoomLevel); if(MapChangedCallBack != ''){ objMap.AttachEvent("onendzoom",doMapChanged); objMap.AttachEvent("onendpan",doMapChanged); //objMap.AttachEvent("onchangeview",doMapChanged); //call this to give the hidden lat/lon fields some meaning on first call doMapChanged(); } } catch(e){ alert('Current Pin:' + intCurrMapPin + ' Error:' + e.message); } } function doMapChanged(){ var mapStyle = objMap.GetMapStyle(); //if the current view is birdseye then just return so we don't reload and get zero results if (mapStyle == 'b'){ return true; } var objColumn = iQ.Utils.getBrowserObject(strMapDivID); if (document.layers){ iWidth = objColumn.document.width; iHeight = objColumn.document.height; }else if(document.all){ iWidth = objColumn.clientWidth; iHeight = objColumn.clientHeight; }else{ iWidth = objColumn.clientWidth; iHeight = objColumn.clientHeight; } var topleftpixel = new VEPixel(0,0); var LL = objMap.PixelToLatLong(topleftpixel); var topleftlat = LL.Latitude; var topleftlon = LL.Longitude; var bottomrightpixel = new VEPixel(iWidth,iHeight); var LL = objMap.PixelToLatLong(bottomrightpixel); var bottomrightlat = LL.Latitude; var bottomrightlon = LL.Longitude; var LL = objMap.GetCenter(); var centerlat = LL.Latitude; var centerlon = LL.Longitude; var zoomlevel = objMap.GetZoomLevel(); var funcCall = MapChangedCallBack + "('" + topleftlat + "','" + topleftlon + "','" + bottomrightlat + "','" + bottomrightlon + "','" + centerlat + "','" + centerlon + "','" + zoomlevel + "');"; eval(funcCall); return false; } function doLoadMap(arrPoints){ arrMapPoints =[];//Clear the array. arrMapPoints = arrPoints; intCurrMapPin = 0; if(objMap == null){ alert('Map Not Loaded') return false; } if(arrMapShapes.length != 0){ arrMapShapes =[];//Clear the array objMap.DeleteAllShapeLayers(); } if(objDirectionsDiv != null){ doClearDirections(); } doLoadPoint(); } function doClearMap(){ objMap.DeleteAllShapeLayers(); } function doLoadPoint(){ try{ if(intCurrMapPin < arrMapPoints.length){ //if the Office does not have a lat and long then lets go find it if(arrMapPoints[intCurrMapPin].Lat == '' || arrMapPoints[intCurrMapPin].Lon == '' || arrMapPoints[intCurrMapPin].Lat == null || arrMapPoints[intCurrMapPin].Lon == null || arrMapPoints[intCurrMapPin].Lat == 0 || arrMapPoints[intCurrMapPin].Lon == 0 || arrMapPoints[intCurrMapPin].Lat == -1 || arrMapPoints[intCurrMapPin].Lon == -1){ if(!document.getElementById('IQ_MyGeoMap')){ var objBody = document.getElementsByTagName('body'); var objGMap = document.createElement('div'); objGMap.setAttribute('id','IQ_MyGeoMap'); objGMap.style.position='absolute'; objGMap.style.left='-1000px'; objGMap.style.top='-1000px'; objGMap.style.width='1px'; objGMap.style.height='1px'; objGMap.style.display='none'; objGMap.style.visibility='hidden'; objBody[0].appendChild(objGMap); } if(objMapGeo == null){ objMapGeo = new VEMap('IQ_MyGeoMap'); objMapGeo.LoadMap(); objMapGeo.ClearInfoBoxStyles(); } var GeoCallback = 'doGeoCodeComplete(' + intCurrMapPin + ');' objMapGeo.Find(null,arrMapPoints[intCurrMapPin].Address,null,null,0,1,false,false,false,true,function(){eval(GeoCallback)}); }else{ doCreatePushPin(intCurrMapPin); } }else{ objShapeLayer = new VEShapeLayer(); objMap.AddShapeLayer(objShapeLayer); objShapeLayer.AddShape(arrMapShapes); //objShapeLayer.SetClusteringConfiguration(VEClusteringType.Grid); //if there is only 1 shape and the map has been set to recenter automatically //then lets center on the shape and zoom in on it. if(arrMapShapes.length == 1 && bRecenter){ var objLatLong = new VELatLong(arrMapPoints[0].Lat,arrMapPoints[0].Lon); objMap.SetCenterAndZoom(objLatLong,arrMapPoints[0].ZoomLevel); } //iQ.Utils.doHideProcessing(); if(strGEOData != ''){ doAddGeoData(); strGEOData = ''; } } } catch(err){ alert(err.message) } } function doCreatePushPin(intPin){ if(intPin == 0){ arrMapShapes = new Array(); } var objLatLong = new VELatLong(arrMapPoints[intPin].Lat,arrMapPoints[intPin].Lon); var objShape = new VEShape(VEShapeType.Pushpin,objLatLong); if(arrMapPoints[intPin].CustomIcon != ''){ objShape.SetCustomIcon(arrMapPoints[intPin].CustomIcon); } if(arrMapPoints[intPin].Contents != ''){ objShape.SetDescription('
' + arrMapPoints[intPin].Contents + '
'); } arrMapShapes[intPin] = objShape; intCurrMapPin += 1; doLoadPoint(); } function doPushPinAction(intPin,sAction){ var objCustomIcon = iQ.Utils.getBrowserObject('iQ_CustomIcon_' + intPin); var objShape = arrMapShapes[intPin]; if(sAction == 'over'){ if(arrMapPoints[intPin].CustomIcon_Over_Class == ''){ arrMapPoints[intPin].CustomIcon_Over_Class = arrMapPoints[intPin].CustomIcon_Class; } objCustomIcon.className = arrMapPoints[intPin].CustomIcon_Over_Class; //objShape.SetZIndex(null,203); } if(sAction == 'out'){ objCustomIcon.className = arrMapPoints[intPin].CustomIcon_Class; //objShape.SetZIndex(null,203); } if(sAction == 'click'){ var objLatLong = new VELatLong(arrMapPoints[intPin].Lat,arrMapPoints[intPin].Lon); objMap.SetCenter(objLatLong); } } function doBubbleAction(intPin,sAction){ if(sAction == 'open'){ if(objOpenPin != null){ objMap.HideInfoBox(arrMapShapes[objOpenPin]) } objMap.ShowInfoBox(arrMapShapes[intPin]) objOpenPin = intPin; }else{ objMap.HideInfoBox(arrMapShapes[objOpenPin]) objOpenPin = null; } } function doGeoCodeComplete(intPin){ var tmpLatLong = objMapGeo.GetCenter().toString(); arrMapPoints[intPin].Lat = getLat(tmpLatLong); arrMapPoints[intPin].Lon = getLong(tmpLatLong); if(strGEOData == ''){ strGEOData = '["' + arrMapPoints[intPin].DBTable + '","' + arrMapPoints[intPin].KeyField + '","' + arrMapPoints[intPin].KeyData + '","' + arrMapPoints[intPin].Lat + '","' + arrMapPoints[intPin].Lon + '","",""]'; }else{ strGEOData += ',["' + arrMapPoints[intPin].DBTable + '","' + arrMapPoints[intPin].KeyField + '","' + arrMapPoints[intPin].KeyData + '","' + arrMapPoints[intPin].Lat + '","' + arrMapPoints[intPin].Lon + '","",""]'; } doCreatePushPin(intPin); } function doAddGeoData(){ if(iQ.Ajax){ var clsGEO = new iQ.Ajax(); clsGEO.CFCMethod = 'doAddData'; clsGEO.URL = '/websvc/GeoData.cfc' clsGEO.Params ={"GEOData":'{"COLUMNS":["DBTABLE","KEYFIELD","KEYDATA","LAT","LON","CITY","STATE"],"DATA":[' + strGEOData + ']}'}; clsGEO.Send(); }else{ alert('iQAjax Not Loaded'); } return true; } function getLat(tmpLatLong){ if(tmpLatLong != ''){ var tmpArr = tmpLatLong.split(','); return tmpArr[0]; }else{ return tmpLatLong; } } function getLong(tmpLatLong){ if(tmpLatLong != ''){ var tmpArr = tmpLatLong.split(','); return tmpArr[1]; }else{ return tmpLatLong; } } function doCreateDirectionPanel(){ var objFormRules =[ {FormName:'DirectionsForm',FieldName:'FROM_StreetAddress',Required:true,Rule:''}, {FormName:'DirectionsForm',FieldName:'FROM_City',Required:true,Rule:'alphanumericspace'}, {FormName:'DirectionsForm',FieldName:'FROM_Zip',Required:true,Rule:'zipcode'} ] var onSubmit = function(){ var check = objDirectionsChecker.doCheckAllFields(); if(check){ doDirections(); } }; var onCancel = function(){ objDirectionsChecker.doClearAllStatus(); this.cancel(); }; objDirectionsPanel = new YAHOO.widget.Dialog("Directions_Panel", { postmethod:"none", width:"475px", disply:"table", visible:false, draggable:true, close:false, constraintoviewport:false, fixedcenter:true, modal:true, zindex:100, buttons:[{text:"Submit",handler:onSubmit,isDefault:true},{text:"Cancel",handler:onCancel}] } ); // Render the Dialog objDirectionsPanel.setHeader('Directions'); objDirectionsPanel.setBody('
Starting Address
'); objDirectionsPanel.render(document.body); // DO NOT PUT var before this so that it is accessable from the onBlur in the form objDirectionsChecker = new iQ.Form.Checker(objFormRules); objDirectionsChecker.doLoad(); } function doShowDirectionsForm(sDirectionsDiv,sTo){ if(!objDirectionsPanel){ doCreateDirectionPanel() } if(sTo != ''){ iQ.Utils.setFieldValue('DirectionsForm','TO_Address',sTo); } if(objDirectionsDiv == null){ objDirectionsDiv = iQ.Utils.getBrowserObject(sDirectionsDiv); } objDirectionsPanel.center(); objDirectionsPanel.show(); } function doDirections(){ objDirectionsPanel.hide(); iQ.Utils.doShowProcessing(); var sFStreet = iQ.Utils.getFieldValue('DirectionsForm','FROM_StreetAddress'); var sFCity = iQ.Utils.getFieldValue('DirectionsForm','FROM_City'); var sFState = iQ.Utils.getFieldValue('DirectionsForm','FROM_State'); var sFZip = iQ.Utils.getFieldValue('DirectionsForm','FROM_Zip'); var sFrom = sFStreet + ',' + sFCity + ',' + sFState + ' ' + sFZip; var sTo = iQ.Utils.getFieldValue('DirectionsForm','TO_Address'); var arrLocation = new Array(sFrom,sTo); objMap.SetMapStyle('r'); if(objDirectionsDiv != null){ doClearDirections(); } var options = new VERouteOptions; options.DrawRoute = true; options.SetBestMapView = true; options.RouteCallback = doDisplayTurns; options.DistanceUnit = VERouteDistanceUnit.Mile; options.ShowDisambiguation = true; options.RouteOptimize = VERouteOptimize.MinimizeDistance; objMap.GetDirections(arrLocation,options); } function doDisplayTurns(objRoute){ if(objRoute){ var objStringBuffer = new iQ.Utils.StringBuffer(); objStringBuffer.append(''); objStringBuffer.append(''); objStringBuffer.append(''); objStringBuffer.append(''); objStringBuffer.append(''); objStringBuffer.append(''); objStringBuffer.append(''); for(var j = 0;j < objRoute.RouteLegs[0].Itinerary.Items.length;j ++){ var turn = objRoute.RouteLegs[0].Itinerary.Items[j]; var legDistance = turn.Distance; if(j % 2){ objStringBuffer.append(''); }else{ objStringBuffer.append(''); } objStringBuffer.append(''); objStringBuffer.append(''); if(legDistance > 0){ objStringBuffer.append(''); if(turn.Time != null){ objStringBuffer.append(''); }else{ objStringBuffer.append(''); } }else{ if(objRoute.RouteLegs[0].Itinerary.Items.length == j+1){ objStringBuffer.append(''); objStringBuffer.append(''); }else{ objStringBuffer.append(''); objStringBuffer.append(''); } } objStringBuffer.append(''); } objStringBuffer.append('
TurnDirectionsDistanceTime
' + j + '
' + turn.Text + '
' + legDistance.toFixed(1) + ' miles
' + iQ.Utils.GetTimeFromSeconds(turn.Time) + '
 
' + objRoute.Distance.toFixed(1) + ' miles
' + iQ.Utils.GetTimeFromSeconds(objRoute.Time) + '
 
 
'); objStringBuffer.append('
') objStringBuffer.append('
'); objStringBuffer.append(''); objStringBuffer.append('
'); objStringBuffer.append('
'); objDirectionsDiv.innerHTML = objStringBuffer.tostring(); objDirectionsDiv.style.visibility = 'visible'; objDirectionsDiv.style.display = 'block'; }else{ objDirectionsDiv.innerHTML = ''; objDirectionsDiv.style.visibility = 'hidden'; objDirectionsDiv.style.display = 'none'; } objDirectionsChecker.doClearAllStatus(); objDirectionsPanel.hide(); iQ.Utils.doHideProcessing(); } function doClearDirections(){ objMap.DeleteRoute(); objDirectionsDiv.innerHTML = ''; objDirectionsDiv.style.visibility = 'hidden'; objDirectionsDiv.style.display = 'none'; } var objMapPanel = null; function doMapPanel(iLat,iLon,sDBTable,sKeyField,sKeyData,sAddress){ var arrPoints =[]; if(objMapPanel == null){ objMapPanel = new YAHOO.widget.Panel("Map_Panel", { postmethod:"none", width:"600px", disply:"table", visible:false, draggable:true, close:true, constraintoviewport:false, fixedcenter:true, modal:true, zindex:100 } ); // Render the Dialog objMapPanel.setHeader('Map'); objMapPanel.setBody('
'); objMapPanel.render(document.body); var MapOptions ={}; MapOptions.DivID = 'iQ_VEMap'; MapOptions.MapType = 'default'; MapOptions.Lat = iLat; MapOptions.Lon = iLon; MapOptions.ZoomLevel = 15; MapOptions.Recenter = true; MapOptions.OnChangeCallBack = ''; doInitMap(MapOptions); } var obj = new iQMapPoint(); obj.DBTable = sDBTable; obj.KeyField = sKeyField; obj.KeyData = sKeyData; obj.Lat = iLat; obj.Lon = iLon; obj.Address = sAddress; obj.ZoomLevel = 15; arrPoints[0] = obj; doLoadMap(arrPoints); objMapPanel.center(); objMapPanel.show(); }