if (!UserVoice) {
	var UserVoice = {};
}
UserVoice.Util = {
	sslAssetHost : "https://cdn.uservoice.com",
	assetHost : "http://cdn.uservoice.com",
	getAssetHost : function() {
		return ("https:" == document.location.protocol) ? this.sslAssetHost
				: this.assetHost;
	},
	render : function(template, params) {
		return template.replace(/\#{([^{}]*)}/g, function(a, b) {
			var r = params[b];
			return typeof r === 'string' || typeof r === 'number' ? r : a;
		})
	},
	toQueryString : function(params) {
		var pairs = [];
		for (key in params) {
			if (params[key] != null && params[key] != '') {
				pairs.push( [ key, params[key] ].join('='));
			}
		}
		return pairs.join('&');
	},
	isIE : function(test) {
		if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
			if (typeof test === "function") {
				return test(new Number(RegExp.$1));
			} else {
				return true;
			}
		} else {
			return false;
		}
	},
	isQuirksMode : function() {
		return document.compatMode && document.compatMode == "BackCompat";
	},
	includeCss : function(css) {
		var styleElement = document.createElement('style');
		styleElement.setAttribute('type', 'text/css');
		styleElement.setAttribute('media', 'screen');
		if (styleElement.styleSheet) {
			styleElement.styleSheet.cssText = css;
		} else {
			styleElement.appendChild(document.createTextNode(css));
		}
		document.getElementsByTagName('head')[0].appendChild(styleElement);
	}
}
UserVoice.Tab = {
	id : "uservoice-feedback-tab",
	css_template : "\ body a#uservoice-feedback-tab,\ body a#uservoice-feedback-tab:link {\ background-position: 2px 50% !important;\ position: fixed !important;\ top: 45% !important;\ display: block !important;\ width: 25px !important;\ height: 98px !important;\ margin: -45px 0 0 0 !important;\ padding: 0 !important;\ z-index: 100001 !important;\ background-position: 2px 50% !important;\ background-repeat: no-repeat !important;\ text-indent: -9000px;\ }\ \ body a#uservoice-feedback-tab:hover {\ cursor: pointer;\ }\ \ a##{id} { \ #{alignment}: 0; \ background-repeat: no-repeat; \ background-color: #{background_color}; \ background-image: url(#{text_url}); \ border: outset 1px #{background_color}; \ border-#{alignment}: none; \ }\ \ a##{id}:hover { \ background-color: #{hover_color}; \ border: outset 1px #{hover_color}; \ border-#{alignment}: none; \ }"
			+ ((UserVoice.Util.isIE() && (UserVoice.Util.isIE(function(v) { return v < 7 }) || (UserVoice.Util.isIE(function(v) { return v >= 7 }) && UserVoice.Util.isQuirksMode()))) ? "\ body a#uservoice-feedback-tab,\ body a#uservoice-feedback-tab:link {\ position: absolute !important;\ background-image: none !important;\ }\ a##{id} { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='#{text_url}'); }" : ""),
	show : function(options) {
		this.setupOptions(options || {});
		var html = '<a id="' + this.id + '"';
		html += ' href="'
				+ options.clickUrl
				+ '">'
				+ (this.options.tab_string[this.options.lang] ? this.options.tab_string[this.options.lang]
						: 'Open Feedback Dialog') + '</a>';
		var tab = document.createElement('div');
		tab.setAttribute('id', 'uservoice-feedback');
		tab.innerHTML = html;
		document.body.insertBefore(tab, document.body.firstChild);
		if (!this.options.no_styles) {
			UserVoice.Util.includeCss(UserVoice.Util.render(this.css_template, this.options));
		}
	},
	setupOptions : function(options) {
		this.options = {
			alignment : 'left',
			background_color : '#f00',
			text_color : 'white',
			hover_color : '#06C',
			lang : 'nl',
			no_styles : false
		};
		for (attr in options) {
			this.options[attr] = options[attr];
		}
		this.options.tab_string = {
			de : "Feedback",
			nl : "Feedback"
		};
		this.options.text_url = UserVoice.Util.getAssetHost()
				+ '/images/widgets/'
				+ (this.options.tab_string[this.options.lang] ? this.options.lang
						: 'en') + '/feedback_tab_' + this.options.text_color
				+ '.png';
		this.options.id = this.id;
	}
}

$(function() {
	if (typeof (uservoiceOptions) !== 'undefined' && uservoiceOptions.showTab == true) {
	    UserVoice.Tab.show(uservoiceOptions);
	}
});
