// Class
function ProductPictureViewer()
{
}

ProductPictureViewer.initImageZoom = function (vlnkLargerImage) {
  var sIdImagePreview = "a#" + vlnkLargerImage;
  
  $(document).ready(function() {
    if (document.getElementById(vlnkLargerImage))
    {
      var options = {
        zoomWidth: 492,
        zoomHeight: 492,
        xOffset: 5,
        yOffset: 0,
        position: "right",
        zoomType: "standard", // 'standard' , 'reverse'
        title: false,
        showEffect: "fadein", // 'show' , 'fadein'
        hideEffect: "hide", // 'hide' ,'fadeout'
        fadeinSpeed: "fast", // 'fast','slow','medium'
        //fadeoutSpeed: "fast", // 'fast','slow','medium')
        imageOpacity: 0.6,
        showPreload: false
      };
      $(sIdImagePreview).jqzoom(options);
  }});
}

ProductPictureViewer.openImageViewer = function (vsIdPictureFrame, vsWindowName)
{
	var oPictureFrame = document.getElementById(vsIdPictureFrame);
	var iWidth;
	var iHeight;
	var sUrl;
	var oWindow;

	if (oPictureFrame)
	{
		sUrl = oPictureFrame.getAttribute("imgLargeUrl");
		
		if (sUrl && sUrl != "")
		{
			iWidth = parseInt(oPictureFrame.getAttribute("imgLargeWidth"));
			iHeight = parseInt(oPictureFrame.getAttribute("imgLargeHeight"));
			
			iWidth += 30;
			iHeight += 60;
				
			oWindow = window.open(sUrl, vsWindowName, "height=" + iHeight + ",width=" + iWidth);
			oWindow.focus();
		}
	}
}

ProductPictureViewer.changeImageFrame = function(vsIdPictureFrame, vsFrameImageUrl, vsZoomImageUrl, viZoomImageWidth, viZoomImageHeight, vsLargeImageUrl, viLargeImageWidth, viLargeImageHeight, vsIdImageLoading, vsIdLargerViewLink, vsIdLargerViewImageLink) {
  var oPictureFrame = document.getElementById(vsIdPictureFrame);
  var oImageLoading;
  var oImage;
  var oLargerViewLink = document.getElementById(vsIdLargerViewLink);
  var oLargerViewImageLink = document.getElementById(vsIdLargerViewImageLink);
 
  if (oPictureFrame) {
    oImageLoading = document.getElementById(vsIdImageLoading);
    if (oImageLoading) {
      oPictureFrame.src = oImageLoading.src;
    }

    oPictureFrame.setAttribute("imgLargeUrl", vsLargeImageUrl);
    oPictureFrame.setAttribute("imgLargeWidth", viLargeImageWidth);
    oPictureFrame.setAttribute("imgLargeHeight", viLargeImageHeight);
    oPictureFrame.setAttribute("imgZoomUrl", vsZoomImageUrl);
    oPictureFrame.setAttribute("imgZoomWidth", viZoomImageWidth);
    oPictureFrame.setAttribute("imgZoomHeight", viZoomImageHeight);

    if (vsLargeImageUrl == "") {
      oPictureFrame.style.cursor = "default";
      $(oLargerViewImageLink).bind("click", function (){return false;});
      oLargerViewImageLink.style.cursor = "default";
      if (oLargerViewLink) {
        oLargerViewLink.style.display = "none";
      }
    }
    else {
      oPictureFrame.style.cursor = "pointer";
      $(oLargerViewImageLink).unbind("click");
      $(oLargerViewImageLink).bind("click", function(){ProductPictureViewer.openImageViewer(vsIdPictureFrame, "imageLarge"); return false;});
      oLargerViewImageLink.style.cursor = "pointer";
      if (oLargerViewLink) {
        oLargerViewLink.style.display = "inline";
      }
    }

    if (vsZoomImageUrl == "")
    {
      $("div.pictureThumbnailsZoomInfo").css("display", "none");
    }
    else
    {
      $("div.pictureThumbnailsZoomInfo").css("display", "");
    }

    // Load the image
    oImage = new Image();
    oImage.onLoad = ProductPictureViewer.onImageLoaded(vsIdPictureFrame, vsFrameImageUrl);
    oImage.src = vsFrameImageUrl;

    //oPictureFrame.src = vsFrameImageUrl;
  }
}

ProductPictureViewer.onImageLoaded = function(vsIdImage, vsImageUrl)
{
	var oPicture = document.getElementById(vsIdImage);
	if (oPicture)
	{
		oPicture.src = vsImageUrl;
	}
}

ProductPictureViewer.slideShowNext = function (viStep, vsIdDivProductPictureData, vsIdUlProductPictureThumbnail, vsIdImageNext, vsIdImagePrevious)
{
  var oThumbArray = document.getElementById(vsIdUlProductPictureThumbnail).getElementsByTagName('img');
  var oDataArray = document.getElementById(vsIdDivProductPictureData).getElementsByTagName('img');
  var oImageNext = document.getElementById(vsIdImageNext);
  var oImagePrevious = document.getElementById(vsIdImagePrevious);
  var iCurrentIndex;
  var iFirstItemIndex;
  var iLastItemIndex;
  
  if (oImageNext.getAttribute("clickEnabled") == "true")
  {
    for (var i = 0; i < oThumbArray.length; i++)
    {
      iCurrentIndex = parseInt(oThumbArray[i].getAttribute("currentIndex"));
      iCurrentIndex += parseInt(viStep);
      
      if (iCurrentIndex >= 0 && iCurrentIndex < oDataArray.length)
      {
        oThumbArray[i].src = oDataArray[iCurrentIndex].src;
        oThumbArray[i].onmouseover = oDataArray[iCurrentIndex].onmouseover;
        oThumbArray[i].alt = oDataArray[iCurrentIndex].alt;
        oThumbArray[i].setAttribute("currentIndex", iCurrentIndex);
        oThumbArray[i].style.display = "inline";
      }
      else
      {
        oThumbArray[i].style.display = "none";
        oThumbArray[i].setAttribute("currentIndex", iCurrentIndex);
      }
    }
    
    iFirstItemIndex = parseInt(oThumbArray[0].getAttribute("currentIndex"));
    iLastItemIndex = parseInt(oThumbArray[oThumbArray.length -1].getAttribute("currentIndex"));
    if (iLastItemIndex < iFirstItemIndex)
    {
      iLastItemIndex = iFirstItemIndex;
    }
    
    if (iFirstItemIndex > 0)
    {
      oImagePrevious.setAttribute("clickEnabled", "true");
      oImagePrevious.src = oImagePrevious.getAttribute("ImageEnabled");
      oImagePrevious.style.cursor = "pointer";
    }
    else
    {
      oImagePrevious.setAttribute("clickEnabled", "false");
      oImagePrevious.src = oImagePrevious.getAttribute("ImageDisabled");
      oImagePrevious.style.cursor = "";
    }
    
    if (iLastItemIndex < oDataArray.length -1)
    {
      oImageNext.setAttribute("clickEnabled", "true");
      oImageNext.src = oImageNext.getAttribute("ImageEnabled");
      oImageNext.style.cursor = "pointer";
    }
    else
    {
      oImageNext.setAttribute("clickEnabled", "false");
      oImageNext.src = oImageNext.getAttribute("ImageDisabled");
      oImageNext.style.cursor = "";
    }
  }
}

ProductPictureViewer.slideShowPrevious = function (viStep, vsIdDivProductPictureData, vsIdUlProductPictureThumbnail, vsIdImageNext, vsIdImagePrevious)
{
  var oThumbArray = document.getElementById(vsIdUlProductPictureThumbnail).getElementsByTagName('img');
  var oDataArray = document.getElementById(vsIdDivProductPictureData).getElementsByTagName('img');
  var oImageNext = document.getElementById(vsIdImageNext);
  var oImagePrevious = document.getElementById(vsIdImagePrevious);
  var iCurrentIndex;
  var iFirstItemIndex;
  var iLastItemIndex;
  
  if (oImagePrevious.getAttribute("clickEnabled") == "true")
  {
    for (var i = 0; i < oThumbArray.length; i++)
    {
      iCurrentIndex = parseInt(oThumbArray[i].getAttribute("currentIndex"));
      iCurrentIndex -= parseInt(viStep);
      
      if (iCurrentIndex >= 0 && iCurrentIndex < oDataArray.length)
      {
        oThumbArray[i].src = oDataArray[iCurrentIndex].src;
        oThumbArray[i].onmouseover = oDataArray[iCurrentIndex].onmouseover;
        oThumbArray[i].alt = oDataArray[iCurrentIndex].alt;
        oThumbArray[i].setAttribute("currentIndex", iCurrentIndex);
        oThumbArray[i].style.display = "inline";
      }
      else
      {
        oThumbArray[i].style.display = "none";
        oThumbArray[i].setAttribute("currentIndex", iCurrentIndex);
      }
    }
    
    iFirstItemIndex = parseInt(oThumbArray[0].getAttribute("currentIndex"));
    iLastItemIndex = parseInt(oThumbArray[oThumbArray.length -1].getAttribute("currentIndex"));
    if (iLastItemIndex < iFirstItemIndex)
    {
      iLastItemIndex = iFirstItemIndex;
    }
    
    if (iFirstItemIndex > 0)
    {
      oImagePrevious.setAttribute("clickEnabled", "true");
      oImagePrevious.src = oImagePrevious.getAttribute("ImageEnabled");
      oImagePrevious.style.cursor = "pointer";
    }
    else
    {
      oImagePrevious.setAttribute("clickEnabled", "false");
      oImagePrevious.src = oImagePrevious.getAttribute("ImageDisabled");
      oImagePrevious.style.cursor = "";
    }
    
    if (iLastItemIndex < oDataArray.length -1)
    {
      oImageNext.setAttribute("clickEnabled", "true");
      oImageNext.src = oImageNext.getAttribute("ImageEnabled");
      oImageNext.style.cursor = "pointer";
    }
    else
    {
      oImageNext.setAttribute("clickEnabled", "false");
      oImageNext.src = oImageNext.getAttribute("ImageDisabled");
      oImageNext.style.cursor = "";
    }
  }
}

function changePictureByIdProduct(vsIdProduct)
{
  var oThumbnail = getThumbnailByProductId(vsIdProduct);

  if (oThumbnail)
  {
    if (oThumbnail.onmouseover)
    {
      oThumbnail.onmouseover();
    }
  }
}

function getThumbnailByProductId(vsIdProduct)
{
  var oDivContainer = document.getElementById("divProductPictureThumbnails");
  var oImgs;
  var oThumbnail;

  if (oDivContainer)
  {
    oImgs = oDivContainer.getElementsByTagName("IMG");

    for (var i = 0; i < oImgs.length; i++)
    {
      if (oImgs[i].getAttribute("idProduct") && oImgs[i].getAttribute("idProduct") == vsIdProduct)
      {
        oThumbnail = oImgs[i];
        break;
      }
    }
  }

  return oThumbnail;
}
