Your IP : 3.135.192.102


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/js/crm/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/js/crm/crm.js

if (!obCrm)
{
	var obCrm = {};
}

CRM = function(crmID, div, el, name, element, prefix, multiple, entityType, localize, disableMarkup, options)
{
	this.crmID = crmID;
	this.div = div;
	this.el = el;
	this.name = name;
	this.PopupEntityType = entityType;
	this.PopupTabs = {};
	this.PopupElement =  element;
	this.PopupPrefix = prefix;
	this.PopupMultiple = multiple;
	this.PopupBlock = {};
	this.PopupSearch = {};
	this.PopupSearchInput = null;

	this.PopupTabsIndex = 0;
	this.PopupTabsIndexId = '';
	this.PopupLocalize = localize;

	this.popup = null;
	this.onSaveListeners = [];
	this.disableMarkup = !!disableMarkup; //disable call 'PopupCreateValue' on save
	this.onBeforeSearchListeners = [];

	this.options = {
		requireRequisiteData: false,
		searchOptions: {}
	};
	if (options && typeof(options) === "object")
	{
		if (!!options["requireRequisiteData"])
			this.options.requireRequisiteData = true;

		if (BX.type.isPlainObject(options["searchOptions"]))
			this.options.searchOptions = options["searchOptions"];
	}
};

CRM.prototype.Init = function()
{
	this.popupShowMarkup();

	this.PopupTabs = BX.findChildren(BX("crm-"+this.crmID+"_"+this.name+"-tabs"), {className : "crm-block-cont-tabs"});
	if(this.PopupTabs.length > 0)
	{
		this.PopupTabsIndex = 0;
		this.PopupTabsIndexId = this.PopupTabs[0].id;
	}

	this.PopupItem = {};
	this.PopupItemSelected = {};
	for (var i in this.PopupElement)
		this.PopupAddItem(this.PopupElement[i]);

	this.PopupBlock = BX.findChildren(BX("crm-"+this.crmID+"_"+this.name+"-blocks"), {className : "crm-block-cont-block"});
	this.PopupSearch = BX.findChildren(BX("crm-"+this.crmID+"_"+this.name+"-block-cont-search"), {className : "crm-block-cont-search-tab"});
	this.PopupSearchInput = BX("crm-"+this.crmID+"_"+this.name+"-search-input");

	for(var i = 0; i<this.PopupTabs.length; i++)
		eval('BX.bind(this.PopupTabs[i], "click", function(event){ CRM.PopupShowBlock("' + this.crmID + '", this); BX.PreventDefault(event); })');

	for(var i = 0; i<this.PopupSearch.length; i++)
		eval('BX.bind(this.PopupSearch[i], "click", function(event){ CRM.PopupShowSearchBlock("' + this.crmID + '", this); BX.PreventDefault(event); })');

	eval('BX.bind(this.PopupSearchInput, "keyup", function(event){ CRM.SearchChange("' + this.crmID + '")})');

	this.PopupSave();

	BX.onCustomEvent(window, 'onCrmSelectorInit', [this.crmID, this.name, this]);
};

CRM.prototype.Clear = function()
{
	if (this.popup)
	{
		this.popup.close();
		this.popup.destroy();
	}

	var inputBox = BX("crm-"+this.crmID+"_"+this.name+"-input-box");
	if (inputBox)
	{
		this.div.removeChild(inputBox);
		BX.remove(inputBox);
	}

	var textBox = BX("crm-"+this.crmID+"_"+this.name+"-text-box");
	if (textBox)
	{
		BX.remove(textBox);
	}

	var htmlBox = BX("crm-"+this.crmID+"_"+this.name+"-html-box");
	if (htmlBox)
	{
		BX.remove(htmlBox);
	}
};

CRM.Set = function(el, name, subIdName, element, prefix, multiple, entityType, localize, disableMarkup, options)
{
	var crmID = false;
	if (el && BX.isNodeInDom(el))
	{
		crmID = el.id + subIdName;
		if (obCrm[crmID])
		{
			obCrm[crmID].Clear();
			delete obCrm[crmID];
		}

		obCrm[crmID] = new CRM(crmID, CRM.GetWrapperDivPa(el), el, name, element, prefix, multiple, entityType, localize, disableMarkup, options);
		obCrm[crmID].Init();
	}
	return crmID;
};

CRM.GetElementForm = function (pn)
{
	return BX.findParent(pn, { "tagName":"FORM" });
};

CRM.GetWrapperDivPr = function (pn, name)
{
	return BX.findPreviousSibling(pn, { "tagName": "DIV", "property": { "name": "crm-"+ name +"-box" } });
};

CRM.GetWrapperDivN = function (pn, name)
{
	return BX.findNextSibling(pn, { "tagName": "DIV", "property": { "name": "crm-"+ name +"-box" } });
};

CRM.GetWrapperDivPa = function (pn, name)
{
	while(pn.nodeName != 'DIV' && pn.name != 'crm-'+name+'-box')
		pn = pn.parentNode;

	return pn.parentNode;
};

CRM.prototype.Open = function (params)
{
	if(!BX.type.isPlainObject(params))
	{
		params = {};
	}

	var titleBar = (BX.type.isPlainObject(params["titleBar"]) || BX.type.isNotEmptyString(params["titleBar"]))
		? params["titleBar"] : null;
	var closeIcon = BX.type.isPlainObject(params["closeIcon"])
		? params["closeIcon"] : null;
	var closeByEsc = BX.type.isBoolean(params["closeByEsc"])
		? params["closeByEsc"] : false;
	var autoHide = BX.type.isBoolean(params["autoHide"])
		? params["autoHide"] : !this.PopupMultiple;
	var anchor = BX.type.isElementNode(params["anchor"])
		? params["anchor"] : this.el;
	var gainFocus = BX.type.isBoolean(params["gainFocus"]) ? params["gainFocus"] : true;

	if (BX.PopupWindowManager._currentPopup !== null
		&& BX.PopupWindowManager._currentPopup.uniquePopupId == "CRM-"+this.crmID+"-popup")
	{
		BX.PopupWindowManager._currentPopup.close();
	}
	else
	{
		var buttonsAr = [];
		if (this.PopupMultiple)
		{
			buttonsAr = [
				new BX.PopupWindowButton({
					text : this.PopupLocalize['ok'],
					className : "popup-window-button-accept",
					events : {
						click: BX.delegate(this._handleAcceptBtnClick, this)
					}
				}),

				new BX.PopupWindowButtonLink({
					text : this.PopupLocalize['cancel'],
					className : "popup-window-button-link-cancel",
					events : {
						click: function() { this.popupWindow.close(); }
					}
				})
			];
		}
		else
		{
			buttonsAr = [
				new BX.PopupWindowButton({
					text : this.PopupLocalize['close'],
					className : "popup-window-button-accept",
					events : {
						click: function() { this.popupWindow.close(); }
					}
				})
			];
		}
		this.popup = BX.PopupWindowManager.create(
			"CRM-"+this.crmID+"-popup",
			anchor,
			{
				content : BX("crm-"+this.crmID+"_"+this.name+"-block-content-wrap"),
				titleBar: titleBar,
				closeIcon: closeIcon,
				closeByEsc: closeByEsc,
				offsetTop : 2,
				offsetLeft : -15,
				zIndex : 5000,
				buttons : buttonsAr,
				autoHide : autoHide
			}
		);

		this.popup.show();

		if(gainFocus)
		{
			BX.focus(this.PopupSearchInput);
		}
	}
	return false;
};

CRM.PopupSave2 = function(crmID)
{
	if (!obCrm[crmID])
		return false;

	obCrm[crmID].PopupSave();
};

CRM.prototype._handleAcceptBtnClick = function()
{
	this.PopupSave();
	this.popup.close();
};

CRM.prototype.AddOnSaveListener = function(listener)
{
	if(typeof(listener) != 'function')
	{
		return;
	}

	var ary = this.onSaveListeners;
	for(var i = 0; i < ary.length; i++)
	{
		if(ary[i] == listener)
		{
			return;
		}
	}
	ary.push(listener);
};

CRM.prototype.RemoveOnSaveListener = function(listener)
{
	var ary = this.onSaveListeners;
	for(var i = 0; i < ary.length; i++)
	{
		if(ary[i] == listener)
		{
			ary.splice(i, 1);
			break;
		}
	}
};

CRM.prototype.AddOnBeforeSearchListener = function(listener)
{
	if(typeof(listener) != 'function')
	{
		return;
	}

	var ary = this.onBeforeSearchListeners;
	for(var i = 0; i < ary.length; i++)
	{
		if(ary[i] == listener)
		{
			return;
		}
	}
	ary.push(listener);
};

CRM.prototype.RemoveOnBeforeSearchListener = function(listener)
{
	var ary = this.onBeforeSearchListeners;
	for(var i = 0; i < ary.length; i++)
	{
		if(ary[i] == listener)
		{
			ary.splice(i, 1);
			break;
		}
	}
};

CRM.prototype.PopupSave = function()
{
	var arElements = {};
	for (var i in this.PopupEntityType)
	{
		var elements = BX.findChildren(BX("crm-"+this.crmID+"_"+this.name+"-block-"+this.PopupEntityType[i]+"-selected"), {className: "crm-block-cont-block-item"});
		if (elements !== null)
		{
			var el = 0;
			arElements[this.PopupEntityType[i]] = {};
			for(var e=0; e<elements.length; e++)
			{
				var elementIdLength = "selected-crm-"+this.crmID+"_"+this.name+"-block-item-";
				var elementId = elements[e].id.substr(elementIdLength.length);

				var data =  {
					'id' : this.PopupItem[elementId]['id'],
					'type' : this.PopupEntityType[i],
					'place' : this.PopupItem[elementId]['place'],
					'title' : this.PopupItem[elementId]['title'],
					'desc' : this.PopupItem[elementId]['desc'],
					'url' : this.PopupItem[elementId]['url'],
					'image' : this.PopupItem[elementId]['image'],
					'largeImage' : this.PopupItem[elementId]['largeImage']
				};

				if(typeof(this.PopupItem[elementId]['customData']) != 'undefined')
				{
					data['customData'] = this.PopupItem[elementId]['customData'];
				}
				if(typeof(this.PopupItem[elementId]['advancedInfo']) != 'undefined')
				{
					data['advancedInfo'] = this.PopupItem[elementId]['advancedInfo'];
				}

				arElements[this.PopupEntityType[i]][el] = data;

				el++;
			}
		}
	}

	var ary = this.onSaveListeners;
	if(ary.length > 0)
	{
		for(var j = 0; j < ary.length; j++)
		{
			try
			{
				ary[j](arElements);
			}
			catch(ex)
			{
			}
		}
	}

	if(!this.disableMarkup)
	{
		this.PopupCreateValue(arElements);
	}
};

CRM.prototype.ClearSelectItems = function()
{
	this.PopupItemSelected = {};
};

CRM.PopupShowBlock = function(crmID, element, search)
{
	if (!obCrm[crmID])
		return false;

	for(var i=0; i<obCrm[crmID].PopupTabs.length; i++)
	{
		if(obCrm[crmID].PopupTabs[i] == element)
		{
			obCrm[crmID].PopupTabsIndex=i;
			obCrm[crmID].PopupTabsIndexId = obCrm[crmID].PopupTabs[i].id;
		}
		obCrm[crmID].PopupBlock[i].style.display="none";
		BX.removeClass(obCrm[crmID].PopupTabs[i],"selected");
	}
	if(!search)
	{
		BX.addClass(element, "selected");
		obCrm[crmID].PopupSearchInput.value = "";
		BX('crm-'+crmID+'_'+obCrm[crmID].name+'-block-search').innerHTML = '';
	}
	else
		BX.addClass(obCrm[crmID].PopupTabs[obCrm[crmID].PopupTabsIndex], "selected");

	obCrm[crmID].PopupBlock[obCrm[crmID].PopupTabsIndex].style.display="block";
	BX('crm-'+crmID+'_'+obCrm[crmID].name+'-block-search').style.display="none";
	BX.removeClass(obCrm[crmID].PopupSearch[1], "selected");
	BX.addClass(obCrm[crmID].PopupSearch[0], "selected");

	BX.focus(obCrm[crmID].PopupSearchInput);
};

CRM.PopupShowSearchBlock = function(crmID, element)
{
	if (!obCrm[crmID])
		return false;

	for(var i=0; i<obCrm[crmID].PopupBlock.length; i++)
		obCrm[crmID].PopupBlock[i].style.display="none";

	var search=true;
	if(element == obCrm[crmID].PopupSearch[0])
	{
		CRM.PopupShowBlock(crmID, BX(obCrm[crmID].CrmPopupTabsIndexId), search);
		return false;
	}

	BX('crm-'+obCrm[crmID].crmID+"_"+obCrm[crmID].name+'-block-search').style.display="block";
	BX.removeClass(obCrm[crmID].PopupSearch[0], "selected");
	BX.addClass(element, "selected");

	BX.focus(obCrm[crmID].PopupSearchInput);
};

CRM.PopupSelectItem = function(crmID, element, tab, unsave, select)
{
	if (!obCrm[crmID])
		return false;

	var flag=element;
	if(flag.check)
	{
		if (select === undefined || select == false)
			CRM.PopupUnselectItem(crmID, element.id, "selected-"+element.id);
		return false;
	}

	elementIdLength = "crm-"+crmID+'_'+obCrm[crmID].name+"-block-item-";
	elementId = element.id.substr(elementIdLength.length);
	var addCrmItems=document.createElement('span');
	addCrmItems.className = "crm-block-cont-block-item";
	addCrmItems.id="selected-"+element.id;

	var addCrmDelBut=document.createElement('i');
	var addCrmLink=document.createElement('a');
	addCrmLink.href=obCrm[crmID].PopupItem[elementId]['url'];
	addCrmLink.target="_blank";

	var blockWrap;
	if (tab === null)
	{
		if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+'_'+obCrm[crmID].name+"-tab-lead")
			blockWrap=BX("crm-"+crmID+'_'+obCrm[crmID].name+"-block-lead-selected");

		if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+'_'+obCrm[crmID].name+"-tab-contact")
			blockWrap=BX("crm-"+crmID+'_'+obCrm[crmID].name+"-block-contact-selected");

		if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+'_'+obCrm[crmID].name+"-tab-deal")
			blockWrap=BX("crm-"+crmID+'_'+obCrm[crmID].name+"-block-deal-selected");

		if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+'_'+obCrm[crmID].name+"-tab-quote")
			blockWrap=BX("crm-"+crmID+'_'+obCrm[crmID].name+"-block-quote-selected");

		if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+'_'+obCrm[crmID].name+"-tab-company")
			blockWrap=BX("crm-"+crmID+'_'+obCrm[crmID].name+"-block-company-selected");

	}
	else
		blockWrap=BX("crm-"+crmID+'_'+obCrm[crmID].name+"-block-"+tab+"-selected");

	if(blockWrap.querySelector("[id='" + ("selected-"+element.id).replace(new RegExp("search$"), tab) + "']")
		|| blockWrap.querySelector("[id='" + ("selected-"+element.id).replace(new RegExp(tab + "$"), "search") + "']")
	)
	{
		return;
	}

	if (obCrm[crmID].PopupMultiple)
	{
		blockTitle = BX.findChild(blockWrap, { className : "crm-block-cont-right-title-count"}, true);
		blockTitle.innerHTML = parseInt(blockTitle.innerHTML)+1;
		BX.addClass(element, "crm-block-cont-item-selected");
		BX.addClass(blockWrap, "crm-added-item");
		flag.check=1;
	}
	else
	{
		for (var i in obCrm[crmID].PopupEntityType)
		{
			BX.removeClass(BX("crm-"+crmID+'_'+obCrm[crmID].name+"-block-"+obCrm[crmID].PopupEntityType[i]+"-selected"), "crm-added-item");
			elements = BX.findChildren(BX("crm-"+crmID+'_'+obCrm[crmID].name+"-block-"+obCrm[crmID].PopupEntityType[i]+"-selected"), {className: "crm-block-cont-block-item"});
			if (elements !== null)
				for (var i in elements)
					BX.remove(elements[i]);

		}
	}

	blockWrap.appendChild(addCrmItems).appendChild(addCrmDelBut);

	blockWrap.appendChild(addCrmItems).appendChild(addCrmLink).innerHTML=BX.util.htmlspecialchars(obCrm[crmID].PopupItem[elementId]['title']);

	eval('BX.bind(addCrmDelBut, "click", function(event) {CRM.PopupUnselectItem("'+crmID+'", element.id, "selected-"+element.id); BX.PreventDefault(event);})');

	obCrm[crmID].PopupItemSelected[elementId] = element;

	BX.onCustomEvent(window, 'onCrmSelectedItem', [obCrm[crmID].PopupItem[elementId]]);

	if (!obCrm[crmID].PopupMultiple && (unsave === undefined || unsave == false))
	{
		obCrm[crmID].PopupSave();

		if (BX.PopupWindowManager._currentPopup !== null
			&& BX.PopupWindowManager._currentPopup.uniquePopupId == "CRM-"+this.crmID+"-popup")
		{
			BX.PopupWindowManager._currentPopup.close();
		}
	}
};

CRM.PopupUnselectItem = function(crmID, element, selected)
{
	if (!obCrm[crmID])
		return false;

	if (obCrm[crmID].PopupMultiple)
	{
		if(BX(selected).parentNode.getElementsByTagName('span').length == 3)
			BX.removeClass(BX(selected).parentNode, "crm-added-item");

		blockTitle = BX.findChild(BX(selected).parentNode, { className : "crm-block-cont-right-title-count"}, true);
		blockTitle.innerHTML = parseInt(blockTitle.innerHTML)-1;

		obj = BX(element);
		if (obj !== null)
		{
			obj.check=0;
			BX.removeClass(obj, "crm-block-cont-item-selected");
		}
	}
	elementIdLength = "crm-"+crmID+'_'+obCrm[crmID].name+"-block-item-";
	elementId = element.substr(elementIdLength.length);
	delete obCrm[crmID].PopupItemSelected[elementId];

	BX.remove(BX(selected));

	BX.onCustomEvent(window, 'onCrmUnSelectedItem', [obCrm[crmID].PopupItem[elementId]]);
};

CRM.prototype.SetPopupItems = function(place, items)
{
	this.PopupItem = {};
	this.PopupItemSelected = {};

	var placeHolder = BX('crm-' + this.crmID + '_' + this.name + '-block-' + place);
	BX.cleanNode(placeHolder);

	for (var i = 0; i < items.length; i++)
	{
		var item = items[i];
		item['place'] = place;
		//item['selected'] = 'Y';
		this.PopupAddItem(item);
	}
};

CRM.prototype.PopupSetItem = function(id)
{
	ar = id.toString().split('_');
	if (ar[1] !== undefined)
	{
		entityShortName = ar[0];
		entityId = ar[1];

		if (entityShortName == 'L')
			entityType = 'lead';
		else if (entityShortName == 'C')
			entityType = 'contact';
		else if (entityShortName == 'CO')
			entityType = 'company';
		else if (entityShortName == 'D')
			entityType = 'deal';
		else if (entityShortName == 'Q')
			entityType = 'quote';
		else if (entityShortName == 'O')
			entityType = 'order';
	}
	else
	{
		for (var i in this.PopupEntityType)
			entityType = this.PopupEntityType[i];
		entityId = id;
	}

	var crm = this;

	var options = {
		'REQUIRE_REQUISITE_DATA': (crm.options.requireRequisiteData) ? 'Y' : 'N'
	};

	if (BX.type.isPlainObject(crm.options["searchOptions"]))
	{
		var searchOptions = crm.options["searchOptions"];
		for(var optionName in searchOptions)
		{
			if (searchOptions.hasOwnProperty(optionName))
				options[optionName] = searchOptions[optionName];
		}
	}

	BX.ajax({
		url: '/bitrix/components/bitrix/crm.'+entityType+'.list/list.ajax.php',
		method: 'POST',
		dataType: 'json',
		data: {'MODE' : 'SEARCH', 'VALUE' : '[' + entityId + ']', 'MULTI' : (crm.PopupPrefix? 'Y': 'N'), 'OPTIONS': options},
		onsuccess: function(data)
		{
			for (var i in data) {
				data[i]['selected'] = 'Y';
				crm.PopupAddItem(data[i]);
			}
			crm.PopupSave();
		},
		onfailure: function(data)
		{
		}
	});
};

CRM.prototype.PopupAddItem = function(arParam)
{
	if (arParam['place'] === undefined || arParam['place'] == '')
		arParam['place'] = arParam['type'];

	bElementSelected = false;
	if (this.PopupItemSelected[arParam['id']+'-'+arParam['place']] !== undefined)
		bElementSelected = true;

	itemBody = document.createElement("span");
	itemBody.id = 'crm-'+this.crmID+"_"+this.name+'-block-item-'+arParam['id']+'-'+arParam['place'];
	itemBody.className = "crm-block-cont-item"+(bElementSelected? " crm-block-cont-item-selected": "");
	itemBody.check=bElementSelected? 1: 0;

	if (arParam['type'] == 'contact' || arParam['type'] == 'company')
	{
		itemAvatar = document.createElement("span");
		itemAvatar.className = "crm-avatar";

		if (arParam['image'] !== undefined && arParam['image'] != '')
		{
			itemAvatar.style.background = 'url("' + arParam['image'] + '") no-repeat';
		}

		itemBody.appendChild(itemAvatar);
	}

	itemTitle = document.createElement("ins");
	itemTitle.appendChild(document.createTextNode(arParam['title']));
	itemId = document.createElement("var");
	itemId.className = "crm-block-cont-var-id";
	itemId.appendChild(document.createTextNode(arParam['id']));
	itemUrl = document.createElement("var");
	itemUrl.className = "crm-block-cont-var-url";
	itemUrl.appendChild(document.createTextNode(arParam['url']));

	var itemDesc = document.createElement("span");
	var descriptionHtml = BX.prop.getString(arParam, 'desc_html', '');
	if(descriptionHtml !== '')
	{
		descriptionHtml = BX.util.strip_tags(descriptionHtml);
	}
	else
	{
		descriptionHtml = this.prepareDescriptionHtml(BX.prop.getString(arParam, 'desc', ''));
	}
	itemDesc.innerHTML = descriptionHtml;

	var bodyBox = document.createElement("span");
	bodyBox.className = "crm-block-cont-contact-info";
	bodyBox.appendChild(itemTitle);
	bodyBox.appendChild(itemDesc);
	bodyBox.appendChild(itemId);
	bodyBox.appendChild(itemUrl);
	itemBody.appendChild(bodyBox);
	itemBody.appendChild(document.createElement("i"));

	bDefinedItem = false;
	if (arParam['place'] != 'search' && this.PopupItem[arParam['id']+'-'+arParam['place']] !== undefined)
		bDefinedItem = true;
	else
		this.PopupItem[arParam['id']+'-'+arParam['place']] = arParam;

	var placeHolder = BX("crm-"+this.crmID+"_"+this.name+"-block-"+arParam['place']);

	if (placeHolder !== null)
	{
		if (!bDefinedItem)
			placeHolder.appendChild(itemBody);

		CRM._bindPopupItem(this.crmID, itemBody, arParam["type"]);

		if (arParam['selected'] !== undefined && arParam['selected'] == 'Y')
			CRM.PopupSelectItem(this.crmID, itemBody, arParam['type'], true, true);
	}
};
CRM._bindPopupItem = function(ownerId, itemBody, type)
{
	BX.bind(
		itemBody,
		"click",
		function(e){ CRM.PopupSelectItem(ownerId, itemBody, type); return BX.PreventDefault(e); });
};
CRM.prototype.prepareDescriptionHtml = function(str)
{
	return BX.type.isNotEmptyString(str) ? BX.util.htmlspecialchars(str) : "";
};
CRM.SearchChange = function(crmID)
{
	if (!obCrm[crmID])
		return false;

	var searchValue = obCrm[crmID].PopupSearchInput.value;
	if (searchValue == '')
		return false;

	var entityType = '';
	if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+"_"+obCrm[crmID].name+"-tab-lead")
		entityType = 'lead';
	else if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+"_"+obCrm[crmID].name+"-tab-contact")
		entityType = 'contact';
	else if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+"_"+obCrm[crmID].name+"-tab-deal")
		entityType = 'deal';
	else if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+"_"+obCrm[crmID].name+"-tab-quote")
		entityType = 'quote';	
	else if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+"_"+obCrm[crmID].name+"-tab-order")
		entityType = 'order';
	else if(obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+"_"+obCrm[crmID].name+"-tab-company")
		entityType = 'company';
	else
		entityType = obCrm[crmID].PopupEntityType;

	var options = {
		'REQUIRE_REQUISITE_DATA': (obCrm[crmID].options.requireRequisiteData) ? 'Y' : 'N'
	};

	if (BX.type.isPlainObject(obCrm[crmID].options["searchOptions"]))
	{
		var searchOptions = obCrm[crmID].options["searchOptions"];
		for(var optionName in searchOptions)
		{
			if (searchOptions.hasOwnProperty(optionName))
				options[optionName] = searchOptions[optionName];
		}
	}

	var postData = { 'MODE' : 'SEARCH', 'VALUE' : searchValue, 'MULTI' : (obCrm[crmID].PopupPrefix? 'Y': 'N'),
		'OPTIONS': options };
	if (crmID === "new_invoice_product_button")
	{
		postData["ENTITY_TYPE"] = "INVOICE";
	}
	var postUrl = '/bitrix/components/bitrix/crm.' + entityType + '.list/list.ajax.php';
	var handlers = obCrm[crmID].onBeforeSearchListeners;
	if(handlers && BX.type.isArray(handlers) && handlers.length > 0)
	{
		var data = { 'entityType':entityType, 'postData': postData };
		for(var j = 0; j < handlers.length; j++)
		{
			try
			{
				handlers[j](data);
			}
			catch(ex)
			{
			}

			postData = data['postData'];
		}
	}

	CRM.PopupShowSearchBlock(crmID, obCrm[crmID].PopupSearch[1]);

	setTimeout(function() {
		if(typeof(obCrm[crmID]) === "undefined")
		{
			return;
		}

		if (BX('crm-'+crmID+"_"+obCrm[crmID].name+'-block-search').innerHTML == ''
		&& obCrm[crmID].PopupTabsIndexId=="crm-"+crmID+"_"+obCrm[crmID].name+"-tab-"+entityType) {
			var spanWait = document.createElement('div');
			spanWait.className="crm-block-cont-search-wait";
			spanWait.innerHTML=obCrm[crmID].PopupLocalize['wait'];
			BX('crm-'+crmID+"_"+obCrm[crmID].name+'-block-search').appendChild(spanWait);
		}
	}, 3000);
	BX.ajax({
		url: postUrl,
		method: 'POST',
		dataType: 'json',
		data: postData,
		onsuccess: function(data)
		{
			if (obCrm[crmID].PopupTabsIndexId!="crm-"+crmID+"_"+obCrm[crmID].name+"-tab-"+entityType)
				return false;

			BX('crm-'+crmID+"_"+obCrm[crmID].name+'-block-search').className = 'crm-block-cont-block crm-block-cont-block-'+entityType;
			BX('crm-'+crmID+"_"+obCrm[crmID].name+'-block-search').innerHTML = '';
			el = 0;
			for (var i in data) {
				data[i]['place'] = 'search';
				obCrm[crmID].PopupAddItem(data[i]);
				el++;
			}
			if (el == 0)
			{
				var spanWait = document.createElement('div');
				spanWait.className="crm-block-cont-search-no-result";
				spanWait.innerHTML=obCrm[crmID].PopupLocalize['noresult'];
				BX('crm-'+crmID+"_"+obCrm[crmID].name+'-block-search').appendChild(spanWait);
			}
		},
		onfailure: function(data)
		{

		}
	});
};

CRM.prototype.PopupCreateValue = function(arElements)
{
	var inputBox = BX("crm-"+this.crmID+"_"+this.name+"-input-box");
	var textBox = BX("crm-"+this.crmID+"_"+this.name+"-text-box");

	if(!inputBox || !textBox)
	{
		return;
	}

	inputBox.innerHTML = '';

	var textBoxNew = document.createElement('DIV');
	textBoxNew.id = textBox.id;
	textBox.parentNode.replaceChild(textBoxNew, textBox);
	textBox = textBoxNew;

	var tableObject = document.createElement('table');
	tableObject.className = "field_crm";
	tableObject.cellPadding = "0";
	tableObject.cellSpacing = "0";
	var tbodyObject = document.createElement('TBODY');

	var iEl = 0;
	for (var type in arElements)
	{
		var rowObject = document.createElement("TR");
		rowObject.className = "crmPermTableTrHeader";

		if (this.PopupEntityType.length > 1)
		{
			var cellObject = document.createElement("TD");
			cellObject.className = "field_crm_entity_type";
			cellObject.appendChild(document.createTextNode(this.PopupLocalize[type]+":"));
			rowObject.appendChild(cellObject);
		}

		cellObject = document.createElement("TD");
		cellObject.className = "field_crm_entity";

		var iTypeEl = 0;
		for (var i in arElements[type])
		{
			var addInput=document.createElement('input');
			addInput.type = 'text';
			addInput.name = this.name+(this.PopupMultiple? '[]': '');
			addInput.value = arElements[type][i]['id'];

			inputBox.appendChild(addInput);

			var addCrmLink=document.createElement('a');
			addCrmLink.href=arElements[type][i]['url'];
			addCrmLink.target="_blank";
			addCrmLink.appendChild(document.createTextNode(arElements[type][i]['title']));
			cellObject.appendChild(addCrmLink);

			var addCrmDeleteLink=document.createElement('span');
			addCrmDeleteLink.className="crm-element-item-delete";
			addCrmDeleteLink.id="deleted-crm-"+this.crmID+'_'+this.name+"-block-item-"+arElements[type][i]['id']+'-'+arElements[type][i]['place'];
			eval('BX.bind(addCrmDeleteLink, "click", function(event) { CRM.PopupUnselectItem("'+this.crmID+'", this.id.substr(8), "selected-"+this.id.substr(8)); CRM.PopupSave2("'+this.crmID+'");})');
			cellObject.appendChild(addCrmDeleteLink);

			//Strongly required for user field value change event
			BX.fireEvent(addInput, "change");

			iTypeEl++;
			iEl++;
		}

		if(iTypeEl > 0)
		{
			rowObject.appendChild(cellObject);
			tbodyObject.appendChild(rowObject);
		}

	}
	if (iEl == 0)
	{
		var addInput=document.createElement('input');
		addInput.type = 'text';
		addInput.name = this.name+(this.PopupMultiple? '[]': '');
		addInput.value = '';
		inputBox.appendChild(addInput);

		//Strongly required for user field value change event
		BX.fireEvent(addInput, "change");
	}
	tableObject.appendChild(tbodyObject);
	textBox.appendChild(tableObject);

	if(this.el)
	{
		if (iEl>0)
		{
			this.el.innerHTML = this.PopupLocalize['edit'];
		}
		else
		{
			BX.cleanNode(textBox, false);

			if(BX.browser.IsIE())
			{
				// HACK: empty DIV has height in IE7 - make it collapse to zero.
				textBox.style.fontSize = '0px';
				textBox.style.lineHeight = '0px';
			}
			this.el.innerHTML = this.PopupLocalize['add'];
		}
	}
};

CRM.prototype.popupShowMarkup = function()
{
	var layer1 = document.createElement("div");
	layer1.id = "crm-"+this.crmID+"_"+this.name+"-block-content-wrap";
	layer1.className = "crm-block-content";
	var table1 = document.createElement('table');
	table1.className = "crm-box-layout";
	if (!this.PopupMultiple)
		table1.className = table1.className+" crm-single-column";
	table1.cellSpacing = "0";

	var table1body = document.createElement('tbody');
	var table1bodyTr1 = document.createElement("TR");
	var table1bodyTd1 = document.createElement("TD");
	table1bodyTd1.className = "crm-block-cont-left";

	var layer4 = document.createElement("div");
	layer4.id = "crm-"+this.crmID+"_"+this.name+"-tabs";
	layer4.className = "crm-block-cont-tabs-wrap";
	if (this.PopupEntityType.length == 1)
		layer4.className = layer4.className+" crm-single-entity";

	var firstTab = true;
	for (var i in this.PopupEntityType) {
		var tab1 = document.createElement("span");
		tab1.className = "crm-block-cont-tabs"+(firstTab? " selected": '');
		tab1.id = "crm-"+this.crmID+"_"+this.name+"-tab-"+this.PopupEntityType[i];
			var tab1span = document.createElement("span");
			var tab1span1 = document.createElement("span");
			tab1span1.appendChild(document.createTextNode(this.PopupLocalize[this.PopupEntityType[i]]));
			tab1span.appendChild(tab1span1);
			tab1.appendChild(tab1span);
		layer4.appendChild(tab1);
		firstTab = false;
	}

	table1bodyTd1.appendChild(layer4);

	layer4 = document.createElement("div");
	layer4.id = "crm-"+this.crmID+"_"+this.name+"-block-cont-search";
	layer4.className = "crm-block-cont-search";

	var input = document.createElement("input");
	input.type = "text";
	input.id = "crm-"+this.crmID+"_"+this.name+"-search-input";
	layer4.appendChild(input);

	var search1 = document.createElement("span");
	search1.className = "crm-block-cont-search-tab selected";
	search1.appendChild(document.createElement("span"));

	var search1a = document.createElement("a");
	search1a.href="#";
	search1a.appendChild(document.createTextNode(this.PopupLocalize['last']));
	search1.appendChild(search1a);

	search1.appendChild(document.createElement("span"));
	layer4.appendChild(search1);

	search1 = document.createElement("span");
	search1.className = "crm-block-cont-search-tab";
		search1.appendChild(document.createElement("span"));

		search1a = document.createElement("a");
		search1a.href="#";
		search1a.appendChild(document.createTextNode(this.PopupLocalize['search']));
		search1.appendChild(search1a);

		search1.appendChild(document.createElement("span"));
	layer4.appendChild(search1);

	table1bodyTd1.appendChild(layer4);

	layer4 = document.createElement("div");
	layer4.className = "popup-window-hr popup-window-buttons-hr";
		layer4.appendChild(document.createElement("b"));
	table1bodyTd1.appendChild(layer4);

	layer4 = document.createElement("div");
	layer4.id = "crm-"+this.crmID+"_"+this.name+"-blocks";
	layer4.className = "crm-block-cont-blocks-wrap";

		firstTab = true;
		for (var i in this.PopupEntityType) {
			var layer5 = document.createElement("div");
			layer5.id = "crm-"+this.crmID+"_"+this.name+"-block-"+this.PopupEntityType[i];
			layer5.className = "crm-block-cont-block crm-block-cont-block-"+this.PopupEntityType[i];
			layer5.style.display = firstTab? "block": "none";
			layer4.appendChild(layer5);
			firstTab = false;
		}

		layer5 = document.createElement("div");
		layer5.id = "crm-"+this.crmID+"_"+this.name+"-block-search";
		layer5.className = "crm-block-cont-block";
		layer5.style.display = "none";
		layer4.appendChild(layer5);

		layer5 = document.createElement("div");
		layer5.id = "crm-"+this.crmID+"_"+this.name+"-block-declared";
		layer5.className = "crm-block-cont-block";
		layer5.style.display = "none";
		layer4.appendChild(layer5);

		table1bodyTd1.appendChild(layer4);
		table1bodyTr1.appendChild(table1bodyTd1);
		var table1bodyTd2 = document.createElement("TD");
		table1bodyTd2.className = "crm-block-cont-right";

		var layer2 = document.createElement("div");
		layer2.className = "crm-block-cont-right-wrap-item";

		for (var i in this.PopupEntityType) {
			var layer3 = document.createElement("div");
			layer3.className = "crm-block-cont-right-item";
			layer3.id = "crm-"+this.crmID+"_"+this.name+"-block-"+this.PopupEntityType[i]+"-selected";
			var layer3cont = document.createElement("span");
			layer3cont.className = "crm-block-cont-right-title";
			layer3cont.appendChild(document.createTextNode(this.PopupLocalize[this.PopupEntityType[i]]));
			layer3cont.appendChild(document.createTextNode(' ('));
			var spanDigit = document.createElement("span");
			spanDigit.className = "crm-block-cont-right-title-count";
			spanDigit.appendChild(document.createTextNode('0'));
			layer3cont.appendChild(spanDigit);
			layer3cont.appendChild(document.createTextNode(')'));
			layer3.appendChild(layer3cont);
			layer2.appendChild(layer3);
		}

		table1bodyTd2.appendChild(layer2);
		table1bodyTr1.appendChild(table1bodyTd2);
		table1body.appendChild(table1bodyTr1);
		table1.appendChild(table1body);
		layer1.appendChild(table1);

	var placeHolder = document.createElement("div");
	document.body.appendChild(placeHolder);

	placeHolder.id = "crm-"+this.crmID+"_"+this.name+"-html-box";
	placeHolder.className = "crm-place-holder";
	placeHolder.appendChild(layer1);

	if(this.div)
	{
		var inputBox = document.createElement("div");
		inputBox.id = "crm-"+this.crmID+"_"+this.name+"-input-box";
		inputBox.style.display = "none";
		this.div.appendChild(inputBox);

		var textBoxId = "crm-"+this.crmID+"_"+this.name+"-text-box";
		if(BX(textBoxId))
		{
			throw  "Already exists " + textBoxId;
		}

		var textBox = document.createElement("div");
		this.div.insertBefore(textBox, this.div.firstChild);
		textBox.id = "crm-"+this.crmID+"_"+this.name+"-text-box";
	}
};