﻿var isMapFlapActive = true;
var flapImageFolder = 'http://' + setting.rootHost + 'images/flaps/';
var isBranschListActive = true;

function ActivateMapFlap() {
    $('.GuideView_Wrapper').show();
    $('.RegisterView').hide();
    $('#imgMapFlap').attr('src', 'http://' + setting.languageImageRoot + 'tab_1_active_maps.png');
    $('#imgRegisterFlap').attr('src', 'http://' + setting.languageImageRoot + 'tab_2_inactive_companies.png');
    isMapFlapActive = true;

    if ($('.autoShowInfoAtMyMaps:hidden[value="true"]').length > 0) {
        $('.autoShowInfoAtMyMaps:hidden[value="true"]').attr('value', 'false');
        UppdateMyMaps();
    }
}

function ActivateRegisterFlap() {
    $('.GuideView_Wrapper').hide();
    $('.RegisterView').show();
    $('#imgMapFlap').attr('src', 'http://' + setting.languageImageRoot + 'tab_1_inactive_maps.png');
    $('#imgRegisterFlap').attr('src', 'http://' + setting.languageImageRoot + 'tab_2_active_companies.png');
    isMapFlapActive = false;
    jScrollReInit();
}

function MapFlapClickedEventHandler() {
    if (!isMapFlapActive) {
        ActivateMapFlap();
    }
}

function RegisterFlapClickedEventHandler() {
    if (isMapFlapActive) {
        ActivateRegisterFlap();
    }
}

function ActivateBranschList() {
    $('#divRegisterContent_Bransch').show();
    $('#divRegisterContent_AO').hide();
    $('#imgRegisterContent_Bransch').attr('src', 'http://' + setting.languageImageRoot + 'button_bransch_active.png');
    $('#imgRegisterContent_AO').attr('src', 'http://' + setting.languageImageRoot + 'button_ao_inactive.png');
    jScrollAPI.reinitialise();
    isBranschListActive = true;
}

function ActivateAOList() {
    $('#divRegisterContent_Bransch').hide();
    $('#divRegisterContent_AO').show();
    $('#imgRegisterContent_Bransch').attr('src', 'http://' + setting.languageImageRoot + 'button_bransch_inactive.png');
    $('#imgRegisterContent_AO').attr('src', 'http://' + setting.languageImageRoot + 'button_ao_active.png');
    jScrollAPI.reinitialise();
    isBranschListActive = false;
}

function BraschListClickedEventHandler() {
    if (!isBranschListActive) {
        ActivateBranschList();
    }
}

function AOListClickedEventHandler() {
    if (isBranschListActive) {
        ActivateAOList();
    }

}

function InitFlaps() {
    if (!IsBaseURL()) {
        ActivateMapFlap();
    }
    //    else if ($('.autoShowInfoAtMyMaps:hidden[value="true"]').length > 0) {
    //        window.setTimeout(function () { ActivateMapFlap(); }, 2000);
    //    }
    else {
        //ActivateRegisterFlap();
        ToogleCityLetterCategory('ABCDEFGHIJ');
    }
}

function CreateCompanyList() {
//    var category = '';
//    var categoryLink = '';
//    var mapMarker;
//    for (var i = 0; i < mapMarkers.length; i++) {
//        (function () {
//            mapMarker = mapMarkers[i];
//            if (mapMarker.Category !== '-=sign=-') {
//                if (category !== mapMarker.Category) {
//                    $('#divCategoryTitle_' + categoryLink).nextAll().wrapAll('<div id="divCategoryContent_' + categoryLink + '" class="categoryContent" style="display:none">');

//                    category = mapMarker.Category
//                    categoryLink = category.toLowerCase().replace(/\W/gi, "_");

//                    var htmlString = $('#div_category_separator_template').html();
//                    //var domObj = $(ArrangeCategoryHTML(htmlString, mapMarker.Category));
//                    jScrollAPI.getContentPane().append(ArrangeCategoryHTML(htmlString, category, categoryLink));
//                    //domObj.appendTo('#divRegisterContent');

//                }

//                var htmlString = $('#div_listpost_template').html();
//                //var domObj = $(ArrangeDetailHTML(htmlString, mapMarker));
//                jScrollAPI.getContentPane().append(ArrangeDetailHTML(htmlString, mapMarker));
//                // domObj.appendTo('#divRegisterContent');
//            }
//        })();
//    }
//    $('#divCategoryTitle_' + categoryLink).nextAll().wrapAll('<div id="divCategoryContent_' + categoryLink + '" class="categoryContent" style="display:none">');
//    jScrollAPI.reinitialise();
}

function ArrangeCategoryHTML(htmlString, category, categoryLink) {
    htmlString = htmlString.replace(/%Category%/g, category);
    htmlString = htmlString.replace(/%CategoryLink%/g, categoryLink);
    return htmlString;
}

function ArrangeDetailHTML(htmlString, mapMarker) {
    htmlString = htmlString.replace(/%ID%/g, mapMarker.ID);

    if (mapMarker.Email == null) {
        htmlString = htmlString.replace(/\.\.\/images\/icons\/emailicon\.png/g, '../images/icons/emptyicon.png');
    }

    if (mapMarker.Webaddress == null) {
        htmlString = htmlString.replace(/\.\.\/images\/icons\/webbicon\.png/g, '../images/icons/emptyicon.png');
    }

    htmlString = htmlString.replace(/%CompanyName%/g, mapMarker.Name);
    htmlString = htmlString.replace(/%Address1%/g, mapMarker.Address1);

    if (mapMarker.Address2 != null) {
        htmlString = htmlString.replace(/%Address2%/g, mapMarker.Address2);
    }
    else {
        htmlString = '<div>' + htmlString + '</div>';
        var domO = $(htmlString);
        domO.find('#spanListpostAddress2').hide();
        htmlString = domO.html();
    }

    htmlString = htmlString.replace(/%ZipCode%/g, mapMarker.ZipCode);
    htmlString = htmlString.replace(/%City%/g, mapMarker.City);

    htmlString = htmlString.replace(/%PhoneNo1%/g, mapMarker.PhoneNo1);

    if (mapMarker.PhoneNo2 != null) {
        htmlString = htmlString.replace(/%PhoneNo2%/g, mapMarker.PhoneNo2);
    }
    else {
        htmlString = '<div>' + htmlString + '</div>';
        var domO = $(htmlString);
        domO.find('#spanListpostPhoneNo2').hide();
        htmlString = domO.html();
    }

    if (mapMarker.PhoneNo2 != null) {
        htmlString = htmlString.replace(/%PhoneNo2%/g, mapMarker.PhoneNo2);
    }
    else {
        htmlString = '<div>' + htmlString + '</div>';
        var domO = $(htmlString);
        domO.find('#spanListpostPhoneNo2').hide();
        htmlString = domO.html();
    }

    if (mapMarker.Email != null) {
        htmlString = htmlString.replace(/%EMail%/g, mapMarker.Email);
    }
    else {
        htmlString = '<div>' + htmlString + '</div>';
        var domO = $(htmlString);
        domO.find('#spanListpostEMail').hide();
        htmlString = domO.html();
    }

    if (mapMarker.Webaddress != null) {
        htmlString = htmlString.replace(/%Webaddress%/g, mapMarker.Webaddress);
    }
    else {
        htmlString = '<div>' + htmlString + '</div>';
        var domO = $(htmlString);
        domO.find('#spanListpostWebaddress').hide();
        htmlString = domO.html();
    }

    return htmlString;
}

function HighlightCustomer(customerID, isSearch) {
    if (isBranschListActive) {
        containerClass = ".divRegisterContent_Bransch";
    }
    else {
        containerClass = ".divRegisterContent_AO";
    }

    ToogleCustomerDetails('RegisterContent_CompanyItemDetails_' + customerID, containerClass, isSearch);
    HighlightCustomerMapMarker(customerID);
}

function HighlightCustomerMapMarker(customerID) {
    DeactivateAllMapMarkers();
    for (var i = 0; i < mapMarkers.length; i++) {
        var mapMarker = mapMarkers[i];
        if (mapMarker.Category !== '-=sign=-' && mapMarker.ID === customerID) {
            ActivateMapMarker(mapMarker);
            PanToMapCenter(mapMarker.Lat, mapMarker.Lng);
            break;
        }
    }
}

function ToogleCustomerDetails(className, containerClass, isSearch) {
    if ($(containerClass).find('.RegisterContent_CompanyItemDetails:visible').length > 0 &&
    !$(containerClass).find('.RegisterContent_CompanyItemDetails:visible').hasClass(className)) {
        $(containerClass).find('.RegisterContent_CompanyItemDetails:visible').hide();
    }
    $(containerClass).find('.' + className).slideToggle("fast", function () { AdjustCustomerScroll(className, containerClass, isSearch); });

}

function AdjustCustomerScroll(className, containerClass, isSearch) {
    jScrollReInit();
    jQueryObj = $(containerClass).find('.' + className);

    jScrollAPI.scrollToElement(jQueryObj, ((isSearch != undefined) && isSearch));
}

function HighlightCategory(category) {
    DeactivateAllMapMarkers();

    if ($('#divRegisterContent').find('.RegisterContent_CompanyItemDetails:visible').length > 0) {
        $('#divRegisterContent').find('.RegisterContent_CompanyItemDetails:visible').hide();
    }

    ToogleCategoryContent('RegisterContent_Bransch_Customers_' + category);

    for (var i = 0; i < mapMarkers.length; i++) {
        var mapMarker = mapMarkers[i];
        if (mapMarker.Category === category) {
            ActivateMapMarker(mapMarker);
        }
    }
}

function ToogleCategoryContent(className) {
    if ($('#divRegisterContent').find('.RegisterContent_Bransch_Customers:visible').length > 0 &&
    !$('#divRegisterContent').find('.RegisterContent_Bransch_Customers:visible').hasClass(className)) {
        $('#divRegisterContent').find('.RegisterContent_Bransch_Customers:visible').hide("fast", function () { ToogleCategoryContent2(className); });
        $('#divRegisterContent').find('.RegisterContent_Bransch_Customers:visible').prev('a').removeClass('Bransch_Title_Expanded');
    }
    else {
        ToogleCategoryContent2(className);
    }
}

function ToogleCategoryContent2(className) {
    $('.' + className).slideToggle("fast", function () { jScrollReInit(); jScrollAPI.scrollToElement('.' + className); });
    $('.' + className).prev('a').toggleClass('Bransch_Title_Expanded');
}

function AddMapToMyMaps(mapID) {
    AddMapAsyncPostback(mapID);
    ActivateMapFlap();
}

function UppdateMyMaps() {
    UpdateMapsAsyncPostback();
}

function LoadRek() {
    if (IsBaseURL()) {
        CityService.GetOverviewAds(LoadRekCallBack, null, null);
    }
    else {
        var urlName = window.location.pathname.replace(/\//gi, "");
        CityService.GetCityAds(urlName, LoadRekCallBack, null, null);
    }
}

function LoadRekCallBack(ads) {
    for (var i = 0; i < ads.length; i++) {
        var ad = ads[i];
        var imageURL = 'http://' + setting.adImageRoot + ad.ImageName;
        var linkURL = ad.LinkURL;
        var toolTip = ad.ToolTip;

        var domObj = $('#divRek' + (i + 1));
        domObj.find('a').attr('href', linkURL);
        domObj.find('a').attr('title', toolTip);
        domObj.find('img').attr('src', imageURL);
        domObj.find('img').attr('alt', toolTip);
        domObj.find('img').attr('title', toolTip);
        domObj.find('.rekIssuer').html(toolTip);

        if (ad.ImageName === "") {
            domObj.find('.rekNoImage').show();
            var height = domObj.find('.rekText').height();
            var padding = (250 - height) / 2;
            domObj.find('.rekText').css('padding-top', padding);
        }
        else {
            domObj.find('.rekImage').show();
        }
    }
    //MoveRek(); //<-------------------------------------------------- Slå på annonser genom att avkomentera här.
}

function ToogleCityLetterCategory(letter) {
    showObj = $('#RegisterCityContentLists').find('.citylist.' + letter);
    visObj = $('#RegisterCityContentLists').find('.citylist:visible');
    if (!showObj.is(':visible') && visObj.length > 0) {
        visObj.slideToggle("fast", function () { ToogleCityLetterCategory2(showObj) });
        //Alternativ effekt: 
        //visObj.slideToggle("fast");
        //showObj.slideToggle("fast", function () { jScrollAPI.reinitialise(); });
    }
    else if (visObj.length === 0) {
        ToogleCityLetterCategory2(showObj);
    }

}

function ToogleCityLetterCategory2(showObj) {
    showObj.slideToggle("fast", function () { jScrollReInit(); });
}

function jScrollReInit() {
    jScrollAPI.scrollToY("0");
    jScrollAPI.reinitialise();
}

function ViewSearchedCustomer() {
    ActivateRegisterFlap();
    ActivateAOList();
    HighlightCustomer(SearchedCompanyID, true);

}

function createCookie(city) {
    var date = new Date();
    date.setTime(date.getTime() + (15 * 60 * 1000));
    var expires = "; expires=" + date.toGMTString();
    document.cookie = city + "=true" + expires + "; path=/";
}

function readCookie(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 c.substring(nameEQ.length, c.length);
    }
    return null;
}

function HasMovedRek() {
    if (IsBaseURL()) {
        var city = 'overview';
    }
    else {
        var city = window.location.pathname.replace(/\//gi, "");
    }

    var HasMoved = false;
    if (readCookie(city) != null) {
        HasMoved = true;
    }
    else {
        createCookie(city);
    }

    return HasMoved;
}


var rekTopPos, rekCurrentPos, rekOutPos, moveFase, lastScroll, lastHeight, stopmove
function MoveRek() {
    doMove = !HasMovedRek();
    if (doMove) {
    stopmove = false;
        $('#divRekCloser').css("cursor", "pointer");
        $('#divRekCloser').bind('click', function () {
            stopmove = true;
            moveFase = '';
            rekCurrentPos = 0;
            $(".rekWrap").css("top", rekCurrentPos);
            window.onscroll = null;
            window.onresize = null;
            $('#divRekCloser').css("cursor", "default");
        });

        extraOffset = 30;
        lastScroll = getScrollTop();
        lastHeight = GetWindowsHeight();
        viewedHeigt = lastHeight + lastScroll;
        rekHight = $(".rekWrap").height();
        rekBottom = rekHight + (758 + extraOffset);
        if (viewedHeigt < rekBottom - (rekHight / 3)) {
            moveFase = 'up';
            window.onscroll = ScrollEvent;
            window.onresize = ScrollEvent;

            $(".rekWrap").addClass("rekGlass");
            rekTopPos = viewedHeigt - rekBottom;
            rekOutPos = rekTopPos + ($(".rekWrap").height() + extraOffset);
            if (rekOutPos > 0) {
                rekOutPos = 0;
            }
            if (rekTopPos < -758) {
                rekTopPos = -758;
            }
            rekCurrentPos = rekOutPos;

            $(".rekWrap").css("top", rekCurrentPos);
            //$(".rekWrap").css("display", "none");
            //$(".rekWrap").show("slide");
            MoveRekInThread();
        }
    }
}

function ScrollEvent() {
    if (moveFase == 'up') {
        lastScroll = getScrollTop();
        lastHeight = GetWindowsHeight();
        viewedHeigt = lastHeight + lastScroll;
        rekTopPos = viewedHeigt - rekBottom;
        rekOutPos = rekTopPos + ($(".rekWrap").height() + extraOffset);
        if (rekOutPos > 0)
            rekOutPos = 0;
        if (rekTopPos > 0)
            rekTopPos = 0;
        if (rekTopPos < -758)
            rekTopPos = -758;
        if (rekCurrentPos < rekTopPos) {
            rekCurrentPos = rekTopPos;
            $(".rekWrap").css("top", rekCurrentPos);
        }
    }
    else if (moveFase == 'top') {
        lastScroll = getScrollTop();
        lastHeight = GetWindowsHeight();
        viewedHeigt = lastHeight + lastScroll;
        rekTopPos = viewedHeigt - rekBottom;
        rekOutPos = rekTopPos + ($(".rekWrap").height() + extraOffset);
        if (rekOutPos > 0)
            rekOutPos = 0;
        if (rekTopPos > 0)
            rekTopPos = 0;
        if (rekTopPos < -758)
            rekTopPos = -758;
        if (rekCurrentPos != rekTopPos) {
            rekCurrentPos = rekTopPos;
            $(".rekWrap").css("top", rekCurrentPos);
        }
    }
    else if (moveFase == 'down') {
        currentScroll = getScrollTop();
        diffScroll = currentScroll - lastScroll;
        lastScroll = currentScroll;
        currentHeight = GetWindowsHeight();
        diffHeight = currentHeight - lastHeight;
        lastHeight = currentHeight;
        rekCurrentPos = rekCurrentPos + diffScroll + diffHeight;
        rekOutPos = rekOutPos + diffScroll + diffHeight;
        if (rekOutPos > 0)
            rekOutPos = 0;
    }
   
}

function MoveRekInThread() {
    if (!stopmove)
    {
        if (rekCurrentPos > rekTopPos) {
            rekCurrentPos = rekCurrentPos - 50;
            $(".rekWrap").css("top", rekCurrentPos);
            setTimeout("MoveRekInThread()", 50);
        }
        else {
            moveFase = 'top';
            setTimeout("MoveRekOutThread()", 4000);
    }
    }
}

function MoveRekOutThread() {
    if (!stopmove)
    {
        moveFase = 'down';
        if (rekCurrentPos < rekOutPos) {
            rekCurrentPos = rekCurrentPos + 50;
            $(".rekWrap").css("top", rekCurrentPos);
            setTimeout("MoveRekOutThread()", 50);
        }
        else {
            moveFase = '';
            rekCurrentPos = 0;
            $(".rekWrap").css("top", rekCurrentPos);
            window.onscroll = null;
            window.onresize = null;
        }
    }
}

function GetWindowsHeight() {
    myHeight = 0;
    if (typeof (window.innerWidth) == 'number') {
        //Non-IE
        myHeight = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        myHeight = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientHeight)) {
        //IE 4 compatible
        myHeight = document.body.clientHeight;
    }

    return myHeight;
}

function getScrollTop() {
    var scrOfY = 0;
    if (typeof (window.pageYOffset) == 'number') {
        //Netscape compliant
        scrOfY = window.pageYOffset;
    } else if (document.body && (document.body.scrollTop)) {
        //DOM compliant
        scrOfY = document.body.scrollTop;
    } else if (document.documentElement && (document.documentElement.scrollTop)) {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
    }
    return scrOfY;
}

