﻿
RegisterNamespace("VP.VerticalMatrix");

VP.VerticalMatrix.compareMatrixPageUrl = "";
VP.VerticalMatrix.SelectAllText = "";
VP.VerticalMatrix.SelectNoneText = "";
VP.VerticalMatrix.LeadFormUrlForAll = "";
VP.VerticalMatrix.LeadFormUrlForSelected = "";
VP.VerticalMatrix.ContentIdParameter = "";
VP.VerticalMatrix.VerticalMatrixPageUrl = "";
VP.VerticalMatrix.ItemNameSortDisplayName = "";
VP.VerticalMatrix.ItemNameSortText = "";
VP.VerticalMatrix.CompanyNameSortDisplayName = "";
VP.VerticalMatrix.CompanyNameSortText = "";
VP.VerticalMatrix.PriceSortDisplayName = "";
VP.VerticalMatrix.PriceSortText = "";
VP.VerticalMatrix.CategoryId = "";

VP.VerticalMatrix = function() {
	this.matrixContent = "";
	this.checkboxList = "";
	this.leadEnableCheckboxList = "";
	this.requestInfoButtons = "";
	this.selectAllButtons = "";
	this.dropDownSelectedValue = "";
	this.requestInfoLinks = "";
	this.pageIndexParameter = "";
	this.selectedProducts = [];
	this.directClickThrough = false;
	this.primaryLeadFormButtonText = "";
	this.primaryLeadFormButtonText = "";
	this.directClickThroughButtonText = "";
	this.requestSelectedInfoButtonText = "";
	this.selectedLeadEnabledProducts = [];
	this.selectedLeadEnableParameter = "lep";
};

VP.VerticalMatrix.prototype.Init = function(matrixContentId) {
	this.matrixContent = $("#" + matrixContentId);
	this.checkboxList = $("input:checkbox.action", this.matrixContent);
	this.requestInfoButtons = $(".btnRequestQuote", this.matrixContent);
	this.selectAllButtons = $(".selectAll", this.matrixContent);
	this.requestInfoLinks = $(".requestSelected", this.matrixContent);
	var that = this;

	$(this.checkboxList).click(function(event) {
		that.AddRemoveProduct($(this));
	});

	$(this.selectAllButtons).click(function(event) {
		that.SelectAll($(this).text());
		return false;
	});

	$(this.requestInfoButtons).click(function(event) {
		that.RequestInfomationForMultipeProduct();
	});

	$(this.requestInfoLinks).click(function(event) {
		that.RequestInfomationForMultipeProduct();
	});

	$(".btnCompare", this.matrixContent).click(function(event) {
		that.Compare();
		return false;
	});

	$(".compare", this.matrixContent).click(function(event) {
		that.Compare();
		return false;
	});

	$("#selectTop", this.matrixContent).change(function(event) {
		that.Sort($("#selectTop", this.matrixContent).val());
	});

	$("#lnkService", this.matrixContent).click(function(event) {
		that.Sort(VP.VerticalMatrix.CompanyNameSortDisplayName);
	});

	$("#lnkProduct", this.matrixContent).click(function(event) {
		that.Sort(VP.VerticalMatrix.ItemNameSortDisplayName);
	});

	$("#lnkVendor", this.matrixContent).click(function(event) {
		that.Sort(VP.VerticalMatrix.CompanyNameSortDisplayName);
	});

	$("#lnkPrice", this.matrixContent).click(function(event) {
		that.Sort(VP.VerticalMatrix.PriceSortDisplayName);
	});

	$(".pager a", this.matrixContent).click(function(event) {
		that.AddSelectedProductsToLink($(this));
	});

	$("ul.selected li", this.matrixContent).live('click', function(event) {
		var productId = $(event.currentTarget).attr('rel');
		if (productId != undefined) {
			that.checkboxList.each(function(i, domElement) {
				if ($(domElement).val() == productId) {
					$(domElement).removeAttr("checked");
				}
			});

			that.RemoveFromSelectedProducts(productId);
			that.SetRequestInformationButtonData();
			that.ChangeSelectButtonText();
		}
		return false;
	});

	this.LoadProductList();
	this.SetSelectedSortValue();
	this.SetCheckBoxValues();
	this.SetRequestInformationButtonData();
	this.ChangeSelectButtonText();
};

VP.VerticalMatrix.prototype.Sort = function(text) {
	var sortText;
	if (text == VP.VerticalMatrix.CompanyNameSortDisplayName) {
		sortText = VP.VerticalMatrix.CompanyNameSortText;
	}
	else if (text == VP.VerticalMatrix.PriceSortDisplayName) {
		sortText = VP.VerticalMatrix.PriceSortText;
	}
	else if (text == VP.VerticalMatrix.ItemNameSortDisplayName) {
		sortText = VP.VerticalMatrix.ItemNameSortText;
	}
	else {
		sortText = "";
	}

	var pageIndex = this.GetPageIndex();

	var navigateUrl = VP.VerticalMatrix.VerticalMatrixPageUrl + "?sortby=" + sortText + "&" +
		this.pageIndexParameter + "=" + pageIndex;

	var productList = this.GetCommaSeperatedProductIdList(false);
	var leadEnabledProductList = this.GetCommaSeperatedProductIdList(true);

	if (productList != "") {
		navigateUrl += "&sel=" + productList;
	}

	if (leadEnabledProductList != "") {
		navigateUrl += "&" + this.selectedLeadEnableParameter + "=" + leadEnabledProductList;
	}
	location.href = navigateUrl;
};

VP.VerticalMatrix.prototype.GetPageIndex = function() {
	var pageIndex = 1;
	var query = location.search.substring(1);
	if (query != "") {
		var queryParameters = query.split('&');
		for (var i = 0; i < queryParameters.length; i++) {
			var keyValue = queryParameters[i].split('=');
			if (keyValue[0] == this.pageIndexParameter) {
				pageIndex = keyValue[1];
				break;
			}
		}
	}

	return pageIndex;
};

VP.VerticalMatrix.prototype.SetSelectedSortValue = function() {
	$("#selectTop", this.matrixContent).val(this.dropDownSelectedValue);
};

VP.VerticalMatrix.prototype.SetCheckBoxValues = function() {
	if (this.selectedProducts.length == 0) {
		return;
	}
	var productId;

	for (var i = 0; i < this.selectedProducts.length; i++) {
		productId = this.selectedProducts[i];
		for (var j = 0; j < this.checkboxList.length; j++) {
			if ($(this.checkboxList[j]).val() == productId) {
				$(this.checkboxList[j]).attr('checked', 'checked');
			}
		}
	}
};

//Add or remove product id to list when check box is checked and unchecked.
VP.VerticalMatrix.prototype.AddRemoveProduct = function(checkBox) {
	var status = $(checkBox).attr('checked');
	var productId = $(checkBox).val();

	if (status) {
		this.AddToSelectedProducts(productId, !$(checkBox).is('.leadDisable'));
	}
	else {
		this.RemoveFromSelectedProducts(productId);
	}
	this.SetRequestInformationButtonData();
	this.ChangeSelectButtonText();
	return true;
};

//Calls the horizontal matrix page for product comparison.
VP.VerticalMatrix.prototype.Compare = function() {
	if (this.selectedProducts.length == 0) {
		alert("Please select at least one product");
	}
	else if (this.selectedProducts.length > 5) {
		alert("No more than five items can be selected. This could happen if there are multiple item " +
			"pages and you have selected items on other pages");
	}
	else {
		location.href = VP.VerticalMatrix.compareMatrixPageUrl + "&compare=" +
				this.GetCommaSeperatedProductIdList(false);
	}
};

//Adds the list of selected product ids to the given hyperlink object.
VP.VerticalMatrix.prototype.AddSelectedProductsToLink = function(PagerLink) {
	var url = this.AddSelectedProductsToUrl(PagerLink.attr('href'));
	PagerLink.attr('href', url);
	return true;
};

//Adds the list of selected product ids to the given url.
VP.VerticalMatrix.prototype.AddSelectedProductsToUrl = function(url) {
	var urlComponents = url.split("&");
	var foundSelect = false;
	var foundLeadEnable = false;
	var productList = this.GetCommaSeperatedProductIdList(false);
	var leadEnabledProductList = this.GetCommaSeperatedProductIdList(true);
	var leadEnableParameter = this.selectedLeadEnableParameter + "=";

	for (var i = 0; i < urlComponents.length; i++) {
		if (urlComponents[i].indexOf("sel=") >= 0) {
			urlComponents[i] = "sel=" + productList;
			foundSelect = true;
		}

		if (urlComponents[i].indexOf(leadEnableParameter) >= 0) {
			urlComponents[i] = leadEnableParameter + leadEnabledProductList;
			foundLeadEnable = true;
		}
	}

	url = urlComponents.join("&");

	if (!foundSelect) {
		url += "&sel=" + productList;
	}

	if (!foundLeadEnable) {
		url += "&" + leadEnableParameter + leadEnabledProductList;
	}
	
	return url;
};

//Adds to the list of selected products.
VP.VerticalMatrix.prototype.AddToSelectedProducts = function(productId, leadEnable) {
	if (!this.FoundElementInArray(this.selectedProducts, productId)) {
		this.selectedProducts.push(productId);
	}
	if (leadEnable && !this.FoundElementInArray(this.selectedLeadEnabledProducts, productId)) {
		this.selectedLeadEnabledProducts.push(productId);
	}
};

//Removes the given product id from the list of selected product ids.
VP.VerticalMatrix.prototype.RemoveFromSelectedProducts = function(productId) {
	for (var i = 0; i < this.selectedProducts.length; i++) {
		if (this.selectedProducts[i] == productId) {
			this.selectedProducts.splice(i, 1);
		}
	}

	for (var i = 0; i < this.selectedLeadEnabledProducts.length; i++) {
		if (this.selectedLeadEnabledProducts[i] == productId) {
			this.selectedLeadEnabledProducts.splice(i, 1);
		}
	}
};

//Returns true if the given element value is found within the given array.
VP.VerticalMatrix.prototype.FoundElementInArray = function(array, elementValue) {
	for (var i = 0; i < array.length; i++) {
		if (array[i] == elementValue) {
			return true;
		}
	}
	return false;
};

VP.VerticalMatrix.prototype.RequestInfomationForMultipeProduct = function() {
	if (this.selectedProducts.length == 0) {
		alert("Please select at least one product");
		return false;
	}
	else if(this.selectedLeadEnabledProducts == 0){
		alert("No valid product selected to request information.");
		return false;
	}
};

VP.VerticalMatrix.prototype.SetRequestInformationButtonData = function() {
	var productSiteUrl = "";
	if (this.selectedLeadEnabledProducts.length == 0) {
		$(this.requestInfoButtons).attr('href', "#");
		$(this.requestInfoLinks).attr('href', "#");
	}
	else if (this.selectedLeadEnabledProducts.length == 1 && this.directClickThrough) {
		var vendorId = $("#" + this.selectedLeadEnabledProducts[0] + "Manufacturer").attr('rel');
		productSiteUrl = VP.VerticalMatrix.GetProductWebSiteUrl(this.selectedLeadEnabledProducts[0], vendorId);

		if (productSiteUrl != "") {
			$(this.requestInfoButtons).attr('href', productSiteUrl);
			$(this.requestInfoLinks).attr('href', productSiteUrl);
		}
	}

	if (this.selectedLeadEnabledProducts.length > 0 && productSiteUrl == "") {
		var leadFormUrl = VP.VerticalMatrix.LeadFormUrlForSelected;
		var parameter = VP.VerticalMatrix.ContentIdParameter + "=";
		var parameterWithValues = parameter + this.GetCommaSeperatedProductIdList(true);
		var navigateUrl = '';
		if (leadFormUrl.indexOf(parameter) == -1) {
			navigateUrl = leadFormUrl + '&' + parameterWithValues;
		}
		else {
			navigateUrl = leadFormUrl.replace(parameter, parameterWithValues);
		}

		for (var i = 0; i < this.requestInfoButtons.length; i++) {
			$(this.requestInfoButtons[i]).attr('href', navigateUrl);
		}

		for (var j = 0; j < this.requestInfoLinks.length; j++) {
			$(this.requestInfoLinks[j]).attr('href', navigateUrl);
		}
	}

	this.SetRequestInfoButtonDisplayData(productSiteUrl);
};

//select all or none check boxes 
VP.VerticalMatrix.prototype.SelectAll = function(buttonText) {
	var nextTextForButton = "";

	for (var i = 0; i < this.checkboxList.length; i++) {
		if (buttonText == VP.VerticalMatrix.SelectAllText) {
			this.checkboxList[i].checked = true;
			this.AddToSelectedProducts(this.checkboxList[i].value, !$(this.checkboxList[i]).is('.leadDisable'));
		}
		else {
			this.checkboxList[i].checked = false;
			this.RemoveFromSelectedProducts(this.checkboxList[i].value);
		}
	}
	this.SetRequestInformationButtonData();
	this.ChangeSelectButtonText();
};

//Change select button text according to check box selection.
VP.VerticalMatrix.prototype.ChangeSelectButtonText = function() {
	var noOfCheckedOnPage = 0;
	for (var i = 0; i < this.checkboxList.length; i++) {
		if (this.checkboxList[i].checked == true) {
			noOfCheckedOnPage = noOfCheckedOnPage + 1;
		}
	}

	if (noOfCheckedOnPage < this.checkboxList.length) {
		$(this.selectAllButtons).text(VP.VerticalMatrix.SelectAllText);
	}
	else {
		$(this.selectAllButtons).text(VP.VerticalMatrix.SelectNoneText);
	}
};

VP.VerticalMatrix.prototype.GetCommaSeperatedProductIdList = function(leadEnabledId) {
	var commaSeperatedProductIdList = "";
	var selectedProducts = [];
	if (leadEnabledId){
		selectedProducts = this.selectedLeadEnabledProducts;
	}
	else{
		selectedProducts = this.selectedProducts;
	}

	if (selectedProducts.length > 0) {
		if (commaSeperatedProductIdList == "") {
			commaSeperatedProductIdList = selectedProducts[0];
		}
		for (var i = 1; i < selectedProducts.length; i++) {
			commaSeperatedProductIdList = commaSeperatedProductIdList + "," + selectedProducts[i];
		}
	}

	return commaSeperatedProductIdList;
};

VP.VerticalMatrix.prototype.GetCommaSeperatedLeadEnabledProductIdList = function() {
	var commaSeperatedProductIdList = "";

	if (this.selectedProducts.length > 0) {
		if (commaSeperatedProductIdList == "") {
			commaSeperatedProductIdList = this.selectedProducts[0];
		}
		for (var i = 1; i < this.selectedProducts.length; i++) {
			commaSeperatedProductIdList = commaSeperatedProductIdList + "," + this.selectedProducts[i];
		}
	}

	return commaSeperatedProductIdList;
};

VP.VerticalMatrix.prototype.LoadProductList = function() {
	this.selectedProducts = VP.VerticalMatrix.GetProductListFromQueryString();
	this.selectedLeadEnabledProducts = VP.VerticalMatrix.GetLeadEnabledProductListFromQueryString(
			this.selectedLeadEnableParameter);
	for (var i = 0; i < this.checkboxList.length; i++) {
		if (this.checkboxList[i].checked == true && $.inArray($(this.checkboxList[i]).val(), this.selectedProducts) == -1) {
			this.selectedProducts.push($(this.checkboxList[i]).val());
		}

		if (this.checkboxList[i].checked == true && !$(this.checkboxList[i]).is('.leadDisable')
				&& $.inArray($(this.checkboxList[i]).val(), this.selectedLeadEnabledProducts) == -1) {
			this.selectedLeadEnabledProducts.push($(this.checkboxList[i]).val());
		}
	}
};

VP.VerticalMatrix.prototype.SetRequestInfoButtonDisplayData = function(productSiteUrl) {
	if (this.directClickThrough && this.selectedProducts.length == 1 && productSiteUrl != "") {
		$(this.requestInfoLinks).text(this.directClickThroughButtonText);
		$(this.requestInfoLinks).attr('title', this.directClickThroughButtonText + ' for Selected Products')
		$(this.requestInfoButtons).text(this.directClickThroughButtonText);
		$(this.requestInfoButtons).attr('class', 'button first leadClickThrough');
		$(this.requestInfoButtons).attr('title', this.directClickThroughButtonText + ' for Selected Products')
	}
	else {
		$(this.requestInfoLinks).text(this.primaryLeadFormButtonText);
		$(this.requestInfoLinks).attr('title', this.primaryLeadFormButtonText + ' for Selected Products')
		$(this.requestInfoButtons).text(this.requestSelectedInfoButtonText);
		$(this.requestInfoButtons).attr('class', 'button first btnRequestQuote');
		$(this.requestInfoButtons).attr('title', this.requestSelectedInfoButtonText + ' for Selected Products')
	}
};

//-------------------------------------------------


/**
* @author Jason Roy
*/
(function($) {
	$(document).ready(function() {
		$('.functionPanel').vpMatrixImages(
		{
			context: $.vp.domFragments.contentPane
		});
		buildToolTip();
	});

	function buildToolTip(domElement) {
		$('.productRow').each(function(i, domElement) {
			if ($(domElement).find('.imageHolder').length > 0) {
				var productId = $(domElement).find('.productActions .action').attr('value');
				var titleHTML = $(domElement).find('.title h3').html();
				var productHref = $(titleHTML).attr('href');
				var titleText = $(domElement).find('.title h3').text();
				var vendor = $(domElement).find('.title h4').text();
				var related = $(domElement).find('.related').html();
				var action = $(domElement).find('.leadActions').html();
				var newImageTitle = $(domElement).find('.imageHolder a img').attr('title');
				var newImagePath = getImagePath($(domElement).find('.imageHolder a img').attr('src'));
				var newImage = '<A title="Product Name" href="#"><IMG title="' + newImageTitle + '" alt="' +
						newImageTitle + '" src="' + newImagePath + '" width=400 height=300></A>';
				var tipContent = '<div id="zoom_' + productId + '" class="zoomedContent" style="width:410px;"><div class="image">' +
						newImage +
						'</div><div class="actions module"><a class="productLink" href="' +
						productHref + '">View Details Page</a>' + action + '</div></div>';
				var textTop = "";
				if (vendor != "") {
					textTop = titleHTML + ' from ' + vendor;
				}
				$(domElement).find('.imageHolder').append('<span class="icon zoom compact">Zoom In</span>');
				$(domElement).find('.imageHolder').hover(function(event) {
					$(event.currentTarget).find('.zoom').fadeIn(200);
				}, function(event) {
					$(event.currentTarget).find('.zoom').fadeOut(200);
				});
				$(domElement).find("img").qtip(
					{
						content: {
							title: {
								text: textTop,
								button: "Close"
							},
							text: tipContent
						},
						position: {
							my: "left center",
							at: "right center"
						},
						show: {
							delay: 0,
							solo: true,
							event: false
						},
						hide: {
							event: "unfocus"
						},
						style: {
							tip: true,
							classes: "ui-tooltip-light ui-tooltip-rounded"
						},
						prerender: false
					});

				$(domElement).find('.zoom').click(function(event) {
					if ($("#zoom_" + productId).length == 0) {
						var newImageTitle = $(domElement).find('.imageHolder a img').attr('title');
						var newImagePath = getImagePath($(domElement).find('.imageHolder a img').attr('src'));
						var newImage = '<A title="Product Name" href="#"><IMG title="' + newImageTitle + '" alt="' +
								newImageTitle + '" src="' + newImagePath + '" width=400 height=300></A>';
						$("#zoom_" + productId).find(".image").append(newImage);
					}
					$(event.currentTarget).parents(".imageHolder").find('img').qtip("show");
				});
			}
		});
	}

	function getImagePath(rowImagePath) {
		var imageSize = "-400x300";
		var paths = rowImagePath.split('/');
		var imageNameParts = paths[paths.length - 1].split('.');
		var previousImageName = imageNameParts[0];
		var imageExtension = imageNameParts[1];
		var itemName = (previousImageName.split('-'))[0];
		var zoomImagePath = "";
		for (var i = 0; i < paths.length - 1; i++) {
			zoomImagePath = zoomImagePath + paths[i] + "/";
		}
		zoomImagePath = zoomImagePath + itemName + imageSize + "." + imageExtension;
		return zoomImagePath;
	}
})(jQuery);
//Plugin for Top and Bottom Image Lists

(function($) {
	//Private Variables
	_options = {};
	_isFirstTime = true;
	_checkBoxes = {};
	_productList = {};
	_imageLists = {};
	_containers = {};
	_hasMessageShown = false;
	_imageCartItems = [];

	//Public functions

	vpMatrixImages = jQuery.fn.vpMatrixImages = function(options) {
		_options = $.extend({}, $.fn.vpMatrixImages.defaults, options);
		_checkBoxes = $(_options.context).find(':checkbox').click(itemChecked);
		_productList = $(_options.context).find('div.productRow');
		$(_options.context).find('.selectAll').click(selectAllClick);
		_containers = $(this);
		setCheckBoxesForSelectedItems();
		this.each(function() {
			setupImageLists(this);
		});
		setupCheckBoxes();
		setupHintHover();
		_isFirstTime = false;
		return this;
	};

	/**
	* Product List General Functions
	*/
	function setupHintHover() {
		$(_options.context).find(_options.hintSelector).css(
		{
			'opacity': '.5'
		}).hover(function(event) {
			$(this).fadeTo(_options.fadeTime, 1);
		}, function(event) {
			$(this).fadeTo(_options.fadeTime, 0.5);
		});
	}

	//function to call when select all button is clicked
	function selectAllClick(event) {
		if ($(event.currentTarget).text() == 'Select All') {
			_checkBoxes.each(function(i, domElement) {
				if (_imageCartItems.length < _options.compareItemTotal && $.inArray($(domElement).val(), 
						_imageCartItems) == -1) {
					addItem($(domElement).val());
				}
				else {
					if ($.vp.customMatrixAnimation) {
						$(domElement).siblings('div').animate($.vp.customMatrixAnimation.fadeIn, _options.fadeTime);
					}
					else {
						$(domElement).siblings('div').fadeIn(_options.fadeTime);
					}
				}
				if ($.inArray($(domElement).val(), _options.selectedItems) == -1) {
					_options.selectedItems.push($(domElement).val());
				}
			});
		}
		else {
			_checkBoxes.each(function(i, domElement) {
				removeItemFromArray($(domElement).val());
				if ($.inArray($(domElement).val(), _imageCartItems) != -1) {
					removeItem($(domElement).val());
				}
			});
		}
	}

	//Remove item from the array which store product id used in image cart
	function removeAddedImageItemFromArray(arrayElement) {
		for (var i = 0; i < _imageCartItems.length; i++) {
			if (_imageCartItems[i] == arrayElement) {
				_imageCartItems.splice(i, 1);
				return true;
			}
		}

		return false;
	}

	function setupCheckBoxes() {
		if (_options.selectedItems[0] == "") {
			return;
		}

		//initialize images
		for (var i = 0; i < _options.selectedItems.length; i++) {
			addItem(_options.selectedItems[i]);
		}
	}

	// Item Checked From Checbox
	function itemChecked(event) {
		if ($(event.currentTarget).is(':checked')) {
			addItem($(event.currentTarget).val());
			_options.selectedItems.push($(event.currentTarget).val());
		}
		else {
			removeItemFromArray($(event.currentTarget).val());
			removeItem($(event.currentTarget).val());
		}
	}

	// Add Item From Checkbox
	function addItem(productId) {
		var index;
		_checkBoxes.each(function(i, domElement) {
			if ($(domElement).val() === productId) {
				if ($.vp.customMatrixAnimation) {
					$(domElement).siblings('div').animate($.vp.customMatrixAnimation.fadeIn, _options.fadeTime);
				}
				else {
					$(domElement).siblings('div').fadeIn(_options.fadeTime);
				}
				index = i;
			}
		});

		if (_imageCartItems.length < _options.compareItemTotal) {
			var productName = getProductName(index, productId);
			addImage(productId, productName);
		}
		else
			if (!_isFirstTime && !_hasMessageShown) {
			showCompareMaxMessage();
		}
	}

	// Remove Item, either from the image cart or checkbox
	function removeItem(productId) {
		_checkBoxes.each(function(i, domElement) {
			if (Number($(domElement).val()) == productId) {
				if ($(domElement).is(':checked')) {
					$(domElement).removeAttr('checked');
				}
				if ($.vp.customMatrixAnimation) {
					$(domElement).siblings('div').animate($.vp.customMatrixAnimation.fadeOut, _options.fadeTime);
				}
				else {
					$(domElement).siblings('div').fadeOut(_options.fadeTime);
				}
			}
		});

		removeImage(productId);
		if (_imageCartItems.length < _options.compareItemTotal && _options.selectedItems.length >=
				_options.compareItemTotal) {
			addItem(_options.selectedItems[_options.compareItemTotal - 1]);
		}
	}

	function removeItemFromArray(arrayElement) {
		for (var i = 0; i < _options.selectedItems.length; i++) {
			if (_options.selectedItems[i] == arrayElement) {
				_options.selectedItems.splice(i, 1);
				return true;
			}
		}

		return false;
	}

	function showCompareMaxMessage() {
		alert(_options.message);
		_hasMessageShown = true;
	}

	/**
	* Availabale to each image card
	*/
	function setupImageLists(element) {
		domElement = $(element);
		domElement.data('imageList', domElement.find('ul.selected'));
		domElement.data('imageList').find('li');
		prepareRemoveButtons(domElement);
	}

	// Setup for removing item from image cart
	function prepareRemoveButtons(domElement) {
		domElement.data('imageList').find('li').live('click mouseenter mouseleave', function(event) {
			if ($(event.currentTarget).hasClass('active') > -1) {
				switch (event.type) {
					case 'click':
						removeItemFromArray($(event.currentTarget).attr('rel'));
						removeItem(Number($(event.currentTarget).attr('rel')));
						break;
					case 'mouseover':
						$(event.currentTarget).find('a.close').fadeTo(_options.fadeTime, 1);
						break;
					case 'mouseout':
						$(event.currentTarget).find('a.close').fadeTo(_options.fadeTime, 0.5);
						break;
				}
			}
		});
	}

	// Add Image from Checkboxes
	function addImage(productId, productName) {
		var imagePath = VP.VerticalMatrix.GetImagePath(productId, _options.imageExtension);
		var title = "Click to Remove " + productName;
		_containers.each(function(i, domElement) {
			$($(domElement).data('imageList').find('li:not(:has(img))')[0])
					.attr('class', 'active')
					.attr('rel', String(productId))
					.find('span')
					.append('<a href="#" class="icon compact close">Remove Item</a>')
					.append('<image src="' + imagePath + '" width="' + _options.listItemWidth + '" height="' +
					Math.round(_options.listItemWidth * 0.75) + '" style="border:none" title="' + title + '" />')
					.fadeIn(_options.fadeTime);
			if (i == 1) {
				_imageCartItems.push(productId);
			}
		});
	}

	// Remove image from checkboxes or image cart
	function removeImage(productId) {
		if (isNaN(productId)) {
			return;
		}

		_containers.each(function(i, domElement) {
			var imageElement = $(domElement).data('imageList').find('li[rel="' + productId + '"]');
			if (imageElement.length == 0) {
				return;
			}
			imageElement.animate(
			{
				width: 0,
				opacity: 0
			}, _options.fadeTime, function() {
				$(this).remove();
			});
			$('<li><span></span></li>').css(
			{
				width: 0,
				opacity: 0
			}).appendTo($(domElement).data('imageList')).animate(
			{
				opacity: 1,
				width: _options.listItemWidth
			}, _options.fadeTime);

			if (i == 1) {
				removeAddedImageItemFromArray(productId);
			}
		});
	}

	function setCheckBoxesForSelectedItems() {
		var selectedProducts = VP.VerticalMatrix.GetProductListFromQueryString();
		_options.selectedItems = selectedProducts;
		_checkBoxes.each(function(i, domElement) {
			if ($(domElement).is(':checked') && $.inArray($(domElement).val(), _options.selectedItems) == -1) {
				_options.selectedItems.push($(domElement).val());
			}

			if ($.inArray($(domElement).val(), selectedProducts) > -1) {
				$(domElement).attr('checked', 'true');
			}
		});
	}

	//Get the product name
	function getProductName(index, productId) {
		var productName;
		if (index != undefined && $((_options.context).find('.imageHolder a img')[index]).length != 0) {
			productName = $((_options.context).find('.imageHolder a img')[index]).attr('title');
		}
		else {
			$.ajax({
				type: "POST",
				async: false,
				cache: false,
				url: VP.AjaxWebServiceUrl + "/GetProductName",
				data: "{'productId' : '" + productId + "'}",
				contentType: "application/json; charset=utf-8",
				dataType: "json",
				success: function(msg) {
					productName = msg.d;
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
					var error = XMLHttpRequest;
				}
			});
		}

		return productName;
	}

	$.fn.vpMatrixImages.defaults =
	{
		fadeTime: 200,
		selectedItems: [],
		listItemWidth: 36,
		message: "You can only select 5 items to compare, although you may request information for more than 5.  Any additional items will not be added to your compare cart.",
		context: 'body',
		hintSelector: '.hint',
		productListRowSelector: 'div.productRow',
		productActionsSelector: '.productActions div',
		imageExtension: "-52x39.jpg",
		compareItemTotal: 5
	};

})(jQuery);

//Get image path for given product id and image extension
VP.VerticalMatrix.GetImagePath = function(productId, imageExtension) {
	var imagePath;
	$.ajax({
		type: "POST",
		async: false,
		cache: false,
		url: VP.AjaxWebServiceUrl + "/GetMatrixRowImagePath",
		data: "{'productId' : '" + productId + "', 'imageExtension' : '" + imageExtension + "', 'categoryId' : '" + VP.VerticalMatrix.CategoryId + "'}",
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		success: function(msg) {
			imagePath = msg.d;
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			var error = XMLHttpRequest;
		}
	});

	return imagePath;
};

VP.VerticalMatrix.GetProductListFromQueryString = function() {
	var url = window.location;
	var urlComponents = url.href.split("&");
	var selectedProductString = "";
	var selectedProducts = [];
	for (var i = 0; i < urlComponents.length; i++) {
		if (urlComponents[i].indexOf("sel=") >= 0) {
			selectedProductString = urlComponents[i].replace("sel=", "");
		}
	}
	if (selectedProductString != "") {
		selectedProducts = selectedProductString.split(',');
	}
	return selectedProducts;
};

VP.VerticalMatrix.GetLeadEnabledProductListFromQueryString = function(queryStringParameter) {
	var url = window.location;
	var urlComponents = url.href.split("&");
	var selectedProductString = "";
	var selectedProducts = [];
	var parameter = queryStringParameter + "=";
	for (var i = 0; i < urlComponents.length; i++) {
		if (urlComponents[i].indexOf(parameter) >= 0) {
			selectedProductString = urlComponents[i].replace(parameter, "");
		}
	}
	if (selectedProductString != "") {
		selectedProducts = selectedProductString.split(',');
	}
	return selectedProducts;
};

VP.VerticalMatrix.GetProductWebSiteUrl = function(productId, vendorId) {
	var navigateUrl;
	$.ajax({
		type: "POST",
		async: false,
		cache: false,
		url: VP.AjaxWebServiceUrl + "/GetProductWebSiteUrl",
		data: "{'productId' : '" + productId + "', 'vendorId' : '" + vendorId + "'}",
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		success: function(msg) {
			navigateUrl = msg.d;
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			var error = XMLHttpRequest;
		}
	});

	return navigateUrl;
};













