/* -------------------------------------------------------------------------- */
/** 
 *    @fileoverview
 *       main script for NIJ
 *
 *    @version 1.3.1 20111004
 *    @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 (!location.pathname.match(/^\/iw-preview\/.*\.component$/)) {
		if (BAJL.ua.isIE && BAJL.ua.documentMode < 8 && $('#structure').size() == 0) {
			$("body script.nijWebBeacons").remove();
			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');
		}
	} else {
		$('body').css('width','auto');
	}
});

/* =============== 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>');
});

/* =============== products top layout-fix ========================*/
jQuery(function($) {
	$('#productNews dl.list-link-G04 dd:last').addClass('pseudo-last-child');
});


/* =============== Enjoy Nikon Local Nav ========================*/
jQuery(function($) {
	var $currentPath = $('ul#topic-path li:has(em)');
	var $parentPath = $currentPath.prev();

	$('dd#local-nav-body li.sub-item').each(function() {
		var $navLink = $(this).children('a');

		if($navLink.contents().text() == $currentPath.find('em').contents().text()) {
			$navLink.wrap('<em></em>');

			if(location.pathname == $navLink.attr('href')) {
				$navLink.replaceWith('<span>' + $navLink.text() + '</span>');
			}
		}
	});

	$('dd#local-nav-body').each(function() {
		if($(this).find('em').size() == 0) {
			$(this).find('li.sub-item').each(function() {
				if($(this).children('a').contents().text() == $parentPath.find('a').contents().text()) {
					$(this).children('a').wrap('<em></em>');
				}
			});
		}
	});


	$('dd#local-nav-body li.sub-item').each(function() {
		if($(this).find('*.sub-local-nav').size() > 0 && $(this).find('em').size() > 0) {
			$(this).addClass('pseudo-opened');
		}
	});
});


/* =============== heading3-A01 markup-fix ========================*/
jQuery(function($) {
	$('.heading3-A01').each(function() {
		if($(this).find('span').size() == 0) {
			var $h3inner = $(this).contents();
			var $h3span = $('<span></span>');
			$(this).append($h3span);
			$($h3span).append($h3inner);
		}
	});
});


/* =============== h2 sub-tab navigation fix ========================*/
jQuery(function($) {
	if($('div.sub-panel-header-tab').size() > 0) {
		$('div.component-wrapper-B02:has(div.sub-panel-header-tab)+div.component-wrapper-B02').addClass('heading2-fix');
		$('div.heading2-fix+div.component-wrapper-B02').addClass('heading2-fix-article');
	}
	$('.heading3-A01+div.index-B01').addClass('index-component-with-heading');
	$('div.component-wrapper-B02:has(#article-header-feature)+div.component-wrapper-B02:has(div.grid-B01)').addClass('features-list-block');
});



/* =============== 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();
	});
	$('div.index-accessory > div.index-group').each(function() {
		$(this).find('div.index-unit').BAJL_FlatHeights();
	});

	$('div.component-wrapper-B02 div.existing-component-A02 > div.layout-floater-A02').each(function() {
		$(this).find('dl.floater').BAJL_FlatHeights();
	});
	$('.heightLine').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');
	}
});

jQuery(function($) {
	$pdThumb = $('div.pdialog-A01 td.pdialog-nav ul li a img');
	$pdThumb.wrap('<span><span></span></span>');
});
/* =============== 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) })
			.addCallback('onClose', function() { slideCanvas.select(0           ) })

		// 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 });
		}
	}
});

/* ================ Add pseudo-first-child to component-wrapper-B01 =======================*/

jQuery(function($) {
	if($(".component-wrapper-B02" + ".pseudo-first-child").size() == 0){
		$(".component-wrapper-B02:first").addClass("pseudo-first-child");
	}
});

/* ================ Add pseudo-first-child to component-wrapper-B01 =======================*/
jQuery(function($) {
	$('div.flash-area:has(object)').addClass('flash-enabled');
});


/* ================ Add Firefox Print Style =======================*/
/*
jQuery(function(){
	if(BAJL.ua.isGecko) {
		$('div.grid-B01').each(function() {
			if($(this).find('div.accessoryGroup').size() > 0) {
				$(this).addClass('print-grid-B01');
			}
		});

		$('div.grid-article').each(function() {
			$(this).addClass('print-grid-article');
		});
	}
});
*/

jQuery(function(){
	if(BAJL.ua.isGecko) {
		if($('div.grid-B01') == null){
			return false;
		} else {
			$('div.grid-B01').each(function() {
				if($(this).find('div.accessoryGroup').size() > 0) {
					$(this).addClass('print-grid-B01');
				}
			});
		}
			$('div.grid-article').each(function() {
			$(this).addClass('print-grid-article');
			});
	}
});


/* ================ Lens / Speedlight Products Impressed =======================*/
jQuery(function($) {
	$('.panel-header-D01 .grid-B01 .grid-group').each(function() {
		$(this).find('div.grid-unit').BAJL_FlatHeights();
	});

	$('.panel-header-D01 .product-data-D01').each(function() {
		var $gridHeight = $(this).parent().filter('.grid-unit').css('height');
		$(this).css('height', $gridHeight);
	});
});


/* ================ Hide image when print. =======================*/
jQuery(function($) {
	var $unprintClass = 'unprintable-item';
	$('dd.block-image-src td[background]').each(function() {
		var $visibleControlClassBA = $(this).attr('class');
		if($visibleControlClassBA.indexOf($unprintClass) < 0) {
			$(this).addClass($unprintClass);
		}
	});

	$('dd.link-banner td[background]').each(function() {
		var $visibleControlClassBA = $(this).attr('class');
		if($visibleControlClassBA.indexOf($unprintClass) < 0) {
			$(this).addClass($unprintClass);
		}
	});
});

/* Setting when Flash Contents hided. */
jQuery(function($) {
	if($('object.unprintable-item').size() > 0) {
		$('*.flash-alternate').addClass('unprintable-item');
	}
});


/* ================ Header Topic Path =======================*/
jQuery(function($) {
	var array = [];
	//var len = $("#topic-path li").length;
	for(var i = 0; i < $("#topic-path li").length; i++){
		array.push($("#topic-path li").eq(i).width());
	}

	var childElementWidth = 0;
	for(var j = 0; j < array.length; j++){
		childElementWidth += array[j];
	}
	if(!jQuery.support.opacity){           // This block is IE6-8
		if(childElementWidth > 560) {
			topicPathPadding();
		}
	} else if( childElementWidth > 700) {  // This block is except IE
		topicPathPadding();
	}
});

function topicPathPadding() {
	if($("#topic-path li") == null){
		return false;
	} else {
		$("#topic-path li").css('padding-bottom', '5px');
	}
}


/* ================ Footer Topic Path =======================*/

jQuery(function($) {
	var heightValue = $('#mini-sitemap-header').height();
	var widthValue = $('#footer-topic-path').width();
	if(heightValue > 40){
		var dummyElement = $('<div id="dummy-topicPath"></div>');
		$('#mini-sitemap-header').append(dummyElement);
		$('#mini-sitemap-header').css('position', 'relative');
		$('#footer-scroller').css({
			'height' : heightValue
		});
		$('#dummy-topicPath').css({
			'width' : widthValue,
			'height' : heightValue,
			'padding-left' : '20px',
			'margin-top' : '1px',
			'border-right' : '1px solid #CACACA',
			'position' : 'absolute',
			'top' : '0',
			'left' : '0'
		});
		$('#mini-sitemap').css({
			'width' : '968px'
		});
		$('#footer-topic-path li').css({
			'padding-bottom' : '0px'
		
		});
	}
});


/* ================ Fix IE6 CSS View =======================*/
jQuery(function($) {
	if (BAJL.ua.isIE && BAJL.ua.documentMode < 7) {
		$('.pseudo-first-child').each(function() {
			$(this).removeClass('pseudo-first-child');
		});
	
		$('.grid-group').each(function() {
			$(this).find('.grid-unit:last-child').addClass('grid-unit-pseudo-last-child');
		});
	
		$('.index-group.pseudo-last-child').each(function() {
			$(this).removeClass('pseudo-last-child');
		});
	}
});



/* ================ Membership func controler =======================*/

jQuery(function($) {
	var nijMemberType = 'MEMBERTYPE';
	var nijCustomerType = 'CUSTOMERFLG';
	var nijIsLoggedIn = 'IMGMEM';
	var nijCookieDomain = '.nikon-image.com';
	var nijCookiePath = '/';
	var nijCookieOp = { path : nijCookiePath, domain : nijCookieDomain };
	var nijCurrentPage = window.location.href;

	$('form.nijMemberSubmitForm > input.nijUrlVal').each(function() {
		if($(this).attr('value') == '') {
			$(this).attr({ 'value' : nijCurrentPage });
		}
	});

	if($.cookie(nijIsLoggedIn) == 'TRUE') {
		$('#nij-membership-ext').addClass('nij-has-loggedin');
	}

	if(($.cookie(nijMemberType) != null) && ($.cookie(nijMemberType).length > 2)) {
		$('#nij-membership-nav').addClass('nij-membership-enabled');
	} else {
		$('#nij-membership-login').addClass('nij-membership-enabled');
	}

	if($.cookie(nijMemberType) == 'PREMIUM') {
		$('#nij-membership-status').text('ニコンイメージングプレミアム会員');
	} else if($.cookie(nijMemberType) == 'NORMAL') {
		$('#nij-membership-status').text('ニコンイメージング会員');
	}

	$('#nij-member-menu > ul > li:first').addClass('pseudo-first-child');
	if($.cookie(nijCustomerType) == 'TRUE') {
		$('#nij-member-menu > ul > li:last').after('<li id="nijCustomerUpdatd"><a href="#">カスタマー情報の更新</a></li>');
	} else {
		$('#nij-member-menu > ul > li:last').after('<li id="nijCustomerAdd"><a href="#">カスタマー登録</a></li>');
	}
	

	$('#set-nij-membership').click(function(event){
		$('#nij-login-form').submit();
	});

	$('#nijMemberLink > a').click(function(event){
		$('#nij-member-update').submit();
	});

	$('#nijCustomerUpdatd > a').click(function(event){
		$('#nij-customer-update').submit();
	});

	$('#nijCustomerAdd > a').click(function(event){
		$('#nij-customer-add').submit();
	});
	
	$('.button-l01 span span span a').click(function(event){
		$('#nij-about-login').submit();
	});
	
	$('.ssi-login').click(function(event){
		$('#form-login-home').submit();
	});

	$("#remove-nij-membership").click(function(event){
		$.cookie(nijMemberType, null, nijCookieOp);
		$.cookie(nijCustomerType, null, nijCookieOp);
		$.cookie('CONTROLNO', null, nijCookieOp);
		$.cookie('MLT', null, nijCookieOp);
		$.cookie('MCKEY', null, nijCookieOp);
		$.cookie('SHOPSESID', null, nijCookieOp);
		$.cookie('SCHOOLSESID', null, nijCookieOp);
		$('#nij-membership-nav').removeClass('nij-membership-enabled');
		$('#nij-membership-login').addClass('nij-membership-enabled');
		//location.reload();
		$('.login-panel-home, .panel-login-D01, .button-l01').css('display', 'block');
		return false;
	});
	
	
	if($.cookie(nijMemberType) == 'NORMAL' || $.cookie(nijMemberType) == 'PREMIUM'){
		$('#nij-catalog-membership-area').css('display', 'none');
	}
	if($.cookie(nijMemberType) == 'NORMAL' || $.cookie(nijMemberType) == 'PREMIUM'){
		$('.login-panel-home, .panel-login-D01, .button-l01').css('display', 'none');
	}
	if($.cookie(nijMemberType) != null || $.cookie(nijIsLoggedIn) == 'TRUE'){
		$('.loggedin-effect').before('<div class="dummy-box">');
		$('.dummy-box').css({
			'height' : '20px',
			'width' : '716px'
		});
	}
});

/* ================ Login Panel  =======================*/

jQuery(function($) {
	$('.nij-membership-message, .nij-membership-status').hover(function(){
		$('#nij-member-menu').css('display', 'block');
		$('.nij-membership-message').css('background-position', 'right bottom');
	},function(){
		//$('#nij-member-menu').css('display', 'none');
		//$('.nij-membership-message').css('background-position', 'right top');
	});
});


jQuery(function($) {
	$('#impressed-area, .nij-membership-button, #topic-path, #content, .dummy-box, #global-nav-group').mouseover(function(){
		$('#nij-member-menu').css('display', 'none');
		$('.nij-membership-message').css('background-position', 'right top');
	});
	
	/*$('.nij-membership-message').mouseout(function(){
		$('#nij-member-menu').css('display', 'none');
	});*/
});




jQuery(function($) {
	$('.nij-membership-button').mouseover(function(){
		$('#nij-member-menu > ul > li').removeClass('pseudo-first-child');
		$('#nij-membership-nav').removeClass('pseudo-hover');
		$('.nij-membership-message').css('background-position', 'right top');
	});
	$(document).ready(function(){
		$('#nij-member-menu').css('display', 'none');
		$('.nij-membership-message').css('background-position', 'right top');
	});
});



jQuery(function($) {
	var homeLoginAction = {
		focusAction : function(){
			$(this).attr('src', '/common/img/button_nij_login_hover.png');
		},
		blurAction : function(){
			$(this).attr('src', '/common/img/button_nij_login.png');
		}
	};
	
	var catlogLoginAction = {
		focusAction : function(){
			$(this).attr('src', '/common/img/button_catlog_on.png');
		},
		blurAction : function(){
			$(this).attr('src', '/common/img/button_catlog_off.png');
		}
	};
	
	$('#btn-home-submit').hover(homeLoginAction.focusAction, homeLoginAction.blurAction);
	$('#btn-home-submit').focus(homeLoginAction.focusAction).blur(homeLoginAction.blurAction);

	$('#btn-submit').hover(catlogLoginAction.focusAction, catlogLoginAction.blurAction);
	$('#btn-submit').focus(catlogLoginAction.focusAction).blur(catlogLoginAction.blurAction);	
});



/* ================ Dot line control  =======================*/

jQuery(function($) {
	if(location.pathname.match(/\/enjoy\/membership\/about\//gi)){
		$('.index-unit').css({
			'padding-bottom' : '10px'
		})
		$('.closer-unit, .list-note-A01').css({
			'padding' : '0',
			'margin-bottom' : '10px'
		});
		$('.membership-block-group').css({
			'margin' : '10px 0'
		});
		$('.membership-block-unit').css({
			'padding-top' : '10px'
		});
	}
});


jQuery(function($) {
	$('#colorvalidation-swicher li:first a').addClass('selected');
	$('div.color-panel:gt(0)').hide();
	$("#colorvalidation-swicher li a").click(function(){
		if(!$(this).hasClass('selected')){
			$("#colorvalidation-swicher a.selected").removeClass('selected');
			$(this).addClass('selected');
			$('div.color-panel').hide().filter($(this).attr('href')).fadeIn("slow");
			
		}
	return false;
	})
	
	$('#colorvalidation-swicher li img').hover(
		function(){
			$(this).addClass("hoverClass")
		},
		function(){
			$(this).removeClass("hoverClass")
		}
	);
	

});



/* ================ For Product Height Problem =======================*/

jQuery(function($) {
	var articleHeight = $(".article-grid-unit").height();
	var colPanLength = $('.color-panel').length;
	var colorvaliHeighArray = [];
	var cd = $("#color-valiation-control").outerHeight();
	var fixHeight;
	if($("*").is("[class='color-panel']")){
		for(var i = 0; i < colPanLength; i++){
			colorvaliHeighArray.push($(".color-panel").eq(i).height());
		}

		var childElementWidth = 0;
		for(var j = 0; j < colorvaliHeighArray.length; j++){
			childElementWidth += colorvaliHeighArray[j];
		}
		if(!jQuery.support.checkOn){
			fixHeight = articleHeight - childElementWidth + colorvaliHeighArray[0];	
			$(".article-grid-unit").height(fixHeight + 30);
		} else {
			fixHeight = articleHeight - childElementWidth + colorvaliHeighArray[0];	
			$(".article-grid-unit").height(fixHeight + 50);
		}
	}
	
	
	if(!jQuery.support.checkOn){
		//fixHeight = articleHeight - childElementWidth + colorvaliHeighArray[0] + cd;
		if(articleHeight < 700){
			$(".article-grid-unit").height(articleHeight + 150);
		}
	}
});


jQuery(function($) {
	var chromeBug = $(".chromeBug").height();
	var a = 380;
	if(chromeBug < 380) {
		$(".chromeBug").height(a);
	}
});

