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");
}
}