$(function(){
	initBreadcrumbs();
	initOverallLayout();
	initDetailLayout();
	initCustomEnlargements();
	initActiveCatalog();
});

function initActiveCatalog(){
	var catalogName = $('h2.catalog-name');
	var catalogNav = $('div.categorys-nav > ul > li');	
	
	for (var i = 0; i < catalogNav.length; i++) {
		if (catalogNav.eq(i).text() == catalogName.text()) {
			catalogNav.eq(i).addClass('active');
			break;
		}
	}
}

function initCustomEnlargements(){
	function initSelects(){
		var holders = $('div.order-holder dd');
		var selects = $('div.selects-holder select');
		selects.each(function(i){
			var select = $(this);
			var options = $('option',select);
			var holder = holders.eq(i);
			select.change(function(){
				change();		
			});
			function change(){
				var index = select.attr('selectedIndex');
				if (index) text = options.eq(index).text();
				else text = '';
				holder.text(text);
			}
			change();
		});
		selects.customSelect();
	}
	
	$('input.productSubmitInput').click(function(){
		initSelects();
	});
	initSelects();
}

function initDetailLayout(){
	var holder = $('ul.productLarge');
	if (holder.length) $('body').addClass('product-detail');
	//ka added this to hide the similar photos if empty
	var similar = $('.productTable');
	if (similar.length) $('.similar-photos h3').show();
	//ka added this to hide the Custom Enlargements message if not on a gallery product
	var similar = $('.catProdAttributeTitle').text();
	if (similar=="Select your size and finishQuantity") $('.detail h3').show();

}

function initOverallLayout(){
	var catalogs = $('div.product-gallery > ul');
	catalogs.each(function(){
		var catalog = $(this);
		var items = $('>li',catalog);
		if (items.hasClass('catalogueItemNotFound') || items.hasClass('productItemNotFound')) catalog.hide();
	});
}

function initBreadcrumbs(){
	$('div.breadcrubms > a').first().addClass('first-child');
}

// custom forms plugin
(function(jQuery){
	// custom selects module
	jQuery.fn.customSelect = function(_options) {
		var _options = jQuery.extend({
			selectStructure: '<div class="selectArea"><span class="left"></span><span class="center"></span><a href="#" class="selectButton"></a><div class="disabled"></div></div>',
			hideOnMouseOut: false,
			copyClass: true,
			selectText: '.center',
			selectBtn: '.selectButton',
			selectDisabled: '.disabled',
			optStructure: '<div class="optionsDivVisible"><div class="select-top"></div><div class="select-center"><ul></ul><div class="select-bottom"></div></div>',
			optList: 'ul',
			filterClass:'default'
		}, _options);
		return this.each(function() {
			var select = jQuery(this);
			if(!select.hasClass('outtaHere') && !select.hasClass(_options.filterClass)) {
				if(select.is(':visible')) {
					var hideOnMouseOut = _options.hideOnMouseOut;
					var copyClass = _options.copyClass;
					var replaced = jQuery(_options.selectStructure);
					var selectText = replaced.find(_options.selectText);
					var selectBtn = replaced.find(_options.selectBtn);
					var selectDisabled = replaced.find(_options.selectDisabled).hide();
					var optHolder = jQuery(_options.optStructure);
					var optList = optHolder.find(_options.optList);
					if(copyClass) optHolder.addClass('drop-'+select.attr('class'));

					if(select.attr('disabled')) selectDisabled.show();
					select.find('option').each(function(){
						var selOpt = jQuery(this);
						var _opt = jQuery('<li><a href="#">' + selOpt.html() + '</a></li>');
						if(selOpt.attr('selected')) {
							selectText.html(selOpt.html());
							_opt.addClass('selected');
						}
						_opt.children('a').click(function() {
							optList.find('li').removeClass('selected');
							select.find('option').removeAttr('selected');
							jQuery(this).parent().addClass('selected');
							selOpt.attr('selected', 'selected');
							selectText.html(selOpt.html());
							select.change();
							optHolder.hide();
							return false;
						});
						optList.append(_opt);
					});
					replaced.width(select.outerWidth());
					replaced.insertBefore(select);
					optHolder.css({
						width: select.outerWidth(),
						display: 'none',
						position: 'absolute'
					});
					jQuery(document.body).append(optHolder);

					var optTimer;
					replaced.hover(function() {
						if(optTimer) clearTimeout(optTimer);
					}, function() {
						if(hideOnMouseOut) {
							optTimer = setTimeout(function() {
								optHolder.hide();
							}, 200);
						}
					});
					optHolder.hover(function(){
						if(optTimer) clearTimeout(optTimer);
					}, function() {
						if(hideOnMouseOut) {
							optTimer = setTimeout(function() {
								optHolder.hide();
							}, 200);
						}
					});
					selectBtn.click(function() {
						if(optHolder.is(':visible')) {
							optHolder.hide();
						}
						else{
							if(_activeDrop) _activeDrop.hide();
							optHolder.find('ul').css({height:'auto', overflow:'hidden'});
							optHolder.css({
								top: replaced.offset().top + replaced.outerHeight(),
								left: replaced.offset().left,
								display: 'block'
							});
							//if(optHolder.find('ul').height() > 200) optHolder.find('ul').css({height:200, overflow:'auto'});
							_activeDrop = optHolder;
						}
						return false;
					});
					replaced.addClass(select.attr('class'));
					select.addClass('outtaHere');
				}
			}
		});
	}

	// event handler on DOM ready
	var _activeDrop;
	jQuery(function(){
		jQuery('body').click(hideOptionsClick)
		jQuery(window).resize(hideOptions)
	});
	function hideOptions() {
		if(_activeDrop && _activeDrop.length) {
			_activeDrop.hide();
			_activeDrop = null;
		}
	}
	function hideOptionsClick(e) {
		if(_activeDrop && _activeDrop.length) {
			var f = false;
			jQuery(e.target).parents().each(function(){
				if(this == _activeDrop) f=true;
			});
			if(!f) {
				_activeDrop.hide();
				_activeDrop = null;
			}
		}
	}
})(jQuery);
