var registeredImages = new Object();
var registeredVideos = new Object();
var commonCap = '';
var numberToPreload = 6;
var preloadCount = 0;
var hoverCount = 0;
var hiResCount = 0;
var videoExists = false;
var isVideoPlaying = false;
var magnifier;
var isIVConstructed = false;
var ivMediaUrls = new Object();
var canHaveIV = 0;
var spinnerDimensions = [23,23];
var isAnyCust = -1;
function flushClientLog() {
if(window.clientLogger){
var params = {};
if(0) {
params['hoverCount'] = hoverCount;
params['hiResCount'] = hiResCount;
params['productGroup'] = "book_display_on_website";
params['isTwister'] = 0;
params['weblab'] = "HZ";
clientLogger.sendCLOGEntry("bxindiahoverzoom", "hoverZoom", params);
}
}
}
function registerImage( id, image, html, caption, hiResUrl ) {
registeredImages[id] = new Object();
registeredImages[id].image = image;
registeredImages[id].hiResUrl = hiResUrl;
registeredImages[id].html = html;
registeredImages[id].caption = caption;
registeredImages[id].hiResPreloaded = 0;
if ( preloadCount < numberToPreload ) {
var imagePreloader = new Image();
imagePreloader.src = image;
preloadCount++;
}
if(hiResUrl) {
hiResCount++;
}
}
window.players = new Array();
function registerVideo( id, mediaID ) {
if( !0 )
return;
if(!registeredVideos[id]) {
registeredVideos[id] = new Object();
}
videoExists = true;
registeredVideos[id].videoID = mediaID;
var holderID = 'holder' + mediaID;
amznJQ.available("jQuery", function(){
var holderStr = "";
var placeHolder = jQuery(holderStr);
if(0 && jQuery.browser.msie) {
// This div appears offset to the right in IE. Margin to adjust this. (This happens only in HoverZoom layout)
var imageGridCount = jQuery('#handleBuy').find('.productImageGrid').length;
if(imageGridCount == 1) {
placeHolder.css({"margin-left":"-315px"});
} else {
placeHolder.css({"margin-left":"-330px"});
}
}
jQuery('#prodImageCell').parents('table:first').before(placeHolder);
var mediaObject = { mediaObjectId:mediaID, slateImageUrl:registeredImages[id].image };
window.players[id] = new AmznVideoPlayer(mediaObject, holderID, 300, 300);
});
}
function preloadHiRes(id) {
if(!magnifier) {
return;
}
if(!registeredImages[id].hiResUrl) {
magnifier.changeImage('', '');
return;
}
if (registeredImages[id] && !registeredImages[id].hiResPreloaded) {
if(registeredImages[id].hiRes) {
delete registeredImages[id].hiRes;
}
registeredImages[id].hiRes = new Image();
registeredImages[id].hiRes.src = registeredImages[id].hiResUrl;
magnifier.changeImage('', registeredImages[id].hiResUrl);
registeredImages[id].hiRes.onload = function() {
registeredImages[id].hiResPreloaded = 1;
};
registeredImages[id].hiRes.onerror = function() {
magnifier.changeImage('', '');
};
registeredImages[id].hiRes.onabort = function() {
magnifier.changeImage('', '');
};
} else if(registeredImages[id].hiResPreloaded) {
if(magnifier) {
magnifier.changeImage('', registeredImages[id].hiResUrl);
}
}
}
var isLoaded = false;
var clientX;
var clientY;
var hiResImageLoadState = {};
function changeImage( imageUrl, hiResUrl, event , spinnerURL) {
if (!0) {
return;
}
if(hiResUrl && hiResImageLoadState[hiResUrl] != undefined && hiResImageLoadState[hiResUrl] == 0) {
isLoaded = false;
} else if(hiResUrl && hiResImageLoadState[hiResUrl] == undefined) {
hiResImageLoadState[hiResUrl] = 0;
isLoaded = false;
var imgObj = jQuery(" ").attr("src",hiResUrl);
imgObj.load(function() {
isLoaded = true;
jQuery("#hoverZoomSpinner").remove();
hiResImageLoadState[hiResUrl] = 1;
});
}
hoverCount++;
if(0 != 2 && jQuery('#hover-zoom-end').length) {
var prodImgHeight = jQuery('#handleBuy .productImageGrid').height();
var htTillHZEnd = jQuery('#hover-zoom-end').show().position().top - jQuery('#btAsinTitle').position().top;
jQuery('#hover-zoom-end').hide();
var hzHeight = prodImgHeight > htTillHZEnd ? prodImgHeight : htTillHZEnd; //find maximum
jQuery('#hover-zoom-end').height(hzHeight);
}
if(!isLoaded) {
if(!jQuery("#hoverZoomSpinner").length && spinnerURL) {
var parent = jQuery("#prodImageCell");
var offset = {top: (parent.height() - spinnerDimensions[1]) / 2, left: (parent.width() - spinnerDimensions[0]) / 2 };
parent.css("position", "relative").append(" ");
}
}
if(!magnifier) {
var minHeightElem = null;
var adjustment = [0,0,0,0];
if(0 != 2) {
minHeightElem = '#handleBuy .productImageGrid';
adjustment = [0,0,1,1];
if(jQuery('#hover-zoom-end').length) {
minHeightElem = '#hover-zoom-end';
adjustment = [0,0,2,0];
}
}
clientX = event.clientX;
clientY = event.clientY;
jQuery("#prodImageCell").mousemove(function(event){
clientX = event.clientX;
clientY = event.clientY;
});
jQuery("#prodImageCell").mouseout(function(){
clientX = -1;
clientY = -1;
});
amznJQ.available("imageMagnifier", function(){
magnifier = jQuery("#prodImageCell").amazonMagnifier({
location:"over",
adjustment:adjustment,
locationElement:"#btAsinTitle, #product-title-divider, .hoverZoom",
minHeightElement:minHeightElem ,
preload:"ready",
clickForFullscreen: false,
zIndex: 15,
title: jQuery('#btAsinTitle').text(),
generalImageUrls: {}
});
magnifier.changeImage('', hiResUrl);
if(clientX != -1 && clientY != -1) {
var modifiedEvent = event;
modifiedEvent = {pageX: clientX + jQuery('body').scrollLeft(), pageY: clientY + jQuery('body').scrollTop()};
magnifier.engageMagnifier(modifiedEvent);
}
});
} else if(magnifier && hiResUrl) {
magnifier.changeImage('', hiResUrl);
}
}
var currentMediaID = null;
function displayVideo(id) {
if( !0 )
return;
if (registeredImages[selectedImageID].ciuAnnoContainer) {
registeredImages[selectedImageID].ciuAnnoContainer.hide();
}
//document.getElementById('prodImageCell').innerHTML = '';
jQuery('#prodImageCell').css('visibility', 'hidden');
if(0 && 0) {
if(isVideoPlaying) {
document.getElementById('prodImageCaption').innerHTML = registeredImages[id].caption;
} else {
document.getElementById('prodImageCaption').innerHTML = "";
}
} else {
document.getElementById('prodImageCaption').innerHTML = registeredImages[id].caption;
}
for ( elementID in registeredImages ) {
var imageThumbnail = document.getElementById(elementID);
if (imageThumbnail != null) {
imageThumbnail.style.border = '1px solid #999999';
var thumbClass = (0) ? 'altImgThumbnail' : 'productThumbnail';
imageThumbnail.className = thumbClass;
}
}
if (0) {
document.getElementById(id).style.border = '2px solid #E47911';
document.getElementById(id).className = 'altImgSelect';
} else {
document.getElementById(id).style.border = '1px solid #990000';
}
AmznVideoPlayer.hideAll();
var mediaID = registeredVideos[id].videoID;
if (AmznVideoPlayer.lastPlayedId == mediaID){
//AmznVideoPlayer.players[mediaID].resizeVideo(300,300);
if(AmznVideoPlayer.players[mediaID]) {
AmznVideoPlayer.players[mediaID].showFlash();
}
} else {
if( AmznVideoPlayer.players[AmznVideoPlayer.lastPlayedId]) {
try {
AmznVideoPlayer.players[AmznVideoPlayer.lastPlayedId].pause();
} catch(e) {
}
}
try {
AmznVideoPlayer.players[mediaID].stop();
} catch(e) {
}
AmznVideoPlayer.players[mediaID].showPreplay();
}
currentMediaID = mediaID;
}
var allPreloaded = 0;
var selectedImageID = "original_image";
function displayImage( id ) {
if ( id == selectedImageID ) {
if( 0 && 0 ) {
amznJQ.available('jQuery', function() {
if( registeredVideos[id]) {
if(isVideoPlaying) {
jQuery('#prodImageCaption').html( '' );
} else {
jQuery('#prodImageCaption').html( '' );
}
} else {
setIVCaption( '' );
}
});
}
return;
}
if( 0 ){
if( registeredVideos[id]) {
displayVideo(id);
selectedImageID = id;
return;
}
if(videoExists) {
if(AmznVideoPlayer.players[AmznVideoPlayer.lastPlayedId]) {
try {
AmznVideoPlayer.players[AmznVideoPlayer.lastPlayedId].pause();
}
catch(e) {
}
}
AmznVideoPlayer.hideAll();
currentMediaID = null;
}
}
if (registeredImages[selectedImageID].ciuAnnoContainer) {
registeredImages[selectedImageID].ciuAnnoContainer.hide();
}
selectedImageID = id;
document.getElementById('prodImageCell').innerHTML = registeredImages[id].html;
if ( 0 && !1 && commonCap ) {
document.getElementById('prodImageCaption').innerHTML = commonCap;
} else{
document.getElementById('prodImageCaption').innerHTML = registeredImages[id].caption;
}
if( 0 ) {
amznJQ.available('jQuery', function() {
if(canHaveIV && selectedImageID == 'original_image') {
jQuery('#prodImage').css('cursor','pointer');
jQuery('#prodImageCaption').text( '' );
jQuery('#prodImage').addClass('prod_image_selector');
}
jQuery('#prodImageCell').css('visibility', 'visible');
if( 0) {
setIVCaption('');
}
});
}
for ( elementID in registeredImages ) {
var imageThumbnail = document.getElementById(elementID);
if (imageThumbnail != null) {
imageThumbnail.style.border = '1px solid #999999';
var thumbClass = (0) ? 'altImgThumbnail' : 'productThumbnail';
imageThumbnail.className = thumbClass;
}
if ( !allPreloaded ) {
var imagePreloader = new Image();
imagePreloader.src = registeredImages[elementID].image;
}
}
if (0) {
document.getElementById(id).style.border = '2px solid #E47911';
document.getElementById(id).className = 'altImgSelect';
} else {
document.getElementById(id).style.border = '1px solid #990000';
}
allPreloaded = 1;
if (registeredImages[id].ciuAnnoContainer) {
registeredImages[id].ciuAnnoContainer.show();
}
if (0) {
preloadHiRes(id);
}
if( 0) {
if(isIVConstructed && immersiveView) {
immersiveView.createIVTrigger();
}
}
}
function resetCaption(thumbID) {
amznJQ.available('jQuery', function() {
if(0 && 0) {
if(!thumbID) {
if(selectedImageID)
resetCaption(selectedImageID);
return;
}
if( registeredVideos[thumbID]) {
if(isVideoPlaying) {
jQuery('#prodImageCaption').html( '' );
} else {
jQuery('#prodImageCaption').html( '' );
}
} else {
if(thumbID.substring(0, 4) == 'cust') {
setIVCaption();
} else {
if(registeredImages[thumbID] && registeredImages[thumbID].hiResUrl) {
jQuery('#prodImageCaption').html( '' );
} else {
if(hasAnyCustImage()) {
jQuery('#prodImageCaption').html(" ");
} else {
jQuery('#prodImageCaption').html(" ");
}
}
}
}
}
});
}
function hasAnyCustImage() {
if (isAnyCust != -1)
return isAnyCust;
for ( elementID in registeredImages ) {
if(elementID.substring(0, 4) == 'cust'){
isAnyCust = 1;
return 1;
}
}
isAnyCust = 0;
return 0;
}
var ivImageSet;
var ivSelectedImageId = 0;
var ivVideoSet;
function isIVable(isLargeEnough) {
canHaveIV = isLargeEnough;
}
function addToIVImageSet(thumbSrc, zoomSrc)
{
if( !ivImageSet ){
ivImageSet = new Object();
}
if( !0 )
return;
var id = 0; //only 1 set of images for IV in single variation
if (ivImageSet[id] == null) {
ivImageSet[id] = new Object();
}
if (ivImageSet[id].images == null) {
ivImageSet[id].images = {thumbnails:[],zoomImages:[]};
}
var currId = ivImageSet[id].images.thumbnails.length;
ivImageSet[id].images.thumbnails[currId] = thumbSrc;
ivImageSet[id].images.zoomImages[currId] = zoomSrc;
}
function addToIVVideoSet(mediaID, slateImg, title, duration)
{
if( !ivVideoSet ){
ivVideoSet = new Object();
}
if( !0 )
return;
var id = 0; //only 1 set of images for IV in single variation
if (ivVideoSet[id] == null) {
ivVideoSet[id] = new Object();
}
if (ivVideoSet[id].videos == null) {
ivVideoSet[id].videos = {mediaIDs:[],slateImages:[],titles:[],durations:[]};
}
var currId = ivVideoSet[id].videos.mediaIDs.length;
ivVideoSet[id].videos.mediaIDs[currId] = mediaID;
ivVideoSet[id].videos.slateImages[currId] = slateImg;
ivVideoSet[id].videos.titles[currId] = title;
ivVideoSet[id].videos.durations[currId] = duration;
}
function setIVSelectedImageId(imageId) {
if( !0 )
return;
ivSelectedImageId = imageId;
}
var immersiveView;
function openImmersiveView(e) {
var isImage;
if( !(0) || !canHaveIV) {
return;
}
if(isIVConstructed) {
if(!jQuery.browser.mozilla) {
jQuery(document.body).css("overflow","hidden");
}
return;
}
if(e) {
e.cancelBubble = true;
}
if(!jQuery.browser.mozilla) {
jQuery(document.body).css("overflow","hidden");
}
jQuery(document.body).css("opacity","0.4");
jQuery('#loadingImage').css({"left": function(){
return ( jQuery(window).width() - jQuery('#loadingImage').width() ) / 2+jQuery(window).scrollLeft() + "px";
},"top" : function(){
return ( jQuery(window).height() - jQuery('#loadingImage').height()) / 2+jQuery(window).scrollTop() + "px";
},"display":"block"});
var currentId = selectedImageID.split('_');
var selectedId = currentId.length <= 2 ? 0 : currentId[currentId.length-1];
isIVConstructed = true;
// Give some time for cancel bubble to work
setTimeout( function() {
amznJQ.available("immersiveView", function(){
jQuery('#loadingImage').css("display","none");
immersiveView = jQuery.fn.amazonImmersiveView();
immersiveView.setTitle(jQuery('#btAsinTitle').text());
immersiveView.setProductGroupID('book_display_on_website');
immersiveView.changeImageSet(ivImageSet);
immersiveView.changeVideoSet(ivVideoSet);
immersiveView.setMediaUrls(ivMediaUrls);
if ((currentId[0] === 'alt') || (currentId[0] === 'original') || (currentId[0] === 'cust')) {
isImage = true;
} else {
isImage = false;
}
immersiveView.setInitialIDs(0, selectedId, isImage);
immersiveView.createImmersiveView(e, false);
// open IV first time
triggerIV();
});
}, 50);
setTimeout(function() {
//timeout if IV not load.
if(!immersiveView) {
jQuery('#loadingImage').css("display","none");
jQuery(document.body).css("overflow","auto"); // re-enable scrolling
jQuery(document.body).css("opacity","");
}
},30000);
// empty ajax call to set ref tags
jQuery.get('/gp/product/ajax-handlers/reftag.html?ref=dp_iv');
}
function setImmersiveViewContext()
{
if( !0 )
return;
var isImage;
immersiveView.setTitle(jQuery('#btAsinTitle').text());
var currentId = selectedImageID.split('_');
var selectedId = currentId.length <= 2 ? 0 : currentId[currentId.length-1];
if ((currentId[0] === 'alt') || (currentId[0] === 'original') || (currentId[0] === 'cust')) {
isImage = true;
} else {
isImage = false;
}
immersiveView.setInitialIDs(0, selectedId, isImage);
}
function triggerIV(triggerElement) {
if(isIVConstructed) {
if(immersiveView && !immersiveView.isIVOpen()) {
jQuery.AmazonPopover.displayPopover(immersiveView.getIVPopoverOptions());
}
} else {
openImmersiveView();
}
}
function videoClick() {
triggerIV();
}
var isVideoPlaying = false;
function videoStateChange(state){
var currentId = selectedImageID.split('_');
if ((currentId[0] === 'alt') || (currentId[0] === 'original') || getCurrentMediaId() == null) {
return;
}
if(state == "playing") {
isVideoPlaying = true;
if(0 && 0) {
jQuery('#prodImageCaption').html('');
} else {
jQuery('#prodImageCaption').html('');
}
} else {
isVideoPlaying = false;
jQuery('#prodImageCaption').html('');
}
}
function getCurrentMediaId() {
return currentMediaID;
}
function setIVCaption(caption) {
if(selectedImageID.substring(0, 4) == 'cust') {
if(registeredImages[selectedImageID] && registeredImages[selectedImageID].caption && registeredImages[selectedImageID].caption.length) {
document.getElementById('prodImageCaption').innerHTML = registeredImages[selectedImageID].caption;
} else {
document.getElementById('prodImageCaption').innerHTML = " ";
}
} else {
if(canHaveIV && caption && caption.length) {
document.getElementById('prodImageCaption').innerHTML = caption;
} else {
if(hasAnyCustImage()) {
document.getElementById('prodImageCaption').innerHTML = " ";
} else {
document.getElementById('prodImageCaption').innerHTML = " ";
}
}
}
}
amznJQ.available("jQuery", function(){
jQuery(document).ready(function() {
window.onbeforeunload = flushClientLog;
});
});
|