
scSite.category = {};

scSite.category.pagination = scSite.addComponent('categoryPagination', function(comp)
{
	$.extend(comp,
	{
		settings:
		{},
	
		initSettings: function initSettings(pageSize, numResults, pagingString, keywords, pathString, pathAttrib, sorting, finderPagination, start)
		{
			comp.settings =
			{
				pageSize: pageSize,
				numResults: numResults,
				pagingString: pagingString,
				keywords: keywords,
				pathString: pathString,
				pathAttrib: pathAttrib,
				sorting: sorting,
				finderPagination: finderPagination,
				start: start
			};
		},
		
		init: function()
		{
			$('.sc-pagination-current-page')
				.click(function()
				{
					this.select();
				})
				.change(function()
				{
					comp.jumpToPage(this.value);
				})
			;
			
			$('.sc-pagination-page-size')
				.change(function()
				{
					comp.changePageSize(this.value);
				})
			;
			
			$('.sc-pagination-sorting')
				.change(function()
				{
					comp.changeSorting(this.value);
				});
		},
		
		jumpToPage: function(whichpage)
		{
			comp.gotoNewPage( (whichpage - 1) * comp.settings.pageSize, comp.settings.pageSize, comp.settings.sorting );
		},
		
		changePageSize: function(newPageSize)
		{
			comp.gotoNewPage( comp.settings.start, newPageSize, comp.settings.sorting ); 
		},
		
		changeSorting: function(sorting)
		{
			comp.gotoNewPage(comp.settings.start, comp.settings.pageSize, sorting );
		},
		
		gotoNewPage: function(start, pageSize, sorting)
		{
			var settings = comp.settings;
			
			if (start >= 0 && pageSize > 0 && settings.numResults && settings.numResults > 0)
			{
				start = Math.min(start, settings.numResults - settings.pageSize);
				if ( start < 0 )
				{
					start = 0;
				}

				var url = '';
				if( settings.pagingString && settings.pagingString.length )
				{
					url += settings.pagingString;
				}
				else
				{
					url += 'category_' + (settings.keywords && settings.keywords.length ? settings.keywords : '_');
					url += '_path_'+ settings.pathString
				}

				url += '_start_'+ start ;
				url += '_pagesize_'+ pageSize;
				url += '_numresults_'+ settings.numResults;

				url += settings.pathAttrib

				if( sorting )
				{
					url += '_sorting_'+ sorting;
				}

				url += '.html';

				if( settings.finderPagination && settings.finderPagination.length )
				{
					url += '?'+ settings.finderPagination;
				}

				location.href = url;
			}
		}
		
	});
});


scSite.category.compare = scSite.addComponent('categoryCompare',
{
	init: function()
	{
		$('.compare_box').live('change', function()
		{
			updateCompare(this.value)
		});
		$(document).ready(function(){
			if ( $('.compare_box').size() && $('.compare_box').size() > 0 )
			{
				updateCompareBoxes();
			}
		});
	}
});



//
// quickView 
////////////////////////////////
//
// Rewritten[ItemQuickView]
// Used by html/generic/Templates/items.html
// .sc-item-quick-view-trigger-container
//

scSite.quickView = scSite.addComponent('itemQuickView',
{
	init: function()
	{
		// Find all "trigger-container"s and add a quick-view "trigger" element to appear on mouse-enter.
		$('.sc-item-quick-view-trigger-container').each(function()
		{
			// This function takes care of hiding the trigger.
			var mouseoutHandler = function(event)
			{
				// Hide the trigger only if the mouse is no longer in the triger-container or the trigger itself.
				if( ! insideContainerOrTrigger(event.relatedTarget) )
				{
					trigger.hide();
				}
			}

			var self = $(this);
			var offset =
			{
				left: $.ifNull( self.data('sc-item-quick-view-trigger-left'), 50 ),
				top: $.ifNull( self.data('sc-item-quick-view-trigger-top'), 165 )
			}

			var trigger = $('<img />')
				.attr('id', 'quickViewLauncher-'+ self.data('sc-item-id'))
				.attr('src', '/images/quick-view-button.png')
				.addClass('quickLaunch')
				.hide()
				.css({position: 'absolute'})
				.appendTo('#main')
				.mouseleave(mouseoutHandler)
				.modalTrigger(
				{
					title: self.data('sc-item-quick-view-name'),
					width: 440,
					height: 440,
					loadContent: function( fooData, callback )
					{
						callback({
							body:
								$('<div id="quickView_panel">').append
								(
									$('<div class="bd">').append
									(
										// Image & Description
										(
											// Image w/ link
											'<a class="quickView_link" href="'+ self.data('sc-item-quick-view-url') +'?source=oldquickview">'+
												'<img class="quickView_thumb" width="300" height="300" src="'+ self.data('sc-item-quick-view-thumb') +'" alt="'+ self.data('sc-tiem-quick-view-name') +'" />'+
											'</a>'+
											
											// Description
											'<div style="font-weight:bold">Description:</div>'+
											'<div><span class="quickView_description">'+
												self.data('sc-item-quick-view-description')+
											'</span></div>'
										),
											
										// Read More Button
										$('<div class="quickView_readmore_wrapper" />').append
										(
											$('<a class="quickView_readmore" />')
												.attr('href', self.data('sc-item-quick-view-url') +'?source=oldquickview' )
												.append('read more')
												.button({
													icons: {
														secondary: "ui-icon-carat-1-e"
													}
												})
										)
									)
								)
						});
					}
				});

			self
				.mouseenter(function()
				{
					var containerOffset = self.offset();
					trigger.css({
						left: containerOffset.left + offset.left,
						top: containerOffset.top + offset.top
					}).show();
					return;
				})
				.mouseleave(mouseoutHandler)
			;

			/**
			 * Helps determine if the mouse is inside the container and if the trigger should be hidden.
			 * @param relatedTarget the element the mouse is entering.
			 */
			var insideContainerOrTrigger = function(relTarget)
			{
				relTarget = $(relTarget);
				if( relTarget.index(self) >= 0 || relTarget.index(trigger) >= 0 )
				{
					return true;
				}

				var parents = relTarget.parents();
				if( parents.index(self) >= 0 || parents.index(trigger) >= 0 )
				{
					return true;
				}

				return false;
			};

		});
	}
});

// not yet - DGP - 2011-11-22 
scSite.quickView2 = scSite.addComponent('itemQuickView2',
{
	init: function()
	{
		// Find all "trigger-container"s and add a quick-view "trigger" element to appear on mouse-enter.
		$('.sc-item-quick-view2-trigger-container').each(function()
		{
			// This function takes care of hiding the trigger.
			var mouseoutHandler = function(event)
			{
				// Hide the trigger only if the mouse is no longer in the triger-container or the trigger itself.
				if( ! insideContainerOrTrigger(event.relatedTarget) )
				{
					trigger.hide();
				}
			}

			var self = $(this);
			var offset =
			{
				left: $.ifNull( self.data('sc-item-quick-view-trigger-left'), 50 ),
				top: $.ifNull( self.data('sc-item-quick-view-trigger-top'), 165 )
			}
			
			var trigger = $('<img />')
				.attr('id', 'quickViewLauncher-'+ self.data('sc-item-id'))
				.attr('src', '/images/quick-view-button.png')
				.addClass('quickLaunch')
				.hide()
				.css({position: 'absolute'})
				.appendTo('#main')
				.mouseleave(mouseoutHandler)
				.click( function() {
				
					
					/*
					//name 
					$('#qv-itemname').html( self.data( 'sc-item-quick-view-name' ) )
					
					//promo text
					$('#qv-promooverlay').html( self.data( 'sc-item-quick-view-promotext' ) != '' ? self.data( 'sc-item-quick-view-promotext' ) : '' )
					
					//description
					$('#qv-productDescription span').html( self.data( 'sc-item-quick-view-description' ) )
					
					
					// item reviews
					if ( self.data('sc-item-quick-view-review-count') && parseInt(self.data('sc-item-quick-view-review-count')) > 0 )
					{
						$('.qv-itemreview .qv-reviews-link').attr( 'href', self.data('sc-item-quick-view-url') + '#reviewsection' )
						$('.qv-itemreview .qv-reviews-link span').html( self.data('sc-item-quick-view-review-count') )
						$('.qv-review-stars').html('')
						for( rv=0;rv<5;rv++ )
						{
							if ( parseFloat(self.data('sc-item-quick-view-review-rating')) - rv == 0.5 )
							{
								$('.qv-review-stars').append('<img alt="Halfway filled star" src="/images/review-star-half.gif">')
							} else if ( parseInt(self.data('sc-item-quick-view-review-rating')) > rv ) {
								$('.qv-review-stars').append('<img alt="Filled star" src="/images/review-star-full.gif">')
							} else {
								$('.qv-review-stars').append('<img alt="Empty star" src="/images/review-star-empty.gif">')
							}
						}
						$('.qv-itemreview .qv-write-review').attr( 'href', '/WriteReview_item_' + self.data('sc-item-id') + '.html' )
						$('#qv-productreview').show()
					} else {
						$('#qv-productreview').hide()
					}
					
					// video link
					if ( self.data( 'sc-item-quick-view-video-link' ) )
					{
						$('.qv-itemvideo a').attr( 'href', self.data( 'sc-item-quick-view-video-link' ) )
						$('.qv-itemvideo').show()
					} else {
						$('.qv-itemvideo').hide()
					}
					
					// pricing
					if ( self.data('sc-item-quick-view-call') == "Yes" )
					{
						$('.qv-freeship').css('display','none')
						$('.qv-shipsin').css('display','none')
						$('.qv-callship').css('display','block')
					} else {
						$('.qv-freeship').css('display','block')
						$('.qv-shipsin').css('display','block')
						$('.qv-callship').css('display','none')
					}
					
					//alert( self.data( 'sc-item-quick-view-retail-num' ) )
					//alert( self.data( 'sc-item-quick-view-sale-price-num' ) )
					
					if ( ( parseInt( self.data( 'sc-item-quick-view-retail-num' ) ) > 0 ) && ( parseInt( self.data( 'sc-item-quick-view-retail-num' ) ) > parseInt( self.data( 'sc-item-quick-view-sale-price-num' ) ) ) )
					{
						$('.qv-regprice span').html( self.data( 'sc-item-quick-view-retail' ) )
						$('.qv-regprice').show()
						$('.qv-ourprice-text').html( 'Now' )
						$('.qv-ourprice').css( 'text-transform','uppercase' )
					} else {
						$('.qv-regprice').hide()
						$('.qv-ourprice-text').html( 'Our Price' )
						$('.qv-ourprice').css( 'text-transform','none' )
					}
					if ( parseInt( self.data( 'sc-item-quick-view-save-price-num' ) ) > 0 )
					{
						$('.qv-saveprice span').html( self.data( 'sc-item-quick-view-save-price' ) )
						$('.qv-saveprice').show()
					} else {
						$('.qv-saveprice').hide()
						
					}
					var sp = self.data( 'sc-item-quick-view-sale-price' )+''
					$('.qv-ourprice-price').html( sp.replace(/(\.[1-9]$)/, '$10') )
					//$('.qv-regprice').html( self.data( 'sc-item-retail' ) )
					
					// shipping
					if ( parseInt(self.data( 'sc-item-quick-view-qty-in-stock' )) > 0 )
					{
						$('.qv-shipsin span').html( '24 Hours' )
					} else {
						$('.qv-shipsin span').html( self.data( 'sc-item-quick-view-time-to-ship' ) )
					}
					if ( parseInt(self.data( 'sc-item-quick-view-ship-price' )) == 0 && self.data('sc-item-quick-view-call') != "Yes" )
					{
						$('.qv-freeship').css('text-transform','uppercase').css('color','#c90000').css('font-weight','normal')
						$('.qv-freeship').html( 'Free Shipping' )
						$('.qv-freeship').show()
					} else {
						$('.qv-freeship').css('text-transform','none').css('color','#333').css('font-weight','bold')
						
						$('.qv-freeship').html( 'Shipping Price: $' + self.data( 'sc-item-quick-view-ship-price' ) )
						//$('.qv-freeship').hide()
					}
					
					$('#qv-shopnow a').attr( 'href', self.data('sc-item-quick-view-url') )*/
					
					$.ajax({
							url: '/QuickView_item_' + self.data('sc-item-id') + '.html',
							dataType: 'html',
							success: function(data) {
								$('#infoquickview').html(data)
								
								$('#infoquickview').dialog({
									width:780,
									height: scSite.browser.isIE7orLess() ? 450 : 'auto',
									title:null,
									modal:true,
									resizable:false,
									dialogClass:'quickview-dialog-v2'
								})
								
								if ( !scSite.browser.isIE7orLess() )
								{
								
									$.ajax({
										url: '/ItemImages_item_' + self.data('sc-item-id') + '.html',
										dataType: 'html',
										success: function(data) {
										
											$('#productImagePopup').dialog('destroy')
											$('#productImagePopup').remove()
											$('.qv-gallery').html(data)
											
											$('#productThumbScroller').thumbnailScroller({
												scrollerType:"clickButtons",
												scrollerOrientation: "horizontal"
											})
											$('.cloud-zoom, .cloud-zoom-gallery').CloudZoom();
											scSite.zoomPopupGallery.hasInitThumbScroller = false
											/*$('#productThumbScrollerPopup2').thumbnailScroller({
												scrollerType:"clickButtons",
												scrollerOrientation: "horizontal"
											})*/
											/*scSite.genericThumbGallery.init()
											if ( $('.ad-thumb-list li').size() < 6 )
											{
												//alert('huh?')
												$('.ad-back, .ad-forward').hide()
											} else {
												$('.ad-back, .ad-forward').show()
											}*/
										}
									})
									
								} else {
									$('.qv-gallery').html( '<img src="' + self.data('sc-item-quick-view-thumb') + '" width="300" height="300" />' )
									//$('.see_larger_image_link, .see-larger-img').hide()
									$('.see_larger_image_link').attr( 'href', '/item_item_' + self.data('sc-item-id') + '.html?source=newquickview' )
								}
								
							}
					});		
					
					
					// turn on close button
					$('#infoquickview .closebutton a').live( 'click', ( function(ev) {
						ev.preventDefault()
						$('#infoquickview').dialog('close')
					}) )
				} )
			
			self
				.mouseenter(function()
				{
					var containerOffset = self.offset();
					trigger.css({
						left: containerOffset.left + offset.left,
						top: containerOffset.top + offset.top
					}).show();
					return;
				})
				.mouseleave(mouseoutHandler)
			;
			
			/**
			 * Helps determine if the mouse is inside the container and if the trigger should be hidden.
			 * @param relatedTarget the element the mouse is entering.
			 */
			 
			var insideContainerOrTrigger = function(relTarget)
			{
				relTarget = $(relTarget);
				if( relTarget.index(self) >= 0 || relTarget.index(trigger) >= 0 )
				{
					return true;
				}

				var parents = relTarget.parents();
				if( parents.index(self) >= 0 || parents.index(trigger) >= 0 )
				{
					return true;
				}

				return false;
			};
			
		})
	}
});

scSite.finderCheckboxes = scSite.addComponent('finderCheckboxes', function(comp)
{
	$.extend(comp,
	{
		init: function()
		{
			//add padding on attributes that are over max height and have a scrollbar
			$('.finder_attribute_fixedheight').each(function(i, el){ if ( el.scrollHeight > el.clientHeight ){ $(el).siblings('.finder_attribute_header').addClass('finder_attribute_header_padded') } })
		
			$('#navigation .finder_attributes input[type=checkbox], #navigation .finder_attributes_noborder input[type=checkbox], a.finder_attribute_clear').click( function(ev) {
				location.href = $(this).siblings('div').first().children('a').attr('href')
				comp.showFinderOverlay()
			})
			$('#navigation .finder_attributes li a, #navigation .finder_attributes_noborder li a').click( function(ev) {
				comp.showFinderOverlay()
			})
		},
		showFinderOverlay: function()
		{
			$('#finder_loading_overlay')
					.css('display','block')
					.append('<br /><img src="/images/loading-spinner-2.gif" title="Loading" alt="Loading" />')  // so that it actually spins in IE<8
					.css('height', $('#navigation').outerHeight() )
					.offset({ top:$('#main').offset().top, left: $('#main').offset().left - ( scSite.browser.isIE7orLess() ? 220 : 210 ) })
			$(window).scrollTop(0)
		}
	});
});

scSite.finderAttCollapse = scSite.addComponent('finderAttCollapse', function(comp)
{
	$.extend(comp,
	{
		init: function()
		{
			$('.finder_attribute_header').css('cursor','pointer')
			$('.finder_attribute_header').click( function() {
				var thisHeader = $(this)
				var thisVals = thisHeader.siblings('.finder_attribute_values')
				if ( thisVals.size() )
				{
					if ( thisVals.is(':visible') )
					{
						thisVals.hide('fast')
						$('.finder_header_plusminus', thisHeader).html('&#43;')
						comp.addToCookie( thisHeader.parent('div').data('att-name'), '0' )
					} else {
						thisVals.show('fast')
						$('.finder_header_plusminus', thisHeader).html('&#8211;')
						comp.addToCookie( thisHeader.parent('div').data('att-name'), '1' )
					}
				}
			});
		},
		
		addToCookie: function( att, plusMinus )
		{
			var attCookie = readCookie( 'attcollapse' );
			
			att = att + comp.getDeptId()
			
			var cookieString = ( attCookie == '' || attCookie == null ? plusMinus + att : attCookie + escape('||') + plusMinus + att );
			
			createCookie( 'attcollapse', cookieString, 0 );
		},
		
		getDeptId: function()
		{
			return $('#dept-id-holder').data('dept-id')
		}
	});
});




