(function($){
    var cookiePrefix = 'csw_';
    var partnerSystemParameterName = 'sid';

    var getTemplateCookie = function(template) {
        return getCookie(cookiePrefix+template);
    };
    var setTemplateCookie = function(template) {
        setCookie(cookiePrefix+template, true, { expires: 31536000, path: '/', domain: getDomainForCookie() });
    };

    window.regionWidget = function(calling, url, template) {
        if (navigator.cookieEnabled && !getTemplateCookie(template) && url && template) {
            var params = {
                'tpl': template,
                'calling': calling,
                'sid': getParameterByName(partnerSystemParameterName)
            };

            var onData = function(data){
                try {
                    templateHandlers[template.toLowerCase()](template.toLowerCase(), data);
                } catch(e) {}
            };

            $.getJSON(url+'?jsoncallback=?', params, onData);
        }
    };

    var templateHandler_popup = function(template, data) {
        setTemplateCookie(template);

        if (data.msg) {
            $("BODY").append('<div class="cluster-change-overlay" id="cluster-change-overlay"></div>');
            $('.cluster-change-overlay').html(data.msg).show();
            $('.cluster-change-content').center({vertical:true});
            $("HTML").addClass("scrolllock");
            var $body = $(this.ie6 ? document.body : document);
            var $heightpage = $body.height() + 200;
            $('.cluster-change-overlay-bg').css({height: $heightpage});
        }
    };

    var templateHandler_top = function(template, data) {
        if (data.msg) {
            $(".b-portalmenu").after(data.msg);
            $('#top-widget-button-close').click(function(){
                setTemplateCookie(template);
                $('#top-widget-wrapper').remove();
            })
        } else {
            setTemplateCookie(template);
        }
    };

    var templateHandler_registration = function(template, data) {
        if (data.msg) {
            $("#registration-region-widget").html(data.msg).show();
        }
    };

    var templateHandlers = {
        'popup': templateHandler_popup,
        'top': templateHandler_top,
        'registration': templateHandler_registration
    };
})(jQuery);

