﻿/**
	Filter howto
	
	Vorbedingungen Webseite
	Es muss ein Container geben, der alle Filter-Elemente beinhalt.
	z.B. eine Dropdown Box oder eine Link-Liste
	
	Beim erzeugen des Filter Objektes wird dem Filter sein Namen und
	der Klassenname .....

*/

categoryGlobal = {
	clickQueue: []
};

usedFilters = {
		filters: []
};

cookieValues = '';

//parseUri 1.2.2
//(c) Steven Levithan <stevenlevithan.com>
// http://blog.stevenlevithan.com/archives/parseuri
//MIT License

function parseUri (str) {
 var o   = parseUri.options,
     m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
     uri = {},
     i   = 14;

 while (i--) uri[o.key[i]] = m[i] || "";

 uri[o.q.name] = {};
 uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
     if ($1) uri[o.q.name][$1] = $2;
 });

 return uri;
};

parseUri.options = {
 strictMode: false,
 key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
 q:   {
     name:   "queryKey",
     parser: /(?:^|&)([^&=]*)=?([^&]*)/g
 },
 parser: {
     strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
     loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
 }
};
// END


function Filter(filterName, productClassName)
{	
	var filterName = filterName;
	var produkte	= $A($$(productClassName));
	this.filterValues = [];
	var active_class = 'filter_active';
	var knownFilters = ['filter_sizes','filter_colors', 'filter_patterns','filter_fittings', 'filter_armlength', 'filter_leglength', 'filter_schmuckkategorie'];
	var fadeEnabled = false;
	var visibleFilterData = [];
	listenToCookie     = true;
	listenToUrl        = true;
	
	this.start = function(clickListenObject)
	{

		if(listenToCookie)
		{
			// lese Daten aus Cookie aus
			cookieFilters = getCookie(filterName);
		}
		
		if(listenToUrl)
		{
			url = parseUri(document.URL);
		}
		
		if(listenToCookie)
		{
			if( cookieFilters && cookieFilters != '' && typeof(url.queryKey[filterName]) == 'undefined')
			{
				cookieFilters.split(',').each(
						function(filterV){
							$$('a[filterValue="'+filterV+'"]').each(
									function(k)
									{
										filterAction(k,clickListenObject, filterName);
									}
							);
						});
			}
			else
			{
				deleteCookie(filterName);
			}
		}
		else
		{
			cookieFilters = '';
			deleteCookie(filterName);
		}// Cookie handling

		if(listenToUrl)
		{
			if(typeof(url.queryKey[filterName]) != 'undefined')
			{
				url.queryKey[filterName].split(',').each(
					function(filterV){ 
						filterV = unescape(filterV);
						$$('a[filterValue="'+filterV+'"]').each(
								function(k)
								{
									filterAction(k,clickListenObject, filterName);
								}
						);
					}
				);
			} // URL Parsing
		}
		
		categoryGlobal.cnt = 0;

		if ($(clickListenObject))
		{
		$(clickListenObject).select('a').each(function(e) 
		{
			// OnClick-Listener für den entsprechend Link aufbauen.
			e.onclick = function()
			{
			    filterAction(this,clickListenObject, filterName);				 
			};	// END onClick listener
		});
		}
	}; // END start()
	
	
	   var filterAction = function(clickedElement, clickListenObject, filterName)
	   {
	        categoryGlobal.clickQueue.push(clickedElement);

	        // Wenn dieses Event das erste (entweder das einzige oder jetzt an der Reihe) ist
	        if( categoryGlobal.clickQueue.size() == 1 || categoryGlobal.clickQueue.first() == clickedElement )
	        {
	            // Event aus der Queue entfernen
	            e = categoryGlobal.clickQueue.first();

	        /* Klick Indikator */
	            // Toogle active status vom angeklicktem Feld
	            if(e.hasClassName(active_class)) 
	            {
	                e.removeClassName(active_class);
	            } else 
	            {
	                e.addClassName(active_class);
	            }
	        /* END Klick Indikator */   
	        
	        /* Filter Werte bestimmen */
	            filterValues = []; // sicherstellen das wir keine alten Daten haben.

	            cookieValues = '';

            	// alle nicht ausgewaehlten Buttons aus dem Array entfernen
            	$(clickListenObject).select('a').each(function(l)
    	            {
            			if (!l.hasClassName(active_class))
            			{

                        	filters_temp = usedFilters.filters.join(',');
                        	filters_temp = filters_temp.replace(new RegExp(filterName + '#' + l.getAttribute('filterValue'), 'gi'), '');
                        	if (filters_temp != '')
                        	{
                        		filters_temp = filters_temp.replace(new RegExp('(^,|,$)', 'gi'), '');
                        		filters_temp = filters_temp.replace(new RegExp('(,,)', 'gi'), ',');
                        		usedFilters.filters = filters_temp.split(',');
                        	}
                        	else
                        	{
                        		usedFilters.filters = [];
                        	}
            			}
    	            });

	            // alle ausgewaehlten Buttons aus dem Dropdown lesen und in ein Array puschen
	            $(clickListenObject).select('a.'+active_class).each(function(l)
	            {
					if (!in_array(l.getAttribute('filterValue'), filterValues))
					{
						filterValues.push(l.getAttribute('filterValue'));
					}
					if (listenToCookie && cookieValues.indexOf(l.getAttribute('filterValue')) == -1)
					{
						cookieValues = cookieValues + ',' + l.getAttribute('filterValue');
					}
					if (!in_array(filterName + '#' + l.getAttribute('filterValue'), usedFilters.filters))
					{
						usedFilters.filters.push(filterName + '#' + l.getAttribute('filterValue'));
					}
	            }); // end auswahl der ausgewaehlten filter kriterien 
                if (listenToCookie)
                {
                    cookieValues = cookieValues.replace(new RegExp('(^,|,$)', 'gi'), '');
                    setCookie(filterName,cookieValues);
                }
	        /* END Filter Werte bestimmen */
                //for (var i=0; i<=filterValues.length; i++){
	            produkte.each(function(p)
	            {
	                // Fall eins - alle Filter leer - also muss unser Flag von allen Produkten verschwinden
	                if (filterValues.length == 0)
	                {
	                    removeFilter(p); // Flag entfernen
	                    if( !hasFilters(p) && p.style.display == 'none') // war das letzte Flag - also sichbar machen
	                    {
	                        showProduct(p);
	                    }
	                }
	                else // wir haben einen Filter der selektiert wurde
	                {
	                     // enthaelt das aktuelle Produkt eins unserer Filterkirterien?
	                    if( filterHit(filterValues, p.getAttribute(filterName).split(',')) )
	                    { // wenn ja
	                        removeFilter(p);    // unser FilterFlag entfernen                           
	                        if( !hasFilters(p) ) // sind keine weiteren Flags auf dem Artikel?
	                        {
	                            if(p.style.display == 'none') // wird es evtl. garnicht angezeigt?
	                            {
	                                showProduct(p); // dann aber schnell anzeigen. Spricht ja nu nix mehr dagegen.
	                            }
	                            else // Artikel ist bereits sichbar - also fertig.
	                            {
	                            	showProduct(p);
	                            }
	                        }
	                        else
	                        {
	                            // es liegen noch Filter auf dem Produkt - also Finger weg!
	                        }
	                    }
	                    else // Produkt entspricht nicht unserem Filterkriterium - also Markieren
	                    {
	                        setFilter(p); // FilterFlag setzen
	                        if(p.style.display != 'none')  // wird es z.Z.angezeigt? Wenn ja ausblenden.
	                        { 
	                            hideProduct(p); // jetzt ausblenden
	                        }
	                        else // is eh nicht da - also nix machen
	                        {
	                            //alert('Ist bereits ausgeblendet: '+p.id);
	                        } // END else
	                    } // END else
	                } // END else
	                
	                
	                // Filter spezifische Sonderaktionen
	                switch(filterName)
	                {
	                    // FarbNoespies togglen
	                    case 'filter_colors':
	                        toggleColorNoepsies(p, filterValues);
	                        updateProductImage(p);
	                        
	                        break;
	                }   
	            }); // END product loop
                //}
	        	setTimeout('updateAllBoxes()',2000);
	            
	            categoryGlobal.clickQueue.shift();
	            
	            // Wenn noch Events in der Queue stehen, abarbeiten.
	            if( categoryGlobal.clickQueue.size() > 0 )
	            {
	                categoryGlobal.clickQueue.first().onclick();
	            }
	            
	            categoryGlobal.cnt++;
	        }    
	    };
	
	/**
	* Ueberprueft ob ein Produkt bereits mit einem Filter belegt wurde.
	*/
	var hasFilters = function(currentProduct)
	{
		retVal = false;
		knownFilters.each(function(filter)
		{
			if(currentProduct.hasClassName(filter))
			{
				retVal = true;
			}
		});
		
		return retVal;
	};
	
	/**
	* setzt einen Filter
	*/
	var setFilter = function(currentProduct)
	{
		currentProduct.addClassName(filterName);
	};
	
	/**
	* Entfernt einen filter
	*/
	var removeFilter = function(currentProduct)
	{
		currentProduct.removeClassName(filterName);
	};
	
	/**
	* Entfernt diesen Filter von allen Produkten
	*/
	this.removeAll = function(currentFilter)
	{
        if (listenToCookie)
        {
        	setCookie(filterName,'');
        }
		$('filter' + currentFilter + 'ListContainerInner').select('a').each(function(pe){
			pe.removeClassName(active_class);
		});
		produkte.each(function(currentProduct){
			currentProduct.removeClassName(filterName);
			if( !hasFilters(currentProduct) && currentProduct.style.display == 'none') // war das letzte Flag - also sichbar machen
			{
				showProduct(currentProduct);
			}
		});
		setTimeout('updateAllBoxes()',2000);
		return false;
	};
	
	/*
		Blendet das Produkt aus
	*/
	var hideProduct = function(p)
	{
		if(fadeEnabled)
		{
			if( Prototype.Browser.IE )
			{
				p.select('img.productMainImage').each(function(pe){
					pe.fade({queue: { scope: p.id }});
				});
				p.fade({queue: { scope: p.id }});
			}
			else
			{
				p.fade({queue: { position: 'end', scope: p.id }});
			}
			
		}
		else
		{
			p.hide();
			
		}
		// Elemente entfernen
	};
	
	/**
	* Blendet das Produkt wieder ein
	*/
	var showProduct = function(p)
	{
		if(fadeEnabled)
		{
			if( Prototype.Browser.IE )
			{
				p.select('img.productMainImage').each(function(pe){
					pe.appear({queue: { scope: p.id }});
				});
				p.appear({queue: { scope: p.id }});
			}
			else
			{
				p.appear({queue: { position: 'end', scope: p.id }});
			}
			
		}
		else
		{
			p.show();
			
		}
		// Elemente hinzufuegen.
	};
	
	/**
	* Ueberprueft ob das gesuchte Filterkriterium auf den aktuellen Artikel passt
	*/
	var filterHit = function(needle, suchMenge)
	{
		retVal = false;
		needle.each(function(filterKriterium){
			suchMenge.each(function(suchElement){
				if(filterKriterium == suchElement) retVal = true; //
			});
		});
		return retVal;
	};

	this.init = function()
	{
		grepFilterValues(filterName);
	};
	
	this.removeAllFilters = function()
	{
		// reset box
		$(this.clickobj).select('a').each(function(e) 
		{
			if(e.hasClassName(active_class)) 
			{
				e.removeClassName(active_class);
			} 
		});
		//
		produkte.each(function(p)
		{
			p.removeClassName(filterName);
			if(!hasFilters(p)) showProduct(p);
		});
		setTimeout('updateAllBoxes()',2000);
		return false;
	};
	
	sortNumber = function(a,b)
	{
		return a - b;
	};
	
	var updateProductImage = function(p)
	{
	
		productImage = $(p.getAttribute('id')+'_image');
		
		productImage.select('a.product_link').each(function(link)
			{
				link.select('img.productMainImage').each(function(img){
					currentImg = img.getAttribute('filter_color');			
					if(filterValues.length == 0)
						img.removeClassName('disabledFarbNoepsi');
					else
						if( in_array(currentImg,filterValues) )
						{
							//alert('Aktuelles Bild entspricht der Filtereinstellung');
						}
						else
						{
							//alert('Aktuelles Bild widerspricht der Filtereinstellung');
							replaceProductContent(p, img, link); 
						}
				});
			});
	};
	
	/**
	 * ersaetzt alle Relevanten Daten des Produktes
	 */
	var replaceProductContent = function(p, image, link)
	{
	
		farbNoepsi = $('aval_colors_'+p.getAttribute('id'));
		
		farbNoepsi.select('a.prod_color_link').each(function(farbNoepsiProductLink)
		{
			// ignoriere ausgeblendete Farbnoepsis
			if(! farbNoepsiProductLink.hasClassName('disabledFarbNoepsi') )
			{
				link.setAttribute('href', farbNoepsiProductLink.getAttribute('href'));
				
				p.select('img.productMainImage').each(function(mainImage) {
					mainImage.setAttribute('filter_color', farbNoepsiProductLink.getAttribute('filter_color'));					
					if( mainImage.hasClassName('productMainImageFront') )
					{
						mainImage.src = farbNoepsiProductLink.getAttribute('frontSrc');
					} else {
						mainImage.src = farbNoepsiProductLink.getAttribute('backSrc');
					}
				});
			}
		});
	};
	
	var toggleColorNoepsies = function(p, filterValues)
	{
		farbNoepsi = $('aval_colors_'+p.getAttribute('id'));		
		farbNoepsi.select('a.prod_color_link').each(function(noepsi)
		{
			colorNoepsi = noepsi.getAttribute('filter_color');
			var hits = 0;
			colorNoepsi.split(',').each(function(cns){			
				if(filterValues.length == 0)
					noepsi.removeClassName('disabledFarbNoepsi');
				else
				{
					if( in_array(cns,filterValues) )
					{
						hits++;
					}
				}
			});
			if( hits > 0 )
			{
				noepsi.removeClassName('disabledFarbNoepsi');
			}
			else
			{
				noepsi.addClassName('disabledFarbNoepsi');
			}
		});
	};
	
	
} // end Object

function in_array(needle, haystack)
{
	var retval = false;
  for(var i=0;i<haystack.length;i++)
  {
    if(haystack[i] == needle)
    	retval= true;
  }
  return retval;
}

grepFilterValues = function(fname, productClassName)
{
	this.visibleFilters = [];
	this.boxName = "";
	this.fname = fname;
	this.init = function(boxName) // Bestimmen am seitenstart
	{
		this.boxName = boxName;
		list = [];
		
		$A($$(productClassName)).each(function(p)
		{
			if(p.style.display != 'none')
			{
				if(p.getAttribute(fname) )
				{
					intList = [];
					list = list.concat( p.getAttribute(fname).split(',') );	
					list = list.uniq();
					//list.each(function(el){ intList.push(parseInt(el))});
					//list = intList.sort(this.sortNumber);
					list.each(function(el){ intList.push(el)});
				}
			}
		});
		this.visibleFilters = list;
	}
	
	this.setBoxContent = function(fname)
	{
		var bName = this.boxName;
		var visibleFilters = this.visibleFilters;
		var isFilterCount = 0;
		var isUsedFilter = false;
		if ($(bName))
		{
		$(bName).select('a').each(function(filterlink)
		{
			pFilter = filterlink.getAttribute('filterValue');
			isFilter = false;
			visibleFilters.each(function(vFilter)
			{
				if(pFilter != '' && pFilter != ' ' && ( pFilter == vFilter || ($(bName).select('a.filter_active').length > 0 && usedFilters.filters[0].indexOf(fname) > -1) ) )
				{
					isFilter = true;
					isFilterCount++;
				}
			});
			if(isFilter) {
				//filterlink.style.color = ''; 
				//filterlink.style.backgroundColor = '';
				filterlink.style.display = 'block';
				//filterlink.removeClassName('filter_disabled');
			} else {
				//filterlink.style.color = '#999'; // !important verursacht bug im ie
				//filterlink.style.backgroundColor = '#525455'; 
				filterlink.style.display = 'none';
				//filterlink.addClassName('filter_disabled');
			}
			if (!isUsedFilter) {isUsedFilter = in_array(fname + '#' + pFilter, usedFilters.filters);}
		});
		}
		if (isFilterCount <= 1 && !isUsedFilter)
		{
			if ($(bName))
			{
			$(bName).parentNode.parentNode.parentNode.style.display = 'none';
			//$(bName).parentNode.parentNode.parentNode.removeClassName('filter_enabled'); noiesupport
			//$(bName).parentNode.parentNode.parentNode.addClassName('filter_disabled');
			}
		}
		else
		{
			if ($(bName))
			{
			$(bName).parentNode.parentNode.parentNode.style.display = 'block';
			//$(bName).parentNode.parentNode.parentNode.removeClassName('filter_disabled');
			//$(bName).parentNode.parentNode.parentNode.addClassName('filter_enabled');
			}
		}
		//$$('div.filter_enabled').each(function (fc)
		//{
			//if ($(fc).hasClassName('filterContainer')) {$(fc).removeClassName('filterContainerLast');}
		//});
		//if ($$('div.filter_enabled')[$$('div.filter_enabled').length-1].hasClassName('filterContainer')) {$$('div.filter_enabled')[$$('div.filter_enabled').length-1].addClassName('filterContainerLast');}
	}
		
	this.sortNumber = function(a,b)
	{
		return a - b;
	}
	
	this.refresh = function()
	{
		this.init(this.boxName);
		this.setBoxContent(this.fname);
	}
}

//var colorFilter = new Filter('filter_colors','.product');
//var sizeFilter = new Filter('filter_sizes', '.product');
//var patternFilter = new Filter('filter_patterns','.product');
//var fittingFilter = new Filter('filter_fittings','.product');


var updateColorbox = new grepFilterValues('filter_colors', '.product');
updateColorbox.init('filterColorListContainerInner');
updateColorbox.setBoxContent('filter_colors');

var updateSizebox = new grepFilterValues('filter_sizes', '.product');
updateSizebox.init('filterSizeListContainerInner');
updateSizebox.setBoxContent('filter_sizes');

var updatePatternbox = new grepFilterValues('filter_patterns', '.product');
updatePatternbox.init('filterPatternListContainerInner');
updatePatternbox.setBoxContent('filter_patterns');

var updateArmlengthbox = new grepFilterValues('filter_armlength', '.product');
updateArmlengthbox.init('filterArmlengthListContainerInner');
updateArmlengthbox.setBoxContent('filter_armlength');

var updateLeglengthbox = new grepFilterValues('filter_leglength', '.product');
updateLeglengthbox.init('filterLeglengthListContainerInner');
updateLeglengthbox.setBoxContent('filter_leglength');

var updateSchmuckkategoriebox = new grepFilterValues('filter_schmuckkategorie', '.product');
updateSchmuckkategoriebox.init('filterSchmuckkategorieListContainerInner');
updateSchmuckkategoriebox.setBoxContent('filter_schmuckkategorie');

var updateFittingbox = new grepFilterValues('filter_fittings', '.product');
updateFittingbox.init('filterFittingListContainerInner');
updateFittingbox.setBoxContent('filter_fittings');

function removeAllFilters()
{
	colorFilter.removeAllFilters();
	sizeFilter.removeAllFilters();
	patternFilter.removeAllFilters();
	fittingFilter.removeAllFilters();
}

function updateAllBoxes()
{
	updateColorbox.refresh();
	updateColorbox.setBoxContent('filter_colors');
	updateSizebox.refresh();
	updateSizebox.setBoxContent('filter_sizes');
	updatePatternbox.refresh();
	updatePatternbox.setBoxContent('filter_patterns');

	updateArmlengthbox.refresh();
	updateArmlengthbox.setBoxContent('filter_armlength');

	updateLeglengthbox.refresh();
	updateLeglengthbox.setBoxContent('filter_leglength');

	updateSchmuckkategoriebox.refresh();
	updateSchmuckkategoriebox.setBoxContent('filter_schmuckkategorie');

	updateFittingbox.refresh();
	updateFittingbox.setBoxContent('filter_fittings');
}



//setTimeout("colorFilter.start('filterColorListContainerInner')",200);
//setTimeout("sizeFilter.start('filterSizeListContainerInner')",400);
//setTimeout("patternFilter.start('filterPatternListContainerInner')",600);
//setTimeout("fittingFilter.start('filterFittingListContainerInner')",800);

//Event.observe(window,'load', function()
//{
    
	var filtersToInit = [
		['colors','Color'],
		['sizes','Size'],
		['patterns','Pattern'],
		['armlength','Armlength'],
		['leglength','Leglength'],
		['schmuckkategorie','Schmuckkategorie'],
		['fittings','Fitting']
	];
	
	filtersToInit.each(function(pe){
	
		if( $('filter' + pe[1] + 'Container') != null )	{
			categoryGlobal[pe[1]] = new Filter('filter_' + pe[0], '.product');
			var myUpdateBox = new grepFilterValues('filter_' + pe[0], '.product');
			myUpdateBox.init('filter' + pe[1] + 'ListContainerInner');
			myUpdateBox.setBoxContent('filter_' + pe[0]);
			categoryGlobal[pe[1]].start('filter' + pe[1] + 'ListContainerInner');
		}
		
	});
	
	$('categorie_products').select('a.prod_color_link').each(function(pe){
		
		Event.observe(pe,'mouseover',function(event){
			$(event.element().getAttribute('triggers')).show();
		});
		
		Event.observe(pe,'mouseout',function(event){
			$(event.element().getAttribute('triggers')).hide();
		});
		
	});
	
	$('categorie_products').select('div.product_link_wrapper').each(function(pw){
			var pe = pw.select('a.product_link');
			pe = pe[0];
			
			if( pe.getAttribute('is_accessory') == 0 && !isiDevice)
			{
			
				Event.observe(pw,'mouseover',function(event){
					
					Effect.Queues.get('productFader'+pe.getAttribute('k')).each(function(pe){
						pe.cancel();
					});
					
					if( pe.select('img.productMainImageBack').size() == 1 )
					{
						new Effect.Fade(pe.select('img.productMainImageFront')[0], {duration:0.2, queue:{ scope: 'productFader'+pe.getAttribute('k') }});
					}

					categoryGlobal.activeAvSize = $('av_size_'+pe.getAttribute('itemid')+'_'+pe.getAttribute('k'))
					categoryGlobal.activeAvSize.style.position = 'absolute';
					categoryGlobal.activeAvSize.show();
					
					Event.observe(document,'mousemove',function(event){
						var newTop = (event.pointerY() + 20);
						var newLeft = (event.pointerX() -123);
						
						var viewPort = document.viewport.getDimensions();
						var offSets = document.viewport.getScrollOffsets();
						
						
						var viewPortMaxY = viewPort.height + offSets[1] - 2 - categoryGlobal.activeAvSize.getHeight();
						var viewPortMaxX = viewPort.width + offSets[0] - 2 - categoryGlobal.activeAvSize.getWidth();
						
						
						if( newTop > viewPortMaxY ) {
							newTop = viewPortMaxY;
						}
						
						if( newLeft > viewPortMaxX ) {
							newLeft = viewPortMaxX;
						}
						
						categoryGlobal.activeAvSize.style.top = newTop + 'px';
						categoryGlobal.activeAvSize.style.left = newLeft +'px';
					});
				});
				Event.observe(pw,'mouseout',function(event){
					
					Effect.Queues.get('productFader'+pe.getAttribute('k')).each(function(pe){
						pe.cancel();
					});
					
					if( pe.select('img.productMainImageBack').size() == 1 )
					{
						new Effect.Appear(pe.select('img.productMainImageFront')[0], {duration:0.2, queue:{ scope: 'productFader'+pe.getAttribute('k') }});
					}
					
					if (categoryGlobal.activeAvSize)
					{
						categoryGlobal.activeAvSize.hide();
					}
					
					Event.stopObserving (document,'mousemove');
				});
			}
			else if(!isiDevice)
			{
				Event.observe(pw,'mouseover',function(event){
					
					categoryGlobal.activeAvSize = $('av_size_'+pe.getAttribute('itemid')+'_'+pe.getAttribute('k'))
					categoryGlobal.activeAvSize.style.position = 'absolute';
					categoryGlobal.activeAvSize.show();

					Event.observe(document,'mousemove',function(event){
						var newTop = (event.pointerY() + 20);
						var newLeft = (event.pointerX() + 2);
						
						var viewPort = document.viewport.getDimensions();
						var offSets = document.viewport.getScrollOffsets();
						
						
						var viewPortMaxY = viewPort.height + offSets[1] - 2 - categoryGlobal.activeAvSize.getHeight();
						var viewPortMaxX = viewPort.width + offSets[0] - 2 - categoryGlobal.activeAvSize.getWidth();
						
						
						if( newTop > viewPortMaxY ) {
							newTop = viewPortMaxY;
						}
						
						if( newLeft > viewPortMaxX ) {
							newLeft = viewPortMaxX;
						}
						
						categoryGlobal.activeAvSize.style.top = newTop + 'px';
						categoryGlobal.activeAvSize.style.left = newLeft +'px';
					});
					
				});
				Event.observe(pw,'mouseout',function(event){
					if (categoryGlobal.activeAvSize)
					{
						categoryGlobal.activeAvSize.hide();
						Event.stopObserving (document,'mousemove');
					}
				});
			}			
		
	});
	
//});
