/**
 * function hasClass extends jQuery to check if an element has a specific class
 */
(function($) {
$.extend({
    hasClass: new function(className) {
        var classAttr = $(this).attr('class');
        if (classAttr != null && classAttr != undefined) {
            var classList = classAttr.split(/\s+/);
            for(var ix = 0, len = classList.length;ix < len;ix++) {
                if (className === classList[ix]) {
                    return true;
                }
            }
        }
        return false;
    }
}); })(jQuery);


/*
 * Get the group/category ID.
 */
function getProductId(obj)
{
	var currentId = $(obj).attr('id');
	id = currentId.split('_');
	return id[1];
}

function getGroupId(obj)
{
	var currentId = $(obj).attr('id');
	id = currentId.split('_');
	return id[2];
}

function getCategoryId(obj)
{
	var currentId = $(obj).attr('id');
	id = currentId.split('_');
	return id[id.length - 1];
}

function getProductName(product_id, group_id)
{
	$.ajax({
		type: "GET",
		url: "/content_ajax.php",
		dataType: 'html',	   
		data: "action=getProductName&product_id=" + product_id,
		success: function(data){	
			var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
			var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
			$('.productCategoryBox').css({'border-color': bgColor});				
			$('.subCategoryBoxHead').css({'background-color': bgColor});	
			$('.subCategoryBoxHead').css('color', categoryFontHighlightColors[group_id]);
			// $('.subCategoryBoxHead').html(data);				
	   }
	});
}

function getCategoryImage(category_id)
{
	$.ajax({
		type: "GET",
		url: "/content_ajax.php",
		dataType: 'html',	   
		data: "action=getCategoryImage&category_id=" + category_id,
		success: function(data){			
		$('.productCategoryBox').css({'background-image': 'url(' + data + ')'});				
	}
	});
}

function productNameCellMouseEvent(specific_group_id)
{
	var prevBg = 'transparent';
	var prevLinkColor = '#000';
	
	$('.cellName_product').click(function(){
		var hasClass = $(this).hasClass('noAction');
		var group_id = getGroupId(this);
		var category_id = getCategoryId(this);
		var product_id = getProductId(this);
		var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
		var fontHLColor = categoryFontHighlightColors[group_id] != "" ? categoryFontHighlightColors[group_id] : "#ffffff";		
		
		$('.cellName_product').each(function(){
			$(this).css('background-color', prevBg);	
			$(this).css('color', prevLinkColor);
			$(this).removeClass('selectedProduct');
		});
		
		$(this).addClass('selectedProduct');
		
		prevBg = $(this).css('background-color');
		$(this).css('background-color', bgColor);
		$(this).css('color', fontHLColor);				
		
		if(!hasClass && category_id > 0)
		{
			getCategoryImage(category_id);
			getProductName(product_id, group_id);
		};
	});
	
	$('.cellName_product').mouseenter(function(){		
		var group_id = specific_group_id > 0 ? specific_group_id : (currentGroupId > 0 ? currentGroupId : (getGroupId(this) > 0 ? getGroupId(this) : "#636363"));
		var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
		var fontHLColor = categoryFontHighlightColors[group_id] != "" ? categoryFontHighlightColors[group_id] : "#ffffff";		
		var hasClass = $(this).hasClass('noAction');
		
		prevBg = $(this).css('background-color');
		$(this).css('background-color', bgColor);
		$(this).css('color', fontHLColor);						
	}).mouseleave(function(){	
		var hasClass = $(this).hasClass('selectedProduct');
		
		if(!hasClass){
			$(this).css('background-color', prevBg);	
			$(this).css('color', prevLinkColor);
		}
	});
}

function setProductBoxColor()
{
	// Product Image Box colouring 
	$('.productCategoryBox').each(function(){
		var group_id = getGroupId(this);
		var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
		
		$(this).css('border-color' , bgColor);
		$(this).find('.categoryBoxHead').css({'background-color':bgColor, 'color':categoryFontHighlightColors[group_id]});		

		var ieLT9 = $.browser.msie && $.browser.version < 9;
		
		if(!ieLT9)
		{
			$(this).corner('5px');						
		}
	});
}

$('document').ready(function() {
	
	// IE FIX FOR CMS PAGES WITH BG IMAGE
	if($.browser.msie)
	{
		$('.cmsPage').find('img').each(function(){
			var hasClass = $(this).hasClass('contentBgImage');
			
			if(hasClass)
			{
				$('.cmsPage').css('margin-top', '0');
				return true;
			}	
		});						
	}
	
	// Homepage manufacturer images carusel 
	$(".jCarouselLite").jCarouselLite({
		visible: 5,
	    auto: 800,
	    speed: 1000
	});		
	
	// Homepage category boxes
	$('.categoryBox').each(function(){
		var group_id = getGroupId(this);
		var hasClass1 = $(this).hasClass('categoryNav');
		var hasClass2 = $(this).hasClass('subCategoryBox');				
		var hasClass3 = $(this).hasClass('noAction');				
		var hasClass4 = $(this).hasClass('cmsNav');				
		
		$(this).find('a').css('color', categoryFontColors[group_id]);
		
		if(!hasClass1 && !hasClass3 && !hasClass4)
		{			
			if(!hasClass2)
			{				
//				var bgImage = '/images/products/thumbs_lg/' + categoryImages[group_id];
				var bgImage = '/images/products/thumbs_lg/NOIMAGE.jpg';
//				$(this).css('background', '#F2F2F2 url(' + bgImage + ') no-repeat scroll 50% 50%');
//				$(this).find('.categoryBoxBgImg').html('<img src="' + bgImage + '" />');
			}
		}						
		
		var ieLT9 = $.browser.msie && $.browser.version < 9;
		
		if(!ieLT9 && !hasClass1 && !hasClass4)
		{
			$(this).corner('5px');
		}		
	});		
	
	$('.categoryBoxSub').each(function(){
		var hasClass1 = $(this).hasClass('categoryNavSub');
		var hasClass2 = $(this).hasClass('subCategoryBoxSub');
		
		if(!hasClass1 && !hasClass2)
		{
			$(this).hide();
		}	
		
		if(!$.browser.msie && !hasClass1)
		{
			$(this).corner('5px');
		}
	});
		
	$('.categoryBoxHead').each(function(){
		var group_id = getGroupId(this);
		var hasClass1 = $(this).hasClass('categoryNavHead');
		var hasClass2 = $(this).hasClass('subCategoryBox');				
				
		if(!$.browser.msie)
		{
			if(!hasClass1)
			{
				$(this).corner('top 1px');
			}
		}
	});			
	
	$('.categoryBoxSub').each(function(){		 								
		var hasClass1 = $(this).hasClass('subCategoryBoxSub');
		var hasClass2 = $(this).hasClass('categoryNavSub');
		var hasClass3 = $(this).hasClass('noAction');				
		
		if(!hasClass1 && !hasClass2 && !hasClass3)
		{
			var group_id = getGroupId(this);
			var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
			
			$(this).backOpacity({	
				id: group_id + '_bg',
				background: bgColor,
				opacity: '0.8'
			});
			
			$('#' + group_id + '_bg').hide();
		}		
	});
	
	// Homepage Mouse Event Handlers
	$('.categoryBoxHead').click(function(){
		var group_id = getGroupId(this);							
		var hasClass1 = $(this).parent().hasClass('productCategoryBox'); 														
		var hasClass2 = $(this).parent().hasClass('noAction'); 														
		var hasClass3 = $(this).hasClass('subCategoryBoxHead'); 														
		
		// this also takes care of the left hand side category navigation, when clicking on the group, for sub-menues there will be a function below
		if(!hasClass1 && !hasClass2 && !hasClass3)
		{			
			var url = $(this).find('a').attr('href');
			window.location = url;
		}				
	});
	
	$('.categoryBoxHead').mouseenter(function(){		
		var hasClass1 = $(this).parent().hasClass('categoryNav'); 								
		var hasClass2 = $(this).hasClass('subCategoryBoxHead'); 								
		var hasClass3 = $(this).parent().hasClass('productCategoryBox'); 														
		var hasClass4 = $(this).parent().hasClass('noAction'); 														
		var hasClass5 = $(this).parent().hasClass('cmsNav');	
		
		if(!hasClass2 && !hasClass3 && !hasClass4)
		{				
			var group_id = getGroupId(this);
			var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
			
			// Override the bgColor with the CMS menu color if it's a CMS menu
			if(hasClass5)
			{
				var parent_id = $(this).parent().attr('id').split('_');  			
				bgColor = '#' + parent_id[1];
			}	
			
			$(this).css({'background-color': bgColor, 'color': '#ffffff'});
			$(this).css('color', categoryFontHighlightColors[group_id]);
			$(this).find('a').css('color', categoryFontHighlightColors[group_id]);
			if(!hasClass1)
			{
				$(this).parent().css({'border-color': bgColor});
			}
		}							
	}).mouseleave(function(){
		var hasClass1 = $(this).parent().hasClass('categoryNav');
		var hasClass2 = $(this).hasClass('subCategoryBoxHead');
		var hasClass3 = $(this).parent().hasClass('productCategoryBox');
		var hasClass4 = $(this).parent().hasClass('noAction');
		var hasClass5 = $(this).hasClass('selectedNav');
		
		if(!hasClass2 && !hasClass3 && !hasClass4 && !hasClass5)
		{							
			var group_id = getGroupId(this);
			
			$(this).css('background-color', '#ffffff');
			$(this).css('color', categoryFontColors[group_id]);	
			$(this).find('a').css('color', categoryFontColors[group_id]);
			if(!hasClass1)
			{
				$(this).parent().css({'border-color': '#EAEAEA'});
			}
		}
	});	
	
	$('.categoryBoxSubHover').mouseenter(function(){
		sub_category = $(this).find('.categoryBoxSub');		
		category = $(this).parent();		
		var hasClass1 = $(category).hasClass('categoryNav'); 								
		var hasClass2 = $(category).hasClass('subCategoryBox'); 								
		var hasClass3 = $(category).hasClass('productCategoryBox'); 														
		var hasClass4 = $(category).hasClass('noAction'); 														
		
		if(!hasClass1 && !hasClass2 && !hasClass3 && !hasClass4)
		{				
			var group_id = getGroupId(sub_category);
			var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
			$('#category_head_' + group_id).css({'background-color': bgColor, 'color': categoryFontHighlightColors[group_id]});
			$('#category_head_' + group_id).find('a').css({'color': categoryFontHighlightColors[group_id]});
			$(this).find('a').css('color', categoryFontHighlightColors[group_id]);
			$('#category_sub_' + group_id).show();
			$('#' + group_id + '_bg').show();
			$('#category_box_' + group_id).css({'border-color': bgColor});
		}							
	}).mouseleave(function(){
		sub_category = $(this).find('.categoryBoxSub');	
		category = $(this).parent();
		var hasClass1 = $(category).hasClass('categoryNav');
		var hasClass2 = $(category).hasClass('subCategoryBox');
		var hasClass3 = $(category).hasClass('productCategoryBox');
		var hasClass4 = $(category).hasClass('noAction');
		
		if(!hasClass1 && !hasClass2 && !hasClass3 && !hasClass4)
		{							
			var group_id = getGroupId(sub_category);
			$('#category_head_' + group_id).css({'background-color': '#ffffff', 'color': categoryFontColors[group_id]});
			$('#category_head_' + group_id).find('a').css({'color': categoryFontColors[group_id]});
			$(this).find('a').css('color', categoryFontColors[group_id]);	
			$('#category_sub_' + group_id).hide();
			$('#' + group_id + '_bg').hide();
			$('#category_box_' + group_id).css({'border-color': '#EAEAEA'});
		}				
	});	

	// Sub Category Mouse Event Handler
	$('.subCategoryBox').mouseenter(function(){		
		var group_id = getGroupId(this);
		var hasClass = $(this).hasClass('productCategoryBox');
		var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
		
		if(!hasClass)
		{
			$(this).find('.subCategoryBoxHead').css({'background-color': bgColor, 'color': '#ffffff'});
			$(this).find('.subCategoryBoxHead').css('color', categoryFontHighlightColors[group_id]);
			$(this).css({'border-color': bgColor});
		}				
									
	}).mouseleave(function(){
		var group_id = getGroupId(this);
		var hasClass = $(this).hasClass('productCategoryBox');
		
		if(!hasClass)
		{
			$(this).find('.subCategoryBoxHead').css('background-color', '#ffffff');
			$(this).find('.subCategoryBoxHead').css('color', categoryFontColors[group_id]);	
			$(this).css({'border-color': '#EAEAEA'});	
		}
	});		
	
	// Category page left hand side navigation:		
	$('.categoryNavHead').each(function(){		
		var group_id = getGroupId(this);
		var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
		var hasClass1 = $(this).hasClass('selectedNav');
		var hasClass2 = $(this).parent().hasClass('cmsNav');
		
		// Override the bgColor with the CMS menu color if it's a CMS menu
		if(hasClass2)
		{
			var parent_id = $(this).parent().attr('id').split('_');  			
			bgColor = '#' + parent_id[1];
		}	
			
		if(hasClass1)
		{
			$(this).css('background-color', bgColor);
			$(this).find('a').css('color', '#fff');
		}		
		
		$(this).css('border-color', bgColor);
	});		
	
	$('.categoryNavSub').each(function(){	
		var group_id = getGroupId(this);				
		var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
		
		$(this).find('a').css('color', categoryFontHighlightColors[group_id]);
		
		if(Number(group_id) != Number(currentGroupId))
		{
			$(this).hide();
		}
		else
		{			
			$(this).css('background-color', bgColor);			
		}
	});
	
	if(currentGroupId != '' && currentCategoryId != ''){	
		var categoryId = currentCategoryId == parentCategoryId ? currentCategoryId : (parentCategoryId != currentGroupId ? parentCategoryId : currentCategoryId);
		var link_id =  '#category_link_' + currentGroupId + "_" + categoryId;
		var colors = [categoryColors[currentGroupId], "#ffffff"];
		
		$(link_id).css('background-color', $.colorPercent(colors, .35));
		$(link_id).find('a').css('color', categoryFontHighlightColors[currentGroupId]);
		
		// lvl2 sub menu highlight
		if(currentCategoryId != parentCategoryId)
		{
			// check if we are on a product page to hightlight the product category menu
			var id = cPath.split("_");
			productCategoryId = id[2];			
			
			link_id =  '#category_link_' + currentGroupId + "_" + parentCategoryId + "_" + productCategoryId;
			$(link_id).css('background-color', $.colorPercent(colors, .35));
			$(link_id).find('a').css('color', categoryFontHighlightColors[currentGroupId]);
		}
	}
	
	// Sub-menu onclick event	
	$('.categoryNavHighlight').click(function(){
		var url = $(this).find('a').attr('href');
		window.location = url;		
	});		
	
	$('.categoryNavHighlight').mouseenter(function(){
		var group_id = getGroupId(this);
		var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
		var colors = [bgColor, "#ffffff"];		
		$(this).css('background-color', $.colorPercent(colors, .35));			
	}).mouseleave(function(){	
		var group_id = getGroupId(this);
		var category_id = getCategoryId(this);
		var categoryId = currentCategoryId == parentCategoryId ? currentCategoryId : parentCategoryId;
		var bgColor = categoryColors[group_id] != "#ffffff" ? categoryColors[group_id] : "#636363";
		
		if(Number(category_id) != Number(categoryId))
		{
			// if we are on a product page check the parent category menu id and don't remove it if matches
			var id = cPath.split("_");
			productCategoryId = id[2];						
						
			if(category_id != currentCategoryId && category_id != productCategoryId) 
			{
				$(this).css('background-color', bgColor);
			}									
		}
	});			
	
	$('.categoryBoxHead').click(function(){
		var group_id = getGroupId(this);
		var hasClass1 = $(this).parent().hasClass('categoryNav'); 								
		var hasClass2 = $(this).parent().hasClass('productCategoryBox'); 																 													
		var hasClass3 = $(this).parent().hasClass('noAction'); 														
		var hasClass4 = $(this).hasClass('subCategoryBoxHead');
		
		if(!hasClass1 && !hasClass2 && !hasClass3 && !hasClass4)
		{
			var url = $(this).find('#category_link_' + group_id).attr('href');
			window.location = url;
		}				
	});
	
	// Category Header Section
	var bgColor = categoryColors[currentGroupId] != "#ffffff" ? categoryColors[currentGroupId] : "#636363";
	var fontHLColor = categoryFontHighlightColors[currentGroupId] != "" ? categoryFontHighlightColors[currentGroupId] : "#ffffff";
	
	$('.categoryHeaderBoxTitle').css('background-color', bgColor);
	$('.categoryHeaderBoxTitle').children().css('color', fontHLColor);
	$('.categoryHeaderBreadcrumbs').children().css('color', fontHLColor);

	var ieLT9 = $.browser.msie && $.browser.version < 9;
	
	if(!ieLT9)
	{
		$('.categoryHeaderBoxTitle').corner('right 10px');	
	}
	else
	{
		$('#contentPageHeadingWrap').addClass('contentPageHeadingWrapIE');
		$('#contentPageHeading').addClass('contentPageHeadingIE');		
	}
	
	$('#category_header_title').corner('right 10px');
	
	// Slide out efect on Category Header
	var iframeHeight = $('.categoryHeaderBoxText iframe').height();
	var originalHeaderBoxHeight = $('.categoryHeaderBox').height() + iframeHeight;
	var originalHeaderBoxTextHeight = $('.categoryHeaderBoxText').height();
	var originalHeaderBoxTextHeight_iframe = $('.categoryHeaderBoxText').height() + iframeHeight;
	
	var originalHeightNoText = originalHeaderBoxHeight - originalHeaderBoxTextHeight_iframe;
	
	var offset = 33; // - removing paddings and margins and "More" div height in Safari and Chrome	
	if($.browser.msie || $.browser.mozilla) // works different in IE and FF
	{
		offset = 28; 
	}	
	
	var closedTextBoxHeight = 135 - originalHeightNoText - offset; 	
	closedTextBoxHeight = closedTextBoxHeight < 0 ? 0 : closedTextBoxHeight;
		
//	var hideText = $.trim($('.categoryHeaderBoxText').text()) == '' || originalHeaderBoxHeight < 115 ? true : false;			
	var hideText = originalHeaderBoxHeight < 115 ? true : false;			
	
	// fix for webkit browsers when embedding iframe
	if(iframeHeight > 0 && $.browser.webkit)
	{
		originalHeaderBoxTextHeight += 30; 
	}
	
	$('.categoryHeaderBoxText').attr('rel', originalHeaderBoxTextHeight);
	$('.categoryHeaderBoxText').divgrow({ initialHeight: closedTextBoxHeight, moreText: "[+] More Information", lessText: "[-] Close", hideText: hideText, speed: 500 });

	
	// Product Listins Table	
	productNameCellMouseEvent();				
	setProductBoxColor(); // coment this out if there is no need for product box colouring		
	
// 	Pop-up removed from Product Names on client's request
//	$('.cellName_product').click(function(){		
//		$(this).find('a').click();		
//	});		
	
	// Fruit Machine	
	$('.fruitMachineLeftBox').corner('5px');
});

// To fix the issue of shadow displacement in FF and Safari we have to wait until everything is loaded to apply the shadows
window.onload = function () {
	
	// Drop Shadow effect on boxes
	$('.dropShadowBox2').dropShadow({
		left : 0,
		top : 3,
		blur : 1,
		opacity : 0.2,
		color: "#2A2A2A"
	});
	
	$('.dropShadowBox, .contentPage').dropShadow({
		left : 3,
		top : 3,
		blur : 1,
		opacity : 0.2,
		color: "#2A2A2A"
	});
	
	var ieLT9 = $.browser.msie && $.browser.version < 9;
	
	if(!ieLT9)
	{	
		$('#category_header_title, .categoryHeaderBoxTitle').dropShadow({
			left : 2,
			top : 2,
			blur : 1,
			opacity : 0.5,
			color: 'gray',
			corner: true,
			corner_options: 'right 10px'
		});	
	}
}
