var map; var markerArray = []; var markerArray_new = []; var infoHTML = []; var slideUpdate = false; var currentTotal; var redrawPoints = true; var pathToIcons = "http://techmap.communitech.ca/techmap/images/"; var baseIcon = new GIcon(); baseIcon.image = pathToIcons + "marker8sx.png"; baseIcon.shadow = pathToIcons + "shadow50.png"; baseIcon.iconSize = new GSize(20, 34); baseIcon.shadowSize = new GSize(37, 34); baseIcon.iconAnchor = new GPoint(9, 34); baseIcon.infoWindowAnchor = new GPoint(9, 2); baseIcon.infoShadowAnchor = new GPoint(18, 25); var pin_03000000361 = new GIcon(); pin_03000000361.image = pathToIcons + "weCreate_Pin.png"; pin_03000000361.iconSize = new GSize(45,31); pin_03000000361.iconAnchor = new GPoint(22,30); pin_03000000361.infoWindowAnchor = new GPoint(38,3); pin_03000000361.shadow = pathToIcons + "weCreate_Shadow.png"; pin_03000000361.shadowSize = new GSize(53,33); var pin_03000000456 = new GIcon(); pin_03000000456.image = pathToIcons + "communitech_Pin.png"; pin_03000000456.iconSize = new GSize(70,37); pin_03000000456.iconAnchor = new GPoint(35,36); pin_03000000456.infoWindowAnchor = new GPoint(59,3); pin_03000000456.shadow = pathToIcons + "communitech_Shadow.png"; pin_03000000456.shadowSize = new GSize(70,37); var mainIcon = new GIcon(); mainIcon.image = pathToIcons + "communitech_Pin.png"; mainIcon.shadow = pathToIcons + "communitech_Shadow.png"; mainIcon.iconSize = new GSize(70, 37); mainIcon.shadowSize = new GSize(70, 37); mainIcon.iconAnchor = new GPoint(17, 36); mainIcon.infoWindowAnchor = new GPoint(35, 5); function resetCats() { $('category_search').innerHTML = '


'; } function getCats() { var myAjax = new Ajax.Request("functions/getPoints.php?", { method: 'get', parameters: "action=changecategory&category=" + $('top_category').value, onComplete: showResponse }); } function drawPoints() { $('spacer').innerHTML = '  Loading Current Locations...

'; $('spacer').style.display = 'block'; if($('search_string').value == '') { var myAjax = new Ajax.Request("functions/getPoints.php?", { method: 'get', parameters: "action=drawpoints" + "&main_category=" + $('top_category').value + "&sub_category=" + $('bottom_category').value, onComplete: updateMarkersDrawPoints }); } else { var myAjax = new Ajax.Request("functions/getPoints.php?", { method: 'get', parameters: "action=drawpoints&search=" + $('search_string').value, onComplete: updateMarkersDrawPoints }); } } function drawPointsChar(charname) { $('spacer').innerHTML = '  Loading Current Locations...

'; $('spacer').style.display = 'block'; var myAjax = new Ajax.Request("functions/getPoints.php?", { method: 'get', parameters: "action=drawpoints" + "&char_search=" + charname, onComplete: updateMarkersDrawPoints }); } function updateViewport() { $('spacer').innerHTML = '  Found ' + currentTotal + ' Companies Matching Your Search Criteria.'; $('spacer').innerHTML += '
  Updating The Map...
'; bounds = map.getBounds(); var southWest = bounds.getSouthWest(); var northEast = bounds.getNorthEast(); var myAjax = new Ajax.Request("functions/getPoints.php?", { method: 'get', parameters: "action=updateViewport" + "¤tTotal=" + currentTotal + "&main_category=" + $('top_category').value + "&sub_category=" + $('bottom_category').value + "&minx=" + southWest.lng() + "&maxx=" + northEast.lng() + "&miny=" + southWest.lat() + "&maxy=" + northEast.lat(), onComplete: updateMarkers }); } function updateMarkers(originalRequest) { eval(originalRequest.responseText); for(k in markerArray) { if(k != '03-000000361' && k != '03-000000456') { if(!markerArray_new[k]) { map.removeOverlay(markerArray[k]); delete markerArray[k]; } }} for(k in markerArray_new) { if(!markerArray[k]) { markerArray[k] = markerArray_new[k]; createMarker(markerArray[k],k); }} } function updateMarkersDrawPoints(originalRequest) { eval(originalRequest.responseText); for(k in markerArray) { if(k != '03-000000361' && k != '03-000000456') { if(!markerArray_new[k]) { map.removeOverlay(markerArray[k]); delete markerArray[k]; } }} for(k in markerArray_new) { if(!markerArray[k]) { markerArray[k] = markerArray_new[k]; createMarker(markerArray[k],k); }} if(slideUpdate) { slideUpdate = false; zoomToFit(); slideUpdate = true; } else { zoomToFit(); } } function zoomToFit() { var xMax = -180; var xMin = 180; var yMax = -90; var yMin = 90; var viewFactor = 0.9; for(i in markerArray) { if(parseFloat(i) > 0) { if(markerArray[i].getPoint()) { if (markerArray[i].getPoint().lng() > xMax) { xMax = markerArray[i].getPoint().lng(); } if (markerArray[i].getPoint().lng() < xMin) { xMin = markerArray[i].getPoint().lng(); } if (markerArray[i].getPoint().lat() > yMax) { yMax = markerArray[i].getPoint().lat(); } if (markerArray[i].getPoint().lat() < yMin) { yMin = markerArray[i].getPoint().lat(); } }}} var xCenter = (parseFloat((xMax+xMin)/2)).toFixed(6); var yCenter = (parseFloat((yMax+yMin)/2)).toFixed(6); var xZoom = (map.getContainer().clientWidth * viewFactor)/(xMax - xMin); var yZoom = (map.getContainer().clientHeight * viewFactor)/((yMax -yMin)/Math.cos(yCenter*Math.PI/180)); if (yZoom < xZoom) {xZoom = yZoom}; xZoom /= (32/45)*Math.pow(2,17); for (var i=17; i > 0; i--) { if (xZoom > 1) { lastZoom = i; break; }; xZoom *= 2; }; map.setCenter(new GLatLng(yCenter,xCenter),lastZoom); } function showResponse(originalRequest) { eval(originalRequest.responseText); } function openInfoWindow(key) { redrawPoints = false; markerArray[key].openInfoWindowHtml(infoHTML[key]); } function createMarker(marker,key) { map.addOverlay(marker); GEvent.addListener(marker, 'click', function() { redrawPoints = false; marker.openInfoWindowHtml(infoHTML[key]); }); } function removeSelect() { if($('please_select')) { $('please_select').parentNode.removeChild($('please_select')); } $('search_string').value=''; getCats(); } function initMap() { map = new GMap2(document.getElementById("map")); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(new GLatLng(43.42300370191848, -80.44876098632812), 10); markerArray['03-000000361'] = new GMarker(new GLatLng(43.4952734298,-80.547723770142),pin_03000000361);infoHTML['03-000000361'] = '
We-Create Inc.
572 Weber North, Unit 2
Waterloo, ON, N2L 5C6
Phone: 519-745-7374
';createMarker(markerArray['03-000000361'],'03-000000361');$('mapList_Permanent').innerHTML += '
';markerArray['03-000000456'] = new GMarker(new GLatLng(43.4785843038423,-80.5470371246338),pin_03000000456);infoHTML['03-000000456'] = '
Communitech
295 Hagey Boulevard
Waterloo, Ontario, N2L 6R5
Phone: (519) 888-9944
';createMarker(markerArray['03-000000456'],'03-000000456');$('mapList_Permanent').innerHTML += '
'; GEvent.addListener(map, 'moveend', function() { if (!redrawPoints) { redrawPoints = true; } else if (slideUpdate) { updateViewport(); } }); } function onLoad() { $('search_charList').innerHTML = ' A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0-9'; resetCats(); initMap(); if($('please_select')) { $('please_select').selected = 'true'; } drawPoints(); } function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); } } } addLoadEvent(onLoad);