var debug;

var gob = null;
var yaw = null;
var pov = null;

function initSteetView () {

    var svp = new GStreetviewPanorama(document.getElementById("streetview-container"));

    var lngv = latlng.lng();
    var latv = latlng.lat();

    var svc = new GStreetviewClient();
    svc.getNearestPanorama(latlng, function (data) {

        if (!data.Location) return handleNoFlash(600);

        if (typeof(data.Location.lng) != 'undefined') lngv = data.Location.lng;
        if (typeof(data.Location.lat) != 'undefined') latv = data.Location.lat;

        gob = new GLatLng(latv, lngv);
        yaw = computeAngle(gob, latlng);
        pov = {'yaw': yaw, 'pitch': -10};

        svp.setLocationAndPOV(gob, pov);

    });

    GEvent.addListener(svp, "error", handleNoFlash);

}

function handleNoFlash (errorCode) {
    if (errorCode == 600) {
        //alert("Error: No panorama data available");
        document.getElementById("streetview-container").innerHTML = "<p>Sorry, but Google Streetview data is not available for this property.</p>";
        return;
    }
    if (errorCode == 603) {
        alert("Error: Flash doesn't appear to be supported by your browser");
        return;
    }
}

function computeAngle (t, o) {
    var k = o.lat() - t.lat();
    var m = o.lng() - t.lng();
    var yaw = Math.atan2(m * Math.cos(o.lat() * (Math.PI / 180)), k) * (180 / Math.PI);
    return wrapAngle(yaw);
}

function wrapAngle (a) {
    if (a >= 360) {
        a -= 360;
    } else if (a < 0) {
        a += 360;
    }
    return a;
}

window.onload   = initSteetView;
window.onunload = GUnload;