﻿// show Google street view for address inside div element.
function showStreetView(address, div) {
    if (address && address.toString().length > 0) {
        if (GBrowserIsCompatible()) {
            var geocoder = new GClientGeocoder();

            geocoder.getLatLng(
                  address,
                  function(point) {
                      if (!point) {
                      } else {
                          var panoClient = new GStreetviewClient();
                          panoClient.getNearestPanorama(point, function(svData) {
                              if (svData.code == 500) {
                                  // Server error, retry once per second
                              } else if (svData.code == 600) {
                                  // Coverage check failed
                              } else {
                                  // Confirmed coverage for this point.
                                  document.getElementById(div).innerHTML = "";
                                  var propertyPOV = getPOV(point, svData.location.latlng);
                                  var options = { latlng: point, pov: { yaw: propertyPOV} };
                                  var myPano = new GStreetviewPanorama(document.getElementById(div), options);
                              }
                          });
                      }
                  }
                );
        }
    }
}

function getPOV(original, svData) {
    var lat = original.lat() - svData.lat();
    var lon = original.lng() - svData.lng();
    // 1 radian = 57.2957 degrees
    // 1 degree = 0.0174532 radians
    var angle = Math.atan2(lon * Math.cos(original.lat() * 0.0174532), lat) * 57.2957;

//    angle = angle - 90;
    if (angle >= 360) {
        angle -= 360;
    }
    else if (angle < 0) {
        angle += 360;
    }
    return angle;
}

