var pos_x; var pos_y; function getEventOffsetXY(evt) { if (evt.offsetX != null) return [evt.offsetX, evt.offsetY]; var obj = evt.target || evt.srcElement; setPageTopLeft(obj); return [(evt.clientX - obj.pageLeft), (evt.clientY-obj.pageTop)]; } function setPageTopLeft(o) { var top = 0, left = 0, obj = o; while(o.offsetParent) { left += o.offsetLeft; top += o.offsetTop; o = o.offsetParent; } obj.pageTop = top; obj.pageLeft = left; } function simpleCrests() { var latlng = new Array(); var dlrcrest = new Array(); // Seattle var s_x = 70; //change this var s_y = 62; //change this var s_lat = 47.45; var s_lng = -122.30; // Miami var m_x = 552; //change this var m_y = 383; //change this var m_lat = 25.65; var m_lng = -80.43; // Kansas City, MO - calculate from here start_x = 381; //change this start_y = 200; //change this start_lat = 39.02; start_lng = -94.58 var changein_y = m_y - s_y; var changein_x = m_x - s_x; var changein_lat = m_lat - s_lat; var changein_lng = m_lng - s_lng ; var d_lat = changein_lat / changein_y; var d_lng = changein_lng / changein_x; var d_y = changein_y / changein_lat; var d_x = changein_x / changein_lng; var pos_lat = 0; var pos_lng = 0; var cur_x = 0; var cur_y = 0; var innerHTML = ''; for(x = 0; x < latlng.length; x++) { pos_lat = latlng[x][0]; pos_lng = latlng[x][1]; if(pos_lat == 0 && pos_lng == 0) { continue; } var cur_x = parseInt(start_x + ((pos_lng - start_lng) * d_x)) - 9; var cur_y = parseInt(((pos_lat - start_lat) * d_y) + start_y) - 13; innerHTML = innerHTML + '
' + dlrcrest[x] + '
'; } document.getElementById('simpleMap').innerHTML = innerHTML; } function point_it(event){ thePos = new Array(); thePos = getEventOffsetXY(event); pos_x = thePos[0]; pos_y = thePos[1]; clearZip(); clearState(); clearPhrase(); document.pointform.form_x.value = pos_x; document.pointform.form_y.value = pos_y; // Seattle var s_x = 70; //change this var s_y = 62; //change this var s_lat = 47.45; var s_lng = -122.30; // Miami var m_x = 552; //change this var m_y = 383; //change this var m_lat = 25.65; var m_lng = -80.43; // Kansas City, MO - calculate from here start_x = 381; //change this start_y = 200; //change this start_lat = 39.02; start_lng = -94.58 var changein_y = m_y - s_y; var changein_x = m_x - s_x; var changein_lat = m_lat - s_lat; var changein_lng = m_lng - s_lng ; var d_lat = changein_lat / changein_y; var d_lng = changein_lng / changein_x; var lat = start_lat + ((pos_y - start_y) * d_lat); var lng = ((pos_x - start_x) * d_lng) + start_lng; document.getElementById('theLong').value = lng; document.pointform.lat.value = lat; function isPointInPoly(poly, pt) { for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i) ((poly[i].y <= pt.y && pt.y < poly[j].y) || (poly[j].y <= pt.y && pt.y < poly[i].y)) && (pt.x < (poly[j].x - poly[i].x) * (pt.y - poly[i].y) / (poly[j].y - poly[i].y) + poly[i].x) && (c = !c); return c; } /* Alaska */ pointsAK = [ {x: 34, y: 399}, {x: 121, y: 380}, {x: 118, y: 293}, {x: 27, y: 284}, {x: 34, y: 399} ]; /* Hawaii */ pointsHI = [ {x: 95, y: 394}, {x: 100, y: 446}, {x: 178, y: 446}, {x: 176, y: 389}, {x: 95, y: 394} ]; $inAK = (isPointInPoly(pointsAK, {x: pos_x, y: pos_y}) ? "Alaska" : "Out"); $inHI = (isPointInPoly(pointsHI, {x: pos_x, y: pos_y}) ? "Hawaii" : "Out"); if ($inAK == "Alaska") { document.alaska.submit(); } else if ($inHI == "Hawaii") { document.hawaii.submit(); } else { document.alaska.state.value = ""; document.hawaii.state.value = ""; document.pointform.submit(); } } function IsNumeric(sText) { var ValidChars = "0123456789."; var IsNumber=true; var Char; for(i = 0; i < sText.length && IsNumber == true; i++) { Char = sText.charAt(i); if(ValidChars.indexOf(Char) == -1) { IsNumber = false; } } return IsNumber; } function validZip(zip) { if(IsNumeric(zip) && zip.length == 5) { return true; } else { return false; } } function checkForm(form) { if(form.name == "dealerSearch") { if(form.elements["phrase"].value.length < 1) { alert("Please enter a Dealer Search Phrase"); return false; } } if(form.name == "zipcode") { var zip = document.zipcode.zip.value; if(validZip(zip)) { return true; } else { alert("Please enter a five-digit zip code"); return false; } } if(form.name == "citystate") { if ((form.elements["state"].value.length == 2) && (form.elements["cityid"].value.length > 1)) { return true; } else { alert("Please select a State and City"); return false; } } } var side_bar_html = ""; var gmarkers = []; var htmls = []; var i = 0; function myclick(i) { gmarkers[i].openInfoWindowHtml(htmls[i]); } function initialize() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map_canvas")); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); var tinyIcon = new GIcon(); tinyIcon.image = "http://www.porschedealer.com/images/crest_mapicon.png"; tinyIcon.shadow = "http://www.porschedealer.com/images/shadow.png"; tinyIcon.iconSize = new GSize(32, 32); tinyIcon.shadowSize = new GSize(47, 34); tinyIcon.iconAnchor = new GPoint(6, 20); tinyIcon.infoWindowAnchor = new GPoint(5, 1); // Set up our GMarkerOptions object markerOptions = { icon:tinyIcon }; map.setCenter(new GLatLng(0,0),0); ///side_bar_html = ''; function createMarker(point,name,html,data,premier) { var marker = new GMarker(point, markerOptions); GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); }); gmarkers[i] = marker; htmls[i] = html; ///side_bar_html += '

' + name + '

'; //side_bar_html += '' + name + '
'+"\n"; ///side_bar_html += data; return marker; } var bounds = new GLatLngBounds(); var latlng = new Array(); /* array_list */ /* latlng[0][0] = lat; latlng[0][1] = lng; latlng[0][2] = html; - apears in the balloon latlng[0][3] = label; - clickable name of the dealer, in the column at right latlng[0][4] = data; - rest of the dealer data */ /* array_data */ for(var i = 0; i < latlng.length; i++) { var lat = parseFloat(latlng[i][0]); var lng = parseFloat(latlng[i][1]); if(lat == '0' && lng == '0') { continue; } var point = new GLatLng(lat,lng); var html = latlng[i][2]; var label = latlng[i][3]; var data = latlng[i][4]; var premier = latlng[i][5]; data += '
'; var marker = createMarker(point,label,html,data,premier); map.addOverlay(marker); /* limit bounds to first four dealers - these are included in initial map */ if(i < 4) { bounds.extend(point); } } //alert(side_bar_html); /* document.getElementById("side_bar").innerHTML = side_bar_html; */ //map.setCenter(bounds.getCenter()); map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)); //map.setCenter(new GLatLng(,),10); if(latlng.length == 1) { map.setZoom(12); } } else { // display a warning if the browser was not compatible alert("Sorry, the Google Maps API is not compatible with this browser"); } }