﻿jQuery.hotBox = function() {
    var isOpen = false;
    var overlay = '#hotboxOverlay';
    var hotbox = '#sitemapHotbox';
    var content = '#sitemaparea';
    var hasContent = false;

    this.getOpenStatus = function() {
        return isOpen;
    };

    this.hideHotbox = function() {
        isOpen = false;
        jQuery(overlay).css('display', 'none');
        jQuery(hotbox).hide(0);
    };

    this.showHotbox = function() {
        isOpen = true;
        jQuery(overlay).css('display', 'block');
        jQuery(hotbox).show(0);
        
        if (!hasContent) {
            
            var language = jQuery('meta[name=language]').attr("content");
            
            if (!language)
                language = "sv";
            
            jQuery(content).load('/templates/Sodracommon/Services/SitemapService.ashx?epslanguage=' + language, function() {
                hasContent = true;
                jQuery('.sitemap-linkholder a:first-child').addClass('first-word-color');
                jQuery('#sitemapCloseButton').click(function () 
                    {
                        //TODO call the hideHotbox function below instead
                        isOpen = false;
                        jQuery(overlay).hide(0);
                        jQuery(hotbox).hide(0);
                    });

            });
            
        } //if
    }; //showHotbox()

}; //hotBox

jQuery.slidingHotBox = function(overlaySelector, hotboxSelector) {
    var overlay = overlaySelector;
    var hotbox = hotboxSelector;

    this.getOpenStatus = function() {
        return jQuery(hotbox).css('display') == "block";
    };

    this.showHotbox = function() {
        jQuery(overlay).css('display', 'block');
        jQuery(hotbox).slideDown('slow'); //.show(0);
    };

    this.hideHotbox = function() {
        jQuery(overlay).css('display', 'none');
        jQuery(hotbox).hide(0);
    };
};

jQuery(document).ready(function() {

    var hotbox = new jQuery.hotBox();
    var contactHotBox = new jQuery.slidingHotBox('#hotboxOverlay', '#contact-hotbox');
    var languageHotBox = new jQuery.slidingHotBox('#hotboxOverlay', '#language-hotbox');
    var loginHotBox = new jQuery.slidingHotBox('#hotboxOverlay', '#login-hotbox');
    var mapHotBox = new jQuery.slidingHotBox('#hotboxOverlay', '#map-hotbox');
    var map = null;
    var contactLinks = jQuery('#contact-hotbox-left a');

    if (contactLinks.length > 2) {
        jQuery('#contact-hotbox-right textarea').css('height', contactLinks.length * 25);
    }

    jQuery('#header-sitemap-link').bind('click', function() {
        hotbox.showHotbox();
    });

    jQuery('#header-contact-link').bind('click', function() {
        contactHotBox.showHotbox();
    });

    jQuery('#header-language-selector-link').bind('click', function() {
        languageHotBox.showHotbox();
    });

    jQuery('#header-login-link').bind('click', function() {
        loginHotBox.showHotbox();
    });

    jQuery('#hotbox-close-window').bind('click', function() {
        loginHotBox.hideHotbox();
    });
    
    jQuery('.hotbox-close-window').bind('click', function() {
        if (hotbox.getOpenStatus()) {
            hotbox.hideHotbox();
        }

        if (contactHotBox.getOpenStatus()) {
            contactHotBox.hideHotbox();
        }

        if (languageHotBox.getOpenStatus()) {
            languageHotBox.hideHotbox();
        }

        if (loginHotBox.getOpenStatus()) {
            loginHotBox.hideHotbox();
        }

        if (mapHotBox.getOpenStatus()) {
            mapHotBox.hideHotbox();
        }
    });


    jQuery('#header-map-link').bind('click', function() {
        mapHotBox.showHotbox();
        if (map == null) {
            map = new jQuery.VoOverviewMap('top');
            map.init();
        }

    });

    jQuery('#hotboxOverlay').bind('click', function() {
        if (hotbox.getOpenStatus()) {
            hotbox.hideHotbox();
        }

        if (contactHotBox.getOpenStatus()) {
            contactHotBox.hideHotbox();
        }

        if (languageHotBox.getOpenStatus()) {
            languageHotBox.hideHotbox();
        }

        if (loginHotBox.getOpenStatus()) {
            loginHotBox.hideHotbox();
        }

        if (mapHotBox.getOpenStatus()) {
            mapHotBox.hideHotbox();
        }
    });

    jQuery(document).keydown(function(e) {

        if (e.keyCode === 27) {
            // esc key pressed
            if (hotbox.getOpenStatus()) {
                hotbox.hideHotbox();
            }

            if (contactHotBox.getOpenStatus()) {
                contactHotBox.hideHotbox();
            }

            if (languageHotBox.getOpenStatus()) {
                languageHotBox.hideHotbox();
            }

            if (loginHotBox.getOpenStatus()) {
                loginHotBox.hideHotbox();
            }
        }

    });

    //Login error handling

    //    if (jQuery('#login-hotbox span.error').length) {
    //        loginHotBox.showHotbox();
    //    }

});



