; /* Start:/bitrix/js/main/core/core.js*/
/**********************************************************************/
/*********** Bitrix JS Core library ver 0.9.0 beta ********************/
/**********************************************************************/
;(function(window){
if (!!window.BX && !!window.BX.extend)
return;
window.BXDEBUG = false;
var _bxtmp;
if (!!window.BX)
{
_bxtmp = window.BX;
}
window.BX = function(node, bCache)
{
if (BX.type.isNotEmptyString(node))
{
var ob;
if (!!bCache && null != NODECACHE[node])
ob = NODECACHE[node];
ob = ob || document.getElementById(node);
if (!!bCache)
NODECACHE[node] = ob;
return ob;
}
else if (BX.type.isDomNode(node))
return node;
else if (BX.type.isFunction(node))
return BX.ready(node);
return null;
};
// language utility
BX.message = function(mess)
{
if (BX.type.isString(mess))
{
if (typeof BX.message[mess] == 'undefined')
BX.debug('message undefined: ' + mess);
return BX.message[mess];
}
else
{
for (var i in mess)
{
BX.message[i]=mess[i];
}
return true;
}
};
if(!!_bxtmp)
{
for(var i in _bxtmp)
{
if(!BX[i])
{
BX[i]=_bxtmp[i];
}
else if(i=='message')
{
for(var j in _bxtmp[i])
{
BX.message[j]=_bxtmp[i][j];
}
}
_bxtmp = null;
}
}
var
/* ready */
__readyHandler = null,
readyBound = false,
readyList = [],
/* list of registered proxy functions */
proxySalt = Math.random(),
proxyId = 1,
proxyList = [],
deferList = [],
/* getElementById cache */
NODECACHE = {},
/* List of denied event handlers */
deniedEvents = [],
/* list of registered event handlers */
eventsList = [],
/* list of registered custom events */
customEvents = {},
/* list of external garbage collectors */
garbageCollectors = [],
/* list of loaded CSS files */
cssList = [],
/* list of loaded JS kernel files */
arKernelJS = [],
/* browser detection */
bSafari = navigator.userAgent.toLowerCase().indexOf('webkit') != -1,
bOpera = navigator.userAgent.toLowerCase().indexOf('opera') != -1,
bFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') != -1,
bChrome = navigator.userAgent.toLowerCase().indexOf('chrome') != -1,
bIE = document.attachEvent && !bOpera,
/* regexps */
r = {
script: /', start);
if(end == -1)
break;
code[code.length] = s.substr(start+8, end-start-8);
s = s.substr(0, start) + s.substr(end+9);
}
_this._OnDataReady(s);
for(var i = 0, cnt = code.length; i < cnt; i++)
if(code[i] != '')
jsUtils.EvalGlobal(code[i]);
}
/*
catch (e)
{
var w = window.open("about:blank");
w.document.write(httpRequest.responseText);
w.document.close();
}
*/
}
}
}
this.Send = function(url)
{
var httpRequest = this._CreateHttpObject();
if(httpRequest)
{
httpRequest.open("GET", url, true);
this._SetHandler(httpRequest);
return httpRequest.send("");
}
}
this.Post = function(url, data)
{
var httpRequest = this._CreateHttpObject();
if(httpRequest)
{
httpRequest.open("POST", url, true);
this._SetHandler(httpRequest);
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
return httpRequest.send(data);
}
}
}
var CHttpRequest = new JCHttpRequest();
/************************************************/
/***** DEPRECATED! Use BX.userOptions from core_ajax.js **********/
function JCUserOptions()
{
var _this = this;
this.options = null;
this.bSend = false;
this.request = new JCHttpRequest();
this.GetParams = function()
{
if (BX && BX.userOptions)
{
_this.GetParams = BX.userOptions.__get;
return _this.GetParams.apply(BX.userOptions, arguments);
}
var sParam = '';
var n = -1;
var prevParam = '';
for(var i in _this.options)
{
var aOpt = _this.options[i];
if(prevParam != aOpt[0]+'.'+aOpt[1])
{
n++;
sParam += '&p['+n+'][c]='+encodeURIComponent(aOpt[0]);
sParam += '&p['+n+'][n]='+encodeURIComponent(aOpt[1]);
if(aOpt[4] == true)
sParam += '&p['+n+'][d]=Y';
prevParam = aOpt[0]+'.'+aOpt[1];
}
sParam += '&p['+n+'][v]['+encodeURIComponent(aOpt[2])+']='+encodeURIComponent(aOpt[3]);
}
return sParam.substr(1);
}
this.SaveOption = function(sCategory, sName, sValName, sVal, bCommon)
{
if (BX && BX.userOptions)
{
_this.SaveOption = BX.userOptions.save;
return _this.SaveOption.apply(BX.userOptions, arguments);
}
if(!this.options)
this.options = new Object();
if(bCommon != true)
bCommon = false;
this.options[sCategory+'.'+sName+'.'+sValName] = [sCategory, sName, sValName, sVal, bCommon];
var sParam = this.GetParams();
if(sParam != '')
document.cookie = phpVars.cookiePrefix+"_LAST_SETTINGS=" + sParam + "&sessid="+phpVars.bitrix_sessid+"; expires=Thu, 31 Dec 2020 23:59:59 GMT; path=/;";
if(!this.bSend)
{
this.bSend = true;
setTimeout(function(){_this.SendData(null)}, 5000);
}
}
this.SendData = function(callback)
{
if (BX && BX.userOptions)
{
_this.SendData = BX.userOptions.send;
return _this.SendData.apply(BX.userOptions, arguments);
}
var sParam = _this.GetParams();
_this.options = null;
_this.bSend = false;
if(sParam != '')
{
document.cookie = phpVars.cookiePrefix+"_LAST_SETTINGS=; path=/;";
_this.request.Action = callback;
_this.request.Send('/bitrix/admin/user_options.php?'+sParam+'&sessid='+phpVars.bitrix_sessid);
}
}
this.DeleteOption = function(sCategory, sName, bCommon, callback)
{
if (BX && BX.userOptions)
{
_this.DeleteOption = BX.userOptions.del;
return _this.DeleteOption.apply(BX.userOptions, arguments);
}
_this.request.Action = callback;
_this.request.Send('/bitrix/admin/user_options.php?action=delete&c='+sCategory+'&n='+sName+(bCommon == true? '&common=Y':'')+'&sessid='+phpVars.bitrix_sessid);
}
}
var jsUserOptions = new JCUserOptions();
/************************************************/
function JCPanel()
{
var _this = this;
this.FixPanel = function()
{
var a = document.getElementById('admin_panel_fix_link');
var panel = document.getElementById('bx_top_panel_container');
var backDiv = document.getElementById('bx_top_panel_back');
var bFixed = (panel.style.position == 'fixed' || panel.style.position == 'absolute');
var bIE = jsUtils.IsIE();
if(bIE)
{
try{panel.style.removeExpression("top");} catch(e) {bIE = false;}
}
if(bFixed)
{
a.title = phpVars.messPanelFixOn;
a.className = 'fix-link fix-on';
panel.style.position = '';
backDiv.style.display = 'none';
if(bIE)
{
panel.style.removeExpression("top");
panel.style.removeExpression("left");
panel.style.removeExpression("width");
panel.style.width = '100%';
var frame = document.getElementById("admin_panel_frame");
if(frame)
frame.style.visibility = 'hidden';
}
}
else
{
this.ShowOn();
if(bIE)
{
var frame = document.getElementById("admin_panel_frame");
if(frame)
frame.style.visibility = 'visible';
else
this.CreateFrame(panel);
}
}
jsUserOptions.SaveOption('admin_panel', 'settings', 'fix', (bFixed? 'off':'on'));
}
this.ShowOn = function()
{
var a = document.getElementById('admin_panel_fix_link');
var panel = document.getElementById('bx_top_panel_container');
var backDiv = document.getElementById('bx_top_panel_back');
var bIE = jsUtils.IsIE();
if(bIE)
{
try{panel.style.setExpression("top", "0");} catch(e) {bIE = false;}
}
a.title = phpVars.messPanelFixOff;
a.className = 'fix-link fix-off';
panel.style.position = (bIE? 'absolute':'fixed');
panel.style.left = '0px';
panel.style.top = '0px';
panel.style.zIndex = '1000';
if(bIE)
{
if(document.body.currentStyle.backgroundImage == 'none')
{
document.body.style.backgroundImage = "url(/bitrix/images/1.gif)";
document.body.style.backgroundAttachment = "fixed";
document.body.style.backgroundRepeat = "no-repeat";
}
panel.style.setExpression("top", "eval((document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop)");
panel.style.setExpression("left", "eval((document.documentElement && document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft)");
panel.style.setExpression("width", "eval((document.documentElement && document.documentElement.clientWidth) ? document.documentElement.clientWidth : document.body.clientWidth)");
}
backDiv.style.height = panel.offsetHeight+'px';
backDiv.style.display = 'block';
}
this.FixOn = function()
{
this.ShowOn();
jsUtils.addEvent(window, "load", this.AdjustBackDiv);
}
this.AdjustBackDiv = function()
{
var panel = document.getElementById('bx_top_panel_container');
var backDiv = document.getElementById('bx_top_panel_back');
var bIE = jsUtils.IsIE();
if(bIE)
{
try{backDiv.style.setExpression("height", "0");} catch(e) {bIE = false;}
}
backDiv.style.height = panel.offsetHeight+'px';
if(bIE)
_this.CreateFrame(panel);
}
this.CreateFrame = function(panel)
{
var frame = document.createElement("IFRAME");
frame.src = "javascript:void(0)";
frame.id = "admin_panel_frame";
frame.style.position = 'absolute';
frame.style.overflow = 'hidden';
frame.style.zIndex = parseInt(panel.currentStyle.zIndex)-1;
frame.style.height = panel.offsetHeight + "px";
document.body.appendChild(frame);
frame.style.setExpression("top", "eval(document.body.scrollTop)");
frame.style.setExpression("left", "eval(document.body.scrollLeft)");
frame.style.setExpression("width", "eval(document.body.clientWidth)");
return frame;
}
this.IsFixed = function()
{
var panel = document.getElementById('bx_top_panel_container');
return (panel && (panel.style.position == 'fixed' || panel.style.position == 'absolute'));
}
this.DisplayPanel = function(el)
{
var div = document.getElementById('bx_top_panel_splitter');
if(div.style.display == 'none')
{
div.style.display = 'block';
el.className = 'splitterknob';
el.title = phpVars.messPanelCollapse;
jsUserOptions.SaveOption('admin_panel', 'settings', 'collapsed', 'off');
}
else
{
div.style.display = 'none';
el.className = 'splitterknob splitterknobdown';
el.title = phpVars.messPanelExpand;
jsUserOptions.SaveOption('admin_panel', 'settings', 'collapsed', 'on');
}
var panel = document.getElementById('bx_top_panel_container');
var backDiv = document.getElementById('bx_top_panel_back');
backDiv.style.height = panel.offsetHeight+'px';
var frame = document.getElementById("admin_panel_frame");
if(frame)
frame.style.height = panel.offsetHeight + "px";
}
}
var jsPanel = new JCPanel();
//***************************************************
function JCDebugWindow()
{
var _this = this;
this.div_id = 'BX_DEBUG_WINDOW';
this.div_current = null;
this.div_detail_current = null;
this.Show = function(info_id)
{
var div = document.getElementById(this.div_id);
if(div)
{
div.style.display = 'block';
var info_div = document.getElementById(info_id);
if(info_div)
{
if(this.div_current)
this.div_current.style.display = 'none';
info_div.style.display = 'block';
this.div_current = info_div;
this.ShowDetails(info_id+'_1');
}
//var left = parseInt(document.body.scrollLeft + document.body.clientWidth/2 - div.offsetWidth/2);
//var top = parseInt(document.body.scrollTop + document.body.clientHeight/2 - div.offsetHeight/2);
var windowSize = jsUtils.GetWindowSize();
var left = parseInt(windowSize["scrollLeft"] + windowSize["innerWidth"]/2 - div.offsetWidth/2);
var top = parseInt(windowSize["scrollTop"] + windowSize["innerHeight"]/2 - div.offsetHeight/2);
jsFloatDiv.Show(div, left, top);
jsUtils.addEvent(document, "keypress", this.OnKeyPress);
}
}
this.Close = function()
{
jsUtils.removeEvent(document, "keypress", this.OnKeyPress);
var div = document.getElementById(this.div_id);
jsFloatDiv.Close(div);
div.style.display = 'none';
}
this.OnKeyPress = function(e)
{
if(!e) e = window.event
if(!e) return;
if(e.keyCode == 27)
_this.Close();
}
this.ShowDetails = function(div_id)
{
var div = document.getElementById(div_id);
if(div)
{
if(this.div_detail_current)
this.div_detail_current.style.display = 'none';
div.style.display = 'block';
this.div_detail_current = div;
}
}
}
var jsDebugWindow = new JCDebugWindow();
//***************************************************
function ImgShw(ID, width, height, alt)
{
var scroll = "no";
var top=0, left=0;
if(width > screen.width-10 || height > screen.height-28) scroll = "yes";
if(height < screen.height-28) top = Math.floor((screen.height - height)/2-14);
if(width < screen.width-10) left = Math.floor((screen.width - width)/2-5);
width = Math.min(width, screen.width-10);
height = Math.min(height, screen.height-28);
var wnd = window.open("","","scrollbars="+scroll+",resizable=yes,width="+width+",height="+height+",left="+left+",top="+top);
wnd.document.write(
"
"+
"<"+"script type=\"text/javascript\">"+
"function KeyPress()"+
"{"+
" if(window.event.keyCode == 27) "+
" window.close();"+
"}"+
""+"script>"+
""+
""+
""+
""
);
wnd.document.close();
}
function CWizardWindow()
{
this.iframe = null;
var _this = this;
this.messLoading = phpVars.messLoading;
this.Open = function(wizardName, sessid)
{
if(document.getElementById("wizard_install_dialog"))
this.Close();
var div = document.body.appendChild(document.createElement("DIV"));
div.id = "wizard_install_dialog";
div.className = "settings-float-form";
div.style.position = 'absolute';
div.style.width = '600px';
div.style.height = '400px';
div.style.zIndex = 2100;
div.style.overflow = 'hidden';
div.innerHTML =
''+
'';
this.ShowWaitWindow();
var left = parseInt(document.body.scrollLeft + document.body.clientWidth/2 - div.offsetWidth/2);
var top = parseInt(document.body.scrollTop + document.body.clientHeight/2 - div.offsetHeight/2);
jsFloatDiv.Show(div, left, top);
this.iframe = document.getElementById("wizard_iframe");
jsUtils.addEvent(this.iframe, "load", _this.OnFrameLoad);
}
this.OnFrameLoad = function()
{
_this.HideWaitWindow();
var iframeWindow = _this.iframe.contentWindow;
if (_this.iframe.contentDocument)
var iframeDocument = _this.iframe.contentDocument;
else
var iframeDocument = _this.iframe.contentWindow.document;
if(iframeWindow.focus)
iframeWindow.focus();
else
iframeDocument.body.focus();
var form = iframeDocument.forms["form_auth"];
if (form)
form.target = "_self";
}
this.Close = function()
{
var floatDiv = document.getElementById("wizard_install_dialog")
jsFloatDiv.Close(floatDiv);
floatDiv.parentNode.removeChild(floatDiv);
floatDiv = null;
}
this.ShowWaitWindow = function()
{
try
{
var oDiv = document.createElement("DIV");
oDiv.id = "__bx_wait_window";
oDiv.className = "waitwindow";
oDiv.style.position = "absolute";
oDiv.style.left = "40%";
oDiv.style.top = "40%";
oDiv.style.zIndex = "3000";
oDiv.innerHTML = this.messLoading;
document.getElementById("wizard_install_dialog").appendChild(oDiv);
}
catch(e){}
}
this.HideWaitWindow = function()
{
try
{
var oDiv = document.getElementById("__bx_wait_window");
oDiv.parentNode.removeChild(oDiv);
oDiv = null;
}catch(e){}
}
}
var WizardWindow = new CWizardWindow();
//************************************************************
function JCStartMenu()
{
var menuStart = null;
var request = new JCHttpRequest();
var _this = this;
this.EvalMenu = function(result)
{
if(jsUtils.trim(result).length == 0)
return;
var menuItems;
try
{
eval(result); // menuItems={'styles':[], 'items':[]}
}
catch(e)
{
}
if(!menuItems)
return false;
//Applying styles
var head = document.getElementsByTagName("HEAD");
if(head && head[0])
{
var style = document.createElement("STYLE");
head[0].appendChild(style);
if(jsUtils.IsIE())
document.styleSheets[document.styleSheets.length-1].cssText = menuItems['styles'];
else
style.appendChild(document.createTextNode(menuItems['styles']));
}
return menuItems;
}
this.ShowStartMenu = function(button, back_url)
{
var dPos = {'left':0, 'top':0, 'right':0, 'bottom':0};
if(!menuStart || !menuStart.menuItems)
{
request.Action = function(result)
{
var menuItems = _this.EvalMenu(result);
if(menuItems)
{
//show menu
menuStart.PopupHide();
menuStart.ShowMenu(button, menuItems['items'], jsPanel.IsFixed(), dPos);
}
}
//create menu
menuStart = new PopupMenu('panel_start_menu');
menuStart.Create(1100);
menuStart.ShowMenu(button, [{
'TEXT':phpVars.messMenuLoading,
'TITLE':phpVars.messMenuLoadingTitle,
'ICONCLASS':'loading',
'AUTOHIDE':false}], jsPanel.IsFixed(), dPos);
request.Send('/bitrix/admin/get_start_menu.php?lang='+phpVars.LANGUAGE_ID+(back_url? '&back_url_pub='+encodeURIComponent(back_url):'')+'&sessid='+phpVars.bitrix_sessid);
}
else
{
menuStart.ShowMenu(button, null, jsPanel.IsFixed(), dPos);
}
}
this.PreloadMenu = function(back_url)
{
if(!menuStart)
{
request.Action = function(result)
{
var menuItems = _this.EvalMenu(result);
if(menuItems)
{
//show menu
menuStart.SetItems(menuItems['items']);
menuStart.BuildItems();
}
}
//create menu
menuStart = new PopupMenu('panel_start_menu');
menuStart.Create(1100);
request.Send('/bitrix/admin/get_start_menu.php?lang='+phpVars.LANGUAGE_ID+(back_url? '&back_url_pub='+encodeURIComponent(back_url):'')+'&sessid='+phpVars.bitrix_sessid);
}
}
this.OpenDynMenu = function(menu, module_id, items_id, back_url)
{
request.Action = function(result)
{
if(jsUtils.trim(result).length == 0)
return;
var menuItems;
eval(result); // menuItems={'items':[]}
if(menu && menuItems)
{
var bVisible = menu.IsVisible();
menu.PopupHide();
menu.SetItems(menuItems['items']);
menu.BuildItems();
menu.parentMenu.ShowSubmenu(menu.parentItem, false, !bVisible);
}
}
request.Send('/bitrix/admin/get_start_menu.php?mode=dynamic&lang='+phpVars.LANGUAGE_ID+'&admin_mnu_module_id='+encodeURIComponent(module_id)+'&admin_mnu_menu_id='+encodeURIComponent(items_id)+(back_url? '&back_url_pub='+encodeURIComponent(back_url):'')+'&sessid='+phpVars.bitrix_sessid);
}
this.OpenURL = function(item, arguments, url, back_url)
{
var itemInfo = menuStart.GetItemInfo(item);
if(itemInfo)
{
request.Action = function(result){}
request.Send('/bitrix/admin/get_start_menu.php?mode=save_recent&url='+encodeURIComponent(url)+'&text='+encodeURIComponent(itemInfo['TEXT'])+'&title='+encodeURIComponent(itemInfo['TITLE'])+'&icon='+itemInfo['ICON']+'&sessid='+phpVars.bitrix_sessid);
}
if(back_url)
url += (url.indexOf('?')>=0? '&':'?')+'back_url_pub='+encodeURIComponent(back_url);
jsUtils.Redirect(arguments, url);
}
}
var jsStartMenu = new JCStartMenu();
//************************************************************
//Admin edit form functions
function OnAdd(id)
{
var frm=document.form_settings;
if(id == 'tabs_add')
{
var oSelect = document.getElementById('selected_tabs');
if(oSelect)
{
var name = prompt(arFormEditMess.admin_lib_sett_tab_prompt, arFormEditMess.admin_lib_sett_tab_default_name);
if(name && name.length > 0)
{
var n = oSelect.length;
var c = 0;
var found = true;
while(found)
{
c++;
found = false;
for(var i=0; i';
jsSelectUtils.selectOption('selected_tabs', 'cedit'+c);
}
}
}
if(id == 'tabs_copy')
{
var oSelectFrom = document.getElementById('available_tabs');
var oSelectTo = document.getElementById('selected_tabs');
if(oSelectFrom && oSelectTo)
{
var n = oSelectFrom.length;
var k = oSelectTo.length;
var c = 0;
for(var i=0; i';
jsSelectUtils.addNewOption('selected_tabs', oSelectFrom[i].value, oSelectFrom[i].text, false);
jsSelectUtils.selectAllOptions('available_fields');
jsSelectUtils.addSelectedOptions(document.getElementById('available_fields'), newID);
jsSelectUtils.selectOption('selected_tabs', oSelectFrom[i].value);
}
}
}
}
if(id == 'fields_add')
{
var oSelect = document.getElementById('selected_tabs');
var prefix = '';
if(oSelect)
{
for(var i = 0; i < oSelect.length; i++)
if(oSelect[i].selected)
prefix = oSelect[i].value;
}
oSelect = GetFieldsActiveSelect();
if(oSelect)
{
var name = prompt(arFormEditMess.admin_lib_sett_sec_prompt, arFormEditMess.admin_lib_sett_sec_default_name);
if(name && name.length > 0)
{
var n = oSelect.length;
var c = 0;
var found = true;
while(found)
{
c++;
found = false;
for(var i=0; i last; i--)
{
var newoption = new Option(oSelectTo[i].text, oSelectTo[i].value, false, false);
newoption.innerHTML = oSelectTo[i].innerHTML;
tail[tail.length] = newoption;
oSelectTo.remove(i);
}
//Deselect all selected_fields
for(i = 0; i < oSelectTo.length; i++)
if(oSelectTo[i].selected)
oSelectTo[i].selected = false;
//Add new options
var sel_count = 0, sel_value = '';
for(i = 0; i < oSelectFrom.length; i++)
{
if(oSelectFrom[i].selected)
{
jsSelectUtils.addNewOption(oSelectTo.id, oSelectFrom[i].value, oSelectFrom[i].text, false);
oSelectTo[oSelectTo.length - 1].selected = true;
sel_count++;
if(i < (oSelectFrom.length - 1))
sel_value = oSelectFrom[i+1].value;
else
sel_value = '';
// else if(i > 0)
// sel_value = oSelectFrom[i-1].value;
}
}
//Append selected_fields tail
var n = oSelectTo.length;
for(i = tail.length - 1; i >= 0; i--)
{
oSelectTo[n] = tail[i];
n++;
}
if((sel_count == 1) && sel_value)
jsSelectUtils.selectOption(oSelectFrom.id, sel_value);
}
}
Sync();
}
function OnDelete(id)
{
if(id == 'tabs_delete')
{
var selected_tabs = document.getElementById('selected_tabs');
for(var i = 0; i < selected_tabs.length; i++)
{
if(selected_tabs[i].selected)
{
var selected_fields = document.getElementById('selected_fields[' + selected_tabs[i].value + ']');
var p = selected_fields.parentNode;
p.removeChild(selected_fields);
}
}
jsSelectUtils.deleteSelectedOptions(selected_tabs.id);
//For Opera deselect options
jsSelectUtils.selectOption(selected_tabs.id, '');
}
if(id == 'fields_delete')
{
var selected_fields = GetFieldsActiveSelect();
if(selected_fields)
{
jsSelectUtils.deleteSelectedOptions(selected_fields.id);
//For Opera deselect options
jsSelectUtils.selectOption(selected_fields.id, '');
}
}
Sync();
}
function Sync()
{
var i,j,n,found;
var available_tabs = document.getElementById('available_tabs');
var available_fields = document.getElementById('available_fields');
var selected_tabs = document.getElementById('selected_tabs');
//1 available_tabs
//1.1 Save selection
var available_tabs_selection = '';
for(i = 0; i < available_tabs.length; i++)
if(available_tabs[i].selected)
available_tabs_selection = available_tabs[i].value;
//2 available_fields
//2.1 Save selection
var available_fields_selection = new Object;
for(i = 0; i < available_fields.length; i++)
{
if(available_fields[i].selected)
available_fields_selection[available_fields[i].value] = available_fields[i].value;
}
//2.2 Clear list
jsSelectUtils.selectAllOptions(available_fields.id);
jsSelectUtils.deleteSelectedOptions(available_fields.id);
//2.3 Fill list with fields missed
if(available_tabs_selection)
{
var all_selected_fields = new Object;
for(i = 0; i < selected_tabs.length; i++)
{
var selected_fields = document.getElementById('selected_fields[' + selected_tabs[i].value + ']');
for(j = 0; j < selected_fields.length; j++)
all_selected_fields[selected_fields[j].value] = selected_fields[j].value;
}
n = 0;
for(available_field in arSystemTabsFields[available_tabs_selection])
{
if(!all_selected_fields[available_field])
{
var newoption = new Option(arSystemFields[available_field], available_field, false, false);
available_fields.options[n] = newoption;
available_fields.options[n].innerHTML = arSystemFields[available_field];
n++;
}
}
//2.4 Set selection
for(i = 0; i < available_fields.length; i++)
if(available_fields_selection[available_fields[i].value])
available_fields[i].selected = true;
}
//3 selected_tabs
//4 selected_fields
found = false;
for(i = 0; i < selected_tabs.length; i++)
{
var selected_fields = document.getElementById('selected_fields[' + selected_tabs[i].value + ']');
if(selected_tabs[i].selected)
{
selected_fields.style.display = 'block';
found = true;
}
else
{
selected_fields.style.display = 'none';
}
}
if(found)
document.getElementById('selected_fields[undef]').style.display = 'none';
else
document.getElementById('selected_fields[undef]').style.display = 'block';
//5 disable and enable buttons
//5.0 calculate selections counters
var selected_tabs_count = 0;
for(i = 0; i < selected_tabs.length; i++)
if(selected_tabs[i].selected)
selected_tabs_count++;
var available_tabs_count = 0;
for(i = 0; i < available_tabs.length; i++)
if(available_tabs[i].selected)
available_tabs_count++;
//tabs_delete enabled if selected_tabs have selection
document.getElementById('tabs_delete').disabled = selected_tabs_count <= 0;
//tabs_copy enabled if available_tabs have selection and this selection does not exists in
// selected fields
if(available_tabs_count <= 0)
{
document.getElementById('tabs_copy').disabled = true;
}
else
{
found = false;
for(i = 0; i < selected_tabs.length; i++)
if(selected_tabs[i].value == available_tabs_selection)
found = true;
document.getElementById('tabs_copy').disabled = found;
}
//tabs_up enabled if selected_tabs have selection
document.getElementById('tabs_up').disabled = selected_tabs_count <= 0;
//tabs_down enabled if selected_tabs have selection
document.getElementById('tabs_down').disabled = selected_tabs_count <= 0;
//tabs_rename enabled if selected_tabs have one item selected
document.getElementById('tabs_rename').disabled = selected_tabs_count != 1;
//tabs_add always selected
document.getElementById('tabs_add').disabled = false;
var selected_fields_count = 0;
for(i = 0; i < selected_tabs.length; i++)
{
if(selected_tabs[i].selected)
{
var selected_fields = document.getElementById('selected_fields[' + selected_tabs[i].value + ']');
for(j = 0; j < selected_fields.length; j++)
if(selected_fields[j].selected)
selected_fields_count++;
}
}
var available_fields_count = 0;
for(i = 0; i < available_fields.length; i++)
if(available_fields[i].selected)
available_fields_count++;
//fields_delete enabled if selected_fields have selection
document.getElementById('fields_delete').disabled = selected_fields_count <= 0;
//fields_copy enabled if available_fields have selection and at least one tab selected
document.getElementById('fields_copy').disabled = available_fields_count <= 0 || selected_tabs_count <= 0;
//fields_up enabled if selected_fields have selection
document.getElementById('fields_up').disabled = selected_fields_count <= 0;
//fields_down enabled if selected_fields have selection
document.getElementById('fields_down').disabled = selected_fields_count <= 0;
//fields_rename enabled if selected_fields have one item selected
document.getElementById('fields_rename').disabled = selected_fields_count != 1;
//fields_add enabled if selected_tabs have one item selected
document.getElementById('fields_add').disabled = selected_tabs_count != 1;
var arFields = new Object;
for(var name in arSystemFields)
arFields[name] = arSystemFields[name];
for(i = 0; i < selected_tabs.length; i++)
{
selected_fields = document.getElementById('selected_fields[' + selected_tabs[i].value + ']');
for(j = 0; j < selected_fields.length; j++)
delete arFields[selected_fields[j].value];
}
var save_button = document.getElementById('save_settings');
save_button.disabled = false;
for(var name in arFields)
{
if(arFields[name].substring(0,1) == "*")
save_button.disabled = true;
}
}
function SyncAvailableFields()
{
var oSelect = document.getElementById('available_tabs');
if(oSelect)
{
var k = oSelect.length;
for(var i=0; i 0)
{
for(var i=0; i 0)
{
for(var i=0; i'+
'';
}
this.ClearItemsStyle = function()
{
var tbl = document.getElementById(this.menu_id+'_items');
for(var i=0; i= posLeft && x <= posRight && y >= posTop && y <= posBottom)
return false;
if(_this.controlDiv)
{
var pos = jsUtils.GetRealPos(_this.controlDiv);
if(x >= pos['left'] && x <= pos['right'] && y >= pos['top'] && y <= pos['bottom'])
return false;
}
_this.PopupHide();
return true;
}
this.OnKeyPress = function(e)
{
if(!e) e = window.event
if(!e) return;
if(e.keyCode == 27)
_this.PopupHide();
}
this.PreventDefault = function(e)
{
if(!e) e = window.event;
if(e.stopPropagation)
{
e.preventDefault();
e.stopPropagation();
}
else
{
e.cancelBubble = true;
e.returnValue = false;
}
return false;
}
this.GetItemIndex = function(item)
{
var item_id = _this.menu_id+'_item_';
var item_index = parseInt(item.id.substr(item_id.length));
return item_index;
}
this.ShowSubmenu = function(item, bMouseOver, bDontShow)
{
if(!item)
item = this;
var item_index = _this.GetItemIndex(item);
if(bMouseOver == true)
{
if(!_this.menuItems[item_index]["__time"])
return;
var dxTime = (new Date()).valueOf() - _this.menuItems[item_index]["__time"];
if(dxTime < 500)
return;
}
var menu;
if(!_this.submenus[item_index])
{
menu = new PopupMenu(_this.menu_id+'_sub_'+item_index);
menu.Create(_this.zIndex+10, _this.dxShadow);
menu.SetItems(_this.menuItems[item_index].MENU);
menu.BuildItems();
menu.parentItem = document.getElementById(_this.menu_id+'_item_'+item_index);
menu.parentMenu = _this;
menu.OnClose = function()
{
jsUtils.addEvent(document, "keypress", _this.OnKeyPress);
}
_this.submenus[item_index] = menu;
if(_this.menuItems[item_index].ONMENUPOPUP)
eval(_this.menuItems[item_index].ONMENUPOPUP);
}
else
menu = _this.submenus[item_index];
_this.submenuIndex = item_index;
if(menu.IsVisible() || bDontShow == true)
return;
var item_pos = jsUtils.GetRealPos(item);
var menu_pos = jsUtils.GetRealPos(document.getElementById(_this.menu_id));
var pos = {'left': menu_pos["right"]-1, 'right': menu_pos["left"]+1, 'top': item_pos["bottom"]+1, 'bottom': item_pos["top"]};
jsUtils.removeEvent(document, "keypress", _this.OnKeyPress);
menu.controlDiv = item;
menu.PopupShow(pos);
}
this.OnSubmenuMouseOver = function()
{
_this.OnItemMouseOver(this);
var item_index = _this.GetItemIndex(this);
if(!_this.menuItems[item_index]["__time"])
_this.menuItems[item_index]["__time"] = (new Date()).valueOf();
var div = this;
setTimeout(function(){_this.ShowSubmenu(div, true)}, 550);
}
this.OnItemMouseOver = function(item)
{
if(_this.bHasSubmenus)
_this.ClearItemsStyle();
var div = (item? item:this);
div.className="popupitem popupitemover";
if(_this.parentItem)
{
_this.bDoHide = false;
if(_this.parentItem.className != "popupitem popupitemover")
{
_this.parentMenu.ClearItemsStyle();
_this.parentItem.className = "popupitem popupitemover";
}
}
if(_this.submenuIndex != null)
{
var item_index = _this.GetItemIndex(div);
if(_this.submenuIndex != item_index && _this.submenus[_this.submenuIndex])
{
_this.submenus[_this.submenuIndex].bDoHide = true;
setTimeout(function(){_this.HideSubmenu()}, 500);
}
}
}
this.OnSubmenuMouseOut = function()
{
var item_index = _this.GetItemIndex(this);
_this.menuItems[item_index]["__time"] = null;
}
this.OnItemMouseOut = function()
{
this.className="popupitem";
}
this.HideSubmenu = function()
{
if(_this.submenuIndex == null)
return;
if(_this.submenus[_this.submenuIndex].bDoHide != true)
return;
_this.submenus[_this.submenuIndex].PopupHide();
}
this.SetItems = function(items)
{
this.menuItems = items;
this.submenus = [];
}
this.SetItemIcon = function(item_id, icon)
{
if(typeof(item_id) == 'string' || item_id instanceof String)
{
for(var i in this.menuItems)
{
if(this.menuItems[i].ID && this.menuItems[i].ID == item_id)
{
this.menuItems[i].ICONCLASS = icon;
var item_td = document.getElementById(item_id);
if(item_td)
{
var div = jsUtils.FindChildObject(item_td, "div");
if(div)
div.className = "icon "+icon;
}
break;
}
}
}
else
{
var div = jsUtils.FindChildObject(jsUtils.FindChildObject(item_id, "td", "gutter", true), "div");
if(div)
{
this.menuItems[this.GetItemIndex(item_id)].ICONCLASS = icon;
div.className = "icon "+icon;
}
}
}
this.SetAllItemsIcon = function(icon)
{
for(var i=0, n=this.menuItems.length; i < n; i++)
{
var item = document.getElementById(this.menu_id+'_item_'+i);
var div = jsUtils.FindChildObject(jsUtils.FindChildObject(item, "td", "gutter", true), "div");
if(div)
{
this.menuItems[i].ICONCLASS = icon;
div.className = "icon "+icon;
}
}
}
this.BuildItems = function()
{
var items = this.menuItems;
if(!items || items.length == 0)
return;
var div = document.getElementById(this.menu_id);
if(!div)
{
this.Create();
div = document.getElementById(this.menu_id);
}
div.style.left='-1000px';
div.style.top='-1000px';
div.style.width='auto';
this.bHasSubmenus = false;
var tbl = document.getElementById(this.menu_id+'_items');
while(tbl.rows.length>0)
tbl.deleteRow(0);
var n = items.length;
for(var i=0; i