var photoCache= new Array();
var photoShown= new Array();
var intCurLeft = 0;
var intCurRight = 1;
var curButtonsDivTop = 0;
var curButtonsDivLeft = 0;
var curSpreadDivTop = 0;
var curSpreadDivLeft = 0;
var buttonsDiv = null;
var preLoadPhotos = 4;
var activeDivName = "";
var imgLoading = "/catalog/images/loading.png";
var imgBlank = "/catalog/images/blank.jpg";
var imgError = "/catalog/images/error.gif";
var imgCoverSheet = "/catalog/images/backcover.png";
var imgCoverSheetFull = "/catalog/images/backcoverfull.png";
var imgDummy = "images/0x0.jpg";
var curNavDiv = 'CoverNavigationDiv';
var curSrcDiv = 'CoverSrcDiv';


// Disable landing page
var timer = null;
var bDHTML = (document.getElementById || document.all || document.layers);

function IsNotRealPicture(objectClicked)
{
	return (objectClicked.indexOf(imgBlank) != -1 || objectClicked.indexOf(imgLoading) != -1 || objectClicked.indexOf(imgCoverSheet) != -1 || objectClicked.indexOf(imgCoverSheetFull) != -1) ? 1 : 0; 
}

function ShowDiv(mode)
{
    switch (mode) {
        case 0:
		    intCurLeft = 0;
		    intCurRight = 1;
            $('#' + curNavDiv).fadeOut("slow", function() {$('#CoverNavigationDiv').fadeIn("slow");});
            $('#' + curSrcDiv).fadeOut("slow", function() {$('#CoverSrcDiv').fadeIn("slow")});
            curNavDiv = 'CoverNavigationDiv';
            curSrcDiv = 'CoverSrcDiv';
            break;
        case 1:
            $('#' + curNavDiv).fadeOut("slow", function() {$('#MainNavigationDiv').fadeIn("slow");});
            $('#' + curSrcDiv).fadeOut("slow", function() {$('#MainSrcDiv').fadeIn("slow")});
            curNavDiv = 'MainNavigationDiv';
            curSrcDiv = 'MainSrcDiv';
            break;
        case 2:
            $('#' + curNavDiv).fadeOut("slow", function() {$('#BackNavigationDiv').fadeIn("slow");});
            $('#' + curSrcDiv).fadeOut("slow", function() {$('#BackSrcDiv').fadeIn("slow")});
            curNavDiv = 'BackNavigationDiv';
            curSrcDiv = 'BackSrcDiv';
            break;
    }
    
}

function HideZoom()
{
    activeDivName = "";
    $.unblockUI();
}

function ZoomPicture(objectClicked)
{
    activeDivName = "#ZoomPictureDiv";
	if (IsNotRealPicture(objectClicked.src) == 1) return;
    $('#zoomPicture').attr('src', objectClicked.src);
    $.blockUI({message: $('#ZoomPictureDiv'),
                            css: {cursor: 'auto'}
              });
}

function ZoomPictureByID(idClicked)
{
    activeDivName = "#ZoomPictureDiv";
	if (IsNotRealPicture($(idClicked).attr('src')) == 1) return;
    $('#zoomPicture').attr('src', $(idClicked).attr('src'));
    $.blockUI({message: $('#ZoomPictureDiv'),
                            css: {cursor: 'auto'}
              });
}

function GetPhoto(ind, preLoad)
{
    if (ind<0 || ind > pageCount || preLoad < 0) return;
    
    var imageID = ((ind%2) == 0) ? '#photoLeftA' : '#photoRightA';
    
    LoadImage(imageID, ind, function() { GetPhoto(ind+1, preLoad-1); });
    
//    $.ajax({
//         url: 'photoList[ind]',
//          success: function () {
//			photoCache[ind]= new Image();
//			photoCache[ind].src = photoList[ind];
//            GetPhoto(ind+1, preLoad-1);
//          },
//          error: function () {
//			photoCache[ind]= new Image();
//			photoCache[ind].src = imgError;
//            GetPhoto(ind, preLoad);
//          }
//        });  
}


function LoadImage(pSelector, srcIndex, pCallback)
{
    var loader = $(pSelector);
    LoadThisImage(loader, srcIndex, pCallback);
}


function LoadThisImage(loader, srcIndex, pCallback)
{
//    image_src = loader.attr('src');
    var src = photoList[srcIndex];

    $(loader).fadeTo("slow", 0.30,
                    function() {$(loader).attr('src', imgLoading);
                                $(loader).fadeTo("slow", 1,
                                                function() {
                                                        var img = new Image();
                                                        // image onload
                                                        $(img).load(function () {
                                                            photoCache[srcIndex] = new Image();
                                                            photoCache[srcIndex].src = photoList[srcIndex];
                                                            if (photoList[intCurLeft] == src || photoList[intCurRight] == src) {
                                                                $(loader).fadeTo("slow", 0.10,
                                                                                function() {
                                                                                    $(loader).attr('src', src);
                                                                                    $(loader).fadeTo("slow", 1);
                                                                                });
                                                            }
                                                            }).error(function () {$(loader).attr('src', imgError);}).attr('src', src);
                                                });
                                });
}

function ShowPhoto(curPhoto)
{
 
	ShowSinglePhoto(curPhoto, "photoLeft", "pageNumberLeft");
	ShowSinglePhoto(curPhoto+1, "photoRight", "pageNumberRight");
}

function ShowPageNumber(pageNumberName, curPhoto)
{    
    var nPageNumber = curPhoto;

    $('#' + pageNumberName).html("<font class=\"orderLabelRow\">" + ((nPageNumber == 0 || curPhoto > pageCount) ? " " : nPageNumber) + "</font>");
}

function ShowSinglePhoto(curPhoto, imgName, pageNumberName)
{
//	if (curPhoto != intCurLeft && intCurRight != curPhoto) {
//	    return;
//	}

    // Get photo img element from html 
    var olObject = document.getElementById(imgName);
    $('#' + imgName).stop();
	ShowPageNumber(pageNumberName, curPhoto);

    // Image is already being shown
	if (olObject.src == photoList[curPhoto]) return;
    
    // Not a valid page, show a blank one
    if (curPhoto > pageCount) {
        $('#' + imgName).attr('src', imgBlank);
        return;
    }

    // Image is not cached. Load it and show a loading gif in the meantime
	if (!photoCache[curPhoto]) {
        LoadThisImage('#' + imgName, curPhoto);
		return;
	}

    
//	if (photoCache[curPhoto] && photoCache[curPhoto].src.slice(-1*imgError.length) == imgError) {
//		ShowPageNumber(pageNumberName, curPhoto);
//        LoadThisImage('#' + imgName, curPhoto);
//		return;
//	}

	photoShown[curPhoto] = 1;

    olObject.photoIndex = curPhoto;
	
	var loader = '#' + imgName;
    $(loader).fadeTo("slow", 0.30,
                    function() {$(loader).attr('src', photoList[curPhoto]);
                                $(loader).fadeTo("slow", 1);
                                });	
//    $(loader)
//        .fadeTo("slow", 0.30)
//        .attr('src', photoList[curPhoto])
//        .fadeOut(20000);

    
}

function SetPreview(page)
{
  ShowDiv(1);
  intCurLeft = page;
  intCurRight = page+1;
  ShowPhoto(page);
}

function ViewAgain()
{
  
     GetPhoto(0, preLoadPhotos);
	 ShowPhoto(0);
  
}

function NextPhoto()
{
	photoShown[intCurLeft] = 0;
	photoShown[intCurRight] = 0;

	intCurLeft += 2;
	intCurRight = intCurLeft + 1;
   
	if (intCurLeft > pageCount) {
	    ShowDiv((showBackCover) ? 2 : 0);
		return;
	}

	ShowPhoto(intCurLeft);
}

function PrevPhoto()
{
	photoShown[intCurLeft] = 0;
	photoShown[intCurRight] = 0;

	intCurLeft -= 2;
	
	if (intCurLeft< 0) {
	    ShowDiv(0);
	    return;
	}
	
//	intCurLeft = pageCount - ((pageCount % 2 == 0) ? 2 : 1);
    intCurRight = intCurLeft + 1;

    ShowPhoto(intCurLeft);
}

function FlipPage(evt)
{
	evt = (evt) ? evt : ((window.event) ? window.event : "");
	var x = (evt.pageX) ? evt.pageX : ((evt.x) ? evt.x : 228);
	if (x > 227) {
		nextPhoto();
	} else {
		prevPhoto();
	}
}

function ChangeButtonAppearance(button, imgName)
{
	button.src= imgName;
}

var prevScroll = 0;

$(window).scroll(function () { 
    if (activeDivName == "") {
        prevScroll = 0;
        return;
    }

    var menuYloc = null;

    var position = $(activeDivName).position();
    menuYloc = position.top;
    var mainPosition = $('#ProjectContentDiv').position();

    if ($(document).scrollTop() > prevScroll) {
	    offset = menuYloc-$(document).scrollTop()+"px";
    } else {
        if ($(document).scrollTop() <= 0)
            offset = "0px";
        else
	        offset = menuYloc+$(document).scrollTop()+"px";
    }
    
    prevScroll = $(document).scrollTop();
	$(activeDivName).animate({top:offset},{duration:100,queue:false});
});

