Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/components/bitrix/mobileapp.filter/templates/.default/
Upload File :
Current File : /var/www/homesaver/www/bitrix/components/bitrix/mobileapp.filter/templates/.default/script.js

/**********Filter************/
__MAAdminFilter = function(params) {
	/*filterFields{VALUE:,NAME:,TYPE:}
	applyEvent, filterId, url, ajaxUrl, fieldEditUrl, selectAllConst*/
	for(var key in params)
		this[key] = params[key];

	this.curFieldId = "";
	this.fieldFilter = false;
	this.optionParams = {
			moduleId: 'mobileapp',
			optionName: 'filter_'+this.filterId
		};
	this.loadedScripts = {};
	this.flagLoadingScript = false;
	this.interval = {};
};

__MAAdminFilter.prototype.save = function()
{
	if(!this.optionParams || !this.optionParams.moduleId || !this.optionParams.optionName)
		return;

	BX.userOptions.del(this.optionParams.moduleId, this.optionParams.optionName);

	var value = '';

	for(var fieldId in this.filterFields)
	{
		if(this.filteredFields[fieldId])
		{
			value = this.getFieldValue(fieldId);
			this.filterFields[fieldId].VALUE = value;
			BX.userOptions.save(this.optionParams.moduleId, this.optionParams.optionName, fieldId, value);
		}
	}
};

__MAAdminFilter.prototype.getFieldValue = function(fieldId)
{
	var result ="",	fieldName, form;

	if(this.filterFields[fieldId].TYPE == "TEXT" || this.filterFields[fieldId].TYPE == "DATE")
	{
		var field = BX("field_id_"+fieldId);

		if(field && field.value)
			result = field.value;
	}
	else if(this.filterFields[fieldId].TYPE == "ONE_SELECT")
	{
		fieldName = "field_name_"+fieldId;
		form = BX("mapp_filter_form_id");

		if(form && form.elements && form.elements[fieldName])
		{
			for(var s=0, sl=form.elements[fieldName].length; s<sl; s++)
			{
				var el = form.elements[fieldName][s];

				if(el.checked)
				{
					if(el.value == this.selectAllConst)
						result = '';
					else
						result = el.value;

					break;
				}
			}
		}
	}
	else if(this.filterFields[fieldId].TYPE == "MULTI_SELECT")
	{
		form = BX("mapp_filter_form_id");
		fieldName = "field_name_"+fieldId;
		result = [];

		if(form && form.elements && form.elements[fieldName])
		{
			for(var s=0, sl=form.elements[fieldName].length; s<sl; s++)
			{
				var el = form.elements[fieldName][s];

				if(el.checked && el.value)
					result.push(el.value);
			}
		}
	}

	return result;
};

__MAAdminFilter.prototype.setFieldValue = function(fieldId, value)
{
	if(this.filterFields[fieldId].TYPE == "TEXT" || this.filterFields[fieldId].TYPE == "DATE")
	{
		var field = BX("field_id_"+fieldId);

		if(field && field.value)
			field.value = value;
	}
	else if(this.filterFields[fieldId].TYPE == "ONE_SELECT" || this.filterFields[fieldId].TYPE == "MULTI_SELECT")
	{
		var form = BX("mapp_filter_form_id"),
			fieldName = "field_name_"+fieldId;

		if(form && form.elements && form.elements[fieldName])
		{
			for(var s=0, sl=form.elements[fieldName].length; s<sl; s++)
			{
				var el = form.elements[fieldName][s];

				if((el.value == value && el.checked === false)||( el.value != value && el.checked === true) && el.id)
				{
					BX.onCustomEvent('onMappEditEltItemClick', [{id: el.id}]);
				}
			}
		}
	}
};

__MAAdminFilter.prototype.apply = function()
{
	var _this = this;
	this.save();

	setTimeout( function() {
		app.onCustomEvent(_this.applyEvent);
		app.closeController();
	}, 10);
};

__MAAdminFilter.prototype.reset = function()
{
	for(var i in this.filteredFields)
		this.setFieldValue(i, "");

	this.save();
};


__MAAdminFilter.prototype.showFieldsList = function()
{
	app.showModalDialog({ url: this.url+"&show_fields_list=Y" });
};

__MAAdminFilter.prototype.getHtmlAjax = function(visFields)
{
	if(!visFields)
		return false;

	var visFieldsFullInfo = {};

	for (var i in visFields)
		if(this.filterFields[i])
			visFieldsFullInfo[i] = this.filterFields[i];

	var _this = this,
		postData = {
		fields: visFieldsFullInfo,
		filter_id: this.filterId,
		sessid: BX.bitrix_sessid(),
		action: 'get_fields_html'
	};

	app.showPopupLoader({text: BX.message("MOBILE_APP_FILTER_SAVING")+"..."});

	BX.ajax({
		timeout:   30,
		method:   'POST',
		dataType: 'json',
		url:       this.ajaxUrl,
		data:      postData,
		onsuccess: function(result)
		{
			if(result && result.HTML)
			{
				var fltContent = BX("mapp_filter_content");

				if(fltContent)
					fltContent.innerHTML = result.HTML;

				var expr = /<script.*>[\s\S]*?<\/script>/gim;
				var script = result.HTML.match(expr),
					tmpScr = "";

				if(script !== null && script.length > 0)
					for (var i = 0, l = script.length - 1; i <= l; i++)
						_this.interval[i] = setInterval( _this.scriptExec(i, script[i], _this), 200);

				_this.filteredFields = visFieldsFullInfo;
				_this.save();

				app.hidePopupLoader();
			}
			else if(result.ERROR)
			{
				app.hidePopupLoader();
				app.alert({ text: 'getHtmlAjax() ERROR: '+result.ERROR });
			}
			else
			{
				app.hidePopupLoader();
				app.alert({ text: 'getHtmlAjax() !result.'});
			}
		},
		onfailure: function()
		{
			app.hidePopupLoader();
			app.alert({ text: 'getHtmlAjax() onfailure.'});
		}
	});
};

__MAAdminFilter.prototype.scriptExec = function(iCounter, script, _this)
{
	return function()
	{
		if(!_this.flagLoadingScript)
		{
			try
			{
				tmpScr = script.replace(/<script.*>/igm,"");
				tmpScr = tmpScr.replace(/<\/script>/igm,"");
				eval(tmpScr);
				clearInterval(_this.interval[iCounter]);
				delete(_this.interval[iCounter]);
			}
			catch(e)
			{
				//probably needed js not loaded yet
			}
		}
	};
};

__MAAdminFilter.prototype.onFieldValueChange = function(params)
{
	if(params.filterId != this.filterId)
		return true;

	this.setField(params.fieldId, params);

	var optSaveDelay = BX.userOptions.delay;
	BX.userOptions.delay = 100;
	this.save();
	BX.userOptions.delay = optSaveDelay;
};

__MAAdminFilter.prototype.showFieldEdit = function(fieldId)
{
	app.showModalDialog({
		url: this.url+"&edit_field_value=Y&filter_id="+this.filterId+"&field_id="+fieldId
	});
};

__MAAdminFilter.prototype.getDatePickerHtml = function(domObj)
{
	if(domObj && domObj.value !== undefined)
	{
		var startDate,
			today = new Date();

		if(domObj.value)
			startDate = domObj.value;
		else
			startDate = BX.formatDate(today, "DD.MM.YYYY");

		app.showDatePicker({
			start_date: startDate,
			format: 'dd.MM.yyyy',
			type: 'date',
			callback: function(strDate) { domObj.value = strDate; }
		});
	}
};

__MAAdminFilter.prototype.loadScript = function (url)
{
	this.flagLoadingScript = true;

	if(!this.loadedScripts[url])
	{
		var el = document.createElement("script");
		el.src = url;
		el.type="text/javascript";
		BX.findChild(document, {tagName:'head'},true).appendChild(el);
		this.loadedScripts[url] = true;
	}

	this.flagLoadingScript = false;
};