Your IP : 3.15.231.199
// * * * * * * MEDIALIBRARY * * * * * * *
// Common objects for medialibrary
// * * * * * * * * * * * * * * * * * * * * * *
function BXMLTypeSelector(Params)
{
this.oML = Params.oML;
this.oCallback = Params.oCallback;
this.Types = Params.Types;
this.Init();
}
BXMLTypeSelector.prototype = {
Init: function()
{
this.pWnd = BX.create("DIV", {props:{className: "ml-type-sel"}});
this.pValCont = this.pWnd.appendChild(BX.create("DIV", {props:{className: "mlt-val-cnt"}}));
this.pPopup = this.pWnd.appendChild(BX.create("DIV", {props:{className: "mlt-popup"}}));
this.pPopupInner = this.pPopup.appendChild(BX.create("DIV", {props:{className: "mlt-popup-inner"}}));
this.bOpen = false;
if (BX.browser.IsIE() && !BX.browser.IsDoctype())
{
this.pPopup.style.width = "202px";
this.pWnd.style.height = "29px";
}
this.pIconCont = this.pValCont.appendChild(BX.create("DIV", {props:{className: "mlt-val-ic"}}));
this.pNameCont = this.pValCont.appendChild(BX.create("DIV", {props:{className: "mlt-val-name"}}));
var
_this = this,
i, it, html, src,
l = this.Types.length;
for (i = 0; i < l; i++)
{
it = this.pPopupInner.appendChild(BX.create("DIV", {props:{className: "mlt-item", id: "ml_type_item_" + i}}));
src = this.Types[i].type_icon;
html = "<table><tr><td class='mlt-ic'>" +
"<img src='" + src + "' /></td>" +
"<td class='mlt-title' title='" + this.Types[i].name + "'>" + bxhtmlspecialchars(this.Types[i].name) + "</td>" +
"</tr></table>";
it.innerHTML = html;
it.onclick = function(e)
{
_this.SetType(this.id.substr("ml_type_item_".length));
BX.PreventDefault(e);
};
it.onmouseover = function(){this.className = "mlt-item mlt-item-over";};
it.onmouseout = function(){this.className = "mlt-item";};
}
this.pWnd.onclick = function(){_this.ShowPopup();};
},
SetType: function(ind, bCallback)
{
var Type = this.Types[ind];
// Callback
if (bCallback !== false)
this.oCallback.func.apply(this.oCallback.obj, [{typeInd : parseInt(ind)}]);
// Set to select
this.pIconCont.innerHTML = "<img src='" + Type.type_icon + "'/>";
this.pNameCont.innerHTML = bxhtmlspecialchars(Type.name);
// Close dialog
this.ShowPopup(false);
},
ShowPopup: function(bOpen)
{
if (bOpen == this.bOpen)
return;
if (bOpen !== true && bOpen !== false)
bOpen = !this.bOpen;
if (bOpen)
{
this.pPopup.style.height = '1px';
this.pPopup.style.display = "block";
}
var
_this = this,
curHeight = bOpen ? 1 : parseInt(this.pPopup.style.height),
count = 0,
timeInt = 10,
maxHeight = 0,
dx = 5;
if (this.Interval)
clearInterval(this.Interval);
this.Interval = setInterval(function()
{
if (bOpen)
{
//this.pPopup.style.visibility = "visible";
if (maxHeight == 0)
maxHeight = parseInt(_this.pPopupInner.offsetHeight);
curHeight += Math.round(dx * count);
if (curHeight > maxHeight)
{
curHeight = maxHeight + 2;
clearInterval(_this.Interval);
}
}
else
{
curHeight -= Math.round(dx * count);
if (curHeight < 0)
{
_this.pPopup.style.display = "none";
curHeight = 0;
clearInterval(_this.Interval);
}
}
_this.pPopup.style.height = curHeight + 'px';
count++;
},
timeInt
);
this.bOpen = bOpen;
this.oML.bSubdialogOpened = bOpen;
setTimeout(function()
{
if (bOpen)
{
BX.bind(document, "keypress", BX.proxy(_this.OnKeyPress, _this));
BX.bind(document, "mousedown", BX.proxy(_this.OnMouseDown, _this));
}
else
{
BX.unbind(document, "keypress", BX.proxy(_this.OnKeyPress, _this));
BX.unbind(document, "mousedown", BX.proxy(_this.OnMouseDown, _this));
}
}, 100);
},
OnKeyPress: function(e)
{
if(!e) e = window.event;
if(e && e.keyCode == 27)
this.ShowPopup(false);
},
OnMouseDown: function(e)
{
if(!e) e = window.event;
var targ = e.target || e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
if (!BX.findParent(targ, {className: 'ml-type-cont'}))
{
this.ShowPopup(false);
return BX.PreventDefault(e);
}
}
};
function BXOverlay(arParams)
{
this.id = arParams.id || 'bx_trans_overlay';
this.zIndex = arParams.zIndex || 100;
}
BXOverlay.prototype = {
Create: function ()
{
this.bCreated = true;
this.bShowed = false;
var windowSize = BX.GetWindowScrollSize();
this.pWnd = document.body.appendChild(BX.create("DIV", {props: {id: this.id, className: "bx-trans-overlay"}, style:{zIndex: this.zIndex, width: windowSize.scrollWidth + "px", height: windowSize.scrollHeight + "px"}, events: {drag: BX.False, selectstart: BX.False}}));
var _this = this;
window[this.id + '_resize'] = function(){_this.Resize();};
},
Show: function(arParams)
{
if (!this.bCreated)
this.Create();
this.bShowed = true;
var windowSize = BX.GetWindowScrollSize();
this.pWnd.style.display = 'block';
this.pWnd.style.width = windowSize.scrollWidth + "px";
this.pWnd.style.height = windowSize.scrollHeight + "px";
if (!arParams)
arParams = {};
if (arParams.clickCallback)
{
this.pWnd.onclick = function(e)
{
var
clbck = arParams.clickCallback,
p = clbck.params || [];
if (clbck.obj)
clbck.func.apply(clbck.obj, p);
else
clbck.func(p);
return BX.PreventDefault(e);
};
}
if (arParams.zIndex)
this.pWnd.style.zIndex = arParams.zIndex;
BX.bind(window, "resize", window[this.id + '_resize']);
return this.pWnd;
},
Hide: function ()
{
if (!this.bShowed)
return;
this.bShowed = false;
this.pWnd.style.display = 'none';
BX.unbind(window, "resize", window[this.id + '_resize']);
this.pWnd.onclick = null;
},
Resize: function ()
{
if (this.bCreated)
this.pWnd.style.width = BX.GetWindowScrollSize().scrollWidth + "px";
},
Remove: function ()
{
this.Hide();
if (this.pWnd.parentNode)
this.pWnd.parentNode.removeChild(this.pWnd);
}
};
window.bxhtmlspecialchars = function(str)
{
if(!str.replace)
return str;
str = str.replace(/&/g, '&');
str = str.replace(/"/g, '"');
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
return str;
}
window.bxspcharsback = function(str)
{
if(!(typeof(str) == "string" || str instanceof String))
return str;
str = str.replace(/\"/g, '"');
str = str.replace(/'/g, "'");
str = str.replace(/\</g, '<');
str = str.replace(/\>/g, '>');
str = str.replace(/\!/g, '!');
str = str.replace(/\$/g, '$');
str = str.replace(/\%/g, '%');
str = str.replace(/\~/g, '~');
str = str.replace(/\ /g, ' ');
str = str.replace(/\#/g, '#');
str = str.replace(/\&/g, '&');
return str;
}
window.ConvertArray2Post = function(arData, prefix)
{
var data = '', i, name;
if (null != arData)
{
for(i in arData)
{
if (data.length > 0) data += '&';
name = jsUtils.urlencode(i);
if(prefix)
name = prefix + '[' + name + ']';
if(typeof arData[i] == 'object')
data += ConvertArray2Post(arData[i], name)
else
data += name + '=' + jsUtils.urlencode(arData[i])
}
}
return data;
}