﻿var oGoogleSmall = new clsGoogleMap();
/**
* Initialisierung 
*/
function init_gm() {
    try {
        oGoogleSmall.init_map('map_canvas', aUserGeoCoords);
    }
    catch (ex) {
        //alert("init_gm():"+ex.message);
    }
}

/***********************
    GoogleMapGeo
************************/
function AsyncLookup(lat, lng) {
    try {
        if (showCarousel == true || showCarousel == "True") {
            var currentLoadingPanel = $find(radLoadingPanel);
            currentLoadingPanel.show('ajax_cf');
            ITM.GoogleMapGeo.Geo.GetWerkstattsByDistance(lat, lng, distance, 15, culture, labelPhone, skinPath, brandID, vdbLS, trostFirmen, appID, OnLookupComplete, OnError);
        }
    } catch (e) { }
}

function OnLookupComplete(result) {
    var currentLoadingPanel = $find(radLoadingPanel);
    currentLoadingPanel.hide('ajax_cf');
    $('.flow').fadeIn(3000);
	
    if (result == "") {
        result = "<div class=\"item\"><div class=\"content\"><img src=\"" + skinPath + "images/bgCard.png\" alt=\"\"><p class=\"address\" style=\"width:200px;\"><strong>" + labelNoData + "</strong></p></div></div>";
    }
    var div = $('#invisibleContent');
    div.append(result);
    var items = $('.item');

    if (items.length == 1) {
        for (var i = 0; i < 2; i++) {
            ajax_cf.addItem(items[0], 'last');
        }
    } else {
        for (var i = 0; i < items.length; i++) {
            ajax_cf.addItem(items[i], 'last');
        }
    }
}

function OnError(result) {
}

function Navigate(kundeID, firmenname) {
    document.location.href = url.replace("{0}", kundeID).replace("{1}", firmenname);
}

function btnChangeLocation_click() {
    var combo = $find(radAdress);
    var newadress = combo.get_text();
    newadress = newadress.replace('z.B.', '');

    //Check if newadress is ZipCode
    if (/^\d*$/.test(newadress))
        newadress = country + ', ' + newadress;

    if (newadress == "") return;

    dnn.dom.setCookie("Standort.adr", newadress, 10, "/");

    try {
        geocoder.setBaseCountryCode(countryCode);
        geocoder.getLocations(newadress,
            function(response) {
                if (!response || response.Status.code != 200) {
                    alert("\"" + newadress + "\" not found!");
                } else {
                    try {
                        var lat = response.Placemark[0].Point.coordinates[1];
                        var lon = response.Placemark[0].Point.coordinates[0];
                        ChangeLocation_callback(lat, lon);
                    } catch (e) { }
                }
            });
    } catch (e) { 
    }
}

function ChangeLocation_callback(lat, lng) {
    try {
        aUserGeoCoords = { lat: lat, lng: lng };
        aUserGeoCoords.coords = { latitude: lat, longitude: lng };
        dnn.dom.setCookie("Standort.lat", lat, 10, "/");
        dnn.dom.setCookie("Standort.lng", lng, 10, "/");
        window.location.href = werkstattSucheUrl + "?location=" + dnn.dom.getCookie("Standort.adr");
    } catch (e) {
    }
}

function HandkeKeyPress(sender, eventArgs) {
    var KEY = {
        UP: 38,
        DOWN: 40,
        LEFT: 37,
        RIGHT: 39,
        DEL: 46,
        TAB: 9,
        RETURN: 13,
        ESC: 27,
        COMMA: 188,
        PAGEUP: 33,
        PAGEDOWN: 34,
        BACKSPACE: 8
    };

    var combo = $find(radAdress);
    var items = combo.get_items();

    if (combo.get_lastWord().length > 2 && eventArgs.get_domEvent().keyCode != KEY.ESC
                && eventArgs.get_domEvent().keyCode != KEY.UP && eventArgs.get_domEvent().keyCode != KEY.DOWN
                && eventArgs.get_domEvent().keyCode != KEY.LEFT && eventArgs.get_domEvent().keyCode != KEY.RIGHT
                && eventArgs.get_domEvent().keyCode != KEY.BACKSPACE && eventArgs.get_domEvent().keyCode != KEY.DEL) {

        items.clear();
        clearTimeout(radAdressTimer);
        radAdressTimer = setTimeout(function() {
            var _query = combo.get_lastWord();

            geocoder.getLocations(_query + ", " + country, function(_results) {
                var parsed = parseSearchRequest(_results, _query);
                successSearchRequest(parsed);
            });

        }, 400);

    }
}

function parseSearchRequest(_results, _query) {
    var _parsed = [];
    if (_results.Status.code != 200) return _parsed;
    jQuery.each(_results.Placemark, function(_key, _result) {
        if (_result) {
            // place is first matching segment, or first segment
            var _place_parts = _result.address.split(',');
            var _place = _place_parts[0];
            jQuery.each(_place_parts, function(_key, _part) {
                if (_part.toLowerCase().indexOf(_query.toLowerCase()) != -1) {
                    _place = jQuery.trim(_part);
                    return false; // break
                }
            });
            _parsed.push({
                data: _result,
                value: _place_parts,
                result: _place
            });
        }
    });
    return _parsed;
}

function successSearchRequest(parsed) {
    var combo = $find(radAdress);
    combo.trackChanges();
    var items = combo.get_items();
    var has_items = false;

    jQuery.each(parsed, function(_key, _part) {
        var comboItem = new Telerik.Web.UI.RadComboBoxItem();
        comboItem.set_text(_part.data.address);
        comboItem.set_value(_part.data.address);
        items.add(comboItem);
        has_items = true;
    });

    combo.commitChanges();
    if (has_items) combo.showDropDown();
}

function GetComboBox() {
    if (showCarousel == false || showCarousel == "False")
        return rcb1;
    else
        return rcb;
}

Sys.Application.add_load(function() {
    radAdress = GetComboBox();
    geocoder = new GClientGeocoder();
    tryLocate();

    if (dnn.dom.getCookie("Standort.adr") != null) {
        var combo = document.getElementById(radAdress + "_Input");
        if (combo != null) {
            var newadress = dnn.dom.getCookie("Standort.adr");
            combo.value = newadress.replace(/\+/gi, " ");
        }
    }
});
