function lightBox(id, focus_el)
{
    var arrayPageSize = getPageSize();
    var arrayPageScroll = getPageScroll();
    var box = $(id);
    
    $('select').addClass('dy-tmp-hidden').css({'visibility' : 'hidden'});
    
    $("#overlay").css('height',(arrayPageSize[1] + 'px') );
    $("#overlay").show();
    
    var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - parseInt(box.css('height'), 10) ) / 2);
    var lightboxLeft =( (arrayPageSize[0] - 20 - parseInt(box.css('width'),10) ) / 2);
    
    box.css('top', (lightboxTop < 0) ? "0px" : lightboxTop + "px" );
    box.css('left', (lightboxLeft < 0) ? "0px" : lightboxLeft + "px" );
    box.show();
    
    if(focus_el) $("#"+focus_el).focus();
    
    $(document).keydown(function (e) {
        if( e.keyCode == 27 ) hide(id);
	});
    
	$(".cross", box).click(function(){
		hide(id);
	});
	
	$(".cross", box).hover(function() {
		$(this).addClass("cross-hover")
	}, function() {
		$(this).removeClass("cross-hover")
	});

}

function hide(id) {
    document.onkeypress = null;
    $(id).hide();
    $("#overlay").hide();
    
    $('select').removeClass('dy-tmp-hidden').css({'visibility' : 'hidden'});
	
}

// ------- 

function ShowLightBox(focus_el)
{
	lightBox('#lightbox', focus_el);
}

function ListenKey(e)
{
    var keycode = e == null ? event.keyCode/*ie*/ : e.which/*mozilla+opera*/;
    if( keycode == 27 ) HideLightBox(); // hide on Esc pressed
}

function HideLightBox()
{
	hide('#lightbox');
}

function ShowPhotoLightBox()
{
    var arrayPageSize = getPageSize();
    var arrayPageScroll = getPageScroll();
    
    $("#overlay").css('height',(arrayPageSize[1] + 'px') );
    $("#overlay").show();
    
    var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - parseInt($("#photo_lightbox").css('height'), 10) ) / 2);
    var lightboxLeft =( (arrayPageSize[0] - 20 - parseInt($("#photo_lightbox").css('width'),10) ) / 2);
    
    $("#photo_lightbox").css('top', (lightboxTop < 0) ? "0px" : lightboxTop + "px" );
    $("#photo_lightbox").css('left', (lightboxLeft < 0) ? "0px" : lightboxLeft + "px" );
    $("#photo_lightbox").show();
    
    document.onkeypress = ListenPhotoKey;
}

function ListenPhotoKey(e)
{
    var keycode = e == null ? event.keyCode/*ie*/ : e.which/*mozilla+opera*/;
    if( keycode == 27 ) HidePhotoLightBox(); // hide on Esc pressed
}

function HidePhotoLightBox()
{
    //onCloseChange('lightbox', false);
    document.onkeypress = null;
    $("#photo_lightbox").hide();
    $("#overlay").hide();
}

function getPageScroll()
{
    var yScroll;

    if (self.pageYOffset)
    {
        yScroll = self.pageYOffset;
    }
    else if(document.documentElement && document.documentElement.scrollTop) // Explorer 6 Strict
    {
        yScroll = document.documentElement.scrollTop;
    }
    else if(document.body) // all other Explorers
    {
        yScroll = document.body.scrollTop;
    }

    arrayPageScroll = new Array('',yScroll) 
    return arrayPageScroll;
}

function getPageSize()
{
    var xScroll, yScroll;
    
    if (window.innerHeight && window.scrollMaxY)
    {    
        xScroll = document.body.scrollWidth;
        yScroll = window.innerHeight + window.scrollMaxY;
    }
    else if (document.body.scrollHeight > document.body.offsetHeight) // all but Explorer Mac
    {
        xScroll = document.body.scrollWidth;
        yScroll = document.body.scrollHeight;
    }
    else // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
    {
        xScroll = document.body.offsetWidth;
        yScroll = document.body.offsetHeight;
    }
    
    var windowWidth, windowHeight;
    if (self.innerHeight) // all except Explorer
    {    
        windowWidth = self.innerWidth;
        windowHeight = self.innerHeight;
    }
    else if(document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
    {
        windowWidth = document.documentElement.clientWidth;
        windowHeight = document.documentElement.clientHeight;
    }
    else if(document.body) // other Explorers
    {
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    }    
    
    // for small pages with total height less then height of the viewport
    if(yScroll < windowHeight)
    {
        pageHeight = windowHeight;
    }
    else
    { 
        pageHeight = yScroll;
    }

    // for small pages with total width less then width of the viewport
    if(xScroll < windowWidth)
    {    
        pageWidth = windowWidth;
    }
    else
    {
        pageWidth = xScroll;
    }

    arrayPageSize = [pageWidth, pageHeight, windowWidth, windowHeight];
    return arrayPageSize;
}
