﻿Feriepartner = {};

Feriepartner.Toggle = function(element)
{
    jQuery(element).toggle();
}

Feriepartner.PrintPage = function(url)
{
    var printWindow = window.open(url, 'PrintWindow');

    printWindow.focus();

    printWindow.onload = new function()
    {
        printWindow.print();
    };
}

Feriepartner.GetEventTarget = function(event)
{
    if (!event)
    {
        return window.event.srcElement;

    }

    if (!event.target)
    {

        return event.srcElement;
    }

    return event.target;
}


Feriepartner.HouseDetails = {};

Feriepartner.HouseDetails.ThumbnailHover = function(src)
{
    $('.photoCon a img').attr('src', src);
}

Feriepartner.HouseDetails.Slideshow = function()
{
    //Slideshow
    $('a[rel="slideshow"]').colorbox(
    {
        current: '{current} af {total}'
    });

    //Make sure the large picture triggers the overlay - shows the first image of the images with rel="slideshow"
    $('.photoCon').click(function()
    {
        $('a[rel="slideshow"]:first').trigger('click');
        return false;
    });
}


Feriepartner.GoogleMaps = {};

Feriepartner.GoogleMaps.SingleHousePopup = function(latlng)
{
    var mapHtml = '<div class="mapClose"><span></span></div><div class="mapContainer" id="MapContainer"></div>';

    var callback = function()
    {
        var options = {
            zoom: 16,
            minZoom: 6,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            maxZoom: 21 //MJN
        };

        var map = new google.maps.Map(document.getElementById('MapContainer'), options);

        new google.maps.Marker(
        {
            position: latlng,
            map: map,
            icon: '/images/HomeMarker.png'
        });
    }

    jQuery.colorbox({ html: mapHtml, onComplete: callback });

    $('.mapClose span').click(function() { jQuery.colorbox.close(); });
}

Feriepartner.GoogleMaps.OpenDrivingDirections = function(latitude, longitude, googleDomain)
{
    window.open("http://" + googleDomain + "/?saddr=&daddr=" + latitude + " " + longitude)
}

Feriepartner.GoogleMaps.ToggleMap = function(toggleLink, showText, hideText)
{
    if ($(toggleLink).hasClass('open'))
    {
        ga.trackObj(this, '/tracking/forside/kort_skjul');
        $(toggleLink).removeClass('open').html('<span>' + showText + '</span>');
        $('.gMapContainer').removeClass('open').slideUp('slow');
    } else
    {
        ga.trackObj(this, '/tracking/forside/kort_vis');
        $(toggleLink).addClass('open').html('<span>' + hideText + '</span>');
        $('.gMapContainer').addClass('open').slideDown('slow');
    }
}

Feriepartner.GoogleMaps.ResizeAndCenter = function()
{
    google.maps.event.trigger(Feriepartner.GoogleMaps.SearchResultMap, 'resize');
    Feriepartner.GoogleMaps.SearchResultMap.setCenter(Feriepartner.GoogleMaps.BeginCenter);
    $(this).unbind('click', Feriepartner.GoogleMaps.ResizeAndCenter);
}

Feriepartner.GoogleMaps.SearchResultMap = null;
Feriepartner.GoogleMaps.ZoomToRadius =
{
    '21': 1,
    '20': 1,
    '19': 1,
    '18': 1,
    '17': 1,
    '16': 1,
    '15': 1,
    '14': 1,
    '13': 2.5,
    '12': 5,
    '11': 10,
    '10': 20,
    '9': 40,
    '8': 80,
    '7': 160,
    '6': 320,
    '5': 320,
    '4': 320,
    '3': 320,
    '2': 320,
    '1': 320,
    '0': 320
}

Feriepartner.GoogleMaps.BeginCenter = null;
Feriepartner.GoogleMaps.CreateSearchResultMap = function(center, zoom, bounds)
{
    Feriepartner.GoogleMaps.BeginCenter = center;

    var options = {
        zoom: zoom < 0 ? 6 : zoom,
        minZoom: 6,
        center: center,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        maxZoom: 21 //MJN
        
    };
    var map = new google.maps.Map(document.getElementById('searchResultMap'), options);

    if (zoom < 0 && bounds != null)
    {
        map.fitBounds(bounds);
    }

    if (bounds != null)
    {
        var searchBoundsOptions = {
            bounds: bounds,
            clickable: false,
            fillOpacity: 0.0,
            map: map,
            strokeColor: '#9D0000',
            strokeOpacity: 0.4,
            strokeWeight: 2
        }
        new google.maps.Rectangle(searchBoundsOptions);
    }

    Feriepartner.GoogleMaps.SearchResultMap = map;
}

Feriepartner.GoogleMaps.MapMarkers = {};
Feriepartner.GoogleMaps.GetDefaultMapMarker = function()
{
    if (google != undefined)
    {
        return new google.maps.MarkerImage('/images/icons/googlemaps_hus.png',
                                        new google.maps.Size(27, 23),
                                        new google.maps.Point(0, 0),
                                        new google.maps.Point(14, 12));

    }
    return null;
}

Feriepartner.GoogleMaps.ClusterSize = 60;
Feriepartner.GoogleMaps.CreateMapMarkers = function (searchId, pageId) {
    var map = Feriepartner.GoogleMaps.SearchResultMap;
    var markers = Feriepartner.GoogleMaps.MapMarkers;
    var markerArray = [];

    for (var key in markers) {
        var latLng = new google.maps.LatLng(markers[key].position.latitude, markers[key].position.longitude);

        markers[key].marker = new google.maps.Marker({
            clickable: true,
            map: map,
            position: latLng,
            icon: Feriepartner.GoogleMaps.GetDefaultMapMarker()
        });
        markers[key].marker.propertyId = markers[key].id;
        markers[key].marker.listPosition = -1;
        (function (markerData) {
            google.maps.event.addListener(markerData.marker, 'click', function () {
                Feriepartner.GoogleMaps.SetMarkerActive(markerData);
                Feriepartner.GoogleMaps.ShowHouseInfoBox([markerData.id], searchId, [markerData.marker.listPosition], null, pageId);
            });
        })(markers[key]);
        markerArray.push(markers[key].marker);
    }

    var clustereOptions = {
        gridSize: Feriepartner.GoogleMaps.ClusterSize,
        maxZoom: 21,
        styles: [{
            url: '/images/icons/circle_trans.png',
            height: 38,
            width: 38,
            textColor: '#FFFFFF'
        }]
    };
    var clustere = new MarkerClusterer(map, markerArray, clustereOptions);

    google.maps.event.addListener(clustere, 'clusterclick', function (cluster) {
        if (map.getZoom() > 18) {
            var ids = [];
            var listPositions = [];
            var cmarkers = cluster.getMarkers();
            for (var i = 0; i < cmarkers.length; i++) {
                ids.push(cmarkers[i].propertyId);
                listPositions.push(cmarkers[i].listPosition);
            }
            Feriepartner.GoogleMaps.ShowHouseInfoBox(ids, searchId, listPositions, null, pageId);
        }
    });
}

    Feriepartner.GoogleMaps.SelectedHouseIdOnPageLoad = null;
    Feriepartner.GoogleMaps.ListedMapMarkers = {};
    Feriepartner.GoogleMaps.UpdateMapMarkers = function (listedMapMarkers, searchId, pageId) {
        var markers = Feriepartner.GoogleMaps.MapMarkers;
        var currentListedMarkers = Feriepartner.GoogleMaps.ListedMapMarkers;

        for (var key in currentListedMarkers) {
            if (key != undefined && markers[key] != undefined) {
                markers[key].marker.setIcon(Feriepartner.GoogleMaps.GetDefaultMapMarker());
                markers[key].marker.listPosition = -1;
            }
        }

        for (var key in listedMapMarkers) {
            if (key != undefined && markers[key] != undefined) {
                markers[key].marker.setIcon(new google.maps.MarkerImage('/images/icons/gmap_house_icons.png',
                                            new google.maps.Size(27, 23),
                                            new google.maps.Point(0, 23 * listedMapMarkers[key]),
                                            new google.maps.Point(14, 12)));
                markers[key].marker.listPosition = listedMapMarkers[key];
            }
        }
        Feriepartner.GoogleMaps.ListedMapMarkers = listedMapMarkers;
        if (Feriepartner.GoogleMaps.ActiveMarker != null) {
            Feriepartner.GoogleMaps.ShowHouseInfoBox([Feriepartner.GoogleMaps.ActiveMarker.id], searchId, [Feriepartner.GoogleMaps.ActiveMarker.marker.listPosition], null, pageId);
        }
        
        if (Feriepartner.GoogleMaps.SelectedHouseIdOnPageLoad != null) {
            Feriepartner.Search.ResultListOnClick(Feriepartner.GoogleMaps.SelectedHouseIdOnPageLoad, searchId, false, pageId);
            Feriepartner.GoogleMaps.SelectedHouseIdOnPageLoad = null;
        }

    }

    Feriepartner.GoogleMaps.ActiveMarker = null;
    Feriepartner.GoogleMaps.SetMarkerActive = function(markerData)
    {
        if (Feriepartner.GoogleMaps.ActiveMarker != null)
        {
            var listItem = document.getElementById('searchResultListItem_' + Feriepartner.GoogleMaps.ActiveMarker.id);
            if (listItem != undefined)
            {
                listItem.className = '';
            }

            Feriepartner.GoogleMaps.ActiveMarker.marker.setShadow();
            Feriepartner.GoogleMaps.ActiveMarker = null;
        }

        if (markerData != null)
        {
            var listItem = document.getElementById('searchResultListItem_' + markerData.id);
            if (listItem != undefined)
            {
                listItem.className = 'active';
            }

            markerData.marker.setShadow(new google.maps.MarkerImage('/images/icons/gmap_circle.png',
                                            new google.maps.Size(43, 43),
                                            new google.maps.Point(0, 0),
                                            new google.maps.Point(22, 21)));
            Feriepartner.GoogleMaps.ActiveMarker = markerData;
            Feriepartner.GoogleMaps.SearchResultMap.panTo(new google.maps.LatLng(markerData.position.latitude, markerData.position.longitude));
        }
    }

    Feriepartner.GoogleMaps.HouseInfoBoxHelpText = "";
    Feriepartner.GoogleMaps.ShowHouseInfoBox = function(houseIds, searchId, listPostions, cataloguepath, pageId)
    {
        var infoBox = document.getElementById('googleMapHouseInfoBox');
        infoBox.innerHTML = '<div class="gMapInfoBoxInner"><div class="spinner"></div></div>';
        infoBox.style.display = 'block';

        var data;
        if (cataloguepath)
        {
            data = ({
                houseid: houseIds.join(),
                searchid: searchId,
                positions: listPostions.join(),
                cataloguepath: cataloguepath,
                pageid: pageId
            });
        } else
        {
            data = ({
                houseid: houseIds.join(),
                searchid: searchId,
                positions: listPostions.join(),
                pageid: pageId
            });
        }

        jQuery.ajax({
            type: "GET",
            url: "/Templates/Pages/GoogleMapHouseInfoBox.aspx",
            data: data,
            cache: false,
            dataType: "html",
            success: function(data)
            {
                infoBox.innerHTML = data.replace('#HELP_TEXT#', Feriepartner.GoogleMaps.HouseInfoBoxHelpText);

                if (document.getElementById('infoBoxHouseList') == undefined)
                {
                    Feriepartner.GoogleMaps.SwitchHouseInfoBoxContent('infoBoxHouse_' + houseIds[0]);
                }
                else
                {
                    Feriepartner.GoogleMaps.CurrentHouseInfoBoxContentId = 'infoBoxHouseList';
                }
            }
        });
    }

    Feriepartner.GoogleMaps.HideHouseInfoBox = function()
    {
        var infoBox = document.getElementById('googleMapHouseInfoBox');
        infoBox.style.display = 'none';
        Feriepartner.GoogleMaps.SetMarkerActive(null);
    }

    Feriepartner.GoogleMaps.CurrentHouseInfoBoxContentId = null;
    Feriepartner.GoogleMaps.SwitchHouseInfoBoxContent = function(id)
    {
        if (Feriepartner.GoogleMaps.CurrentHouseInfoBoxContentId != null && document.getElementById(Feriepartner.GoogleMaps.CurrentHouseInfoBoxContentId) != undefined)
        {
            document.getElementById(Feriepartner.GoogleMaps.CurrentHouseInfoBoxContentId).style.display = 'none';
        }
        Feriepartner.GoogleMaps.CurrentHouseInfoBoxContentId = null;

        var content = document.getElementById(id);
        if (content != undefined)
        {
            content.style.display = 'block';
            Feriepartner.GoogleMaps.CurrentHouseInfoBoxContentId = id;
        }
    }

    //Carousel
    var frontpageCarousel = {

        init: function(_sel, _time, _transTime, _transTimeSlide)
        {  //function(dom element, time between trans, transtime) 

            if (_sel != null && _sel.length != 0)
            {
                this.sel = _sel;
                this.time = _time;
                this.transTime = _transTime;
                this.objNums = jQuery(this.sel).find('li').length;
                this.currentPage = 0;
                this.timer = 0;
                this.init = true;
                this.placement = 0;
                this.navPos = 0;
                _fc = this;

                $(_sel).find('li:eq(0)').css('z-index', '5').siblings().css( //Sets first li visible and its siblings hidden
		    {
		    'opacity': '0',
		    'zIndex': '4',
		    'display': 'none'
		});

                if (this.objNums > 1)
                { //Only rotate if more than 1 li
                    _fc.setupNav();  // Setup the navigation
                    _fc.openBox(false);
                    if (this.time != 0) { _fc.timeout(); }  //If time var is 0 then do not rotate otherwise it calls timeout func...for test
                } else
                {
                    _fc.openBox(false);
                }
            }

        },

        //Clears the timer & and instantiate a new and calls 'interval' func
        timeout: function()
        {
            clearTimeout(_fc.timer);
            _fc.timer = setTimeout(function() { _fc.interval(); }, _fc.time);
        },

        //Gives the timer an interval and calls 'rotate' function
        interval: function()
        {
            _fc.timer = setInterval(function()
            {
                _fc.closeBox(_fc.currentPage + 1, false);
            }, _fc.time);
        },

        //Controls the fading of the images and navigation
        rotate: function(cp, nav)
        {
            if (cp == (_fc.objNums)) { cp = 0; } //If the rotator is on the last image then reset the current page (cp)

            if (cp != _fc.currentPage)
            { //if the current page is not the same as the active page then animate
                //Nav change
                $(_fc.sel).find('.nav').children('span:eq(' + _fc.currentPage + ')').removeClass('active');
                $(_fc.sel).find('.nav').children('span:eq(' + cp + ')').addClass('active');

                //Image change
                $(_fc.sel).find('li:eq(' + (_fc.currentPage) + ')').css('zIndex', '4').stop().animate({ opacity: 0 }, _fc.transTime, function()
                {
                    _fc.openBox(nav);
                    $(this).css('display', 'none');
                });
                $(_fc.sel).find('li:eq(' + cp + ')').css('zIndex', '5').css('display', 'block').stop().animate({ opacity: 1 }, _fc.transTime);
            }
            _fc.currentPage = cp;
        },

        //Animate box in
        closeBox: function(index, nav)
        { //Animate box in
            $(_fc.sel).find('.nav span, .arrowRight, .arrowLeft').unbind('click');

            $(_fc.sel).find('li:eq(' + (_fc.currentPage) + ') .outerTextCon').stop().animate({
                left: '+=101px',
                width: '0px',
                paddingLeft: '0px',
                paddingRight: '0px'
            }, _fc._transTimeSlide).children('.innerTextCon').stop().animate({
                width: '0px'
            }, _fc._transTimeSlide).children('.text').stop().animate({
                left: '-=106px'
            }, _fc._transTimeSlide, function() { _fc.rotate(index, nav); });
        },

        //Animate box out
        openBox: function(nav)
        {
            $(_fc.sel).find('li:eq(' + (_fc.currentPage) + ') .outerTextCon').css('left', function()
            {
                if ($(this).hasClass('left'))
                {
                    if (_fc.init == true) { _fc.navPos = $('.mFrontpageCarousel .nav span:last').position(); }

                    if (_fc.objNums > 1)
                    { //If there is no navigation
                        return _fc.navPos.left + 180 + "px";
                    } else
                    {
                        return "142px";
                    }
                } else
                {
                    return ($('.mFrontpageCarousel').width() - 203) + "px";
                }
            }).stop().animate({
                left: '-=101px',
                width: '202px',
                paddingLeft: '5px',
                paddingRight: '5px'
            }, _fc._transTimeSlide).children('.innerTextCon').css({ 'width': '0px', 'display': 'block' }).stop().animate({
                width: '202px'
            }, _fc._transTimeSlide).children('.text').css('left', '-106px').stop().animate({
                left: '+=106px'
            }, _fc._transTimeSlide, function()
            {
                _fc.navClick(nav);
            });
        },

        //Controls navigation nuttons
        navClick: function(nav)
        {
            if (nav == true)
            {  //If a nav button has been pressed then restart  the timer
                _fc.timer = setInterval(function()
                {
                    _fc.closeBox(_fc.currentPage + 1, false);
                }, _fc.time);
            }

            $(_fc.sel).find('.nav span, .arrowLeft, .arrowRight').bind('click', function()
            {
                if ($(this).hasClass('arrowRight'))
                {
                    var index = _fc.currentPage + 1;
                } else if ($(this).hasClass('arrowLeft'))
                {
                    if (_fc.currentPage == 0)
                        var index = _fc.objNums - 1;
                    else
                        var index = _fc.currentPage - 1;
                } else
                {
                    var index = $('.mFrontpageCarousel .nav span').index(this);
                }

                if (index != _fc.currentPage)
                {
                    clearTimeout(_fc.timer);
                    _fc.closeBox(index, true);
                }
            });
        },

        //Sets up nav
        setupNav: function()
        { //Sets up  the navigation buttons
            $(_fc.sel).find('.arrowLeft, .arrowRight').css('display', 'block');

            for (var i = 0; i < _fc.objNums; i++)
            {
                if (i == 0)
                    $(_fc.sel).find('.nav').append('<span class="active">' + (i + 1) + '</span>');
                else
                    $(_fc.sel).find('.nav').append('<span>' + (i + 1) + '</span>');
            }
        }
    }

    Feriepartner.CalendarPopup = {};

    Feriepartner.CalendarPopup.OpenCalendar = function(pageId)
    {
        var calendarWindow = window.open('/Templates/Pages/CalendarPopUp.aspx?pageId=' + pageId, 'CalendarWindow', 'width=490,height=400,status=1');
        calendarWindow.focus();
    }

    Feriepartner.CalendarPopup.SetArrivalDate = function(ticks)
    {
        document.getElementById('ArrivalDate').value = ticks;
    }

    Feriepartner.CalendarPopup.SubmitForm = function()
    {
        document.getElementById('CalendarForm').submit();
    }

    Feriepartner.CalendarPopup.Cancel = function()
    {
        window.close();
    }

    Feriepartner.CalendarPopup.Confirm = function(url)
    {
        window.opener.location = url;
        window.close();
    }

    Feriepartner.CalendarPopup.ReloadOpener = function()
    {
        window.opener.location.reload();
    }


    Feriepartner.Memo = {};
    Feriepartner.Memo.CookieName = 'FeriepartnerMemo';
    Feriepartner.Memo.CookieExperationTime = 30;

    Feriepartner.Memo.AddHouse = function(id, contractPartnerNumber, arrival, periode)
    {
        var value = Feriepartner.Cookie.Read(Feriepartner.Memo.CookieName);

        var newEntry = contractPartnerNumber + ',' + id + ',' + arrival + ',' + periode;

        if (value == null || value.length == 0)
        {
            value = newEntry;
        }
        else
        {
            value = value + ';' + newEntry;
        }

        if (document.getElementById('MemoCount') != undefined)
        {
            document.getElementById('MemoCount').innerHTML = value.split(';').length;
        }

        Feriepartner.Cookie.Create(Feriepartner.Memo.CookieName, value, Feriepartner.Memo.CookieExperationTime);
    }

    Feriepartner.Memo.RemoveHouse = function(id)
    {
        var value = Feriepartner.Cookie.Read(Feriepartner.Memo.CookieName);

        if (value != null && value.length > 0)
        {

            var elements = value.split(";");

            for (var i = 0; i < elements.length; i++)
            {

                var values = elements[i].split(",");

                if (values.length > 1 && values[1] == id)
                {
                    elements[i] = [""];
                }
            }
            //Remove any leading, trailing or double ;
            value = elements.join(";").replace(";;", ";");
            if (value.substring(0, 1) == ';')
            {
                value = value.substring(1);
            }
            if (value.substring(value.length - 1, value.length) == ';')
            {
                value = value.substring(0, value.length - 1);
            }
        }

        if (document.getElementById('MemoCount') != undefined)
        {
            var count = 0;

            if (value != "")
            {
                count = value.split(';').length;
            }
            document.getElementById('MemoCount').innerHTML = count;
        }

        if (value == "")
        {
            Feriepartner.Cookie.Erase(Feriepartner.Memo.CookieName);
        } else
        {
            Feriepartner.Cookie.Create(Feriepartner.Memo.CookieName, value, Feriepartner.Memo.CookieExperationTime);
        }
    }

    Feriepartner.Memo.ToggleLink = function (event, id, contractPartnerNumber, arrival, periode, addText, removeText, add, siblin_element) {
        var link = Feriepartner.GetEventTarget(event);
        var siblinLink=null;
        if (siblin_element!=null && siblin_element != '') {
            siblinLink = document.getElementById(siblin_element + id);
        }
        if (add == true) {
            Feriepartner.Memo.AddHouse(id, contractPartnerNumber, arrival, periode);
            link.onclick = function (e) { Feriepartner.Memo.ToggleLink(e, id, contractPartnerNumber, arrival, periode, addText, removeText, false); return false; };
            link.innerHTML = removeText;
            if (siblinLink) {
                siblinLink.onclick = function (e) { Feriepartner.Memo.ToggleLink(e, id, contractPartnerNumber, arrival, periode, addText, removeText, false); return false; };
                siblinLink.innerHTML = removeText;
            }
        }
        else {
            Feriepartner.Memo.RemoveHouse(id);
            link.onclick = function (e) { Feriepartner.Memo.ToggleLink(e, id, contractPartnerNumber, arrival, periode, addText, removeText, true); return false; };
            link.innerHTML = addText;
            if (siblinLink) {
                siblinLink.onclick = function (e) { Feriepartner.Memo.ToggleLink(e, id, contractPartnerNumber, arrival, periode, addText, removeText, true); return false; };
                siblinLink.innerHTML = addText;
            }
        }
    }


    Feriepartner.PartnerMap = {};

    Feriepartner.PartnerMap.AdjustMarkerPositions = function()
    {
        jQuery('.locationCon').each(function()
        {
            var marker = jQuery(this);

            if (marker.parent().innerWidth() - (marker.position().left + marker.width()) < 15)
            {
                marker.css({
                    background: 'transparent url(/images/icons/icon_map_dot.gif) 100% 4px no-repeat',
                    left: '',
                    right: (marker.parent().innerWidth() - parseInt(marker.css('left')) - 9) + 'px'
                });
            }
        });
    }

    Feriepartner.LocalAreaMap = {};
    Feriepartner.LocalAreaMap.AutoSuggestionField = null;
    Feriepartner.LocalAreaMap.MarkerClick = function(id, name)
    {
        if (Feriepartner.LocalAreaMap.AutoSuggestionField != null)
        {
            document.getElementById(Feriepartner.LocalAreaMap.AutoSuggestionField).value = name;
            jQuery('#' + Feriepartner.LocalAreaMap.AutoSuggestionField).search();
        }
    }

    Feriepartner.PartnerMap.ContactDataFieldId = null;
    Feriepartner.PartnerMap.ContactRecipientFieldId = null;
    Feriepartner.PartnerMap.ContactMarkerClick = function(id)
    {
        var partnerList = JSON.parse(document.getElementById(Feriepartner.PartnerMap.ContactDataFieldId).value);

        var recipient = null;
        for (var key in partnerList)
        {
            if (partnerList[key].Id == id)
            {
                recipient = partnerList[key];
            }
        }

        if (recipient != null)
        {
            document.getElementById(Feriepartner.PartnerMap.ContactRecipientFieldId).value = recipient.Id;
            document.getElementById('RecieverText').innerHTML = recipient.Text;
        }
    }

    Feriepartner.PartnerMap.CatalogueMarkerClick = function(id)
    {
        var check = document.getElementById('chk_contractPartner_' + id);

        check.checked = !check.checked;
    }

    Feriepartner.PartnerMap.CatalogueMarkerSelectdClick = function(id)
    {
        return;
    }


    Feriepartner.Booking = {};

    Feriepartner.Booking.TotalPrice = 0;
    Feriepartner.Booking.ProductPrices = [];

    Feriepartner.Booking.DisplayProductPrice = function(event, name, price, targetId)
    {
        var dropDown = Feriepartner.GetEventTarget(event);
        var quantity = parseInt(dropDown.options[dropDown.selectedIndex].value);
        Feriepartner.Booking.ChangeProductPrice(targetId, price * quantity, name);
    }

    Feriepartner.Booking.ChangeProductPrice = function(targetId, newPrice, name)
    {
        document.getElementById('displayPrice' + targetId).innerHTML = newPrice;
        jQuery(document.getElementById('displayPrice' + targetId)).formatCurrency({ region: 'da-DK' });

        var totalPlaceholder = document.getElementById('HousePriceTotal');
        var infoBox = document.getElementById('HousePriceProductList');

        var infoBoxProductName = document.getElementById('InfoBoxPriceProductName' + targetId);
        if (infoBoxProductName != undefined)
        {
            Feriepartner.Booking.TotalPrice -= Feriepartner.Booking.ProductPrices[targetId];
        }
        Feriepartner.Booking.ProductPrices[targetId] = newPrice;
        Feriepartner.Booking.TotalPrice += newPrice;

        totalPlaceholder.innerHTML = Feriepartner.Booking.TotalPrice;
        jQuery(totalPlaceholder).formatCurrency({ region: 'da-DK' });

        if (newPrice > 0 && infoBoxProductName == undefined)
        {
            var infoBoxProductName = document.createElement('p');
            infoBoxProductName.id = 'InfoBoxPriceProductName' + targetId;
            infoBoxProductName.innerHTML = name;
            infoBox.appendChild(infoBoxProductName);
        }

        var infoBoxProductPrice = document.getElementById('InfoBoxPriceProductPrice' + targetId);
        if (newPrice > 0 && infoBoxProductPrice == undefined)
        {
            var infoBoxProductPrice = document.createElement('span');
            infoBoxProductPrice.id = 'InfoBoxPriceProductPrice' + targetId;
            infoBoxProductPrice.innerHTML = Feriepartner.Booking.ProductPrices[targetId];
            jQuery(infoBoxProductPrice).formatCurrency({ region: 'da-DK' });

            infoBox.appendChild(infoBoxProductPrice);
        }

        if (newPrice == 0)
        {
            if (infoBoxProductName != undefined)
            {
                infoBox.removeChild(infoBoxProductName);
            }
            if (infoBoxProductPrice != undefined)
            {
                infoBox.removeChild(infoBoxProductPrice);
            }
        }
        else
        {
            infoBoxProductPrice.innerHTML = Feriepartner.Booking.ProductPrices[targetId];
            jQuery(infoBoxProductPrice).formatCurrency({ region: 'da-DK' });
        }
    }

    Feriepartner.Booking.DisplayInsurancePrice = function(event, name, price, targetId, clearOthersWithClass)
    {
        var checkbox = Feriepartner.GetEventTarget(event);

        var quantity = 0;
        if (checkbox.checked)
        {
            quantity = 1;
        }

        if (quantity == 1 && clearOthersWithClass != '')
        {
            var checkboxes = jQuery("." + clearOthersWithClass + " input:not([id=" + checkbox.id + "])").each(function(index)
            {
                $(this).attr('checked', false);
                var spanid = $(this).parent().attr('id');

                Feriepartner.Booking.ChangeProductPrice(spanid.replace("span_", ""), 0, "");
            });
        }

        Feriepartner.Booking.ChangeProductPrice(targetId, price * quantity, name);
    }

    Feriepartner.Admin = {};
    Feriepartner.Admin.PartnerPlacement = {};

    Feriepartner.Admin.PartnerPlacement.Points = null;

    Feriepartner.Admin.PartnerPlacement.LoadPoints = function(hiddenFieldId, mapId)
    {
        jQuery(document).ready(function()
        {
            var value = document.getElementById(hiddenFieldId).value;
            if (value == "" || typeof value != 'string')
            {
                value = "{}";
            }
            Feriepartner.Admin.PartnerPlacement.Points = JSON.parse(value);

            if (Feriepartner.Admin.PartnerPlacement.Points == null || typeof Feriepartner.Admin.PartnerPlacement.Points != 'object')
            {
                Feriepartner.Admin.PartnerPlacement.Points = {};
            }

            for (var key in Feriepartner.Admin.PartnerPlacement.Points)
            {
                if (Feriepartner.Admin.PartnerPlacement.Points[key])
                {
                    Feriepartner.Admin.PartnerPlacement.AppendMarkerHtml(Feriepartner.Admin.PartnerPlacement.Points[key], document.getElementById(mapId));
                }
            }
        });
    }

    Feriepartner.Admin.PartnerPlacement.PlaceMarker = function(point, hiddenFieldId, mapId)
    {
        if (document.getElementById('PartnerMarker' + point.Id))
        {
            Feriepartner.Admin.PartnerPlacement.RemoveMarker(point.Id, hiddenFieldId, mapId);
        }

        Feriepartner.Admin.PartnerPlacement.AppendMarkerHtml(point, document.getElementById(mapId));

        Feriepartner.Admin.PartnerPlacement.Points[point.Id] = point;
        document.getElementById(hiddenFieldId).value = JSON.stringify(Feriepartner.Admin.PartnerPlacement.Points);
    }

    Feriepartner.Admin.PartnerPlacement.RemoveMarker = function(id, hiddenFieldId, mapId)
    {
        if (document.getElementById('PartnerMarker' + id))
        {
            document.getElementById(mapId).removeChild(document.getElementById('PartnerMarker' + id));
        }
        if (Feriepartner.Admin.PartnerPlacement.Points[id])
        {
            delete Feriepartner.Admin.PartnerPlacement.Points[id];
        }
        document.getElementById(hiddenFieldId).value = JSON.stringify(Feriepartner.Admin.PartnerPlacement.Points);
    }

    Feriepartner.Admin.PartnerPlacement.AppendMarkerHtml = function(point, map)
    {
        var div = document.createElement('div');
        div.id = 'PartnerMarker' + point.Id;
        div.className = "locationCon";
        jQuery(div).css({
            left: point.X + 'px',
            top: point.Y + 'px'
        });

        var span = document.createElement('span');

        var link = document.createElement('a');
        link.innerHTML = point.Name;

        span.appendChild(link);
        div.appendChild(span);
        map.appendChild(div);
    }

    // Source: Quirksmode.org
    Feriepartner.Cookie = {};

    Feriepartner.Cookie.Create = function(name, value, days)
    {
        if (days)
        {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        }
        else var expires = "";
        document.cookie = name + "=" + escape(value) + expires + "; path=/";
    }

    Feriepartner.Cookie.Read = function(name)
    {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++)
        {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length, c.length));
        }
        return null;
    }

    Feriepartner.Cookie.Erase = function(name)
    {
        Feriepartner.Cookie.Create(name, "", -1);
    }


    Feriepartner.Search = {};
    Feriepartner.Search.Area = {};
    Feriepartner.Search.Area.DelayTimer = null;
    Feriepartner.Search.Area.BoundingBoxDenmark = { top: 57.755592, bottom: 54.555008, left: 8.065574, right: 12.818943, latitudeDegreesPerPixel: 0.016083, longitudeDegreesPerPixel: 0.028635, PixelPerLatitudeDegee: 62.176153, PixelPerLongitudeDegree: 34.922599 };
    Feriepartner.Search.Area.BoundingBoxBornholm = { top: 55.301837, bottom: 54.982774, left: 14.681926, right: 15.160528, latitudeDegreesPerPixel: 0.014503, longitudeDegreesPerPixel: 0.023930, PixelPerLatitudeDegee: 68.951900, PixelPerLongitudeDegree: 41.788375 };
    Feriepartner.Search.Fields = {};
    Feriepartner.Search.SimpelFields = {};
    Feriepartner.Search.Area.DefaultText = '';

    Feriepartner.Search.Area.Autocomplete = function(formInput, areas, language, searchingText, noResultText, radiusSelect, defaultRadius, isSimpelSearch, defaultText, useGoogle, areaNameField, maxListItems) {
        Feriepartner.Search.Area.DefaultText = defaultText;
        jQuery(formInput).autocomplete(
    areas,
    {
        autoFill: true,
        clickFire: false,
        minChars: 0,
        width: 189,
        max: maxListItems == 0 ? 1 : maxListItems,
        hideResultList: maxListItems == 0,
        scrollHeight: 150,
        formatItem: function(item)
        {
            return item.name;
        },
        googleGeocode: useGoogle,
        googleLanguage: language,
        googleSearchDelay: 2000,
        googleSearchingText: searchingText,
        googleNoResultText: noResultText,
        googleParser: function(data)
        {
            var output = [];

            for (var i = 0; i < data.length; i++)
            {
                output[output.length] = {
                    data: {
                        name: data[i].formatted_address,
                        center: {
                            latitude: data[i].geometry.location.lat(),
                            longitude: data[i].geometry.location.lng()
                        },
                        radius: defaultRadius
                    },
                    value: data[i].formatted_address,
                    result: data[i].formatted_address
                };
            }

            return output;
        },
        defaultText: Feriepartner.Search.Area.DefaultText,
        areaNameField: areaNameField
    }).
    result(function(event, data, formatted)
    {
        if (data)
        {
            if (isSimpelSearch)
            {
                var circle = new google.maps.Circle({ radius: parseFloat(data.radius) * 1000, center: new google.maps.LatLng(data.center.latitude, data.center.longitude) });
                var bounds = circle.getBounds();
                var northEast = bounds.getNorthEast();
                var southWest = bounds.getSouthWest();

                Feriepartner.Search.SimpelFields.latitude.value = data.center.latitude;
                Feriepartner.Search.SimpelFields.longitude.value = data.center.longitude;
                Feriepartner.Search.SimpelFields.radius.value = data.radius;
                Feriepartner.Search.SimpelFields.north.value = northEast.lat();
                Feriepartner.Search.SimpelFields.south.value = southWest.lat();
                Feriepartner.Search.SimpelFields.west.value = southWest.lng();
                Feriepartner.Search.SimpelFields.east.value = northEast.lng();
                Feriepartner.Search.SimpelFields.name.value = data.name;
            }
            else
            {

                Feriepartner.Search.Area.PlaceMapMarker(data.center.latitude, data.center.longitude);

                var radius = data.radius;
                if (data.googleZoomLevel != null)
                { //if data contains a googlemap zoom level use it.
                    radius = data.googleZoomLevel;
                }
                else
                { //find the googlemap zoom level from radius
                    for (var key in Feriepartner.GoogleMaps.ZoomToRadius)
                    {
                        if (Feriepartner.GoogleMaps.ZoomToRadius[key] == parseFloat(radius))
                        {
                            radius = parseFloat(key);
                            break;
                        }
                    }
                }

                //update the search bounding box and sync with google map
                Feriepartner.Search.Area.UpdateAreaName = false;
                Feriepartner.Search.Area.UpdateGoogleMaps = true;
                Feriepartner.Search.Area.SetSearchBoundingBox(data.center.latitude, data.center.longitude, radius, null, data.name);

                //set the selected radius in the dropdown menu
                for (var i = 0; i < radiusSelect.options.length; i++)
                {
                    if (radiusSelect.options[i].value == data.radius)
                    {
                        radiusSelect.selectedIndex = i;
                        break;
                    }
                }
            }
        }
    });
    }

    Feriepartner.Search.Area.MapClick = function(event, boundingBox) {
        Feriepartner.Search.Fields.area.value = Feriepartner.Search.Area.DefaultText;
        Feriepartner.Search.Fields.areaName.value = "";

        var radiusSelect = Feriepartner.Search.Fields.radius;

        var target = jQuery(event.target);
        var offset = target.offset();

        var boundingBoxClickX = event.pageX - offset.left;
        var boundingBoxClickY = event.pageY - offset.top;

        var longitude = (boundingBoxClickX * boundingBox.longitudeDegreesPerPixel) + boundingBox.left;
        var latitude = boundingBox.top - (boundingBoxClickY * boundingBox.latitudeDegreesPerPixel);

        ga.trackObj(this, 'longitude-' + longitude);
        ga.trackObj(this, 'latitude-' + longitude);

        Feriepartner.Search.Area.PlaceMapMarker(latitude, longitude);
        Feriepartner.Search.Area.UpdateGoogleMaps = true;
        for (var key in Feriepartner.GoogleMaps.ZoomToRadius) {
            if (Feriepartner.GoogleMaps.ZoomToRadius[key] == parseFloat(radiusSelect.options[radiusSelect.selectedIndex].value)) {
                Feriepartner.Search.Area.SetSearchBoundingBox(latitude, longitude, parseFloat(key), null, null);
                break;
            }
        }
    }

    Feriepartner.Search.Area.SetMapState = function(map, stateField)
    {
        google.maps.event.addListener(map, 'bounds_changed', function()
        {
            var center = map.getCenter();
            var bounds = map.getBounds();
            var state = "";
            state += center.lat() + ";";
            state += center.lng() + ";";
            state += Feriepartner.GoogleMaps.ZoomToRadius[map.getZoom()] + ";";
            state += map.getZoom() + ";";
            state += bounds.getNorthEast().lat() + ";";
            state += bounds.getSouthWest().lat() + ";";
            state += bounds.getNorthEast().lng() + ";";
            state += bounds.getSouthWest().lng();
            document.getElementById(stateField).value = state;
        });
    }

    Feriepartner.Search.Area.UpdateGoogleMaps = false;
    Feriepartner.Search.Area.UpdateAreaName = true;
    Feriepartner.Search.Area.UpdateGoogleZoomLevel = false;
    Feriepartner.Search.Area.UpdateGoogleMapsFunction = function() { return; }
    Feriepartner.Search.Area.UpdateGoogleMapsZoom = function() { return; }
    Feriepartner.Search.Area.SyncWithGoogleMapsDelay = 0.5;
    Feriepartner.Search.Area.SyncWithGoogleMapsDelayTimer = null;
    Feriepartner.Search.Area.SyncWithGoogleMaps = function(map)
    {
        google.maps.event.addListener(map, 'bounds_changed', function()
        {
            if (Feriepartner.Search.Area.SyncWithGoogleMapsDelayTimer != null)
            {
                clearTimeout(Feriepartner.Search.Area.SyncWithGoogleMapsDelayTimer);
            }

            Feriepartner.Search.Area.SyncWithGoogleMapsDelayTimer = setTimeout(function()
            {

                if (Feriepartner.Search.Area.UpdateAreaName && Feriepartner.Search.Fields.area != null)
                {
                    Feriepartner.Search.Fields.area.value = Feriepartner.Search.Area.DefaultText;
                    Feriepartner.Search.Fields.areaName.value = "";
                }
                else
                {
                    Feriepartner.Search.Area.UpdateAreaName = true;
                }

                var radius = null;
                if (Feriepartner.GoogleMaps.ZoomToRadius[map.getZoom()] > 0)
                {
                    radius = Feriepartner.GoogleMaps.ZoomToRadius[map.getZoom()];

                    var radiusSelect = Feriepartner.Search.Fields.radius;
                    radiusSelect.selectedIndex = radiusSelect.options.length - 1;
                    for (var i = 0; i < radiusSelect.options.length; i++)
                    {
                        var selectValue = parseFloat(radiusSelect.options[i].value.replace(',', '.'));
                        if ((selectValue == radius) || (i == 0 && selectValue > radius) || (i == radiusSelect.options.length - 1 && selectValue < radius))
                        {
                            radiusSelect.selectedIndex = i;
                            break;
                        }
                    }
                }

                var center = map.getCenter();
                Feriepartner.Search.Area.PlaceMapMarker(center.lat(), center.lng());
                Feriepartner.Search.Area.SetSearchBoundingBox(center.lat(), center.lng(), null, map.getBounds(), null);

            }, Feriepartner.Search.Area.SyncWithGoogleMapsDelay * 1000);
        });

        Feriepartner.Search.Area.UpdateGoogleMapsFunction = function(center)
        {
            if (Feriepartner.Search.Area.UpdateGoogleMaps == true)
            {
                map.panTo(center);
                Feriepartner.Search.Area.UpdateGoogleMaps = false;
            }
        }

        Feriepartner.Search.Area.UpdateGoogleMapsZoom = function(zoomLevel, isGoogleZoomLevel)
        {
            if (Feriepartner.Search.Area.UpdateGoogleZoomLevel == true)
            {
                if (isGoogleZoomLevel)
                { //zoom level is a googlemap zoom level so we use it directly.
                    map.setZoom(parseFloat(zoomLevel));
                }
                else
                {  //zoom level is a km zoom level, so we convert it to a googlemap zoom level before use.
                    for (var key in Feriepartner.GoogleMaps.ZoomToRadius)
                    {
                        if (Feriepartner.GoogleMaps.ZoomToRadius[key] == parseFloat(zoomLevel))
                        {
                            map.setZoom(parseFloat(key));
                            break;
                        }
                    }
                }
                Feriepartner.Search.Area.UpdateGoogleZoomLevel = false;
            }
        }
    }

    Feriepartner.Search.Area.MapMarker = null;
    Feriepartner.Search.Area.ResetMarker = function()
    {

        if (Feriepartner.Search.Area.MapMarker != null)
        {
            jQuery(Feriepartner.Search.Area.MapMarker).remove();
            Feriepartner.Search.Area.MapMarker = null;
        }
    }

    Feriepartner.Search.Area.PlaceMapMarker = function(latitude, longitude)
    {

        Feriepartner.Search.Area.ResetMarker();

        var boundingBox = null;
        var targetElement = null;
        if (latitude >= Feriepartner.Search.Area.BoundingBoxDenmark.bottom &&
        latitude <= Feriepartner.Search.Area.BoundingBoxDenmark.top &&
        longitude >= Feriepartner.Search.Area.BoundingBoxDenmark.left &&
        longitude <= Feriepartner.Search.Area.BoundingBoxDenmark.right)
        {
            boundingBox = Feriepartner.Search.Area.BoundingBoxDenmark;
            targetElement = document.getElementById('searchMapDenmark');
        }
        else if (latitude >= Feriepartner.Search.Area.BoundingBoxBornholm.bottom &&
             latitude <= Feriepartner.Search.Area.BoundingBoxBornholm.top &&
             longitude >= Feriepartner.Search.Area.BoundingBoxBornholm.left &&
             longitude <= Feriepartner.Search.Area.BoundingBoxBornholm.right)
        {
            boundingBox = Feriepartner.Search.Area.BoundingBoxBornholm;
            targetElement = document.getElementById('searchMapBornholm');
        }
        else
        {
            return;
        }

        if (targetElement != null)
        {

            if (Feriepartner.Search.Area.MapMarker == null)
            {
                Feriepartner.Search.Area.MapMarker = document.createElement('img');
                Feriepartner.Search.Area.MapMarker.src = '/images/icons/icon_map_dot.gif';
                Feriepartner.Search.Area.MapMarker.style.position = 'relative';
                jQuery(Feriepartner.Search.Area.MapMarker).click(function()
                {
                    return false;
                });
            }
            Feriepartner.Search.Area.MapMarker.style.top = (Math.round((boundingBox.top - latitude) * boundingBox.PixelPerLatitudeDegee) - 5) + 'px';
            Feriepartner.Search.Area.MapMarker.style.left = (Math.round((longitude - boundingBox.left) * boundingBox.PixelPerLongitudeDegree) - 5) + 'px';

            targetElement.appendChild(Feriepartner.Search.Area.MapMarker);
        }
    }

    Feriepartner.Search.Area.SetSearchBoundingBox = function(latitude, longitude, radius, optionalBounds, name)
    {
        Feriepartner.Search.Fields.longitude.value = longitude;
        Feriepartner.Search.Fields.latitude.value = latitude;

        if (optionalBounds != undefined && optionalBounds != null)
        {
            var bounds = optionalBounds;
            var northEast = bounds.getNorthEast();
            var southWest = bounds.getSouthWest();

            Feriepartner.Search.Fields.north.value = northEast.lat();
            Feriepartner.Search.Fields.south.value = southWest.lat();
            Feriepartner.Search.Fields.west.value = southWest.lng();
            Feriepartner.Search.Fields.east.value = northEast.lng();
        }
        else
        {
            Feriepartner.Search.Fields.north.value = "";
            Feriepartner.Search.Fields.south.value = "";
            Feriepartner.Search.Fields.west.value = "";
            Feriepartner.Search.Fields.east.value = "";
        }

        if (typeof name == 'string')
        {
            Feriepartner.Search.Fields.areaName.value = name;
        }

        Feriepartner.Search.UpdateResultCount();
        Feriepartner.Search.Area.UpdateGoogleMapsFunction(new google.maps.LatLng(latitude, longitude));

        if (radius != undefined && radius != null)
        {
            Feriepartner.Search.Area.UpdateGoogleZoomLevel = true;
            Feriepartner.Search.Area.UpdateGoogleMapsZoom(radius, true);
        }
    }

    Feriepartner.Search.OnChange = function() {
        Feriepartner.Search.UpdateResultCount();
    }

    Feriepartner.Search.Date = function(dateInput, dayNamesMin, monthNamesShort, isSimpleSearch) {
        var input = jQuery(dateInput).datepicker({
            dateFormat: 'dd/mm/yy',
            dayNamesMin: dayNamesMin,
            firstDay: 1,
            minDate: new Date(),
            monthNames: monthNamesShort,
            onSelect: function(text, picker) {
                if (!isSimpleSearch) {
                    ga.trackObj(this, 'Ankomstdato-' + text); Feriepartner.Search.OnChange();
                } 
            }
        });

        input.change(function() { Feriepartner.Search.OnChange(); });
    }

    Feriepartner.Search.SearchResultDefaultTextId = null;
    Feriepartner.Search.SearchResultListId = null;

    Feriepartner.Search.FrontPageId = null;
    Feriepartner.Search.UpdateResultCountDelay = 0;
    Feriepartner.Search.UpdateResultCountDelayTimer = null;
    Feriepartner.Search.UpdateResultCount = function () {

        if (Feriepartner.Search.UpdateResultCountDelayTimer != null) {
            clearTimeout(Feriepartner.Search.UpdateResultCountDelayTimer);
        }

        Feriepartner.Search.UpdateResultCountDelayTimer = setTimeout(function () {
            var facilitiesIdValue = [];
            for (var key in Feriepartner.Search.Fields.facilities) {
                var element = document.getElementById(Feriepartner.Search.Fields.facilities[key]);

                if (element == null) {
                    continue;
                }

                if (element.options != undefined) {
                    var value = element.options[element.selectedIndex].value;

                    if (value === 'true' || value === 'false' || !isNaN(value)) {
                        facilitiesIdValue.push(key + ':' + value);
                    }
                }
                else {
                    facilitiesIdValue.push(key + ':' + element.value);
                }
            }

            var data;
            //Check that area are not an line or dot. If so use lontitude, latitude and radius instead.
            if (Feriepartner.Search.Fields.north.value == Feriepartner.Search.Fields.south.value || Feriepartner.Search.Fields.east.value == Feriepartner.Search.Fields.west.value) {
                data = {
                    latitude: Feriepartner.Search.Fields.latitude.value,
                    longitude: Feriepartner.Search.Fields.longitude.value,
                    radius: Feriepartner.Search.Fields.radius.value,
                    arrival: Feriepartner.Search.Fields.arrival.value,
                    period: Feriepartner.Search.Fields.period.options[Feriepartner.Search.Fields.period.selectedIndex].value,
                    adults: Feriepartner.Search.Fields.adults.options[Feriepartner.Search.Fields.adults.selectedIndex].value,
                    children: Feriepartner.Search.Fields.children.options[Feriepartner.Search.Fields.children.selectedIndex].value,
                    pets: Feriepartner.Search.Fields.pets.options[Feriepartner.Search.Fields.pets.selectedIndex].value,
                    discount: Feriepartner.Search.Fields.discount.checked,
                    minprice: Feriepartner.Search.Fields.minprice.value,
                    maxprice: Feriepartner.Search.Fields.maxprice.value,
                    facilities: facilitiesIdValue.join(';'),
                    frontPageId: Feriepartner.Search.FrontPageId
                }
            } else {
                data = {
                    north: Feriepartner.Search.Fields.north.value,
                    south: Feriepartner.Search.Fields.south.value,
                    east: Feriepartner.Search.Fields.east.value,
                    west: Feriepartner.Search.Fields.west.value,
                    arrival: Feriepartner.Search.Fields.arrival.value,
                    period: Feriepartner.Search.Fields.period.options[Feriepartner.Search.Fields.period.selectedIndex].value,
                    adults: Feriepartner.Search.Fields.adults.options[Feriepartner.Search.Fields.adults.selectedIndex].value,
                    children: Feriepartner.Search.Fields.children.options[Feriepartner.Search.Fields.children.selectedIndex].value,
                    pets: Feriepartner.Search.Fields.pets.options[Feriepartner.Search.Fields.pets.selectedIndex].value,
                    discount: Feriepartner.Search.Fields.discount.checked,
                    minprice: Feriepartner.Search.Fields.minprice.value,
                    maxprice: Feriepartner.Search.Fields.maxprice.value,
                    facilities: facilitiesIdValue.join(';'),
                    frontPageId: Feriepartner.Search.FrontPageId
                }
            }

            jQuery.getJSON('/EventHandlers/GetSearchResultCount.ashx', data, function (result) {
                Feriepartner.Search.Fields.resultCount.innerHTML = result;
                var resultToDisplay = "";

                if (result == '-1') {
                    Feriepartner.Search.Fields.resultCountContainer.style.display = 'none';
                }
                else {
                    Feriepartner.Search.Fields.resultCountContainer.style.display = 'block';
                    resultToDisplay = result;
                }

                if (Feriepartner.Search.Fields.mapResultCount != null) {
                    Feriepartner.Search.Fields.mapResultCount.value = resultToDisplay;
                }
            });


        }, Feriepartner.Search.UpdateResultCountDelay * 1000);
    }


    Feriepartner.Search.GenerateResultListDelay = 0;
    Feriepartner.Search.GenerateResultListDelayTimer = null;
    Feriepartner.Search.GenerateResultList = function(firstIndex, lastIndex, count, languageId, currencyId, searchId, sortField, domElement, gen, overlayElement, overlayElementBottom, loaderElement, cpath, pageId) {

        overlayElement.style.display = "block";
        overlayElementBottom.style.display = "block";

        if (Feriepartner.Search.GenerateResultListDelayTimer != null) {
            clearTimeout(Feriepartner.Search.GenerateResultListDelayTimer);
        }

        var data;

        if (cpath) {
            data = ({
                firstindex: firstIndex,
                lastindex: lastIndex,
                count: count,
                languageid: languageId,
                currencyid: currencyId,
                searchid: searchId,
                sortfield: sortField,
                generatemapmarkerlist: gen,
                pageid: pageId,
                cataloguepath: cpath
            })
        }
        else {
            data = ({
                firstindex: firstIndex,
                lastindex: lastIndex,
                count: count,
                languageid: languageId,
                currencyid: currencyId,
                searchid: searchId,
                sortfield: sortField,
                generatemapmarkerlist: gen,
                pageid: pageId
            })
        }



        jQuery.ajax({
            type: "GET",
            url: "/Templates/Pages/SearchResultList.aspx",
            data: data,
            cache: false,
            dataType: "html",
            error: function(obj, text, error) {
                overlayElement.style.display = "none";
                overlayElementBottom.style.display = "none";
                if (loaderElement != null) {
                    loaderElement.style.display = 'none';
                }
                clearTimeout(Feriepartner.Search.GenerateResultListDelayTimer);
            },
            success: function(data) {
                domElement.innerHTML = data;
                eval(document.getElementById('searchResultListJavaScript').value);
                overlayElement.style.display = "none";
                overlayElementBottom.style.display = "none";
                if (loaderElement != null) {
                    loaderElement.style.display = 'none';
                }
                clearTimeout(Feriepartner.Search.GenerateResultListDelayTimer);
            }
        });
        Feriepartner.Search.GenerateResultListDelayTimer = setTimeout(function() {
            if (loaderElement != null) {
                loaderElement.style.display = 'block';
            }
        }, Feriepartner.Search.GenerateResultListDelay);
    }

    Feriepartner.Search.ResultListOnClick = function(markerId, searchId, cataloguepath, pageId) {
        
        
        if (!jQuery('.showMap').hasClass('open'))
        {
            jQuery('.showMap').click();
        }

        var markerData = Feriepartner.GoogleMaps.MapMarkers[markerId];
        Feriepartner.GoogleMaps.SetMarkerActive(markerData);
        Feriepartner.GoogleMaps.ShowHouseInfoBox([markerData.id], searchId, [markerData.marker.listPosition], cataloguepath, pageId);
        Feriepartner.GoogleMaps.SearchResultMap.setZoom(21);
    }

    Feriepartner.Search.FindNextPage = function(func, currentIndex, totalCount, count)
    {
        var nextIndex = currentIndex;
        if (func == 'first')
        {
            nextIndex = 1;
        } else if (func == 'next')
        {
            nextIndex = nextIndex + count;
            //_gaq.push(['_trackPageview', '/tracking/pagination/' + nextIndex]);
        } else if (func == 'prev')
        {
            nextIndex = nextIndex - count;
            //_gaq.push(['_trackPageview', '/tracking/pagination/' + nextIndex]);
        } else if (func == 'last')
        {
            nextIndex = 1 + (Math.floor(totalCount / count) * count);

        } else
        {
            //default, do nothing
        }

        if (nextIndex > totalCount)
        {
            nextIndex = 1 + totalCount - count;
        }
        if (nextIndex < 1)
        {
            nextIndex = 1;
        }
        var lastIndex = nextIndex + count - 1;
        if (lastIndex > totalCount)
        {
            lastIndex = totalCount;
        }
        if (lastIndex < 1)
        {
            lastIndex = 1;
        }

        var currentpage = Math.ceil(lastIndex / count);
        if (currentpage < 1)
        {
            currentpage = 1;
        }

        var lastpage = Math.ceil(totalCount / count);
        if (lastpage < 1)
        {
            lastpage = 1;
        }

        return new Array(nextIndex, lastIndex, currentpage, lastpage);
    }
    /* Cufon replacement */

    var cufonFunctions = {
        replace: function(sel)
        {
            jQuery(sel).hide();
            jQuery(sel).parent().append('<span class="input-button"></span>');
            jQuery(sel).next('span.input-button').html(jQuery(sel).val()).click(function()
            {
                jQuery(sel).click();
            });
        }
    }

    /* Google Analytics functions */

    var ga = {
        init: function()
        {
            jQuery('#Facilities div select').attr('title', jQuery(this).prev('label').html());
        },
        trackObj: function(obj, str)
        {
            var path = '';

            if (str == 'facility')
            {
                str = '/tracking/forside/' + jQuery(obj).prev('label').html() + '-';
            }

            switch (obj.type)
            {
                case 'checkbox' || 'radio':
                    if (obj.checked) { path = str; } else { }
                    break;
                case 'select-one':
                    path = str + obj.options[obj.selectedIndex].text;
                    break;
                default:
                    path = str;
            }

            if (path != '')
            {
                _gaq.push(['_trackPageview', '/tracking/forside/' + path]);
                //console.log('/tracking/forside/' + path);
            }
        },
        push: function(data)
        {
            _gaq.push(data);
            //console.log(data);
        }
    }

    jQuery(document).ready(function()
    {
        if (jQuery('.backBtn').length != 0) { cufonFunctions.replace(jQuery('.backBtn input')); }
        if (jQuery('.nextBtn').length != 0) { cufonFunctions.replace(jQuery('.nextBtn input')); }

        if (typeof (Cufon) != 'undefined')
        {
            Cufon.replace('.bookBtn a, .input-button, .infoBar h4, .mInfoBox.mPrice .bd .total p, .mInfoBox.mPrice .bd .total span', {
                textShadow: '2px 2px rgba(0, 0, 0, 0.2)'
            });
        }

    });

