$(document).ready(function (){
    $("input.locationSuggester").inputField({ cssClass: "watermark" });
    
    $('.link').hover(
    
        function () {
            $(this).find('.smallImg').hide();
            $(this).find('.bigImg').show();
        }, 
        function () {
            $(this).find('.smallImg').show();
            $(this).find('.bigImg').hide(); 
        }
    );

    // LANDING PAGE DS PODIUM

    // tracking
    $(".landingpage .landing-content .sidebar ul li a.flag").click(function(event){
        $(".landingpage .landing-content .sidebar .track.bmw").append('<img src="http://altfarm.mediaplex.com/ad/bk/15160-101188-3840-0?click_partnerschaften=1&mpuid='+session_id_for_tracking+'" height="1" width="1" alt="Mediaplex_tag" />');
    });
    $(".landingpage .landing-content .sidebar ul li a.facebook").click(function(event){
        $(".landingpage .landing-content .sidebar .track.fbfan").append('<img src="http://altfarm.mediaplex.com/ad/bk/15160-101188-3840-0?click_facebook=1&mpuid='+session_id_for_tracking+'" height="1" width="1" alt="Mediaplex_tag" />');
    });
    $(".landingpage .landing-content .sidebar ul li a.search").click(function(event){
        $(".landingpage .landing-content .sidebar .track.retailer").append('<img src="http://altfarm.mediaplex.com/ad/bk/15160-101188-3840-0?click_haendler=1&mpuid='+session_id_for_tracking+'" height="1" width="1" alt="Mediaplex_tag" />');
    });

    // email default text
    var emailtext = "E-Mail Adresse";

    $(".landingpage .landing-content .content.contest div.button a.btn-send").click(function() {

        // hide error constantly or probably only temporary
        $(".container.error.response, .container.error.email").hide("fast");

        // get values
        var response1 = $("table.frage1 input:checked");
        var response2 = $("table.frage2 input:checked");
        var isValidEmail = isValidEmailAddress($("input.email").val());

        // if everything is ok		
        if (response1.is(':checked') && response2.is(':checked')) {

            if (isValidEmail) {
                $(".landingpage .landing-content .content.contest").hide();
                $(".landingpage .landing-content .content.thankyou").show();
            }
            else {
                $(".container.error.email").show("slow");
                return false;
            }
        }
        // else show error pane 
        else {
            $(".container.error.response").show("slow");
            return false;
        }

    });

    // watermark
    $(".landingpage .landing-content .content.contest input.email").watermark(emailtext);

    // email validation
    function isValidEmailAddress(emailAddress) {
        var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
        return pattern.test(emailAddress);
    }

    // LANDING PAGE DS PODIUM
});

$(document).ready(function() {
    // check for map container existance
    if ($('#geo-map').length == 0) {
        return;
    }

    var startLat;
    var startLon;
    var zoomLevel;

    // map layout handler - initializes the controls on the map
    function layoutMapControls(instance) {
        instance.addControl(new GLargeMapControl());

        var markerIcons = [];
        markerIcons['default'] = new GIcon(G_DEFAULT_ICON);

        var lyrId = 'certina';
        var layers_morebutton = [
            { checked: true, name: lyrId, iconUrl: null, obj: new o8.Gis.MapLayer(lyrId, markerIcons['default']) }
        ];

        // add map layer control
        instance.addControl(new o8.Gis.LayerControl(layers_morebutton), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(-100, -100)));

        // for debugging
        //instance.addControl(new o8.Gis.CoordboxControl());
        //instance.addControl(new o8.Gis.CrosshairControl());
    }

    // marker info window provider
    function markerInfoHtmlContentProvider(markerId, markerType, properties) {
        var tmpString = '<div id="certina-gmap-info" style="width:200px;">';
        tmpString += '<h3>' + properties.Title + '</h3>';

        tmpString += properties.Address1 + '<br />';
        tmpString += properties.Zip + ' ' + properties.City + '<br />';

        tmpString += '</div>';
        return tmpString;
    }

    // instantiate and initialize the google map
    var gisMap = new o8.Gis.Map(layoutMapControls, markerInfoHtmlContentProvider);

    if (isNaN(startLat) || isNaN(startLon) || isNaN(zoomLevel))
        gisMap.initialize('geo-map', { 'Lat': 20.0, 'Lon': 7.53043 }, 2);
    else
        gisMap.initialize('geo-map', { 'Lat': startLat, 'Lon': startLon }, zoomLevel);
    //gisMap.setBounds({ 'Lat': 45.8, 'Lon': 5.95 }, { 'Lat': 47.8, 'Lon': 10.5 });
    gisMap.setAllowedZoomLevels(2, 18);

    function moveEndhandler() {
        var maxResults = 50;
        var mapBounds = gisMap.getBounds();
        var data = new Object;
        var lyrId = 'certina';
        data.layerId = lyrId;
        data.southWest = mapBounds.SouthWest;
        data.northEast = mapBounds.NorthEast;
        data.maxResults = maxResults + 1;
        var jsonData = $.toJSON(data);

        o8.Gis.fetchDataFromService('GetMarkersEx', jsonData, function(response) {
            if ((response == null) || response.GeoMarkers == null) {
                $('#poi-address-list').hide();
                return;
            }

            if (response.GeoMarkers.length > maxResults) {
                $('#poi-address-list').hide();
                return;
            }

            $('#poi-address-list').fillTemplate(response);
            $('#poi-address-list').show();
        });
    }

    // add modeend handler
    gisMap.addMoveEndListener(moveEndhandler);
    // force loading of poi list
    moveEndhandler();
    // ensure that the allocated memory will be freed
    $(window).unload(function() { GUnload(); });

    $('.btnSearchLocation').click(function(e) {
        e.preventDefault();
        var input = $('.locationSuggester').val();
        $.ajax({
            async: false,
            type: "POST",
            url: '/GeoService.asmx/GetPosition',
            data: "{ address: '" + input + "', host: '" + window.location.hostname + "' }",
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function(data) {
                pos = data;
                gisMap.setCenter(pos, 13);
            }
        });
    });
});

// tag search auto complete
$(document).ready(function() {
    $('.locationSuggester').autocomplete({ source: function(term) {
        var querys = "{query:'" + term + "'}";
        var response;
        $.ajax({
            async: false,
            type: "POST",
            url: '/GeoService.asmx/GetSuggestedLocations',
            data: querys,
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function(data) {
                response = data;
            }
        });
        return response;
    },
        parse: function(data) {
            var parsed = [];
            var rows = data;
            for (var i = 0; i < rows.length; i++) {
                var row = $.trim(rows[i]);
                if (row) {
                    row = row.split("|");
                    parsed[parsed.length] = {
                        data: row,
                        value: row[0],
                        result: row[0]
                    };
                }
            }
            return parsed;
        }
    });
});
