/**
 * @include  "d:/www/_common/js/js_common.js"
 * @include  "d:/www/_common/js/ajaqs_sender.js"
 * @include  "d:/www/_common/js/events.js"
 * @include  "_p_messages.js"
 * @include  "_p_scripts.js"
 * @include  "_p_scripts.js"
 */

/**
 * отслеживание изображения, которое рассматривается в данный момент
 * @type 
 */
var curImage = null;
var pnOverlayOpacityLevel = 30;
var pnFadeTime = 5;
var pnGalleryOpacityLevel = 100;

var pnGalleryWindowMinW = 700;
var pnGalleryWindowMinH = 500;

/**
 * @var array
 * кэш для хранения инфы о фотке
 */
var paGalleryCash =
{
    photoid: 0,
    photo: '',
    w: 0,
    h: 0
};

/**
 * повторное позиционирование окна галереи по центру видимой части страницы
 * даже после ее прокрутки
 *
 * @return void
 */
function adjust()
{
    // обнаружение галереи
    var loObj = id("gallery");

    // определение существования галереи
    if (!loObj) return;

    var loPic = id('gallery_big_pic');
    var loIMGShell = id("gallery_image");

    var lnTitleH = id('show_pic_title').clientHeight;

    var lnPadding = lnTitleH + 20;

    // определение нужной высоты и ширины для "окна"
    var lnWidth  = (loPic.width  > pnGalleryWindowMinW) ? loPic.width + 20 : pnGalleryWindowMinW;
    var lnHeight = ((loPic.height+lnPadding) > pnGalleryWindowMinH) ? loPic.height + lnPadding : pnGalleryWindowMinH;

    loObj.style.width  = lnWidth+'px';
    loObj.style.height = lnHeight+'px';

    var lnTop = calcPWindowY(lnHeight);	// вертикальное позиционирование посредине окна
    var lnLeft = calcPWindowX(lnWidth);	// горизонтальное позиционирование посредине окна

    setXY(loObj, lnLeft, lnTop);    // установка выверенной позиции элемента
    loObj.style.display = 'block';

    //	обнаружение перекрытия
    var loOverlay= id("overlay");

    //	установка его размеров по высоте и ширине текущей страницы
    //	(что пригодится в случае прокрутки)
    loOverlay.style.height = pageHeight() + "px";
    loOverlay.style.width = pageWidth() + "px";

    style('gallery_image', 'width', '100%');
};

/**
 * hideOverlay() - скрытие перекрытия и окна галереи
 *
 * @return void
 */
function hideOverlay()
{
    style('gallery', 'display', 'none');
    style('overlay', 'display', 'none');
}

/**
 * showOverlay() - постепенное проявление перекрытия
 * @return void
 */
function showOverlay()
{
    //	обнаружение перекрытия
    var over = id("overlay");

    //	установка его размеров по высоте и ширине текущей страницы
    //	(что пригодится в случае прокрутки)
    over.style.height = pageHeight() + "px";
    over.style.width = pageWidth() + "px";

    //	и проявление
    fadeIn(over, pnOverlayOpacityLevel, pnFadeTime);
}

/**
 * getImage() - пытаемся определить есть ли инфа по картинке
 * если есть в кэше - покажем сразу, иначе спросим у сервера
 *
 * @param Event e - объект-событие
 * @return void
 */
function getImage(e)
{
    e = e || window.event;
    var loTarget = e.target || e.srcElement;
    if(! id('overlay')) gallery_start();

    //	запоминание текущего изображения
    var laURL = window.location.pathname.split('/');
    var laPic = loTarget.src.split('/');

    var lnPicID = laPic[laPic.length - 2];

    if (paGalleryCash.photoid == lnPicID)
    {
		showImage();
		return true;
    }

    var lсValue = 'txtPhotoID='+lnPicID;
    var lcUrl = p_obj.root + 'get-photoinfo/';

    oAjax.start(lcUrl, getImage_Response, lсValue, true);
}

function getImage2(toObj)
{
    var loTarget = toObj.firstChild;
    if(! id('overlay')) gallery_start();

    //	запоминание текущего изображения
    var laURL = window.location.pathname.split('/');
    var laPic = loTarget.src.split('/');

    var lnPicID = laPic[laPic.length - 2];

    if (paGalleryCash.photoid == lnPicID)
    {
	showImage();
	return true;
    }

    var lсValue = 'txtPhotoID='+lnPicID;
    var lcUrl = p_obj.root + 'get-photoinfo/';

    oAjax.start(lcUrl, getImage_Response, lсValue, true);
}

/**
 * getImage_Response() - обрабатывает ответ сервера с инфой по фотке
 * если все ок - показывает "окно" с фоткой
 *
 * @return void
 */
function getImage_Response()
{
    if (oAjax.responseObj.result != 'Ok')
    {
        alert(oAjax.responseObj.result);
	    hideOverlay();
        return true;
    }

    paGalleryCash.photoid = oAjax.responseObj.photoid;
    paGalleryCash.photo = oAjax.responseObj.photo;
    paGalleryCash.w = oAjax.responseObj.w;
    paGalleryCash.h = oAjax.responseObj.h;

    showImage();
}

/**
 * вывод текущего изображения в галерее
 *
 * @return void;
 */
function showImage()
{
    //	обнаружение изображения в галерее
    var loIMGShell = id("gallery_image");

    showOverlay(); //	начинаем показывать перекрытие

    var lcSrc = p_obj.root + 'images/' + paGalleryCash.photoid + '/' + paGalleryCash.photo;

    var lcImg = '<img src="'+ lcSrc +'" border="0" width="'+ paGalleryCash.w +'" height="'+ paGalleryCash.h +'" alt="кликните чтобы закрыть" id="gallery_big_pic" onclick="hideOverlay();" />';
    loIMGShell.innerHTML = lcImg;

    //	постепенное проявление
    fadeIn(id("gallery"), pnGalleryOpacityLevel, pnFadeTime);

    adjust();   //	обеспечение позиционирования галереи в правильном месте экрана
    return true;
}

/**
 * создает "окно" для показа окон и перекрытие
 * вызов помешать в window.onload
 *
 * @return void
 */
function gallery_start()
{
 //	создание контейнера для всей галереи
    var overlay = dce("div");
    overlay.id = "overlay";

    if (document.all) overlay.style.cursor = 'hand'; // для ИЭ так, как 'hand' - некорректное значение

    // добавляем к нему возможность - по клику - закрытие окна просмотра
    overlay.onclick = hideOverlay;

    // добавляем перекрытие в структуру DOM
    dbac(overlay);

    // создаем контейнер-окно
    var gallery = dce("div");
    gallery.id = "gallery";
    gallery.className = "psevdo_window";

    //	добавление в него всех управляющих контейнеров DIV
    //	а также заголовка "окна"
    var lcWinTitle = '<div class="pwindow_title" id="show_pic_title">' +
			    '<h3>Фото</h3>' +
			    '<a href="javascript:hideOverlay();" title="закрыть окно просмотра">X</a>' +
		    '</div>' +
		    '<div class="clear"></div>';

    gallery.innerHTML = lcWinTitle + '<div id="gallery_image"></div>';

    // добавление элемента gallery в DOM-структуру
    dbac(gallery);
};

