Ct_Page.loadComponentScript('Ct_PopupContent');
Ct_Page.scriptIsReady('Ct_PopupContent', function() {

	window.Ct_PopupContent_Link = Class.create(Ct_PopupContent, {

		_loader: null,
		_isDone: true,

		_setNamespace: function() {
			this._namespace = 'ctPopupContentLink';
		},

		__construct: function($super) {
			$super();
			// make loader
			this._loader = new Element('div', {className: 'ctComponent-blockLoader dark'});
		},

		onElementClick: function(event) {
			var element, config, request, data, popupId;

			Event.stop(event);
			element = Event.findElement(event, '.' + this._namespace);
			config = element.retrieve('config', {});
			data = 'data' in config ? config.data : {};

			popupId = element.retrieve('popupId');
			this._popupComponent.update(popupId, this._loader);
			try {
				this._popupComponent.setTitle(popupId, config.title);
			} catch(ex) {
			}
			this._popupComponent.show(popupId);

			// request
			request = Ct_Page.getRequest(element.identify(), 'ajax');
			request.url = config.url;
			request.method = config.method || 'POST';

			request.options = {
				onCreate: Prototype.emptyFunction,
				parameters: data
			};

			if (this._isDone) {
				this._isDone = false;
				request.send();
			}
		},

		refresh: function(ident, response) {
			var element;

			element = $(ident);

			if (!Object.isElement(element)) {
				this._isDone = true;
				return;
			}

			if (response.html && response.html.length) {
				this._popupComponent.smoothUpdate(element.retrieve('popupId'), response.html, {
					afterFinish: function() {
						this._isDone = true;
					}.bind(this)
				});
			} else {
				this._isDone = true;
			}
		},

		x: null

	});

	Ct_Page.registerScript('Ct_PopupContent_Link');
});
