/** Copyright (c) 2006 UPT Ltd. Версия $Id: xsight.cAdvertisement.js,v 1.1 2006/08/28 15:49:48 viper Exp $ */

/**
 * Класс редактора целостности ссылок
 * @class
 * @extends cDBTable
 */
cAdvertisement = newClass(cDBTable, {

	/**
	* Объект динамического соединения
	* @protected
	* @type object
	*/
	_oConnection: null,

	/**
	* Конструктор класса
	* @public
	* @constructor
	* @param {string} pName имя формы
	* @param {string} pBase базовый URL сайта
	* @param {string} pCurrentLang аббревиатура текущего языка
	* @param {string} pDivUrl URL раздела сайта
	*/
	constructor:function(pName, pBase, pCurrentLang, pDivUrl)
	{
		// вызов родительского конструктора
		this.constructor.prototype.constructor.call(this, pName, pBase, pCurrentLang, pDivUrl);

		this._oConnection = new cConnection();
		this._oConnection.onreadystatechange = function(){this.fOnCallback()}.bind(this);
		this._oConnection.caching = false;
	},

	/**
	* Callback-метод при асинхронном ответе от удаленного соединения
	* @protected
	*/
	fOnCallback:function()
	{
		if (this._oConnection.readyState == 4)
		{
        	if (this._oConnection.responseJS)
        	{
        		var method = this._oConnection.responseJS.name;
        		eval(
        			'if (typeof(this.' + method + ') != "undefined") this.' +
        			method +
        			'(this._oConnection.responseJS.recordset); ' +
        			'else alert("' + method + globals.fGet('TXT_WAS_NOT_FOUND')+ '");'
        		);
        	}
		}
	},

	/**
	* Обработчик события клика на селектор
	* @public
	* @param integer pId идентификатор события
	*/
	fSwapADV: function(pId)
	{
		var location = this.fGetFullPath();

		this._oConnection.fOpen('POST', location, true);

		var params = {
        	single: this._sSysObj,
        	adv_id: pId,
        	ajax: true,
        	ajax_method: 'fOnSwapADV'
		};
		params[this._sSysObj] = {SwapADV: true};

        this._oConnection.fSend(params);
	},

	/**
	* Обработчик динамического ответа смены состояния флага типа ссылки
	* @public
	* @param object pRecordset
	*/
	fOnSwapADV: function(pRecordset)
	{
		var data = [];

		if (pRecordset && pRecordset[0] && pRecordset[0].fields)
		{
			for (var i=0; i<pRecordset[0].fields.length; i++)
			{
				var field = pRecordset[0].fields[i];
				data[field.name] = field._value;
			}
		}

		if (data.adv_id == '') return;
		if (data.error != '')
		{
			alert(data.error);
			return;
		}

		var el = this.fGetObj("swap_adv_" + data.adv_id);
		if (el)
			el.src = (data.new_value == "1")?"i/def/check2.gif":"i/def/check0.gif";
	},
	
	/**
	* Метод сохранения формы добавления нового сообщения
	* @public
	*/
	fSaveUserAdd:function()
	{
		this.fGetFormId(false);

		var btn = this.fGetActionButton();

		if (!btn)
		{
			alert(globals.fGet('ERR_NO_ACTION_BUTTON_CATCHED'));
			return false;
		}

		if (this.fCheckForPatternMatchingInForm(this._oForm))
		{
			this.action = this.fGetFullPath();
			this.fPrepareData();
			this.fCreateHidden(btn.name, '');
			this._oForm.submit();
			return true;
		}
	   	return false;
	},
	
	/**
	* Метод отмены создания новго объявления
	* @public
	*/
	fCancelUserAdd:function()
	{
		this.fGetFormId(false);

		var btn = this.fGetActionButton();

		if (!btn)
		{
			alert(globals.fGet('ERR_NO_ACTION_BUTTON_CATCHED'));
			return false;
		}

		this.action = this.fGetFullPath();
		this.fPrepareData();
		this.fCreateHidden(btn.name, '');
		this._oForm.submit();
		return true;
	}

});

