var RedBox = {
showInline: function(id)
{
this.showOverlay();
new Effect.Appear('RB_window', {duration: 0.4, queue: 'end'});
Element.scrollTo('RB_window');
this.cloneWindowContents(id);
},
loading: function()
{
this.showOverlay();
Element.show('RB_loading');
this.setWindowPosition();
},
addHiddenContent: function(id)
{
this.removeChildrenFromNode($('RB_window'));
this.moveChildren($(id), $('RB_window'));
Element.hide('RB_loading');
new Effect.Appear('RB_window', {duration: 0.4, queue: 'end'});
Element.scrollTo('RB_window');
this.setWindowPosition();
},
close: function()
{
new Effect.Fade('RB_window', {duration: 0.4});
new Effect.Fade('RB_overlay', {duration: 0.4});
},
showOverlay: function()
{
if ($('RB_redbox'))
{
Element.update('RB_redbox', "");
new Insertion.Top($('RB_redbox'), '
');
}
else
{
new Insertion.Bottom(document.body, '');
}
new Insertion.Top('RB_overlay', '');
this.setOverlaySize();
new Effect.Appear('RB_overlay', {duration: 0.4, to: 0.6, queue: 'end'});
},
setOverlaySize: function()
{
if (window.innerHeight && window.scrollMaxY)
{
yScroll = window.innerHeight + window.scrollMaxY;
}
else if (document.body.scrollHeight > document.body.offsetHeight)
{ // all but Explorer Mac
yScroll = document.body.scrollHeight;
}
else
{ // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
yScroll = document.body.offsetHeight;
}
$("RB_overlay").style['height'] = yScroll +"px";
},
setWindowPosition: function()
{
var pagesize = this.getPageSize();
// $("RB_window").style['width'] = 'auto';
// $("RB_window").style['height'] = 'auto';
var dimensions = Element.getDimensions($("RB_window"));
var width = dimensions.width;
var height = dimensions.height;
$("RB_window").style['left'] = ((pagesize[0] - width)/2) + "px";
// $("RB_window").style['top'] = ((pagesize[1] - height)/2) + "px";
},
getPageSize: function() {
var de = document.documentElement;
var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
arrayPageSize = new Array(w,h)
return arrayPageSize;
},
removeChildrenFromNode: function(node)
{
while (node.hasChildNodes())
{
node.removeChild(node.firstChild);
}
},
moveChildren: function(source, destination)
{
while (source.hasChildNodes())
{
destination.appendChild(source.firstChild);
}
},
cloneWindowContents: function(id)
{
var content = $(id).cloneNode(true);
content.style['display'] = 'block';
$('RB_window').appendChild(content);
this.setWindowPosition();
}
}