/* -------------------------------------------------------------------------- */
/** 
 *    @fileoverview
 *       main script for NIJ
 *
 *    @version 1.1.20100311
 *    @requires jquery.js
 *    @requires bajl.js
 *    @requires bajl.flatHeight.js
 *    @requires bajl.pseudoDialog.js
 *    @requires bajl.slideCanvas.js
 */
/* -------------------------------------------------------------------------- */



/* =============== add class to specified img-block structure =============== */
jQuery(function($) {
	$(this).find('div.section:has(dd.block-image-src:has(img.margin-fix-omitted))').addClass('product-clip-wrapper');
	$(this).find('dd.block-image-src:has(img.margin-fix-omitted)').addClass('product-image-clipper');
});

/* =============== workaround for IE to avoid click shield position broken =============== */

jQuery(function($) {
	if (BAJL.ua.isIE && BAJL.ua.documentMode < 8 && $('#structure').size() == 0) {
		var $body  = $('body');
		var $inner = $body.contents();
		var $div   = $('<div id="structure"></div>');
		$body.append($div  ).addClass('structureAdded');
		$div .append($inner);
		BAJL.Singleton(BAJL.PseudoDialog).appendTo('body');
	}
});

/* =============== product index h2 append SPAN element =============== */

jQuery(function($) {
	var $ele = $('div.index-E01 div.index-unit h2.heading-image-A01');
	var $eleNodes = $('div.index-E01 div.index-unit h2.heading-image-A01').contents();
	$ele.addClass('heading-clipper');
	$eleNodes.wrap('<span></span>');
});

jQuery(function($) {
	var $coolpixH2 = $('div.index-A02 div.index-unit h2.heading-image-A01');
	var $coolpixH2content = $('div.index-A02 div.index-unit h2.heading-image-A01').contents();
	$coolpixH2.addClass('heading-clipper');
	$coolpixH2content.wrap('<span></span>');
});

/* =============== product gallery slide select append SPAN element =============== */

jQuery(function($) {
	var $pgCtrl = $('div.product-gallery > div.slide-canvas > ul.slide-controller > li.slide-select > a');
	var $pgCtrlCnt = $($pgCtrl).contents();
	$pgCtrlCnt.wrap('<span></span>');
});



jQuery(function($) {
	var $acDivGr = $('div.grid-group:has(div.column-2by3:has(div.product-data-A01))');
	$acDivGr.addClass('accessoryGroup');
	var $acDD   = $('div.accessoryGroup > div.column-1by3 > dl.block-image > dd.block-image-src');
	$acDD.addClass('accessoryImage');
	$acDD.contents().wrap('<span></span>');
});



/* =============== flatten heights of index blocks =============== */

jQuery(function($) {
	$('div.index-E01 > div.index-group').each(function() {
		$(this).find('div.index-unit').BAJL_FlatHeights();
	});
	$('div.index-E01 > div.index-group > div.index-unit').each(function() {
		$(this).find('div.index-unit:first-child').BAJL_FlatHeights();
	});
	$('div.grid-article').each(function() {
		$(this).find('div.article-grid-unit').BAJL_FlatHeights();
	});
	$('div.index-A01 > div.index-group').each(function() {
		$(this).find('div.index-unit').BAJL_FlatHeights();
	});
	$('div.index-A02 > div.index-group').each(function() {
		$(this).find('div.index-unit').BAJL_FlatHeights();
	});
	$('div.index-B01 > div.index-group').each(function() {
		$(this).find('div.index-unit').BAJL_FlatHeights();
	});
	$('div.index-C01 > div.index-group').each(function() {
		$(this).find('div.index-unit').BAJL_FlatHeights();
	});
	$('div.index-C02 > div.index-group').each(function() {
		$(this).find('div.index-unit').BAJL_FlatHeights();
	});
	$('div.index-F01 > div.index-group').each(function() {
		$(this).find('div.index-unit').BAJL_FlatHeights();
	});
});

/* =============== fix h2 height to flatten height =============== */

jQuery(function($) {
	$('div.index-group > div.index-unit:has(h2.heading-clipper)').each(function() {
		$(this).find('h2.heading-clipper').css('height', $(this).height());
	});
});


/* =============== fix layout floater height =============== */

jQuery(function($) {
	if(document.URL.indexOf('/products/camera/slr/digital/d300s/features01.htm') > 0) {
		$('div.layout-floater-A02').each(function() {
			$(this).find('*.floater').BAJL_FlatHeights();
		});
	}
	if(document.URL.indexOf('/products/camera/slr/digital/d3s/features04.htm') > 0) {
		$('div.layout-floater-A02').each(function() {
			$(this).find('*.floater').BAJL_FlatHeights();
		});
	}
});

/* =============== additional behaviors for the pseudo dialog =============== */

jQuery(function($) {
	if (!BAJL.PseudoDialog) return;
	
	var pseudoDialog = BAJL.Singleton(BAJL.PseudoDialog);
	var $pdBaseNode  = $('#' + BAJL.settings.PseudoDialog.id);

	// prevent flickering thumbnails in the dialog (old IE only)
	if (BAJL.ua.isIE && BAJL.ua.documentMode < 8) {
		pseudoDialog.addCallback('onOpen', function() { $pdBaseNode.css('border-bottom', '1px solid').css('border-bottom', 'none') });
	}

	// click event handler (for 'pdialog-A01')
	$pdBaseNode.find('div.pdialog-A01').live('click', function(e) {

		// close the dialog when user clicked on the space in 'dialog-nav' cells.
		if ($(e.target).is('td.pdialog-nav')) {
			pseudoDialog.close();
		}

		// open/close exif information panel in the dialog.
		var $button = $(e.target).closest('dl.pdialog-panel-control dd');
		var $panel  = $button.closest('div.slide-unit').find('div.pdialog-image-exif');
		
		if ($panel.BAJL_HasElement() && $button.BAJL_HasElement()) {
			e.preventDefault();
			$panel.BAJL_TogglePanel($button);
			$button.triggerHandler('click');
		}
	});

	// for movie viewer dialog (temporary)
	$('a, area').live('click', function(e) {
		var $body        = $(document.body);
		var anchor       = $(this).get(0);
		var validTarget  = BAJL.settings.PseudoDialog.autoSetup.linkTarget;
		var validSuffix  = '.html';
		var className    = 'movie-dialog-opened';
		if (anchor.target == validTarget && BAJL.String(anchor.href).endsWith(validSuffix)) {
			$body.addClass(className);
			pseudoDialog.addCallback('onClose', function() { $body.removeClass(className) }, this, 'disposable');
		}
	});
});

jQuery(function($) {
	$pdContent = $('div.pdialog-A01:has(table)');
	$pdCloseFuncBtn = $('a.BAJLPseudoDialogCloseBtn');
	if($pdContent.size() > 0) {
		$pdCloseFuncBtn.addClass('layoutedDialogCloseButton');
	}
});
/* =============== association slidecanvas and pseudo dialog =============== */

jQuery(function($) {
	if (!BAJL.SlideCanvas) return;

	var currentIndex = 0;
	var prevButtons  = [];
	var nextButtons  = [];
	var slideCanvas  = BAJL.SlideCanvas.getInstance('div.pdialog-A01 div.slide-canvas');
	var pseudoDialog = BAJL.Singleton(BAJL.PseudoDialog);

	if (slideCanvas && pseudoDialog) {
		
		// setup navigation thumbnail's behavior
		$('div.pdialog-A01')
			.find('ul.pdialog-nav-prev li').each(function() {
				prevButtons.push(
					new BAJL.SlideCanvas.StepButton(this, -1)
						.addCallback('onClick', function(step) { slideCanvas.selectBy(step) })
						.disable()
				);
			})
			.end()
			.find('ul.pdialog-nav-next li').each(function(i) {
				nextButtons.push(
					new BAJL.SlideCanvas.StepButton(this, +1)
						.addCallback('onClick', function(step) { slideCanvas.selectBy(step) })
						.disable()
				);
			});

		// show/hide navigation thumbnail
		slideCanvas.addCallback('onSelect', function(index) {
			prevButtons.forEach(function(_) { _.disable() });
			nextButtons.forEach(function(_) { _.disable() });
			if (prevButtons[index - 1]) {
				prevButtons[index - 1].enable();
			}
			if (nextButtons[index + 1]) {
				nextButtons[index + 1].enable();
			}
		});
		// first call
		slideCanvas.doCallback('onSelect', currentIndex);

		// when pseudo dialog is opened, select canvas by the index number which is stored.
		pseudoDialog.addCallback('onOpen', function() { slideCanvas.select(currentIndex) });

		// store index number os currently shown canvas in the page content.
		var slideCanvasOnPage = BAJL.SlideCanvas.getInstance('div.inner-panel-A01 div.slide-canvas');
		if (slideCanvasOnPage) {
			slideCanvasOnPage.addCallback('onStart', function(index) { currentIndex = index });
		}
	}
});




