var arrowHandler = function(target) {
	this.target = $(target);
	
	if(this.target.next().css('display')=='block') {
		this.target.find('div.arrow > img').attr('src',this.target.find('div.arrow > img').attr('src').replace('_down','_right')); 
		this.target.next().slideUp('slow'); 
		filterState[this.target.attr("id")] = "1";
	} else { 
		this.target.find('div.arrow > img').attr('src',this.target.find('div.arrow > img').attr('src').replace('_right','_down')); 
		this.target.next().slideDown('slow');
		delete filterState[this.target.attr("id")];
	}
	$.cookie('filterState',$.toJSON(filterState));
}

var renderFilters = function(data,callback) {
	targetDiv = $("#divFilters");
	targetDiv.empty();
	$.each(data.remaining, function(i,filter) {
		className = filter.attribute.replace(/ /g,"");
		imageName = filter.attribute.toLowerCase().replace(/ /g,"_");
		if(filterState["title_" + className]) {
			hideStyle ='hide'
			arrowPosition ='right';
		} else {
			hideStyle = '';
			arrowPosition ='down';
		}
		if(filter.attribute.toLowerCase() == "brand") {
			brandStyle ='style="position:relative; z-index:4;"'
		} else {
			brandStyle ='';
		}
		targetDiv.append('<div class="attribute" id="filter_'+ className +'" '+ brandStyle +'>\
			<div class="title" id="title_'+ className +'" onclick="arrowHandler(this);">\
			<a href="#" onclick="return false;">\
				<div class="content" onclick="">\
					<img src="'+ data.imagePath +'/images/navigation/leftsidebar/'+ imageName +'.gif" alt="'+ filter.attribute +'" />\
					<div class="arrow">\
						<img src="'+ data.imagePath +'/images/navigation/leftsidebar/arrow_'+ arrowPosition +'.gif" />\
					</div>\
				</div>\
			</a>\
		</div>\
		<div id="values_'+ className +'" class="values '+ hideStyle +'">'+ renderFilterValues(data, filter) +'</div>'
		)
		if(filter.attribute.toLowerCase() == "brand" && filter.values.length > 15) {
			renderBrandPopup(data,filter,data.imagePath);		
		}
	});	
	if(callback) {callback()};
}

var reloadFiltersJSON = function(query,filterJSONUrl) {
	pageUpdater.isLoadingFilters = true;
	this.queryString = filtersToQueryString(pageUpdater.data.filters);
	if (query) { this.queryString = query; }
	jQuery.getJSON(filterJSONUrl +"?"+ this.queryString, function(JSONdata) {
		data = JSONdata;
		var filterCnt=0;
		$.each(JSONdata.filters, function(i,filter) {
		//count filters	
			filterCnt++;
		});	
		if(filterCnt > 0) {
			$("#contentHead").css("display","none");
			$(".browseFilters").css("display","block");
		}
		
		var div = jQuery('#divFilters');
		$.each(JSONdata.remaining, function(i,filter) {
			targetDiv = $("#values_"+ filter.attribute.replace(/ /g,""));
			targetDiv.empty();
			targetDiv.append(renderFilterValues(JSONdata,filter));
				if(filter.attribute.toLowerCase() == "brand" && filter.values.length > 15) {
					renderBrandPopup(pageUpdater.data,filter,pageUpdater.data.imagePath);		
				}
		});		
		pageUpdater.data = JSONdata;
		pageUpdater.isLoadingFilters = false;
	});
}  
 
var renderFilterValues = function(data,filter) {
	this.returnString = "";
	for(var value_idx in filter.values) {
		if( pageUpdater.isFilter(data,filter.attribute,filter.values[value_idx].name) ){
			this.returnString += "<a href=\"javascript:pageUpdater.removeFilter('"+ filter.attribute +"','"+ escapeString(filter.values[value_idx].name) +"');reload(); void(0);\">"+filter.values[value_idx].name.toUpperCase() +"</a> ("+ filter.values[value_idx].count +")<br />";
			if((filter.attribute.toLowerCase() == "brand")){
				this.returnString += "<a href=\"javascript:pageUpdater.removeFilter('"+ filter.attribute +"','"+ escapeString(filter.values[value_idx].name) +"');pageUpdater['showPopup']='true'; reload(); void(0);\" class=\"callToArrow\">VIEW ALL "+ pluralizeString(filter.attributeName) +"</a><br />";
			} else {
				this.returnString += "<a href=\"javascript:pageUpdater.removeFilter('"+ filter.attribute +"','"+ escapeString(filter.values[value_idx].name) +"');pageUpdater['showPopup']=''; reload(); void(0);\" class=\"callToArrow\">VIEW ALL "+ pluralizeString(filter.attributeName) +"</a><br />";
			}
		} else {
				this.returnString += "<a href=\"javascript:pageUpdater.addFilter('"+ filter.attribute +"','"+ escapeString(filter.values[value_idx].name) +"');reload(); void(0);\">"+filter.values[value_idx].name.toUpperCase() +"</a> ("+ filter.values[value_idx].count +")<br />";
		}
		if((filter.attribute.toLowerCase() == "brand") && value_idx >= 14 && filter.noBreak == null){
			this.returnString +="<a href=\"#\" onclick=\"$(this).parent().next().toggle(); return false;\" class=\"callToArrow\">VIEW ALL DESIGNERS</a>";
			break;
		}
	}
	return this.returnString;
}

var renderBrandPopup = function(data,filter,imagePath) {
	this.returnString = "";	
	this.columnString = "";	
	this.filterSet = filter;
	this.tempArray = {};
	this.tempArray.attribute = "Brand";
	this.tempArray.noBreak = "true";
	this.tempArray.values = new Array;
	this.brandPerColumn = Math.ceil(this.filterSet.values.length/6);
	className = filter.attribute.replace(/ /g,"");
	imageName = filter.attribute.toLowerCase().replace(/ /g,"_");

	
	// Alphabetize
	this.filterSet.values.sort(function(a,b){return (a.name.toLowerCase()>b.name.toLowerCase())?1:-1});

	while(this.filterSet.values.length > 0) {
		for(i=0; i < this.brandPerColumn; i++) {
			if(this.filterSet.values.length > 0){
				this.tempArray.values.push(this.filterSet.values.shift());
			}
		}
		this.columnString += renderFilterValues(data, this.tempArray);
		this.columnString +='</div><div class="column">';
		this.tempArray.values = new Array;
	}
	$("#designerPopup").remove();

	this.returnString = '\
		<div id="designerPopup">\
			<div class="title" style="width:125px;">\
				<div class="content" onclick="">\
					<img src="'+ imagePath +'/images/navigation/leftsidebar/'+ imageName +'.gif" alt="'+ filter.attribute +'" />\
					<div class="arrow">\
							<img src="'+ imagePath +'/images/navigation/leftsidebar/arrow_down.gif" />\
					</div>\
				</div>\
			</div>\
			<div class="column">\
				'+ this.columnString +'\
			</div>\
			<div class="close">\
				<a href="#close" onclick="$(this).parent().parent().toggle(); return false;">CLOSE <img src="'+ imagePath +'/images/icons/closex.gif" /></a>\
			</div>\
		</div>';
	$("#filter_" + className).append(this.returnString);	
	if(pageUpdater["showPopup"])
	{
		delete pageUpdater["showPopup"];
		$("#designerPopup").toggle();
	}
}

var loadingGraphic = function() {
		this.html = $('<div id="loadingDiv"><img src="'+ products.imagePath +'/images/icons/loading.gif" /></div>');
		return this.html;
}
function renderProducts(products,data,type) {
	var div = jQuery('#featuredProducts');
	div.empty();
	$.each(products.products, function(i,product) {
		if(type=="outlet" && parseFloatCurrency(product.price) > 0) {
			var currentProduct = outletThumbnail(product, products, data);
		} else {
			var currentProduct = bagThumbnail(product, products, data);
		}
		div.append($(currentProduct));

		if ( ((i+1) % 4) == 0 || !products.products[i+1])
		{
			var productPad = '<div class="clear"></div>';
		} else {	
			var productPad = '<div class="thumbnailPadding"></div>';
		}
		div.append(productPad);
	});
	updatePageDisplay(products);
}  

var bagThumbnail = function(product,products,data) {
		if(products.imagePath == undefined){ products.imagePath = null; }
		this.product = document.createElement("div");
		this.product = $(this.product);
		this.product.attr("class","productThumbnail");
			var bugCouture='';
			var bugNew="";
			var bugVintage="";
			if(product.isCouture=="true"){ bugCouture='<img src="'+ products.imagePath +'/images/icons/bug_couture.gif" alt="" border="0" /><br />'; };
      if(product.isNew==1){ bugNew='<img src="'+ products.imagePath +'/images/icons/bug_new.gif" alt="" border="0" />'; };
			if(product.isVintage==1){ bugVintage='<img src="'+ products.imagePath +'/images/icons/bug_vintage.gif" alt="" border="0" /><br />'; };

      // BEGIN -- Google AB Test for product name
      var productNameString = '';
//      if (productNameTest == 'yes')
//        productNameString = '<a href="'+ product.detailsUrl + location.hash +'">'+ product.name.substr(product.brand.length).toUpperCase() +'</a>';
//      else
        productNameString = '<a href="'+ product.detailsUrl + location.hash +'">'+ product.brand.toUpperCase() +'</a>';
      // END -- Google AB Test for product name

			this.product.append('\
					<div class="productBugNew">'
						+ bugNew +'\
					</div>\
					<div class="productBug">'
						+ bugCouture 
						+ bugVintage +'\
					</div>\
					<div class="productImage">\
						<a href="'+ product.detailsUrl+'">\
							<img src="'+ product.image +'" class="thumbnailImage" alt="'+ htmlEncode(product.name) +'" />\
						</a><a href="#" class="quickLookLink" id="quickLookLink_'+ product.productId +'" onclick="return quickLook.showQuickLook('+ product.productId +',{\'top\':0,\'left\':0;})">quick look</a></div>\
					<div class="dot"></div>\
					<div class="description">\
							'+ productNameString  +'\
					</div>\
					<div class="dot"></div>\
					<div class="productText">\
							<a href="'+ product.detailsUrl + location.hash +'" class="callToArrow">DETAILS</a><img src="'+ products.imagePath +'/images/icons/dot_pipe.gif" class="dotPipe" /><a href="'+ product.borrowUrl +'" class="callToArrow">'+ product.borrowText +'</a>\
					</div>\
				'
				);
		return this.product;
}

var outletThumbnail = function(product,products,data) {
		if(products.imagePath == undefined){ products.imagePath = null; }
		this.retailString = '';
		if(product.retailPrice != product.price) {
			this.retailString = '<span class="retail">Retail '+ product.retailPrice +'</span><br /><span class="current">Now '+ product.price + '</span><br /><span class="discount">' + product.percentOff +' off</span>';
		}else{
			this.retailString = '<span class="current">Now '+ product.price + '</span>';
		};
		this.product = document.createElement("div");
		this.product = $(this.product);
		this.product.attr("class","productThumbnail");
			this.product.append('\
					<div class="productImage">\
						<a href="'+ product.detailsOutletUrl+'">\
							<img src="'+ product.image +'" class="thumbnailImage" alt="'+ htmlEncode(product.name) +'" />\
						</a>\
						<a href="#" class="quickLookLink" id="quickLookLink_'+ product.productId +'" onclick="return quickLook.showQuickLook('+ product.productId +',$(this).parent().parent().position());">quick look</a>\
					</div>\
					<div class="outletProductDetails">\
						<div class="identity">'+ product.carried   +'-CARRIED<br /> \
							<a href="'+ product.detailsOutletUrl + location.hash +'" class="brand">'+ product.brand.toUpperCase() +'</a>\
						</div>\
						<div class="price">\
							'+ this.retailString +'\
						</div>\
						<div class="action">\
							<a href="'+ product.detailsOutletUrl + location.hash +'" class="callToArrow">DETAILS</a><br /><a href="'+ product.buyUrl +'" class="callToArrow">ADD TO CART</a>\
						</div>\
					</div>\
				');
		return this.product;
}

var updatePageDisplay = function(products) {
		$(".page").html(products.page);
		$(".pageCount").html(products.pageCount);
		pageUpdater.products.pageCount = products.pageCount;
		if(products.page > 1) { $(".previousPage").css("display","inline"); } else { $(".previousPage").css("display","none"); }
		if((products.page > 1) && (products.pageCount > products.page)) { $(".pagePipe").css("display","inline"); } else { $(".pagePipe").css("display","none"); }
		if(products.pageCount > products.page) { $(".nextPage").css("display","inline"); } else { $(".nextPage").css("display","none"); }
		page = products.page;
		sort = products.sort;
    resultSize = products.resultSize;
    pageUpdater.updateNavigation();
		updateSortByDisplay(products.sort);
		updatePerPageDisplay();
		if(pageUpdater.quickLookDisplay == "on") {
			$(".productThumbnail").hover(function(){ $(this).find(".quickLookLink").css("visibility","visible"); },function(){ $(this).find(".quickLookLink").css("visibility","hidden"); });
		}
    $(document).scrollTop(0);
}

var next = function() {
	page++;
  change_page();
  return false;
}

var prev = function() {
	page--;
	if( page < 1 ) page=1;
  change_page();
  return false;
}

var jump = function(form) {
	if(form.page.value)
	{
    jumpNumerical(form.page.value);
	}
  return false;
}

var jumpNumerical = function(newPage) {
  if(newPage)
  {
//    if(newPage > pageUpdater.products.pageCount) {
//      page = pageUpdater.products.pageCount;
//    } else {
      page = newPage;
//    }
    change_page();
  }
  return false;
}


var updateViewPerPage = function(target,newSize) {
	if (pageUpdater.isLoadingProducts == false) {
		page = 1;
		resultSize = newSize;
		$("#viewPerPageContainer > a").attr("class","");
		$(target).attr("class","selected");
		pageUpdater.goProductsOnly('resultSize');
	}
	return false;
}

var updatePerPageDisplay = function() {
    // alert(resultSize);
    $('.itemCountControls select').children('[value="'+ resultSize +'"]').attr('selected','selected');
}

var updateSortByDisplay = function(sort) {
	if(!sort) {
    sort = 'recommended';
		// return false;	
	}
  $('.sortByControls select').children('[value="'+ sort  +'"]').attr('selected','selected');
}

var updateSortBy = function(target,newSort) {
	if (pageUpdater.isLoadingProducts == false) {
		page = 1;
		sort = newSort;
		pageUpdater.goProductsOnly('sort');
	}
	return false;
}

var updateSortByPrice = function(target,browseType) {
	if (pageUpdater.isLoadingProducts == false) {
		page = 1;
		if(browseType == "outlet") {
			sortAsc = "outlet_price_asc";
			sortDesc = "outlet_price_desc";
		} else {
			sortAsc = "rental_price_asc";
			sortDesc = "rental_price_desc";
		}
		if(sort == sortAsc) {
			sort = sortDesc;
			$("#priceArrow").attr("src",$("#priceArrow").attr("src").replace("up","down"));
			$("#priceArrow").css("display","inline");
		} else {
			sort = sortAsc;
			$("#priceArrow").attr("src",$("#priceArrow").attr("src").replace("down","up"));
			$("#priceArrow").css("display","inline");
		}
		$("#sortByContainer > a").attr("class","");
		$(target).attr("class","selected");
		pageUpdater.goProductsOnly('sort');
	}
	return false;
}

var filtersToQueryString = function(filters) {
  var querystring = ["resultSize="+resultSize, "page="+page, "query="+query, "sort="+sort, "nodeId="+nodeId];
  for( var attribute in filters ){
    var values = filters[attribute]
    for(var i=0; i<values.length; i++){
      var value =  values[i];
      querystring.push( "attributes="+escape(attribute)+"&values="+escape(value)+"" );
    }
  }
  return querystring.join("&");
}

var reloadProductsJSON = function(query,filterProductUrl,type) {
	pageUpdater.isLoadingProducts = true;
	var div = jQuery('#featuredProducts');
	//div.empty();
	div.append(loadingGraphic());
	var queryString = filtersToQueryString(pageUpdater.data.filters);
	if (query) { queryString = query; }
	jQuery.getJSON(filterProductUrl +"?"+ queryString, function(products) {
		div.empty();
		$.each(products.products, function(i,product) {
			if(type=="outlet" && parseFloatCurrency(product.price) > 0) {
				var currentProduct = outletThumbnail(product, products, pageUpdater.data);
			} else {
				var currentProduct = bagThumbnail(product, products, pageUpdater.data);
			}
			div.append($(currentProduct));
			if ( ((i+1) % 4) == 0 || !products.products[i+1])
			{
				var productPad = '<div class="clear"></div>';
			} else {	
				var productPad = '<div class="thumbnailPadding"></div>';
			}
			div.append(productPad);
		});
		updatePageDisplay(products);
		pageUpdater.isLoadingProducts = false;
	});
}  

var reload = function() {
	if (pageUpdater.isLoadingProducts == false && pageUpdater.isLoadingFilters == false) {
		page=1;
		pageUpdater.go();
	}
}

var initNavigation = function() {
  var containerList = ['.topContent ', '.bottomContent '];

  for (i=0; i<containerList.length; ++i)
  {
    containerClass = containerList[i];

    $(containerClass + '.browsePageControls a.pageNum').bind('click',function(){
        jumpNumerical(this.innerHTML);
        return false;
      });
    $(containerClass + '.browsePageControls a.prev').bind('click',function(){ prev(); return false; });
    $(containerClass + '.browsePageControls a.next').bind('click',function(){ next(); return false; });
  }
}

var pageUpdateHandler = function(filterJSONUrl,productJSONUrl,data,products,loadProducts) {
	var obj = this;
	this.isLoadingProducts = false;
	this.isLoadingFilters = false;
	this.data = data;
	this.products = products;
	this.hash = filtersToQueryString(obj.data.filters);
	this.type = "";
	this.quickLookDisplay = "";

  this.historyChange = function(newLocation, historyData) {
		if(newLocation != null){
			reloadFiltersJSON(newLocation,filterJSONUrl);
			reloadProductsJSON(newLocation,productJSONUrl,obj.type); 
		}
  }
  
	this.hidePopup = function() {
		if($("#designerPopup")) {
			$("#designerPopup").hide();
		}
	}

	this.include = function(arr,val) {
		for(var i=0; i<arr.length; i++) {
			if( arr[i] == val ) {
				return true; 
			}
		}
		return false;
	}

	this.isFilter = function(data,attribute,value) {
		return (data.filters[attribute] && obj.include(data.filters[attribute], value));
	}


	this.addFilter = function(attribute,value) {
		if(obj.data.filters[attribute]) {
			if(!obj.include(obj.data.filters[attribute], value)){
				obj.data.filters[attribute].push(value);
			}
		} else {
		 obj.data.filters[attribute] = [value]; 
		}
	}

	this.removeFilter = function(attribute,value){
		var values = obj.data.filters[attribute];
		value_index = -1;
		if(values) {
			for(var i=0; i<values.length; i++){
				if(value == values[i]){
					value_index = i; 
					break;
				}
			}
			obj.data.filters[attribute].splice(value_index,value_index+1);
		}
	}

	this.go = function() {
		quickLook.quickLookArray = [];
		obj.hidePopup();
		obj.hash = filtersToQueryString(obj.data.filters);
		reloadFiltersJSON(obj.hash,filterJSONUrl);
		reloadProductsJSON(obj.hash,productJSONUrl,obj.type); 
		dhtmlHistory.add(obj.hash,"Bag Borrow Or Steal");
		omnitureTrack(nodeId,obj.data.filters);
		savedSearchParameters(nodeId,obj.data.filters);
		return false;
	};
  
	this.goProductsOnly = function(updatedAttribute) {
		quickLook.quickLookArray = [];
		obj.hidePopup();
		obj.hash = filtersToQueryString(obj.data.filters);
    alert(obj.hash);
		reloadProductsJSON(obj.hash,productJSONUrl,obj.type); 
		dhtmlHistory.add(obj.hash,"Bag Borrow Or Steal");
		omnitureTrackHash = $.extend({},obj.data.filters);
		switch(updatedAttribute) {
			case "page":
				omnitureTrackHash["page"+page] = ["page "+page];
				break;
			case "resultSize":
				omnitureTrackHash["resultSize" + resultSize] = [resultSize+" items"];
				break;
			case "sort":
				omnitureTrackHash["sort"] = [sort];
				break;
		}
		omnitureTrack(nodeId,omnitureTrackHash);
		return false;
	};
  
	this.initialize = function(type) {
		quickLookHandler("#featuredProducts");
		obj.type = type;
		obj.quickLookDisplay = 'on';
		renderFilters(obj.data);
    initNavigation();
    obj.updateNavigation();

		if(!location.hash) {
			//if(loadProducts!=1) {
				renderProducts(products,obj.data,obj.type); 
			//}
		} else if (typeof(historyData) == "undefined"){
			obj.hash = location.hash.replace("#","");
			reloadFiltersJSON(location.hash.replace("#",""),filterJSONUrl);
			reloadProductsJSON(location.hash.replace("#",""),productJSONUrl,obj.type);
		} else {
			var div = jQuery('#featuredProducts');
			div.empty();
			div.append(loadingGraphic());
		}
	}

}

updateNavigation = function(pagecount) {
  // SETTINGS
  // These should probably be moved elsewhere.
  var maxControlCount = 5;
  var containerList = ['.topContent ', '.bottomContent '];

  // Typecast page a number
  page = Number(page);

  // Loop to cover the browse controls at the top AND bottom of the page
  for (containerIndex=0; containerIndex<containerList.length; ++containerIndex)
  {
    console.log("Page: " + page + " -- Count: " + pagecount);
    containerClass = containerList[containerIndex];

    $(containerClass + '.browsePageControls').hide();

    // Always deselect all controls
    $(containerClass + '.browsePageControls a').hide();
    $(containerClass + '.browsePageControls a.pageNum').removeClass('selected');

    // First page handling -- for any set length
    if (page!=1) {
      $(containerClass + '.browsePageControls a.prev').show();
    }

    // Set length-conditional handling
    if (pagecount > maxControlCount) {
      for (var i=0; i<maxControlCount; ++i)
        $(containerClass + '.browsePageControls a.pageNum').eq(i).show();

      if (page > pagecount-3) {
        $(containerClass + '.browsePageControls .ellipsis').eq(0).show();
        $(containerClass + '.browsePageControls .ellipsis').eq(1).hide();
        if (page!=pagecount-2)
          $(containerClass + '.browsePageControls a.pageNum').eq(1).hide();

        $(containerClass + '.browsePageControls a.pageNum').eq(4-pagecount+page).addClass('selected');

        $(containerClass + '.browsePageControls a.pageNum').not('.first').each(function(i) {
            $(this).html(pagecount-3+i);
            });
      }
      else if (page < 4) {
        $(containerClass + '.browsePageControls .ellipsis').eq(0).hide();
        $(containerClass + '.browsePageControls .ellipsis').eq(1).show();
        if (page!=3)
          $(containerClass + '.browsePageControls a.pageNum').eq(3).hide();

        $(containerClass + '.browsePageControls a.last').html(pagecount);

        $(containerClass + '.browsePageControls a.pageNum').eq(page-1).addClass('selected');

        $(containerClass + '.browsePageControls a.pageNum').not('.last').each(function(i) {
            $(this).html(i+1);
            });

      }
      else {
        $(containerClass + '.browsePageControls .ellipsis').eq(0).show();
        $(containerClass + '.browsePageControls .ellipsis').eq(1).show();
        $(containerClass + '.browsePageControls a.pageNum').eq(2).addClass('selected');
        $(containerClass + '.browsePageControls a.pageNum').not('.first').not('.last').each(function(i) {
            $(this).html(page-1+i);
            });
        $(containerClass + '.browsePageControls a.first').html(1);
        $(containerClass + '.browsePageControls a.last').html(pagecount);
      }
    } 
    else {
      $(containerClass + '.browsePageControls .ellipsis').hide();
      $(containerClass + '.browsePageControls a.pageNum').eq(page-1).addClass('selected');
      $(containerClass + '.browsePageControls a.pageNum').each(function(i) {
          $(this).html(i+1);
          });
      
      for (var pageIterator = 0; pageIterator < pagecount; ++pageIterator)
        $(containerClass + '.browsePageControls a.pageNum').eq(pageIterator).show();
      for (var pageIterator = pagecount; pageIterator < maxControlCount; ++pageIterator)
        $(containerClass + '.browsePageControls a.pageNum').eq(pageIterator).hide();
    }

    // Last page handling -- for any set length
    if (page!=pagecount) { 
      $(containerClass + '.browsePageControls a.next').show();
    }

    $(containerClass + '.browsePageControls').show();    
  }
}


  function filters_to_querystring(filters) {
    var querystring = ["resultSize="+resultSize, "page="+page, "query="+query, "sort="+sort, "nodeId="+nodeId];
    for( var attribute in filters ){
      var values = filters[attribute]
      for(var i=0; i<values.length; i++){
        var value = values[i];
        querystring.push( "attributes="+escape(attribute)+"&values="+escape(value)+"" );
      }
    }
    return querystring.join("&");
  }

  function add_filter(attribute,value){
    //console.log('ADD FILTER: ' + attribute + ' ' + value);
    filters[attribute] = [value];
    refresh(null,true);
    return false; // stop the href from submitting
  }

  function remove_filter(attribute,value){
    //console.log('REMOVE FILTER: ' + attribute + ' ' + value);
    delete filters[attribute];
    refresh(null,true);
    $('#filter_'+attribute.replace(/ /g,'')+' .removeFilterLink').remove(); //REVISE -- Move this into the event handler for refresh?
    return false; // stop the href from submitting
  }

  function change_page(){
    refresh(null,false);
  }

  function update_sort(value){
    $('.sortByControls select').children('[value="'+ value  +'"]').attr('selected','selected');
    sort = value;
    refresh(null,false);
    return false;
  }

  function update_item_count(value){
    $('.itemCountControls select').children('[value="'+ value +'"]').attr('selected','selected');
    resultSize = value;
    refresh(null,false);
    return false;
  }

function add_filter_remove(linkObject,attrib){
  $(linkObject).removeAttr('onclick').click(function(){
    return remove_filter(attrib,filters[attrib]);
  });
}


  function browsePageInit() {
    $('#filters .attribute .arrow').show();
    $('.filterPopupLink').show();
    $('.hiddenForPopup').hide();
		quickLookHandler("#featuredProducts");
    $(".productThumbnail").hover(function(){ $(this).find(".quickLookLink").css("visibility","visible"); },function(){ $(this).find(".quickLookLink").css("visibility","hidden"); });
 }

