function StrixCalendar(opts) {
	opts._patchObject = function(cal) {
		cal.params.inputField._calendar = cal;
		cal.params.displayArea._calendar = cal;
		if (!cal.isPopup) return cal;
		if (!Calendar.is_ie) return cal;
		cal.hideShowCovered = function() { };
		cal.ORIG_create = cal.create;
		cal.create = function() {
			var ret = this.ORIG_create.apply(this, arguments);
			var ifr = Calendar.createElement('IFRAME');
			ifr.src = 'about:blank';
			ifr.frameBorder = '0';
			ifr.scrolling = 'no';
			ifr.tabindex = '-1';
			ifr.style.position = 'absolute';
			ifr.style.zIndex = '-1';
			ifr.style.left = '0px';
			ifr.style.top = '0px';
			ifr.style.filter = 'alpha(style=0,opacity=0)';
			this.element.appendChild(ifr);
			this.iframe = ifr;
			return ret;
		};
		cal.ORIG_show = cal.show;
		cal.show = function() {
			var ret = this.ORIG_show.apply(this, arguments);
			var _t = this;
			setTimeout(function() {
				_t.iframe.style.width = String(_t.element.offsetWidth) + 'px';
				_t.iframe.style.height = String(_t.element.offsetHeight) + 'px';
			}, 0);
			return ret;
		};
		return cal;
	};
	return Calendar.setup(opts);
};

