function ForumPopupMenu()
{
this.oDiv = false;
this.oControl = false;
this.oControlPos = false;
this.bRemoveElement = true;
var _this = this;
}
ForumPopupMenu.prototype.InitFromArray = function(id, data)
{
var ii = 0, _data = null;
if (oObjectForum[id] && typeof(oObjectForum[id]) == "object")
return oObjectForum[id];
oObjectForum[id] = {};
for (ii in data)
{
if (!data[ii]["CONTENT"])
continue;
oObjectForum[id][ii] = {
"TITLE" : data[ii]["TITLE"],
"CLASS" : data[ii]["CLASS"],
"ONCLICK" : data[ii]["ONCLICK"],
"CONTENT" : (typeof(data[ii]["CONTENT"]) != "object" ? [data[ii]["CONTENT"]] : data[ii]["CONTENT"])};
}
return oObjectForum[id];
}
ForumPopupMenu.prototype.CreateMenu = function(id, data)
{
var oDiv = false, ii = false, jj = false, _text = '', _table = '';
if (!(data && typeof(data) == "object"))
return false;
oDiv = document.body.appendChild(document.createElement("DIV"));
oDiv.id = id + '_div'; oDiv.className = "forum-popup";
oDiv.style.position = 'absolute'; oDiv.style.visibility = 'hidden';
for (ii in data)
{
_text = '
';
_table += '';
}
_table = '';
oDiv.innerHTML = _table;
return oDiv;
}
ForumPopupMenu.prototype.PopupShow = function(pos, div, controlpos)
{
if (!this.oDiv && !div || (typeof(this.oDiv) != "object" && typeof(div) != "object"))
return false;
if (div)
{
if (controlpos)
this.ControlPos = controlpos;
this.bRemoveElement = false;
this.oDiv = div;
}
else
{
this.bRemoveElement = true;
}
var w = this.oDiv.offsetWidth; var h = this.oDiv.offsetHeight;
if (h > 250)
{
this.oDiv.style.height = "250px";
this.oDiv.style.overflow = "auto";
w += 15;
this.oDiv.className = "forum-popup-oveflow";
h = 250;
}
if (!pos || pos == null)
{
pos = jsUtils.AlignToPos(pos, w, h);
}
for (var ii in pos)
{
if (isNaN(pos[ii]) || !pos[ii])
pos[ii] = 0;
}
this.oDiv.style.width = w + 'px';
this.oDiv.style.visibility = 'visible';
// this.oDiv.style.display = 'block';
this.oDiv.style.MozUserSelect = 'none';
jsFloatDiv.Show(this.oDiv, parseInt(pos["left"]), parseInt(pos["top"]), false, false, false);
if (this.oControl != null && this.oControl.className)
{
this.oControl.className += ' forum-popup-control-active';
}
var _this = this;
jsUtils.addEvent(document, "click", function(e){_this.CheckClick(e)});
jsUtils.addEvent(document, "keypress", function(e){_this.OnKeyPress(e)});
}
ForumPopupMenu.prototype.PopupHide = function()
{
var _this = this;
jsUtils.removeEvent(document, "click", function(e){_this.CheckClick(e);});
jsUtils.removeEvent(document, "keypress", function(e){_this.OnKeyPress(e)});
if (!this.oDiv)
return false;
jsFloatDiv.Close(this.oDiv);
if (this.oControl != null && this.oControl.className)
{
this.oControl.className = this.oControl.className.replace(" forum-popup-control-active", "");
}
if (this.bRemoveElement)
{
try
{
this.oDiv.parentNode.removeChild(this.oDiv);
this.ControlPos = false;
}
catch(e)
{}
}
this.oDiv.style.visibility = 'hidden';
// this.oDiv.style.display = 'none';
}
ForumPopupMenu.prototype.OnKeyPress = function(e)
{
if(!e) e = window.event
if(!e) return;
if(e.keyCode == 27)
this.PopupHide();
}
ForumPopupMenu.prototype.ShowMenu = function(control, data, switcher)
{
var id = "_id", pos = {"top" : 20, "left" : 20};
var _data = false, _div = false;
this.PopupHide();
if (typeof(control) == "object")
{
id = control.id;
pos = jsUtils.GetRealPos(control);
this.ControlPos = pos;
this.oControl = control;
if (typeof(switcher) == "object" && switcher != null)
pos = jsUtils.GetRealPos(switcher);
}
var _data = this.InitFromArray(id, data);
this.oDiv = this.CreateMenu(id, _data);
if (this.oDiv)
{
this.PopupShow(pos);
}
}
ForumPopupMenu.prototype.CheckClick = function(e)
{
if(!this.oDiv || this.oDiv.style.visibility != 'visible')
return;
var windowSize = jsUtils.GetWindowSize();
var x = e.clientX + windowSize.scrollLeft;
var y = e.clientY + windowSize.scrollTop;
/*menu region*/
pos = jsUtils.GetRealPos(this.oDiv);
var posLeft = parseInt(pos["left"]);
var posTop = parseInt(pos["top"])
var posRight = posLeft + this.oDiv.offsetWidth;
var posBottom = posTop + this.oDiv.offsetHeight;
if(x >= posLeft && x <= posRight && y >= posTop && y <= posBottom)
return;
if(this.ControlPos)
{
var pos = this.ControlPos;
if(x >= pos['left'] && x <= pos['right'] && y >= pos['top'] && y <= pos['bottom'])
return;
}
this.PopupHide();
}
window.fMenu = new ForumPopupMenu();
var FJCFloatDiv = new JCFloatDiv();
FJCFloatDiv.Show = function(div, left, top, dxShadow, bSubstrate, restrictDrag)
{
var zIndex = parseInt(div.style.zIndex);
zIndex = (zIndex <= 0 || isNaN(zIndex) ? 100 : zIndex);
left = (parseInt(left) < 0 ? 0 : parseInt(left));
top = (parseInt(top) < 0 ? 0 : parseInt(top));
dxShadow = parseInt(isNaN(dxShadow) ? 5 : dxShadow);
bSubstrate = (bSubstrate == false ? false : true);
div.style.zIndex = zIndex;
div.style.left = left + "px";
div.style.top = top + "px";
if(dxShadow > 0)
{
var img = document.getElementById(div.id+'_shadow');
if(!img)
{
if(jsUtils.IsIE())
{
img = document.createElement("DIV");
img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+phpVars.templatePath+"images/shadow.png',sizingMethod='scale')";
}
else
{
img = document.createElement("IMG");
img.src = phpVars.templatePath + 'images/shadow.png';
}
img.id = div.id+'_shadow';
img.style.position = 'absolute';
img.style.zIndex = zIndex-2;
document.body.appendChild(img);
}
img.style.width = div.offsetWidth+'px';
img.style.height = div.offsetHeight+'px';
img.style.left = parseInt(div.style.left)+dxShadow+'px';
img.style.top = parseInt(div.style.top)+dxShadow+'px';
img.style.visibility = 'visible';
}
div.restrictDrag = restrictDrag || false;
if (bSubstrate == true)
{
var substrate = document.getElementById(div.id + '_substrate');
if(!substrate)
{
substrate = document.createElement("DIV");
substrate.id = div.id + '_substrate';
substrate.style.zIndex = zIndex-3;
substrate.style.position = 'absolute';
substrate.style.display = 'none';
substrate.style.background = 'white';
substrate.style.opacity = '0.5';
if (substrate.style.MozOpacity)
substrate.style.MozOpacity = '0.5';
else if (substrate.style.KhtmlOpacity)
substrate.style.KhtmlOpacity = '0.5';
if (jsUtils.IsIE())
{
substrate.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
}
document.body.appendChild(substrate);
}
substrate.style.display = 'block';
substrate.style.left = 0;
substrate.style.top = 0;
var WindowSize = jsUtils.GetWindowSize();
substrate.style.width = WindowSize["scrollWidth"] + "px";
substrate.style.height = WindowSize["scrollHeight"] + "px";
}
div.style.display = 'block';
div.style.visibility = 'visible';
return false;
}
FJCFloatDiv.Close = function(div)
{
if (!div)
return false;
if (document.getElementById(div.id + "_shadow"))
{
document.getElementById(div.id + "_shadow").style.visibility = 'hidden';
}
if (document.getElementById(div.id + "_substrate"))
{
document.getElementById(div.id + "_substrate").style.display = 'none';
}
// div.style.display = 'none';
div.style.visibility = 'hidden';
return false;
}