//
//  @version              $Id: com_streetView.js 2009-10-01 03:35:53Z Gang Liu $
//  @copyright    Copyright (C) 2005 - 2009 Open Source Matters. All rights reserved.
//  @license              GNU/GPL*
//

var geocoder;
var myPano;
var fenwayPark;
var panoramaOptions;
var fenwayPOV;
var streeViewMap;
var panoClient;

function handleNoFlash(errorCode) {
    if(errorCode==600)
    {
        alert("Error: No Data Found.");
    }
    if(errorCode==603)
    {
        alert("Error: Your browser doesn't support flash.");
    }
    return;
}

function showStreetView(address,width,height) {
    var street_view = document.getElementById('street_view');
    street_view.style.width = width;
    street_view.style.height = height;
    if (geocoder) {
        geocoder.getLatLng(
            address,
            function(point) {
                if (!point) {
                    alert(address + " not found");
                } else {
                    fenwayPark = point;
                    panoramaOptions = {
                        latlng:fenwayPark
                    };
                    myPano = new GStreetviewPanorama(document.getElementById("street_view"), panoramaOptions);
                    GEvent.addListener(myPano, "error", handleNoFlash);
                }
            }
            );
    }
}

function map_init(isMapShown,my_latitude,my_longitude,my_yaw,my_pitch){
    fenwayPark = new GLatLng(my_latitude,my_longitude);
    fenwayPOV = {
yaw:my_yaw,
        pitch:my_pitch
    };
        if(isMapShown == 1 || isMapShown == null)
        {
    panoClient = new GStreetviewClient();

        // Create and Center a Map
        streeViewMap = new GMap2(document.getElementById("map_canvas"));
        streeViewMap.setCenter(fenwayPark, 15);
        GEvent.addListener(streeViewMap, "click", function(overlay,latlng) {
            panoClient.getNearestPanorama(latlng, showPanoData);
        });
        panoClient.getNearestPanorama(fenwayPark, showPanoData);
        streeViewMap.addControl(new GLargeMapControl());
        streeViewMap.addControl(new GMapTypeControl());
        streeViewMap.addControl(new google.maps.LocalSearch(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));
        }
}

function showPanoData(panoData,enableLog) {
    if (panoData.code != 200) {
       if(enableLog == 'true')
       {
        GLog.write('exception happened: ' + panoData.code);
        return;
       }
    }
    nextPanoId = panoData.links[0].panoId;
    var displayString = [
    "Panorama ID: " + panoData.location.panoId,
    "LatLng: " + panoData.location.latlng,
    "Description: " + panoData.location.description,
    "Next Pano ID: " + panoData.links[0].panoId
    ].join("<br/>");
    streeViewMap.openInfoWindowHtml(panoData.location.latlng, displayString);
    if(enableLog == 'true')
    {
       GLog.write('Viewer moved to' + panoData.location.latlng);
    }
    myPano.setLocationAndPOV(panoData.location.latlng);
}

function streetView_init()
{
    GSearch.setOnLoadCallback(map_init);
    geocoder = new GClientGeocoder();
    panoramaOptions = {
        latlng:fenwayPark
    };
    myPano = new GStreetviewPanorama(document.getElementById("street_view"), panoramaOptions);
    myPano.setLocationAndPOV(fenwayPark, fenwayPOV);
    GEvent.addListener(myPano, "error", handleNoFlash);
}


