/**
 * Search::GoogleMaps code
 * @author      Dmitry Bykadorov <dmitry.bykadorov@gmail.com>
 * @version     SVN: $Id: gmaps.js 242 2009-07-24 09:06:00Z hudson $
 * 
 */

/**
 * Инициализация Google-карты
 */
$.initMap = function(latitude, longitude, object_id, zoom) {
    if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById(object_id));
        
        // Создать элементы навигации, масштабную линейку
        var map_ctrl=new GLargeMapControl();
        var map_type_ctrl=new GMapTypeControl();
        var map_scale_ctrl=new GScaleControl();
        // Добавить элементы навигации
        map.addControl(map_ctrl);
        // Кнопки выбора типа карты
        map.addControl(map_type_ctrl);
        // Добавить масштабную линейку
        map.addControl(map_scale_ctrl);

        // Центрируем карту на точке
        map.setCenter(new GLatLng(latitude, longitude), zoom);
        
        // Ставим маркер на нашей точке
        var point = new GLatLng(latitude, longitude);
        map.addOverlay(new GMarker(point));
    }
}

/**
 * Открыть/закрыть карту
 */
$.toggleMap = function(object_id, zoom) {
    var this_map = $("#"+object_id);
    
    if( !zoom )
        var zoom = 8;

    // Получаем координаты для центрирования
    var latitude  = $("#"+object_id+"_latitude").val(); 
    var longitude = $("#"+object_id+"_longitude").val();

    // Если не определены широта или долгота, карту показать не можем
    if( latitude == 0 || latitude == "" || longitude == 0 || longitude == "" ){
        $.showFlash("warn", $.page_vars['i18n_strings']['Sorry but there is no map data for this property.']);
        $("#top").focus();
        return;
    }
    
    // Закрываем все expanded контейнер (если это не текущий же)
    $(".map_expanded").each(function() {
        if( $(this).attr("id") == this_map.attr("id") ){
            // ничего не делаем
        } else {
            $(this)
            .toggleClass("map_expanded")
            .toggleClass("map_collapsed");
            // Выгружаем предыдущую карту
            GUnload();
        }
    });

    this_map
    .toggleClass("map_collapsed")
    .toggleClass("map_expanded");
    $.initMap(latitude, longitude, object_id, zoom);
}

/**
 * StreetView
 */

var myPano;

/**
 * Инициализация для панно
 */

var map;
var myPano;   
var panoClient;
var nextPanoId;

$.initializeStreetView = function(lat, lng) {
    var clientWidth = document.body.clientWidth;
    var elementsWidth = 714;
    var minStreetViewWidth = 295;
    var width = clientWidth - elementsWidth;
    
    if( width <= minStreetViewWidth ){
        width = minStreetViewWidth;
    }
    
    $('#pano').css({width:width});
    
    //var currentLocation = new GLatLng(42.345573,-71.098326);
    var currentLocation = new GLatLng(lat,lng);
    //var currentPOV = {yaw:370.64659986187695,pitch:-20};
    var currentPOV = {};
    panoClient = new GStreetviewClient();
  
    myPano = new GStreetviewPanorama(document.getElementById("pano"));
    myPano.setLocationAndPOV(currentLocation, currentPOV);
    GEvent.addListener(myPano, "error", handleNoFlash); 

    panoClient.getNearestPanorama(currentLocation, $.showPanoData);
}

$.showPanoData = function (panoData) {
    if (panoData.code != GStreetviewClient.ReturnValues.SUCCESS ) {
        //alert('showPanoData: Server rejected with code: ' + panoData.code);
        $("#streetwiew_on").css({ color:"gray", cursor:"auto", border:"none", fontSize:"smaller" });
        return;
    }
    // Если есть панно, добавляем обработчик onclick
    $("#streetwiew_on").click(function(){
        $('#mapview').hide(); $('#streetview').fadeIn('slow');
    });
    myPano.setLocationAndPOV(panoData.location.latlng);
}

function handleNoFlash(errorCode) {
    if (errorCode == 603) {
        alert("Error: Flash doesn't appear to be supported by your browser");
        return;
    }
}  
