$(function () {

	wbCookiePolicy.init({container: $('#wbCookiePolicy')});
});

var wbCookiePolicy = {
	options: {
		duration: 500,
		expireDays: 30,
		alignment: 'bottom',
		position: 'absolute',
		addBodyMarginWhenVisible: '0'
	},

	checkCookie: function () {
		if (!Cookies.get('allowCookie')) {
			wbCookiePolicy.setBarPosition();
			wbCookiePolicy.options.container.slideDown(wbCookiePolicy.options.duration);
		} else {
			wbCookiePolicy.popupHidden();
		}
	},
	setCookie: function () {
		Cookies.set(
			'allowCookie',
			true,
			{
				expires: wbCookiePolicy.options.expireDays,
				domain: wbCookiePolicy.options.cookieDomain
			}
		);
		wbCookiePolicy.options.container.slideUp(wbCookiePolicy.options.duration);
	},
	popupVisible: function () {
		var body = $('body');
		body.addClass('wbCookiePolicy-visible');
		if(wbCookiePolicy.options.addBodyMarginWhenVisible.length > 1) {
			body.css('margin', wbCookiePolicy.options.addBodyMarginWhenVisible);
		}
	},
	popupHidden: function () {
		var body = $('body');
		body.removeClass('wbCookiePolicy-visible');
		if(wbCookiePolicy.options.addBodyMarginWhenVisible.length > 1) {
			body.animate({'margin': '0'}, wbCookiePolicy.options.duration);
		}
	},
	setBarPosition: function () {
		var styles = 'display: none;';
		styles += 'position: ' + wbCookiePolicy.options.position + ';';
		if (wbCookiePolicy.options.target) {
			wbCookiePolicy.options.target.attr('style', 'position: relative');
			styles += 'left: 0; right: auto;';
			wbCookiePolicy.options.target.prepend(
				wbCookiePolicy.options.container
			);
		} else {
			$('body').append(wbCookiePolicy.options.container);
		}

		if (wbCookiePolicy.options.alignment == 'top') {
			styles += 'top: 0; bottom: auto';
		} else {
			styles += 'top: bottom; bottom: 0';
		}

		wbCookiePolicy.options.container.attr('style', styles);
		wbCookiePolicy.popupVisible();
	},
	init: function (t) {
		var t = $.extend({}, t);

		if (wbCookiePolicy.options = t) {

			wbCookiePolicy.options.duration = wbCookiePolicy.options.container.data('duration');
			wbCookiePolicy.options.expireDays = wbCookiePolicy.options.container.data('expire-days');
			wbCookiePolicy.options.trigger = (wbCookiePolicy.options.container.data('target') ? $(wbCookiePolicy.options.container.data('target')) : $('#wbCookieEnable'));
			wbCookiePolicy.options.target = (wbCookiePolicy.options.container.data('target') ? $(wbCookiePolicy.options.container.data('target')) : null);
			wbCookiePolicy.options.alignment = wbCookiePolicy.options.container.data('alignment');
			wbCookiePolicy.options.position = wbCookiePolicy.options.container.data('position');
			wbCookiePolicy.options.addBodyMarginWhenVisible = wbCookiePolicy.options.container.data('add-body-margin');
			wbCookiePolicy.options.cookieDomain = wbCookiePolicy.options.container.data('cookie-domain');

			wbCookiePolicy.checkCookie();
			wbCookiePolicy.options.trigger.on('click', function (e) {
				e.preventDefault();
				wbCookiePolicy.setCookie();
				wbCookiePolicy.popupHidden();
			});
		}
	}
};
