/*
	Main Class.
	Reprents the products grid.

*/
var SearchProductsGrid = new Class({
	/*
	 * Initialize the grid, set the product and the view mode regarding
	 * PRODUCT_VISUALIZATION and SEARCH_PARAMETERS Cookies
	 */
	initialize: function(options){
		boxObjects.each(function(boxObject, index){
			if($$('div.productPreviewBox')[index].getStyle('visibility')=="hidden")
				if (!msieversion()) {
					if	($$('div.productPreviewBox')[index].shadow != undefined) {
						$$('div.productPreviewBox')[index].shadow.setStyle('visibility', 'hidden');
					}
				}
		});
		if (!options) options = '';
		this.viewSide = 'front';
		this.logLocation = "product-finder";
		this.viewMode = !options.viewMode ? 'onmodel': options.viewMode;
//		this.displayViewButtons = ($('view-mode').getStyle('display')=='none')?false:true;
        this.currentPage = !options.currentPage ? 1: options.currentPage;
		var serviceUrl = this.getServiceUrl();
		this.filterActive = false;
		this.setFilters();
		this.setPagingActions();
		this.paginationDone = true;
		var cookieLoaded = false;
		var currentSearch = this;
		
		// LEVIPS-1667
//		if (Cookie.read('PRODUCT_VISUALIZATION')) {
//			this.viewMode = Cookie.read('PRODUCT_VISUALIZATION');
//		}
		
		window.location="#f5";
		
		// clear cookies if necessary and fill with defaultvalues
		this.initializeCookies();

		if (Cookie.read('SEARCH_PARAMETERS')) {
			logging.info(this.logLocation,  "Cookie detected. Use cookie to show gridresult");
			// Used after F5 refresh
			this.newSearch = false;
			var cookieSearchParams = Cookie.read('SEARCH_PARAMETERS').replace("newSearch=false","newSearch=true");
			var newSearchParams = serviceUrl.substring(serviceUrl.indexOf('?') + 1).replace("newSearch=false","newSearch=true");
			// alert(cookieSearchParams + " - " + newSearchParams);
			if (cookieSearchParams.indexOf(newSearchParams) == -1) {
				cookieLoaded = true;
				var reg = new RegExp("rangeStart=([^&]+)&", "g");
				var rangeStart = reg.exec(Cookie.read('SEARCH_PARAMETERS'))[1];
				if (Cookie.read('SEARCH_PARAMETERS').contains('rangeLength=16')) {
					$$('#productfinder-top a.small img').set('src', '/ecom/common/images/shop/utils/picto-display16-on.gif');
		        	$$('#productfinder-top a.large img').set('src', '/ecom/common/images/shop/utils/picto-display64.gif');
				} else {
					$$('#productfinder-top a.small img').set('src', '/ecom/common/images/shop/utils/picto-display16.gif');
			        $$('#productfinder-top a.large img').set('src', '/ecom/common/images/shop/utils/picto-display64-on.gif');
				}
				this.currentPage = (rangeStart - 1) / this.getRangeLength() + 1;
				
				this.callService("/"+ locale +"/shop/services/SearchProductsGrid?"+ Cookie.read('SEARCH_PARAMETERS'));
				this.setFiltersSizes();
				this.initializeCriteria(this.getSelectedCriteriaFromCookie());
			} else {
				// alert("F5");
			}
			
		}
		if (!cookieLoaded) {
			// LEVIPS-1667
//			if (Cookie.read('PRODUCT_VISUALIZATION')) {
//				$('productfinder-products').getElements('div.productImage').each(function(image, index) {
//					if (this.viewMode == 'onmodel' && image.getElement('img.front.onmodel').get('src')) {
//						image.getElements('img.productonly').setStyle('display', 'none');
//					} else if (this.viewMode == 'productonly' && image.getElement('img.front.productonly').get('src')) {
//						image.getElements('img.onmodel').setStyle('display', 'none');
//					}
//				}.bind(this));
//			}
//			this.setButtonsOnOff();
			this.newSearch = true;
			if ($('productfinder-filter').getElement('a.filters')) {
				$('productfinder-filter').getElement('a.filters').fireEvent('click');
				this.filterActive = false;
				(function() {
					if (!this.filterActive) {
						$('productfinder-filter').getElement('a.filters').fireEvent('click');
					}
				}.bind(this)).delay(3000);
			}
			
			$('productfinder-filter').getElements('a.selected').each(function(item,index) {
				currentSearch.selectFilter(item);
			});
			
			
			var serviceUrl = this.getServiceUrl();
			var gridCookie = Cookie.write('SEARCH_PARAMETERS', serviceUrl.substring(serviceUrl.indexOf('?') + 1),{path:'/'});
			this.setFiltersSelected();
			this.setPageTag();
			this.setFiltersSizes();
			this.initializeCriteria(null);
		}
		
	},
	initializeCookies: function() {
		Cookie.write('SEARCH_PARAM_RANGE_LENGTH', 16,{path:'/'});
		Cookie.write('SEARCH_PARAM_RANGE_START', 1,{path:'/'});
		levisShop.clearLastGlobalSearch();
		
		// If window url is different from window url stored in cookie then
		// lastsearch in cookie is invalid
		if (Cookie.read('REQUEST_HISTORY_URI') != Window.getCleanUrl()) {
			Cookie.write('REQUEST_HISTORY_URI', Window.getCleanUrl(),{path:'/'});
			if(Cookie.read('SEARCH_PARAMETERS')) {
				// possibly the backbutton in the browser is used
				logging.info(this.logLocation,  "call clearProductFinderLastSearch' (last searchresult is invalid)");
				levisShop.clearProductFinderLastSearch();
			}
		}
		
		// If the customer clicked on an external link google or email then the
		// cookie is cleared
		if (window.isExternalLink(document.referrer) && !window.isPageRefreshed()) {
			logging.info(this.logLocation,  "call clearProductFinderLastSearch' (external link used)");
			levisShop.clearProductFinderLastSearch();
		}
	},
	initializeCriteria: function(parameters){
		if (parameters != null) {
			var name = "";
			var item = "";
			var i = 0;

			var current = this;
			
			// Add selected class to items that are in the cookies
			parameters.each(function(item, index){
				if (i%2==0) {
					name = item;
				} else {
					var value = item;
					$$('#filters li.' + name + '_' + value).each(function(item,index) {
						var filter = item.getElement('a');
						if (filter != null) {
							filter.addClass('selected');
							current.selectFilter(filter);
						}
					});
					name = "";
				}
				i = i + 1;
			});
		}

		// clear criteria items
		$$('a.criteria-item').each(function(item,index){
		    item.getParent().dispose();
		});

		// Show criteria items again
		$$('#filters li a.selected').each(function(item,index) {
		    var innerElement = item.getAttribute('value');
		    var value = item.getParent().get('class').trim();
		    if (innerElement != null && innerElement != "null") {
		    	var htmlElement = '<li><a class="criteria-item" value="' + value + '" >' + innerElement + '</a></li>';
		    	// $$('.criteria').inject(htmlElement);
		    	$j(htmlElement).appendTo('ul.criteria'); 
		    	this.assignClickEventToCriteriaItem(innerElement, value);
			}
		}.bind(this));
		this.setCriteriaAmountLabel($j('a.criteria-item').length);
		// $$('span.number-selected-criteria').set('text',$j('a.criteria-item').length);
		setFilterCriteria();
		this.setFilterBlockHeight(726);
	},
	getSelectedCriteriaFromCookie: function() {
		var parameters = new Array();
		if (Cookie.read('SEARCH_PARAMETERS')) {
			var searchString = Cookie.read('SEARCH_PARAMETERS');
			parameters = this.converParamsToArray(searchString);
		}
		return parameters;
	},
	converParamsToArray: function(params) {
		var parameters = new Array();
		var nvPairs = params.split("&");
		for (i = 0; i < nvPairs.length; i++) {
		     var nvPair = nvPairs[i].split("=");
		     var name = nvPair[0];
		     var value = nvPair[1];
		     if (value != null) {
		    	 var row = [name, value];
		    	 parameters.extend(row);
		    	 // var values = value.split(",");
			     // for (j = 0; j < values.length; j++) {
			    	// var row = [name, values[j]];
			    	// parameters.extend(row);
			     // }
		     }
		}
		return parameters;
	},
	assignClickEventToCriteriaItem: function(innerElement, value) {
		var currentSearch = this;
		$$('a.criteria-item ').each(function(item, index){
			if (item.getAttribute("value") == value) {
				// typefaceInitItem(item);
				item.addEvent('click', function(){
					// remove selected criteria in the top
					item.getParent().dispose();
					// show criteria back in the filter (bottom)
					value = value.replace('selected','');
					$$('li.' + value +' a').setStyle('display','');
					// remove class selected
					
					$$('li.' + value +' a').each(function(item1,index){
						currentSearch.unselectFilter(item1);
						// item.removeClass('selected');
					});
					// use key content.filter.selectedCriteria
					currentSearch.setCriteriaAmountLabel($j('.criteria-item').length);
					// $$('span.number-selected-criteria').set('text',$j('.criteria-item').length);
		            setFilterCriteria();
		            search.callService();
				}.bind(this));

				currentSearch.setCriteriaAmountLabel(index + 1);
				// $$('span.number-selected-criteria').set('text',(index + 1));
		        setFilterCriteria();
			}
		});
	},
	/* Retrieve products datas by calling the webservice */
	callService: function(serviceUrl){
		this.paginationDone = false;
		var currentSearch = this;
		if (!serviceUrl) { 
			var serviceUrl = this.getServiceUrl();
			var gridCookie = Cookie.write('SEARCH_PARAMETERS', serviceUrl.substring(serviceUrl.indexOf('?') + 1),{path:'/'});
		}
		this.setFilterSizeHidden();
		// + "&cache=" + new Date().getTime()
		var jsonRequest = new Request.JSON({url: serviceUrl , onComplete: function(search){
			this.total_items = search.METADATA.TOTAL_ITEMS;
			this.total_pages = Math.ceil(this.total_items / this.getRangeLength());
			this.products = search.PRODUCTS;
			this.filters = search.METADATA.FILTERS;
			this.range_length = search.METADATA.RANGE_LENGTH;
			this.range_start = search.METADATA.RANGE_START;
	        // var totalRows =
			// (($$('.productPreviewBox[style*=none]').length)-($$('.productPreviewBox[style*=none]').length)%4)/4
			// ;
			
			Cookie.write('SEARCH_PARAM_RANGE_LENGTH', this.range_length,{path:'/'});
			Cookie.write('SEARCH_PARAM_RANGE_START', this.range_start,{path:'/'});
			Cookie.write('PARAM_LEVIS_QUERY', '',{path:'/'});
			
			/*
			 * this.filters['collection_all'] = 'enabled';
			 * this.filters['category_all'] = 'enabled';
			 * this.filters['color_all'] = 'enabled'; this.filters['size_all'] =
			 * 'enabled'; this.filters['fit_all'] = 'enabled';
			 */
			this.setProducts();
			if($('filters') && $('filters').getElement('ul#size')) this.setFiltersSizes();
			// this.setFiltersSelected();
			this.setFiltersDisabled();
			
			if (this.range_length <= 16) {
				$('productfinder-products').setStyle('height', '720px');
				currentSearch.setFilterBlockHeight(726);
			} else {
	        	var itemsOnPage = this.total_items - (this.range_start-1);
				if (itemsOnPage > this.range_length) {
					itemsOnPage = this.range_length;
				}
				var totalRows = Math.floor((this.range_length - (itemsOnPage))/4 );
				var heightProductFinder = ((this.range_length/4) * 182) - (182 * totalRows);

				$('productfinder-products').setStyle('height', heightProductFinder + 'px');
				currentSearch.setFilterBlockHeight(heightProductFinder);
			}
			// $$('#productfinder-products
			// .product-finder-item').each(function(item,index){
			// item.setStyle('display','block');
			// });
			

			this.setPaging();
			// LEVIPS-1667
//			if(search.METADATA.PRODUCTONLY_VIEW_ACTIVE && search.METADATA.ONMODEL_VIEW_ACTIVE && this.newSearch)
//				this.displayViewButtons = true;
//			else
//				if(this.newSearch)	this.displayViewButtons = false;
//			this.setButtonsOnOff();
			(function(){this.paginationDone = true;}).bind(this).delay(2000);
			if($defined($('productfinder-filter'))){
				this.setProductAmountLabel(this.total_items);
				// $('productfinder-filter').getElement('span.number-items').set('text',
				// this.total_items);
			}
			window.location="#f5";
			
//			var tagCommander = new TagCommander();
//			tagCommander.sendTag({'search_keywords': this.getCriteria(), 'search_results_number': this.total_items});
		}.bind(this)}).get();
	},
	getRangeStart: function(){
		return (this.currentPage * this.getRangeLength()) - this.getRangeLength() + 1;
	},
    getRangeLength: function(){
        var selectedImage = $('display-mode').getElement('img[src$=-on.gif]');
        var reg = new RegExp("\\d{2}$");
        return reg.exec(selectedImage.id);
    },
	getServiceUrl: function(){
		var filterParam = '';
		var filterArray = new Array();
		// if ($('filters')) {
			$('filters').getElements('a.filter').each(function(filter, index){
				if (filter.hasClass('selected')) {
					// Bug: somewhere the class "selected" is added to the li
					// instead of a
					filter.getParent('li').removeClass('selected');
					var className = filter.getParent('li').get('class').trim();
					if (className.indexOf('ie7') != -1) {
						var reg = new RegExp("([^ ]+) ie7", "g");
						className = reg.exec(className)[1];
					}
					var keyvalue = className.split('_');
					if (!filterArray.contains(keyvalue[0])) {
						filterArray.push(keyvalue[0]);
						filterParam += '&'+ keyvalue[0];
						for (var i = 1; i < keyvalue.length; i++) {
							if (i == 1) filterParam += '=';
							else filterParam += '_';
							filterParam += keyvalue[i];
						}
					} else {
						filterParam += ',';
						for (var i = 1; i < keyvalue.length; i++) {
							if (i > 1) filterParam += '_';
							filterParam += keyvalue[i];
						}
					}
				}
			});
		// }
		var url = window.location.href;
		var reg = new RegExp("products/([^/;?]+)", "g");
		try {
			var parse_url=false;
			var keyword = reg.exec(url)[1];
			keyword = keyword.replace('#f5','');
			keyword = keyword.replace('#','');
			switch(keyword){
				case 'men':
				case 'women':
					filterParam += '&gender='+ keyword;
					parse_url=true;	
				break;
				case 'kids':
					// filterParam += '&category=kidswear';
					parse_url=true;	
				break;
				case 'accessories':
					parse_url=true;
				break;
				case 'sales':;
				case 'special-offers':;
				case 'seasonal-previews':;
				case 'new':
					filterParam += '&'+keyword+'=true';
					parse_url=true;	
				break;
				default:
					filterParam += '&limitedEdition='+keyword;
					parse_url=true;	
				break;
			}
		} catch (e) {}

		
		filterParam += this.getFixedParams();	
		
		if (this.newSearch) {
			var rangeStart = 1; 
			var newSearch = 'true';
		} else {
			var rangeStart = this.getRangeStart();
			var newSearch = 'false'; 
		}
        var rangeLength = this.getRangeLength();
        logging.info(this.logLocation,"Write cookie 'REQUEST_HISTORY_QUERY' : " + newSearch + filterParam);
        Cookie.write('REQUEST_HISTORY_QUERY', "newSearch="+ newSearch + filterParam,{path:'/'});
		return "/"+ locale +"/shop/services/SearchProductsGrid?newSearch="+ newSearch +"&rangeStart="+ rangeStart +"&rangeLength="+rangeLength + filterParam;
	},
	getFixedParams: function () {
		var fixedParams = "";
		if($defined(this.fixedParams)) {
			return this.fixedParams;
		} else {
			var url = window.location.href;
			var reg = new RegExp("[^?]*.(.*)", "g");
			try {
				var parameters = reg.exec(url)[1];
				
				var name = "";
				var item = "";
				var i = 0;
				var paramArray = this.converParamsToArray(parameters);
				var current = this;
				// Add selected class to items that are in the cookies
				paramArray.each(function(item, index){
					if (i%2==0) {
						name = item;
					} else {
						var value = item;
			
						switch(name){
							case 'subcategory':
							case 'category':
							case 'collection':
							case 'colorcode':
							case 'fit':
							case 'curveid':
							// case 'ageGroup':
							case 'newSearch':
							case 'rangeStart':
							case 'rangeLength':
							break;
							default:
								fixedParams += '&' + name + '='+value;
							break;
							
							name = "";
						}
					}
					i = i + 1;
				});
			} catch (e) {}
		}
		this.fixedParams = fixedParams;
		return this.fixedParams;
		
	},
	getGender: function(){
		var url = window.location.href;
		var reg = new RegExp("products/([^/?]+)", "g");
		try {
			var category = reg.exec(url)[1];
			if (category == 'men' || category == 'women' || category == 'kids') {
				return category;
			}
		} catch (e) {}
		if (url.indexOf('gender=men') != -1) {
			return 'men';
		} else if (url.indexOf('gender=women') != -1) {
			return 'women';
		} else if (url.indexOf('category=kidswear') != -1) {
			return 'kids';
		}
	},
	getFilterSize: function(filter){
		// var stringNo = filter.getParent("li").getAttribute("class");
		var stringNo = filter.getParent("li").className;
			var parsedNo = "";
			for(var n=0; n<stringNo.length; n++) {
				var i = stringNo.substring(n,n+1);
				if(i=="1"||i=="2"||i=="3"||i=="4"||i=="5"||i=="6"||i=="7"||i=="8"||i=="9"||i== "0") {
					parsedNo += i;
				}
			}
		return parsedNo;
	},
	getCriteria: function() {
		var criteria = "";
		$$('a.criteria-item').each(function(item) {
			criteria += item.get('text');
			criteria += ", ";
		});
		return criteria.substring(0, criteria.lastIndexOf(','));
	},
	/* Set all the boxes with retrieved datas */
	setProducts: function(){
		boxObjects.each(function(boxObject, index){
			
			var boxElement = $$('div.productPreviewBox')[index];
			if (!this.products[index]) {
				logging.debug(this.logLocation,"Hide previewbox : " + index);
				boxObject.hide();
				if (!msieversion()) {
					if	(boxElement.shadow != undefined) {
						boxElement.shadow.setStyle('visibility', 'hidden');
					} 
				}
			} else {
				var interval = (50 - index) * Math.random() * 20;
				logging.debug(this.logLocation,"Show previewbox : " + index + " with interval delay (" + interval + ")");
				boxElement.setStyle('display', '');
                boxElement.setStyle('visibility', '');
                
                if (!msieversion()) {
	                if (boxElement.getParent().getElement('[shadow=true]') == undefined) {
	                	boxElement.addShadow4Directions();
	                	boxElement.addShadow();
	            		$$('.shadowBig').each(function(item,index){
	            			item.setStyle("display","none");
	            		});
					}
	            }
					boxObject.hide(function () {
						boxObject.viewSide = this.viewSide;
						boxObject.viewMode = this.viewMode;
						boxObject.update(this.products[index]);
						
						boxElement.getElements('.typeface-js').each(function(item){
							reintinilazeTypeFace(item);
						});
						// boxElement.getParent('td').setStyle('display','table-cell');
						// make some JS errors on IE
						window.fireEvent('paginationDone', boxObject.box.getElement('h2.productNameLabel a'));
					}.bind(this));

			}
		}.bind(this));
		this.setPageTag();
	},
	/* set the pagination */
	setPaging: function(){
		var pagingHtml = '';
        var showAll = 5;
		var pagingLength = 4;
		if (this.total_items > this.getRangeLength()) {
			// display previous button
            if (this.currentPage > 1) {
                pagingHtml += '<a href="#" style="font-size:16px" class="prev"><img src="/ecom/common/images/shop/arrows/arrow-search-previous-page.gif" alt="" /></a>';
            }
            if(this.total_pages <= showAll) {     
                for (var i = 1; i <= this.total_pages; i++) {
                    if (i == this.currentPage) {
                        pagingHtml += '<span class="pages-number">'+ i +'</span>';
                    } else {
                        pagingHtml += '<a href="#" class="pages-number">'+ i +'</a>';
                    }
                }
            } else {


                if (this.total_pages <= pagingLength) {
                    var startPage = 1;
                    var endPage = this.total_pages;
                } else if (this.total_pages <= this.currentPage) {
                    var startPage = this.total_pages - pagingLength + 1;
                    var endPage = this.total_pages;
                } else {
                    var startPage = (this.currentPage%pagingLength == 0) ? this.currentPage - pagingLength + 1 : this.currentPage - this.currentPage%pagingLength + 1;
                    var endPage = Math.min(startPage + pagingLength - 1,this.total_pages);
                }
                
                var selectedSetted = false;
                
                // Add first page
                var pageNumber = 1;
                pagingHtml += addPageNumber(selectedSetted, pageNumber, this.currentPage);
                selectedSetted = isPageNumberSelected(pageNumber,this.currentPage) || selectedSetted;
 
                // three dots
                if (1 < (this.currentPage-2)) {
                    pagingHtml += '<span class="pages-number" style="color:#404040">...</span>';
                } 
                
                // page 2 before selected
                pageNumber = (this.currentPage-2);
                if (pageNumber > this.total_pages -3) {
                	pagingHtml += addPageNumber(selectedSetted, pageNumber, this.currentPage);
                	selectedSetted = isPageNumberSelected(pageNumber,this.currentPage) || selectedSetted;
                }
                
                // page 1 before selected
                pageNumber = (this.currentPage-1);
                if (pageNumber > 1) {
                	pagingHtml += addPageNumber(selectedSetted, pageNumber, this.currentPage);
                	selectedSetted = isPageNumberSelected(pageNumber,this.currentPage) || selectedSetted;
                }
                
                // selected page (if not yet printed)
                pageNumber = this.currentPage;
                if (!selectedSetted) {
                	pagingHtml += addPageNumber(selectedSetted, pageNumber, this.currentPage);
                	selectedSetted = isPageNumberSelected(pageNumber,this.currentPage) || selectedSetted;
                } 

                // page after 1 selected
                pageNumber = (this.currentPage+1);
                if (pageNumber < this.total_pages) {
                	pagingHtml += addPageNumber(selectedSetted, pageNumber, this.currentPage);
                	selectedSetted = isPageNumberSelected(pageNumber,this.currentPage) || selectedSetted;
                }

                // page after 2 selected
                pageNumber = (this.currentPage+2);
                if (pageNumber < 4) {
                	pagingHtml += addPageNumber(selectedSetted, pageNumber, this.currentPage);
                	selectedSetted = isPageNumberSelected(pageNumber,this.currentPage) || selectedSetted;
                }
                
                // three dots
                if (this.total_pages > (this.currentPage+2)) {
                    pagingHtml += '<span class="pages-number" style="color:#404040">...</span>';
                }

                // Add last page
                pageNumber = this.total_pages;
                if (this.total_pages > 1) {
                	pagingHtml += addPageNumber(selectedSetted, pageNumber, this.currentPage);
                	selectedSetted = isPageNumberSelected(pageNumber,this.currentPage) || selectedSetted;
                }
            }

            // display next button
			if (this.currentPage < this.total_pages) {
				pagingHtml += '<a href="#" style="font-size:16px" class="next"><img src="/ecom/common/images/shop/arrows/arrow-search-next-page.gif" alt="" /></a>';
			}
		}
		$('productfinder-content').getElements('span.pages-block').set('html', pagingHtml);
		this.setPagingActions();
	},
	setPagingActions: function(){
		// Performance improvement "span.pages-block a.prev" => "a.prev"
		if ($('productfinder-content').getElements('a.prev')) {
			$('productfinder-content').getElements('a.prev').addEvent('click', function(){
				if(this.paginationDone == true){
					this.currentPage--;
					this.newSearch = false;
					this.setPaging();
					this.callService();
				}
				return false;
			}.bind(this));
		}
		// Performance improvement "span.pages-block a.pages-number" =>
		// "a.pages-number"
		if ($('productfinder-content').getElements('a.pages-number')) {
			$('productfinder-content').getElements('a.pages-number').addEvent('click', function(e){
				if(this.paginationDone == true){
					this.currentPage = parseInt(e.target.get('text'));
					this.newSearch = false;
					this.setPaging();
					this.callService();
				}
				return false;
			}.bind(this));
		}
		// Performance improvement "span.pages-block a.next" => "a.next
		if ($('productfinder-content').getElements('a.next')) {
			$('productfinder-content').getElements('a.next').addEvent('click', function(){
				if(this.paginationDone == true){
					this.currentPage++;
					this.newSearch = false;
					this.setPaging();
					this.callService();
				}
				return false;
			}.bind(this));
		}
		// $('productfinder-bottom').getElements('span.pages-block
		// a').addEvent('click', function(){
		// var myFx = new Fx.Scroll($(document.body)).start(0,
		// $('eshop-content').getPosition().y);
		// });
	},
	setCriteriaAmountLabel: function(amount) {
		if($('filter-one-criteria') != null) {
			if (amount == 1) {
				$('filter-one-criteria').setStyle('display','');
				$('filter-criteria').setStyle('display','none');
			} else {
				$('filter-one-criteria').setStyle('display','none');
				$('filter-criteria').setStyle('display','');
				$$('span.number-selected-criteria').set('text',amount);
			}
		}
	},
	setProductAmountLabel: function(amount) {
		if ($('total-one-item') != null) {
			if (amount == 1) {
				$('total-one-item').setStyle('display','');
				$('total-items').setStyle('display','none');
			} else {
				$('total-one-item').setStyle('display','none');
				$('total-items').setStyle('display','');
				
				$('productfinder-filter').getElement('span.number-items').set('text', amount);
			}
		}
		
	},
	/* set the filter criterias */
	setFilters: function(){
		// if ($('productfinder-center').getElement('a.filters')) {
			// $('productfinder-center').getElement('a.filters').addEvent('click',
			// function(){
				this.filterActive = true;
				$('filters').addEvent('mouseover', function(){
					this.filterActive = true;
				}.bind(this));
				/*
				 * if ($('filters').getStyle('display') == 'none') { var height =
				 * $('filters').getElements('li.product li').length * 15 + 5 *
				 * 23 + 100; var showFX = new Fx.Morph('filters', {duration:
				 * 'normal', transition: Fx.Transitions.Sine.easeOut});
				 * showFX.start({ //'height': 363 'height': height });
				 * $('filters').setStyle('display', 'block');
				 * $('productfinder-center').getElement('a.filters').addClass('filters-open'); }
				 * else { var hideFX = new Fx.Morph('filters', {duration:
				 * 'normal', transition: Fx.Transitions.Sine.easeOut,
				 * onComplete: function() { $('filters').setStyle('display',
				 * 'none');
				 * $('productfinder-center').getElement('a.filters').removeClass('filters-open');
				 * }}); hideFX.start({ 'height': 0 }); }
				 */
				/*
				 * var myAccordion = new Accordion($('filters'), 'a.button',
				 * 'ul.filters-level1', {'display': -1, 'alwaysHide': true,
				 * 'opacity':false, 'onActive': function(toggler, element) {
				 * toggler.getParent('li').morph({paddingTop:5,
				 * paddingBottom:10}).addClass('opened');
				 * element.setStyle('opacity','1'); if(IE6)
				 * element.getElements('a').setStyle('visibility','visible'); },
				 * 'onBackground': function(toggler, element){
				 * toggler.getParent('li').morph({paddingTop:0,
				 * paddingBottom:0}).removeClass('opened');
				 * element.setStyle('opacity','0'); if(IE6)
				 * element.getElements('a').setStyle('visibility','hidden'); }
				 * });
				 */
		/*
		 * $('filters').getElements('div.breadcrumb
		 * a').each(function(breadcrumb, index){ breadcrumb.addEvent('click',
		 * function() { var category = (breadcrumb.get('class') == 'products') ?
		 * 'subcategory1' : breadcrumb.get('class');
		 * $('filters').getElements('li.'+ category +'
		 * a.button').fireEvent('click'); return false; }); });
		 */
				var currentSearch = this;
				$$('#filters-main  li  a.button').each(function(filter, index){

						filter.addEvent('click', function(){
						// var mySlide2 = new Fx.Slide(filter.get("id") +
						// "Container", {duration:500, mode: 'vertical'});
						// mySlide2.toggle();
						
						if (filter.getNext("ul").getStyle("display") == "none") {
							filter.getNext("ul").setStyle("display","");
						} else {
							filter.getNext("ul").setStyle("display","none");
						}
						// filter.getParent().getElements("ul").toggle();
						currentSearch.setFilterBlockHeight(726);
						
					});
				});
	
				
				$('filters').getElements('a').each(function(filter, index){
					if (filter.hasClass('filter')) {
						filter.addEvent('click', function(){
							if (!filter.hasClass('disabled') && !filter.hasClass('selected')) {
								this.selectFilter(filter);
								this.newSearch = true;
								this.currentPage = 1;
	
	
								// Initialize this way. The correct order is
								// used.
								this.initializeCriteria(null);
								
								this.callService();
								this.setFilterTag(filter);
							} 
							/*
							 * else if (filter.hasClass('selected') &&
							 * this.getFilterCategory(filter) == 'colorcode') {
							 * //TODO is this still necessary?
							 * 
							 * filter.addClass('selected');
							 * filter.setStyle('display','none');
							 * this.setStyle('display','none');
							 * this.unselectFilter(filter); this.newSearch =
							 * true; this.currentPage = 1;
							 * 
							 * var innerElement = filter.get('text'); var
							 * htmlElement = '<li><a class="criteria-item" >' +
							 * innerElement + '</a></li>';
							 * //$$(".criteria").inject(htmlElement);
							 * $j(htmlElement).appendTo('ul.criteria');
							 * 
							 * this.callService(); }
							 */
							return false;
						}.bind(this));
					}
				}.bind(this));
		
					
				var currentSearch = this;
				$$('a.clearAll').each(function(filter, index){
					filter.addEvent('click', function(){
						$$('a.criteria-item').each(function(item,index){
							// remove class selected
							$$('li.' + item.getAttribute('value') +' a').each(function(item,index){
							// $j('a[value=' + item.get('text') +
							// ']').each(function(index,item){
								// item.removeClass('selected');
								currentSearch.unselectFilter(item);
								// show criteria back in the filter (bottom)
								// item.setStyle('display','inline');
							});
							item.getParent().dispose();
							$('filter-criteria-div').setStyle('display','none');
							// $j('#filter-criteria').html($j('.criteria-item').length
							// + ' selected criteria');
						}.bind(this));
						this.callService();
						
						currentSearch.setCriteriaAmountLabel(0);
						return false;
					}.bind(this));
				}.bind(this));

				
				$('filters').getElements('a.filterall').each(function(filterall, index){
					filterall.addEvent('click', function(){
						if (!filterall.hasClass('disabled') && !filterall.hasClass('selected')) {
							filterall.addClass('selected');
							var className = filterall.getParent('li').get('class');
							var splitedClassName = className.split('_');
							if(splitedClassName[0] == "category" || splitedClassName[0] == "subcategory") splitedClassName[0] = "product";
							$('filters').getElements('#'+ splitedClassName[0] +' li a').each(function(filter, index){
								if (!filter.hasClass('filterall')) {
									filter.removeClass('selected');
									this.setFiltersSelection();
								}
							}.bind(this));
							if (splitedClassName[0] == 'colorcode') {
								$('filters').getElements('li.color a.filter img').each(function(img, index){
									var src = img.get('src');
									img.set('src', src.replace('_selected.gif', '_unselected.gif'));
								}.bind(this));
							}
							this.newSearch = true;
							this.currentPage = 1;
							this.callService();
							this.setFilterTag(filterall);
						}
						return false;
					}.bind(this));
				}.bind(this));
				return false;
			// }.bind(this));
		// }
	},
	setFiltersSizes: function() {
		
		// var sizeElement = new Element('li', {'class': 'size_all', 'html': '<a
		// href="#" class="filterall">/&nbsp;All</a>'});
		// sizeElement.inject($('filters').getElement('ul#size'));
		// var sizeElement = new Element('li', {'class': 'clear', 'html': ''});
		// sizeElement.inject($('filters').getElement('ul#size'));
		
		if (this.filters != null) {
			$('filters').getElement('ul#size').empty();
			// Create new size elements
			for(key in this.filters){
				if (!key.contains("_total")) {
					if (key.indexOf('size_') != -1 && key != 'size_all') {
						var keyArray = key.split('_');
						var value = key.replace('size_','');
						var cssclass = "filter ";

						var liWidth = "19px";
						// check for NaN
						if (value.length == 3) {
							//100 120 XXL ...
							liWidth = "28px";
						} else if (value.length == 4) {
							liWidth = "34px";
						}
							
						var sizeElement = new Element('li', 
								{'style': 'width:' + liWidth,'class': key, 'html': '<a value="' + value + '" href="#" class="' + cssclass + '"><img src="/ecom/common/images/shop/sizes/size-buttons/' + value + '-available.gif" alt="' + value + '" />' +'</a>'}
						);

						sizeElement.inject($('filters').getElement('ul#size'));
						if (this.filters[key] == 'selected') {
							this.selectFilter(sizeElement.getFirst('a'));
						}
					}
				}
			}
		}
	
		// If size element is disabled change image
		$('filters').getElements('ul#size a.filter').each(function(filter, index){
			if (filter.hasClass('disabled')) {
				var src = filter.getElement('img').get('src');
				filter.getElement('img').set('src', src.replace('-available.gif','-out-of-sale_black.gif'));
				
			}
		}.bind(this));

		this.removeParticularSizes();
		
		// assign events to size filters
		if (this.filters != null) {
			$('filters').getElements('ul#size a.filter').each(function(filter, index){
				filter.addEvent('click', function(){
					if (!filter.hasClass('disabled') && !filter.hasClass('selected')) {
						this.selectFilter(filter);
						this.newSearch = true;
						this.currentPage = 1;
	
	
						// Initialize this way. The correct order is used.
						this.initializeCriteria(null);
						
						this.callService();
						this.setFilterTag(filter);
					} 
					return false;
				}.bind(this));
			}.bind(this));
		}
	},
	removeParticularSizes:function() {
		// for men the sizes 35,37,39,41, ... are removed
		// for women the sizes 35,36,37,38, ... are removed
		$('filters').getElements('ul#size a.filter').each(function(filter, index){
			filter.getParent("li").setStyle("display","");
			if ('men' == this.getGender()) {
				var url = window.location.href;
				var size = this.getFilterSize(filter);
				size = parseInt(size,10);
				// check for NaN
				if (!isNaN(size)) {
					if (size > 34 && size%2==1) {
						filter.getParent("li").dispose();
					} else if (size == 44 || size == 46) {
						if (url.contains("category=bottoms")) {
							filter.getParent("li").dispose();
						}
					}
				}
			} else if ('women' == this.getGender()) {
				var size = this.getFilterSize(filter);
				size = parseInt(size,10);
				// check for NaN
				if (!isNaN(size)) {
					if (size > 34) {
						filter.getParent("li").dispose();
					}
				}
			}
		}.bind(this));
	},
	setFiltersSelected: function() {
		if ($('filters')) {
			$('filters').getElements('a.filterall').each(function(filterall, index){
				filterall.addClass('selected');
			});
			var gridCookie = Cookie.read('SEARCH_PARAMETERS');
			if (gridCookie) {
				var currentSearch = this;
				$('filters').getElements('a.filter').each(function(filter, index){
					// filter.removeClass('selected');
				});
				var keysArray = new Array();
				var valuesArray = new Array();
				var params = gridCookie.split('&');
				for (var i = 0; i < params.length; i++) {
					var keyvalue = params[i].split('=');
					keysArray.push(keyvalue[0]);
					valuesArray.push(keyvalue[1]);
				}
				keysArray.each(function(key, index){
					var id = (key == 'category' || key == 'subcategory') ? 'product' : key;
					if (key == 'colorcode') {
						var colors = valuesArray[index].split(',');
						colors.each(function(color, index){
							$('filters').getElement('ul#'+ id +' li.'+ key +'_'+ color +' a.filter').addClass('selected');
							$('filters').getElement('ul#'+ id +' a.filterall').removeClass('selected');
							var img = $('filters').getElement('ul#'+ id +' li.'+ key +'_'+ color +' a.filter img');
							var src = img.get('src');
							img.set('src', src.replace('_unselected.gif', '_selected.gif'));
						});
					} else if ($('filters').getElement('ul#'+ id +' li.'+ key +'_'+ valuesArray[index] +' a.filter')) {
						$('filters').getElement('ul#'+ id +' li.'+ key +'_'+ valuesArray[index] +' a.filter').addClass('selected');
						if($chk($('filters').getElement('ul#'+ id +' a.filterall')))
							$('filters').getElement('ul#'+ id +' a.filterall').removeClass('selected');
					}
				});
				this.setFiltersSelection();
			}
		}
	},
	setFiltersDisabled: function() {
		if ($('filters')) {
			var size_enabled = 0;
			var currentSearch = this;
			$('filters').getElements('ul.filters-level1 li').each(function(li, index){
				filter = li.get('class');
				if (this.filters[filter] && (this.filters[filter] == 'enabled' || this.filters[filter] == 'disabled')) {
					li.getElement('a').removeClass('enabled');
					li.getElement('a').removeClass('disabled');
					
					li.getElement('a').addClass(this.filters[filter]);
					
					if (currentSearch.getFilterCategory(li.getElement('a')) == 'size') {
						
						var src = li.getElement('a').getElement('img').get('src');
						if (this.filters[filter] == 'enabled') {
							li.getElement('a').getElement('img').set('src', src.replace('-out-of-sale_black.gif','-available.gif'));
							// li.getElement('a').getElement('img').set('src',
							// src.replace('-selected','-available.gif'));
						} else {
							li.getElement('a').getElement('img').set('src', src.replace('-available.gif','-out-of-sale_black.gif'));
							// li.getElement('a').getElement('img').set('src',
							// src.replace('-selected','-out-of-sale_black.gif'));
						}
						li.getElement('a').setStyle('display', 'inline');
					} else {
						var value = li.getElement('a').getAttribute('value');
						if (this.filters[filter] == "enabled") {
							li.getElement('a').set('text', value + " (" + this.filters[filter + "_total"] + ")" );
						} else {
							li.getElement('a').set('text', value);
						}
					}
				}
				if (filter.indexOf('size_') != -1 && filter != 'size_all') size_enabled++;
			}.bind(this));
			
			if ($('filters').getElement('li.size') != null) {
				if (!size_enabled) {
					if ($('filters').getElement('ul#size')) $('filters').getElement('li.size').addClass('button-disabled');
					$('filters').getElement('li.size').setStyle('display','none');
				} else {
					$('filters').getElement('li.size').removeClass('button-disabled');
					$('filters').getElement('li.size').setStyle('display','');
				}
			}
			$('filters').getElements('li.button-disabled').each(function(button, index){
				// button.getElement('ul').setStyle('display','none');
				button.getElement('a.button').removeEvents('click');
			});

			// disable subcategories when category is selected
			$$('#filters li .selected').each(function(item,index) {
				var className = item.get('class').trim();
				if (className.indexOf('category_') == -1 && className.indexOf('curveid_') == -1) {
					item.getParent().getElements('li a').each(function(anchor,index) {
						anchor.removeClass('enabled');
						anchor.removeClass('disabled');
						anchor.addClass('disabled');
					});
				}
			}.bind(this));
			
		}
	},
	setFilterSizeHidden: function() {
		if ($$('li.size') != null) {
			var searchparams = Cookie.read('SEARCH_PARAMETERS');
			var url = window.location.href;
			
			var i = 0;
			if (searchparams.contains("tops")) {
				i++;
			}
			if (searchparams.contains("bottoms")) {
				i++;
			}
			if (searchparams.contains("accessories")) {
				i++;
				i++;
			}
			if (searchparams.contains("underwear")) {
				i++;
				i++;
			}
			if (searchparams.contains("footwear")) {
				i++;
			}
			
			if ( i == 1 ) {
				// $$('li.size').setStyle("display","");
			} else {
				// $$('li.size').setStyle("display","none");
			}
		}
	},
	setFilterBlockHeight: function(minHeight){
		if ($('filters-main') != null) {
			var totalItems = this.getRangeLength();
			var leftBlockHeight = 726;
			var leftBlockContainterHeight = 726;
			leftBlockHeight = document.getElementById('total-items').offsetHeight;
			leftBlockHeight = leftBlockHeight + document.getElementById('filter-criteria-div').offsetHeight;
			leftBlockHeight = leftBlockHeight + document.getElementById('filters-main').offsetHeight;
	
			if (leftBlockHeight < 726) {
				leftBlockHeight = 726;
			} else {
				leftBlockContainterHeight = leftBlockHeight;
			}
			
			$('filters').morph({height:leftBlockHeight});
			if (totalItems <= 16) {
				$('productfinder-filter').morph({height:leftBlockContainterHeight});
			}
		}
	},
	selectFilter: function(filter) {
		// filter.setStyle('display','none');
		$(filter).getParent().setStyle('display','none');
		
		if (this.getFilterCategory(filter) == 'category' || this.getFilterCategory(filter) == 'subcategory') {
			// Category does not disappear in filterlist
			if (this.getFilterCategory(filter) == 'category') {
				filter.setStyle('display', 'inline');
				$(filter).getParent().setStyle('display','');
				// remove subcategories when category is selected
				filter.getParent("li").getElements("ul li a").each(function(anchor,index) {
					$(anchor).getParent().setStyle('display','');
					anchor.setStyle("display","");
					anchor.removeClass('selected');
					anchor.removeClass('enabled');
					anchor.removeClass('disabled');
					anchor.addClass('disabled');
				}.bind(this));
			}
			
			// $('filters').getElements('ul#product
			// a.filter').removeClass('selected');
			if($chk($('filters').getElement('ul#product a.filterall')))
				$('filters').getElement('ul#product a.filterall').removeClass('selected');
		} else if (this.getFilterCategory(filter) == 'colorcode') {
			// $('filters').getElement('ul#color
			// a.filterall').removeClass('selected');
			// var src = filter.getElement('img').get('src');
		} else if (this.getFilterCategory(filter) == 'curveid') {
			
		} else if (this.getFilterCategory(filter) == 'collection') {
			
		} else if (this.getFilterCategory(filter) == 'fit') {
			
		} else if (this.getFilterCategory(filter) == 'size') {
			filter.setStyle('display','none');
			var src = filter.getElement('img').get('src');
			// filter.getElement('img').set('src', src.replace('-available.gif',
			// '-selected.gif'));
			// filter.setStyle('display', 'none');
			filter.getParent('li').setStyle('display','none');
		} else {
			filter.getParent('li').getParent('ul').getElements('a.filter').each(function(otherfilter, index){
				otherfilter.removeClass('selected');
			});
		}
		filter.addClass('selected');
		this.setFiltersSelection();
	},
	unselectFilter: function(filter) {
		if (this.getFilterCategory(filter) == 'colorcode') {
			
		} else if (this.getFilterCategory(filter) == 'size') {
			var src = filter.getElement('img').get('src');
			// filter.getElement('img').set('src', src.replace('-selected.gif',
			// '-available.gif'));
			filter.setStyle('display','');
			filter.getParent('li').setStyle('display','');
		}
		filter.removeClass('selected');
		// filter.setStyle('display','');
		$(filter).getParent().setStyle('display','');
		this.setFiltersSelection();
	},
	setFiltersSelection: function(click) {
		// $('filters').getElements('div.breadcrumb a').set('html', '');
		
		$('filters').getElements('a.filter').each(function(filter, index) {
			if (filter.hasClass('selected')) {
				var category = (this.getFilterCategory(filter) == 'category' || this.getFilterCategory(filter) == 'subcategory') ? 'product' : this.getFilterCategory(filter);
				if (category == 'colorcode') {
					var breadcrumb = $('filters').getElements('div.breadcrumb a.color').get('html');
					var newBreadcrumb = (breadcrumb != '') ? breadcrumb + filter.get('html') +' ': '/&nbsp;'+ filter.get('html') +' ';
				} else if (category == 'size') {
					var newBreadcrumb = '/&nbsp;'+ filter.get('html') +' ';
				} else {
					var newBreadcrumb = filter.get('html') +' ';
				}
				$('filters').getElements('div.breadcrumb a.'+ category).set('html', newBreadcrumb);
			}
		}.bind(this));
		
		$('filters').getElements('a.uncheck').addEvent('click', function() {
			$('filters').getElements('.selected').removeClass('selected');
			$('filters').getElements('li.color a.filter img').each(function(img, index){
				var src = img.get('src');
				img.set('src', src.replace('_selected.gif', '_unselected.gif'));
			}.bind(this));
			$('filters').getElements('div.breadcrumb a').set('html', '');
			this.newSearch = true;
			this.currentPage = 1;
			this.callService();
			return false;
		}.bind(this));
	},
	getFilterCategory: function(filter) {
		var className = filter.getParent('li').get('class');
		var keyvalue = className.split('_');
		return keyvalue[0];
	},
	// LEVIPS-1667
	/*setButtonsOnOff: function () {
		if (this.displayViewButtons) {
			$('view-mode').setStyle('display', 'inline');
			var pfTop = $('productfinder-top');
			if (pfTop != null) {
				var pfProductOnly = pfTop.getElement('a.productonly img');
				var pfProductModel = pfTop.getElement('a.onmodel img');
				
				if (this.viewMode == 'productonly') {
					if (pfProductOnly != null) pfProductOnly.set('src', '/ecom/common/images/shop/utils/picto-product-on.gif');
					if (pfProductModel != null) pfProductModel.set('src', '/ecom/common/images/shop/utils/picto-model.gif');
				} else if (this.viewMode == 'onmodel') {
					if (pfProductModel != null) pfProductModel.set('src', '/ecom/common/images/shop/utils/picto-model-on.gif');
					if (pfProductOnly != null) pfProductOnly.set('src', '/ecom/common/images/shop/utils/picto-product.gif');
				}
			}
		} else {
			$('view-mode').setStyle('display', 'none');
		}
	},*/
	/* Analytics tags */
	setPageTag: function() {
		var tag = new Tag();
		var filterParam = '';
		if ($('filters')) {
			$('filters').getElements('li.product a.filter').each(function(filter, index){
				if (filter.hasClass('selected')) {
					var className = filter.getParent('li').get('class');
					var keyvalue = className.split('_');
					for (var i = 1; i < keyvalue.length; i++) {
						if (i > 1) filterParam += '_';
						filterParam += keyvalue[i];
					}
				}
			});
		}
		if (filterParam == '') {
			tag.set({'pageName': 'shop product finder '+ this.getGender() +' grid '+ this.currentPage, 'channel': 'shop', 'prop1': 'shop:product finder', 'prop2': 'shop:product finder:'+ this.getGender(), 'prop10': locale});
		} else {
			tag.set({'pageName': 'shop product finder '+ this.getGender() +' grid '+ this.currentPage, 'channel': 'shop', 'prop1': 'shop:product finder', 'prop2': 'shop:product finder:'+ this.getGender(), 'prop3': 'shop:product finder:'+ this.getGender() +':'+ filterParam, 'prop10': locale});
		}
		
		tag.send();
		
//		var tagCommander = new TagCommander();
//		tagCommander.sendTag({'search_page_number': this.currentPage});
	},
	setFilterTag: function(filter) {
		var tag = new Tag();
		var className = filter.getParent('li').get('class');
		var keyvalue = className.split('_');
		var prop8 = '';
		for (var i = 0; i < keyvalue.length; i++) {
			if (i == 1) prop8 += ':';
			else if (i > 1) prop8 += '_';
			prop8 += keyvalue[i];
		}
		tag.sendClick();
//		var tagCommander = new TagCommander();
//		tagCommander.sendTag({'search_keywords': this.getCriteria()});
	}
});
var search;
window.addEvent('domready', function(){
    if (!msieversion()) {
    	// add shadow that is visible when hover
		$$('.productPreviewBox').filter(function(item, index){
			if (item.getStyle("visibility") != "hidden") {
				return true;
			}
		    return false;
		}).addShadow4Directions();
		
		$$('.shadowBig').each(function(item,index){
			item.setStyle("display","none");
		});
		
		$$('.productPreviewBox').filter(function(item, index){
			if (item.getStyle("visibility") != "hidden") {
				return true;
			}
		    return false;
		   // return index < 16;
		}).addShadow();
	}
	search = new SearchProductsGrid();
//	var tagCommander = new TagCommander();
//	var numberOfItems = $defined($$('#total-items .number-items')[0]) ? $$('#total-items .number-items')[0].get('text'): search.total_items;
//	tagCommander.sendTag({'search_keywords': search.getCriteria(), 'search_page_number': search.currentPage, 'search_results_number': numberOfItems});

	
	var pfTop = $('productfinder-top');
	if (pfTop != null) {
		var pfProductModel = pfTop.getElement('a.onmodel');
		if (pfProductModel != null) {
			pfProductModel.addEvent('click', function(){
				search.viewMode = 'onmodel';
				search.viewSide = 'locked';
				search.callService();
				var viewCookie = Cookie.write('PRODUCT_VISUALIZATION', 'onmodel',{path:'/'});
				var tag = new Tag();
				// tag.set({'prop17': 'view:OnModel'});
				tag.set({'pageName': 'shop product finder view', 'linkTrackVars': 'eVar1,prop8', 'evar1': 'view:OnModel', 'prop8': 'view:OnModel','name':'eshop product finder view'});
				tag.sendClick();
				return false;
			});
		}
		var pfProductOnly = pfTop.getElement('a.productonly');
		if (pfProductOnly != null) {
			pfProductOnly.addEvent('click', function(){
				search.viewMode = 'productonly';
				search.viewSide = 'locked';
				search.callService();
				var viewCookie = Cookie.write('PRODUCT_VISUALIZATION', 'productonly',{path:'/'});
				var tag = new Tag();
				// tag.set({'prop17': 'view:ProductOnly'});
				tag.set({'pageName': 'shop product finder view', 'linkTrackVars': 'eVar1,prop8', 'evar1': 'view:ProductOnly', 'prop8': 'view:ProductOnly','name':'eshop product finder view'});
				tag.sendClick();
				return false;
			});
		}
	}
	$('display-mode').getElement('a').addEvent('click', function(){
		var tag = new Tag();
        tag.sendClick();
        tag.set({'pageName': 'shop product finder display','prop17': 'display:TopBottom'});
	});
	
	// add event to 16 mode grid button
	$('display16').addEvent('click',function(){
		$$('#productfinder-top a.small img').set('src', '/ecom/common/images/shop/utils/picto-display16-on.gif');
        $$('#productfinder-top a.large img').set('src', '/ecom/common/images/shop/utils/picto-display64.gif');
        search.currentPage = (search.currentPage)*3 - 2;
        
        search.callService();
        $('productfinder-products').setStyle('height', '720px');
		
		// hide all the preview boxes from number 17 (index 16)
		// when the page is loaded all the 48 preview boxes will be created
		$$('#productfinder-products .product-finder-item').each(function(item,index){
			if(index > 15){
				item.setStyle('display','none');
			}	
		});
    });

	// add event to 48 mode grid button
	$('display48').addEvent('click',function(){
		$$('#productfinder-top a.small img').set('src', '/ecom/common/images/shop/utils/picto-display16.gif');
        $$('#productfinder-top a.large img').set('src', '/ecom/common/images/shop/utils/picto-display64-on.gif');
        var addition = 0;
        if (search.currentPage%3 == 0) {
        	addition =  - 1;
        }
        search.currentPage = (search.currentPage + (3-(search.currentPage%3)))/3 + addition;
        
        search.callService();
        // var totalRows =
		// (($$('.productPreviewBox[style*=none]').length)-($$('.productPreviewBox[style*=none]').length)%4)/4
		// ;
        // var heightProductFinder = 2160;// - (180 * totalRows);

        // $('productfinder-products').setStyle('height', heightProductFinder +
		// 'px');
		
		// unhide all the preview boxes
		$$('#productfinder-products .product-finder-item').each(function(item,index){
			item.setStyle('display','block');	
		});
    });
	
	// Create breadcrumb
	if ($$('ul#eshop-topnav-list li a.active')[0] != undefined) {
		var menuText = $$('ul#eshop-topnav-list li a.active')[0].get('html').trim().toUpperCase();
		var menuItem = $('eshop-topnav-menus').getElements('a[setselected=true]')[0];
		var parentClass = menuItem.getParent('li').get('class');
		var menuItemText = menuItem.get('html').trim().toUpperCase();
		menuItemText = '<span class="title-text">' + menuItemText + '</span>';
		if(parentClass.contains('lev2')){
			 var itemText = menuItem.getParent('li').getParent('li').getPrevious('li').getFirst('a').get('html').trim().toUpperCase();
			 menuItemText = '<span class="title-text">' +  itemText + ' </span> ' + '<span class="slash"> / </span>' + menuItemText;
		}
		
		var breadCrumb = '<span class="title-text">' + menuText + '</span> ' + '<span class="slash"> / </span>' + menuItemText + '<span>&nbsp;</span>';
		$$('#productfinder-top span.eshop-title')[0].set('html',breadCrumb);
	}
	$$('a.filters').fireEvent('click');
	
	resetGrid();
});



Array.implement({
	shuffle: function() {
		for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
		return this;
	}
});

function addPageNumber(selectedSetted, pageNumber, currentPage) {
	if (pageNumber == currentPage) {
		if (!selectedSetted) {
			return '<span class="pages-number">'+ pageNumber +'</span>';
		}
    } else {
        return '<a href="#" class="pages-number">'+ pageNumber +'</a>';
    }
	return '';
}

function isPageNumberSelected(pageNumber, currentPage) {
    return currentPage == pageNumber;
}

function setFilterCriteria(){
	if ($('filter-criteria-div') != null) {
	    if($j('a.criteria-item').length > 0){
	        $('filter-criteria-div').setStyle('display', 'block');
	    } else {
	        $('filter-criteria-div').setStyle('display', 'none');
	    }
	}
}

function getBreadcrumb() {
	var breadCrumb;
	if ($$('ul#eshop-topnav-list li span.active')[0] != undefined) {
		var menuText = $$('ul#eshop-topnav-list li span.active')[0].get('html').trim().toUpperCase();
		var menuItem = $('eshop-topnav-menus').getElements('a[setselected=true]')[0];
		var parentClass = menuItem.getParent('li').get('class');
		var menuItemText = menuItem.get('html').trim().toUpperCase();
		menuItemText = '<span class="title-text">' + menuItemText + '</span>';
		if(parentClass.contains('lev2')){
			 var itemText = menuItem.getParent('li').getParent('li').getPrevious('li').getFirst('a').get('html').trim().toUpperCase();
			 menuItemText = '<span class="title-text">' +  itemText + ' </span> ' + '<span class="slash"> / </span>' + menuItemText;
		}
		breadCrumb = menuItem.title;
	}
	
	return breadCrumb;
}

function resetGrid(){
	var imgSrc = $$('#productfinder-top a.small img').get('src');
	var img = '';
	if (imgSrc != null && imgSrc.indexOf('/') != -1) {
		img = imgSrc.substr(imgSrc.lastIndexOf('/') + 1);
	}
	
	
	if(img == 'picto-display16-on.gif'){
		// hide all the preview boxes from number 17 (index 16)
		// when the page is loaded all the 48 preview boxes will be created
		$$('#productfinder-products .product-finder-item').each(function(item,index){
			if(index > 15){
				item.setStyle('display','none');
			}	
		});
	}else{
		// unhide all the preview boxes
		$$('#productfinder-products .product-finder-item').each(function(item,index){
			item.setStyle('display','block');	
		});
	}
	
}
