jQuery.extend(jQuery.browser, {
	Android: navigator.userAgent.toLowerCase().match(/android/i),
	Safari: navigator.userAgent.toLowerCase().match(/Safari/i),
	SafariMobile: navigator.userAgent.toLowerCase().match(/iP(hone|ad)/i),
	SafariMobileBehavior: navigator.userAgent.toLowerCase().match(/5\.([1-9]{1})(\.[1-9]{1})? Safari/i),
	iPhone: navigator.userAgent.toLowerCase().match(/iPhone/i),
	iPad: navigator.userAgent.toLowerCase().match(/iPad/i),
	Chrome: navigator.userAgent.toLowerCase().match(/chrome/i),
	IE: navigator.userAgent.toLowerCase().match(/msie/i),
	IE8: navigator.userAgent.toLowerCase().match(/msie 8\.0/i)
});

(function($) {
	$.noConflict();

	function AM1() {

		var $el;
		var self = this;
		var imageBg;
		var zoomImageWidth, zoomImageHeight, zoomImageOffset;
		var ageRestrictionConfirmed = false;
		var colorProperty = 'attribute80';
		var mmLocked = false;
		var sLocked = false;
		var wccSet = false;
        var mobileHeightDiff;
        var mobileWidth;
        var mobileHeight;

		var skinPath = $('meta[name="skinPath"]').attr('content');

		$(document).ready(function() {

			// avoid safari 5.1 select css @font-face bug
			if (navigator.userAgent.toLowerCase().match(/5\.1 Safari/i)) {
				$('select').addClass('safari51');
			}

			if($.browser.Safari){
				$('head').append('<link rel="stylesheet" type="text/css" href="' + skinPath + 'css/styles_safari.css" />');
			}

			$el = {
				window: $(window),
                body: $('body'),
				page: $('#page'),
				header: $('#header'),
                content: $('#content'),
                quickAccess: $('#quickAccess'),
                topNav: $('#topNav'),
				leftNav: $('#leftNav'),
				footerNav: $('#footerNav'),
                overlay: null,
                layer: null,
				brandOvwLft: $('#brandOverviewLeft')
			}

			$.layer.setOptions({
				fixedClose: false,
				layerTemplate: '<div id="layer">' +
									'<div class="layerContainer">' +
										'<div class="layer">' +
											'<div class="layerContent"></div>' +
											'<a class="layerClose" href="#">###close###</a>' +
										'</div>' +
									'</div>' +
									'<a class="layerClose" href="#">###close###</a>' +
								'</div>'
			});

			$el.body.find('a.openInLayer').live('click' , function(e) {
				e.preventDefault();
				$.layer.open($(this).attr('href'), false, false, false, true);
				return false;
			});
			$el.body.find('li.openInLayer').live('click' , function(e) {
				e.preventDefault();
				if ($(this).find('a').length > 0) {
					$.layer.open($(this).find('a').attr('href'), false, false, false, true);
				}
				return false;
			});
			$el.body.find('form.openInLayer').live('submit' , function(e) {
				if ($(this).closest('div.layerContent').length > 0) {
					e.preventDefault();
					$.layer.open($(this).attr('action'), false, false, false, true, $(this).serialize());
					return false;
				}
			});

			self.initContentCorrection();
			self.initFooterNavHighlight();
            //self.initScrolling();
			self.initMousemove();
			self.initTopSearch();
			self.initFlyouts();
			self.initNavigation();
			self.initSlider();
			self.initGalery();
			self.initDetailZoom();
			self.initProductOptions();
			self.initNews();
			self.initCheckout();
			self.initBrandOverviewLeft();

			self.initMobile();
			/*$el.window.resize(function() {
				self.updateMobile();
			});
			$(window).resize();*/
		});

		/**
		 * if we have scrollbars or not
		 */
		this.initContentCorrection = function() {
			if (!($.browser.SafariMobile || $.browser.SafariMobileBehavior)) {
				self.doContentCorrection();
				$el.window.resize(function() {
					self.doContentCorrection();
				});
			}
		}
		this.doContentCorrection = function() {

			var cntH = $el.content.height();
			if ($el.brandOvwLft.length > 0) {
				if ($el.brandOvwLft.height() > $el.content.height()) {
					cntH = $el.brandOvwLft.height();
				}
			}

			if ($el.window.height() > (cntH + 105)) {
				$el.content.removeClass('correction');
			}
			else {
				$el.content.addClass('correction');
			}

			var iWC = 0;
			if ((cntH + 48 + 58) > $el.window.height()) {
				$('#header').css('margin-left', '-452px');
				$('#footerNav').css('margin-left', '-297px');
				iWC = 17;
			}
			else {
				$('#header').css('margin-left', '-460px');
				$('#footerNav').css('margin-left', '-305px');
			}
			if ($el.window.width() > 960) {
				$('#fixedBottom').css({
					width: ($el.window.width() - iWC) + 'px',
					'min-width': ($el.window.width() - iWC) + 'px',
					background: '#ffffff'
				});
			}
			else {
				$('#fixedBottom').css({
					width: (940 - iWC) + 'px',
					'min-width': (940 - iWC) + 'px',
					background: '#ffffff'
				});
			}
		}

		this.initFooterNavHighlight = function() {
			$('#footerNav li a').each(function() {
				if ($(this).attr('href') == document.location.href) {
					$(this).addClass('active');
					return false;
				}
			});
		}

		/**
		 * scrolling for iphone & ipad
		 */
        this.initMobile = function() {
            if ($.browser.SafariMobile || $.browser.Android) {
                if (!$.browser.iPad) {
	                var viewport = $('meta[name="viewport"]');
		            var newViewport;
					newViewport = $('<meta name="viewport" content="user-scalable=yes, width=device-width, initial-scale=0.323, minimum-scale=0.323, maximum-scale=2" />');
	                viewport.remove();
		            $('head').append(newViewport);
                }
			}
		}

		this.initBrandOverviewLeft = function() {
			if ($el.body.hasClass('brands-index-view')) {
				$el.window.resize(function() {
					self.checkBrandOverviewLeft();
				});
				self.checkBrandOverviewLeft();
			}
		}
		this.checkBrandOverviewLeft = function() {

			var win = $el.window.height();
			var ln = $el.brandOvwLft.height();

			if (ln > win) {
				$('#wrapper').after($('#brandOverviewLeft'));
				$('#brandOverviewLeft').css('margin-left', '-452px');
			}
			else {
				$('#fixed').append($('#brandOverviewLeft'));
				$('#brandOverviewLeft').css('margin-left', '-460px');
			}
		}

		/**
		 * mousemove feature was scrolled
		 */
		this.initMousemove = function() {
			if (!$.browser.SafariMobile && !$.browser.IE8) {
				var mousemove = null;
				$('#footerNav, #quickAccess').mouseenter(function() {
					mmLocked = true;
				});
				$('#footerNav, #quickAccess').mouseleave(function() {
					mmLocked = false;
				});
				$('#search').focus(function() {
					sLocked = true;
				});
				$('#search').blur(function() {
					sLocked = false;
				});
				$el.window.mousemove(function() {
					$el.quickAccess.add($el.footerNav).fadeIn(500);
					if (mousemove != null) {
						clearTimeout(mousemove);
					}
					mousemove = setTimeout(function() {
						if (!mmLocked && !sLocked) {
							$el.quickAccess.add($el.footerNav).fadeOut(500);
						}
					}, 4000);
				});
				mousemove = setTimeout(function() {
					$el.quickAccess.add($el.footerNav).fadeOut(500);
				}, 4000);
			}
		}

		this.initTopSearch = function() {
			$el.topNav.find('li.search form input[type=text]').bind('click focus', function() {
                if($(this).val().toLowerCase() == $(this).attr('placeholder').toLowerCase()) {
                    $(this).addClass('insert').val('');
                }
            });
			$el.topNav.find('li.search form input[type=text]').bind('blur', function() {
                if($(this).val() == '' || $(this).val().toLowerCase() == $(this).attr('placeholder').toLowerCase()) {
                    $(this).removeClass('insert').val($(this).attr('placeholder'));
                }
            });
		}

		this.initFlyouts = function() {
            var maxFlyoutMenuLength = 25;

			if($el.body.hasClass('cms-home')) {
                $el.leftNav.children('li').each(function() {
                    var brandMenu = $(this).find('dl.brands');
                    while(brandMenu.find('li').length > maxFlyoutMenuLength){
                        var secondBrandMenu = brandMenu.clone();

                        brandMenu.find('li').slice(maxFlyoutMenuLength).remove();

                        secondBrandMenu.find('li').slice(0, maxFlyoutMenuLength).remove();
                        secondBrandMenu.find('ul').prepend('<li></li>')

                        brandMenu.after(secondBrandMenu);

                        brandMenu = secondBrandMenu;
                    }
                });
            }
		}

        this.initProductOptions = function() {
            $el.content.find('dl.detail').each(function() {
                var subNav = $(this);

                var scrollObj = subNav.find('dd');
				scrollObj.css('display', 'block');
				scrollObj.closest('div').css('display', 'block');

				var containerH = scrollObj.height();
				var contentH = scrollObj.find('p').height();
				var contentEl = 'p';

				if (contentH > containerH) {
					new NavigationScroll(scrollObj, contentEl);
				}
				else {
					scrollObj.css('padding-left', 0);
					$('a.lnkBrandDetail').css('margin-left', 0);
				}
				scrollObj.css('display', '');
				scrollObj.closest('div').css('display', '');
            });

            $el.content.find('dl.scrollNav').each(function() {
                var subNav = $(this);
                subNav.find('dt a').click(function(e) {
                    e.preventDefault();
					if (!subNav.hasClass('act')) {
						$el.content.find('dl.scrollNav').removeClass('act');
						$el.content.find('dl.scrollNav dt a').removeClass('act');
					}
					else {
						$el.content.find('dl.scrollNav dd div.input-box select').removeClass('validation-failed');
						$el.content.find('dl.scrollNav dd div.input-box div.validation-advice').remove();
					}
                    subNav.toggleClass('act');
                    return false;
                });

                var scrollObj = subNav.find('dd');
                if (!($el.body.hasClass('cms-home') && scrollObj.closest('#leftNav').length > 0)) {
                    scrollObj.css('display', 'block');
                    scrollObj.closest('div').css('display', 'block');

                    var containerH = scrollObj.height();
                    var contentH = scrollObj.find('ul').height();
					var contentEl = 'ul';
					if (contentH == null) {
						contentH = scrollObj.find('p').height();
						contentEl = 'p';
					}

                    if (contentH > containerH) {
                        new NavigationScroll(scrollObj, contentEl);
                    }
                    scrollObj.css('display', '');
                    scrollObj.closest('div').css('display', '');

					if (subNav.find('select').length > 0) {
						var propertySelector = scrollObj;
						var propertySelect = propertySelector.find('select');

						propertySelect.change(function() {
							self.updatePropertySelector(propertySelector);
						});

						self.updatePropertySelector(propertySelector);
						propertySelect.trigger('change');
					}
                }
            });

			$el.content.find('a.lnkBrandDetail').click(function(e) {
				e.preventDefault();
				$.layer.open($(this).attr('href') + '?show=info');
				return false;
			});

			$el.content.find('a.scrollNavLnk').click(function(e) {
				e.preventDefault();
				$.layer.open($(this).attr('href'));
				return false;
			});

			$el.content.find('a.addtobag').each(function() {
				$(this).click(function(e) {
					e.preventDefault();

					if (($('#showAgeRestrictionInfo').val() == 'true') && (ageRestrictionConfirmed == false)) {
						$.layer.open('#ageRestrictionConfirm', function(layerContent) {
							layerContent.find('a.confirmAgeRestriction').click(function() {
								ageRestrictionConfirmed = true;
								$('div#layer a.layerClose').trigger('click');
								$el.content.find('a.addtobag').trigger('click');
							});
							layerContent.find('a.declineAgeRestriction').click(function() {
								$('div#layer a.layerClose').trigger('click');
							});
						});
						return false;
					}

					$('#trueBasketButton').show().trigger('click').hide();
					self.checkRequiredFields();
					return false;
				});
			});
        }

		this.checkRequiredFields = function() {
			if ($('.input-box .validation-advice').length > 0) {
				$('.input-box .validation-advice').each(function() {
					if ($(this).css('display') == 'block' || $(this).css('opacity') > 0) {
						var subNav = $(this).closest('dl.scrollNav');
						if (!subNav.hasClass('act')) {
							subNav.find('dt a').trigger('click');
						}
					}
				});
			}
		}

		this.updatePropertySelector = function(propertySelector) {
			var setProperty = false;
			var propertyUL = propertySelector.find('ul');
			var propertySelect = propertySelector.find('select');

			propertyUL.find('li').unbind('click');
			propertyUL.empty();

			if (propertySelect.attr('disabled') == 'undefined') {
				propertySelector.addClass('disabled');
			}
			else {
				propertySelector.removeClass('disabled');
				propertySelect.find('option').each(function(index) {
					var text = $(this).text();
					var val = $(this).val();
					var sel = '';

					if ($(this).is(':selected')) {
						sel = ' class="selected"';
						setProperty = true;
					}

					if (index > 0) {
						var option = $('<li class="val-' + val + '"><a href="#"' + sel + '>' + text + '</a></li>');
						option.find('a').click(function(e) {
							e.preventDefault();
							$(this).blur();

							propertySelect.val(val);

							propertySelector.find('a').removeClass('selected');
							$(this).addClass('selected');

							$(this).closest('dl').find('dt > span').html($(this).text());
							$(this).closest('dl').find('dt > a').trigger('click');

							if (typeof spConfig !== 'undefined') {
								var element = getPrototypeElement(propertySelect.attr('id'));
								if (typeof element.config !== 'undefined') {
									spConfig.configureElement(element);
									propertySelector.closest('div.productOptions').find('select').trigger('change');
								}
							}

							return false;
						});

						propertyUL.append(option);
					}
					else if ((index == 0) && (propertySelect.find('option').length == 1)) {
						var info = $('<li>' + text + '</li>');
						propertyUL.append(info);
					}
				});
			}

			if (!setProperty) {
				propertyUL.find('li:first a').addClass('selected');
			}

			var selText = propertyUL.find('li > a.selected').text();
			propertyUL.closest('dl').find('dt > span').text(selText);
		};

        this.initNavigation = function() {
            $el.leftNav.find('dl.scrollNav').each(function() {
                var subNav = $(this);
                subNav.find('dt a').click(function(e) {
                    e.preventDefault();
                    subNav.toggleClass('act');
                    return false;
                });

                var scrollObj = subNav.find('dd');
                if(!($el.body.hasClass('cms-home') && scrollObj.closest('#leftNav').length > 0)) {
                    scrollObj.css('display', 'block');
                    scrollObj.closest('div').css('display', 'block');

                    var containerH = scrollObj.height();
                    var contentH = scrollObj.find('ul').height();
					var contentEl = 'ul';

                    if(contentH > containerH) {
                        new NavigationScroll(scrollObj, contentEl);
                    }
                    scrollObj.css('display', '');
                    scrollObj.closest('div').css('display', '');
                }
            });

			if ($el.body.hasClass('catalog-category-view')) {
				$el.window.resize(function() {
					self.checkLeftNav();
				});
				self.checkLeftNav();
			}
        }

		this.checkLeftNav = function() {

			var win = $el.window.height();
			var ln1 = $el.leftNav.height();
			var ln2 = $el.leftNav.find('div.clearfix').height();
			var ln  = ln1 + ln2 + 120;

			if (ln > win) {
				$('#wrapper').after($('#leftNav'));
				$('#leftNav').css('margin-left', '-452px');
			}
			else {
				$('#fixed').append($('#leftNav'));
				$('#leftNav').css('margin-left', '-460px');
			}
		}

		this.initGalery = function() {

			if ($('.detailProductThumbs img').length > 1) {
				$('.detailProductThumbs img').click(function() {
					$('.imagePan').css('background-image', 'url("' + $(this).next().val() + '")');
					$('#fullsize').attr('src', $(this).next().next().val());
					imageBg = $('.imagePan').css('background-image');
				});
			}

			$('div.detailBrandThumbs img').live('click', function() {
				$('div.brandImage div.imagePan').css('background-image', 'url("' + $(this).next().val() + '")');
			});
		}

		this.initDetailZoom = function() {

			if ($('.productImage .imagePan').length > 0) {

				var img = $('#fullsize');

				zoomImageOffset = img.position();
				zoomImageOffset.right = zoomImageOffset.left + img.width();
				zoomImageOffset.bottom = zoomImageOffset.top + img.height();

				if (!zoomImageWidth || !zoomImageHeight) {
					//img.css('width', 'auto').css('height', 'auto');
					zoomImageWidth = img.width();
					zoomImageHeight = img.height();
				}

				imageBg = $('.imagePan').css('background-image');
				$('.imagePan').click(function(e) {
					if (img.css('display') == 'block') {
						self.detailZoomLabel('Zoom In');
						img.css('display', 'none');
						$(this).css('background-image', imageBg);
					}
					else {
						$(this).css('background-image', '');
						self.detailZoomLabel('Zoom Out');
						img.css('display', 'block');
						$('.imagePan').unbind('mousemove').mousemove(function(e) {
							self.detailZoomMousemove(e);
						});
						self.detailZoomMousemove(e);
					}
				});

				self.detailZoomInfo();

				$('.imagePan').mouseleave(function() {
					if (img.css('display') == 'block') {
						self.detailZoomLabel('Zoom In');
						img.css('display', 'none');
						$(this).css('background-image', imageBg);
					}
				});
			}
		}

		this.detailZoomMousemove = function(e) {

			var mX = e.pageX - $('.imagePan').offset().left;
			var mY = e.pageY - $('.imagePan').offset().top;

			if (zoomImageOffset.left <= mX && zoomImageOffset.right >= mX &&
				zoomImageOffset.top <= mY && zoomImageOffset.bottom >= mY) {
				if ($('#fullsize').css('display') == 'block') {
					var percentLeft = 100/610 * (mX - zoomImageOffset.left);
					var zoomImageLeft = ((Math.round(percentLeft * zoomImageWidth / 100)) * -1) + 610/2;
					var percentTop = 100/610 * (mY - zoomImageOffset.top);
					var zoomImageTop = ((Math.round(percentTop * zoomImageHeight / 100) * -1) + 610/2);

					if (zoomImageTop > 0) {
						zoomImageTop = 0;
					}
					else if ((610 + (-zoomImageTop)) > zoomImageHeight) {
						zoomImageTop = (zoomImageHeight - 610) * -1;
					}

					$('#fullsize').css('top', zoomImageTop + 'px').css('left', zoomImageLeft + 'px');
				}
			}

			var mZoomX = e.pageX - $('.imagePan').offset().left - 70;
			var mZoomY = e.pageY - $('.imagePan').offset().top - 18;

			if (mZoomX < 5) {
				mZoomX = mZoomX + 80;
			}
			if (mZoomY < 5) {
				mZoomY = mZoomY + 18;
			}

			$('.imageZoomInfo').css('display', 'block').css('left', mZoomX + 'px').css('top', mZoomY + 'px');
		}

		this.detailZoomInfo = function() {

			$('.imagePan').unbind('mousemove').mousemove(function(e) {
				var mX = e.pageX - $('.imagePan').offset().left - 70;
				var mY = e.pageY - $('.imagePan').offset().top - 18;

				if (mX < 5) {
					mX = mX + 80;
				}
				if (mY < 5) {
					mY = mY + 18;
				}

				$('.imageZoomInfo').css('display', 'block').css('left', mX + 'px').css('top', mY + 'px');
			});
			$('.imagePan').unbind('mouseenter').mouseenter(function() {
				$('.imageZoomInfo').css('display', 'block');
			});
			$('.imagePan').unbind('mouseleave').mouseleave(function() {
				$('.imageZoomInfo').css('display', 'none');
			});
		}
		this.detailZoomLabel = function(label) {
			$('.imageZoomInfo').text(label);
		}

		/**
		 * initialize big slider
		 */
		this.initSlider = function() {
			if ($('div.imageSlide').length > 0) {
                $('div.imageSlide').each(function() {
                    new Slider($(this));
                });
            }
		}

		/**
		 * initialize news page
		 */
		this.initNews = function() {
			if ($('div.newsItem').length > 0) {
                $('div.newsItem').each(function() {
                    $(this).find('a.open').click(function(e) {
						e.preventDefault();
						$(this).css('display', 'none');
						$(this).next().css('display', 'block');
						$(this).next().next().css('display', 'block');
					});
                    $(this).find('a.close').click(function(e) {
						e.preventDefault();
						$(this).prev().css('display', 'block');
						$(this).css('display', 'none');
						$(this).next().css('display', 'none');
					});
                });
            }
		}

        this.initCheckout = function() {
			$el.content.find('a#loginLogin').click(function(e) {
				e.preventDefault();
				$('input#trueLoginButton').show().trigger('click').hide();
				return false;
			});
			$el.content.find('a#loginRegister, a#loginGuest').each(function() {
				$(this).click(function(e) {
					e.preventDefault();
					if ($(this).attr('id') == 'loginGuest') {
						$('input.guestMethod').attr('checked', 'checked');
						$('input.registerMethod').removeAttr('checked');
					}
					else {
						$('input.guestMethod').removeAttr('checked');
						$('input.registerMethod').attr('checked', 'checked');
					}
					$('input#trueForwardButton').show().trigger('click').hide();
					return false;
				});
			});
			$el.content.find('a#billingContinue').click(function(e) {
				e.preventDefault();
				$('input#trueBillingContinueButton').show().trigger('click').hide();
				return false;
			});
			$el.content.find('input#giftShipping').change(function(e) {
				e.preventDefault();
				if ($(this).attr('checked') == 'checked') {
					$('#useForShippingNo').find('input').attr('checked', 'checked');
				}
				else {
					$('#useForShippingYes').find('input').attr('checked', 'checked');
				}
				return false;
			});
			$el.content.find('a#shippingContinue').click(function(e) {
				e.preventDefault();
				$('input#trueShippingContinueButton').show().trigger('click').hide();
				return false;
			});
			$el.content.find('a#shippingMethodContinue').click(function(e) {
				e.preventDefault();
				$('input#trueShippingMethodContinueButton').show().trigger('click').hide();
				return false;
			});
			$el.content.find('a#paymentContinue').click(function(e) {
				e.preventDefault();
				$('input#truePaymentContinueButton').show().trigger('click').hide();
				return false;
			});
        }

        function NavigationScroll(obj, el) {
            var self = this;

            obj.after('<dd class="navScroll"><div class="navScrollHandle"><span></span></div></dd>');

            var navScroll = obj.parent().find('dd.navScroll');
            var navScrollHandle = navScroll.find('div.navScrollHandle');
            var navContent = obj.find(el);

            var navScrollHeight = navScroll.height();
            var navScrollHandlePosTop = navScrollHandle.height()/2;
			var navContentHeight = navContent.height();
            var navContentScrollHeight = navContentHeight - obj.height();
			var navContentPercentMultiplier = 100/navContentScrollHeight;
            var navScrollMultiplier = 100/navScrollHeight;
            var moveScrollHandleInterval = null;
            var baseURL = $('base').length > 0 ? $('base').attr('href') : '';

            function init() {
                navContent.scrollTop(0);

                obj.overscroll({
                    cursor: 'default',
                    direction: 'vertical',
                    showThumbs: false,
                    onStart: function(){
                        clearInterval(moveScrollHandleInterval);
                        moveScrollHandleInterval = window.setInterval(function() {
                            self.moveNavigationScrollHandle();
                        }, 13);
                    }
                });

                navContent.find('a').click(function(e) {
                    e.preventDefault();

                    if(!obj.data('dragging')){
						if($(this).attr('href')) {
                            window.location = baseURL + $(this).attr('href');
                        }
                    }
                    return false;
                });

                navScrollHandle.mousedown(function(e) {
                    e.preventDefault();
                    navScrollHandle.addClass('act');

                    $(document).mousemove(function(e) {
                        var position = e.pageY - navScroll.offset().top - navScrollHandlePosTop;
                        var percentPos = 0;
                        if(position > 0) {
                            if(position < navScrollHeight){
                                percentPos = Math.floor(navScrollMultiplier * position);
                            }
                            else {
                                percentPos = 100;
                            }
                        }
                        navScrollHandle.css('top', percentPos + '%');
                        obj.scrollTop(Math.round(percentPos * navContentScrollHeight / 100));
                    });

                    $(document).mouseup(function(e){
                        e.preventDefault();

                        navScrollHandle.removeClass('act');
                        $(document).unbind('mousemove');
                        $(document).unbind('mouseup');
                        return false;
                    });
                    return false;
                });

                // Recalculate Height (fonts have to be loaded)
                window.setTimeout(function() {
                    obj.css('display', 'block');
                    obj.closest('div').css('display', 'block');
                    navContentHeight = navContent.height();
                    navContentScrollHeight = navContentHeight - obj.height();
                    navContentPercentMultiplier = 100/navContentScrollHeight;

                    if(navContentHeight <= obj.height()){
                        navScroll.remove();
                    }
                    obj.css('display', '');
                    obj.closest('div').css('display', '');
                }, 500);
            }

            this.moveNavigationScrollHandle = function(){
                var positionTop = Math.floor(obj.scrollTop() * navContentPercentMultiplier);
                if(positionTop > 0) {
                    if(positionTop <= 100){
                        navScrollHandle.css('top', positionTop + '%');
                    }
                    else {
                        navScrollHandle.css('top', '100%');
                    }
                }
                else {
                    navScrollHandle.css('top', 0);
                }
            }

            init();
        }

        function Slider(obj) {
            var self = this;

            var tmpIdx = 1;
            var active = 0;
            var lock = false;
            var timer = null;

            var objEl = {
                content : obj.find('div.imageSlideContent'),
                items : obj.find('div.imageSlideContent > div'),
                buttons : obj.find('div.imageSlideNav a'),
                btnLeft : obj.find('div.imageSlideNav a.left'),
                btnRight : obj.find('div.imageSlideNav a.right')
            }

            function init(){

                // 1.) set original slides to left
                objEl.items.each(function() {
                    $(this)
                        .addClass('left')
                        .css('z-index', tmpIdx)
                        .css('left', '-610px');

                    tmpIdx++;
                });

                // 2.) clone left slides for middle part, set first slide in viewport
                objEl.items.each(function(idx) {

                    var tmpClass = 'right';
                    var tmpWindowWidth = 0;

                    if (idx == 0) {
                        active = tmpIdx - 1;
                        tmpClass = 'middle';
                    }
                    else {
                        tmpWindowWidth = '610px';
                    }

                    $(this).clone()
                        .removeClass('left')
                        .addClass(tmpClass)
                        .css('z-index', tmpIdx)
                        .css('left', tmpWindowWidth)
                        .appendTo(objEl.content);

                    tmpIdx++;
                });

                // 3.) clone left slides for right part
                objEl.content.find('.left').each(function() {
                    $(this).clone()
                        .removeClass('left')
                        .addClass('right')
                        .css('z-index', tmpIdx)
                        .css('left', '610px')
                        .appendTo(objEl.content);

                    tmpIdx++;
                });
                objEl.items = obj.find('div.imageSlideContent > div');

                // if left slide button is clicked, start the slide to the left
                objEl.btnLeft.click(function(e) {

					e.preventDefault();

                    if (lock) {
                        return;
                    }
                    lock = true;

                    if (!$.browser.SafariMobile && !$.browser.IE8) {
                        var actTxt =  objEl.items.eq(active).find('p');
                        var actTxtLeft = parseInt(actTxt.css('left'));
                        var newTxt =  objEl.items.eq(active - 1).find('p');
                        var newTxtWidth = parseInt(newTxt.css('width'));
                        var newTxtLeft = parseInt(newTxt.css('left'));

                        /*newTxt.css('left', (0 - newTxtWidth) + 'px');*/
                        newTxt.css({
                            'display': 'none',
                            'left': newTxtLeft + 'px'
                        });
                        /*actTxt.animate(
                            { left: '610px' },
                            500
                        );*/
                        actTxt.fadeOut(250);
						objEl.items.eq(active).animate(
                            { left: '610px' },
                            2000,
                            function() {
                                $(this).removeClass('middle').addClass('right');
                                /*actTxt.css('left', actTxtLeft + 'px');*/
                            }
                        );
                        objEl.items.eq(active - 1).animate(
                            { left: 0 },
                            1500,
                            function() {
                                $(this).removeClass('left').addClass('middle');
                                /*newTxt.animate(
                                    { left: newTxtLeft + 'px' },
                                    500,
                                    function() {
                                        objEl.items.first().before(objEl.items.eq(objEl.items.length - 1)
                                            .removeClass('right')
                                            .addClass('left')
                                            .css('left', '-610px')
                                        );
                                        self.sortIndex();
                                        lock = false;
                                    }
                                );*/
                                newTxt.fadeIn(
                                    500,
                                    function() {
                                        objEl.items.first().before(objEl.items.eq(objEl.items.length - 1)
                                            .removeClass('right')
                                            .addClass('left')
                                            .css('left', '-610px')
                                        );
                                        self.sortIndex();
                                        lock = false;
                                    }
                                );
                            }
                        );
                    }
                    else {
                        objEl.items.eq(active).animate(
                            { left: '610px' },
                            1500,
                            function() {
                                $(this).removeClass('middle').addClass('right');
                            }
                        );
                        objEl.items.eq(active - 1).animate(
                            { left: 0 },
                            1500,
                            function() {
                                $(this).removeClass('left').addClass('middle');

                                objEl.items.first().before(objEl.items.eq(objEl.items.length - 1)
                                    .removeClass('right')
                                    .addClass('left')
                                    .css('left', '-610px')
                                );
                                self.sortIndex();
                                lock = false;
                            }
                        );
                    }
                });

                // if right slide button is clicked, start the slide to the right
                objEl.btnRight.click(function(e) {

					e.preventDefault();

                    if (lock) {
                        return;
                    }

                    lock = true;

                    if (!$.browser.SafariMobile && !$.browser.IE8) {
                        var actTxt = objEl.items.eq(active).find('p');
                        var actTxtWidth = parseInt(actTxt.css('width'));
                        var actTxtLeft = parseInt(actTxt.css('left'));
                        var newImg = objEl.items.eq(active + 1).find('img');
                        var newImgLeft = parseInt(newImg.css('left'));
                        var newTxt = objEl.items.eq(active + 1).find('p');
                        var newTxtLeft = parseInt(newTxt.css('left'));

                        newTxt.css('left', '610px');
                        /*actTxt.animate(
                            { left: (0 - actTxtWidth) + 'px' },
                            250
                        );*/
                        actTxt.fadeOut(250);
                        objEl.items.eq(active).animate(
                            { left: '-610px' },
                            2500,
                            function() {
                                $(this).removeClass('middle').addClass('left');
                            }
                        );
                        objEl.items.eq(active + 1).animate(
                            { left: 0 },
                            1500,
                            function() {
                                $(this).removeClass('right').addClass('middle');
                            }
                        );
                        newImg.animate(
                            { left: (newImgLeft + 500) + 'px' },
                            500,
                            function() {
                                $(this).animate(
                                    { left: newImgLeft + 'px' },
                                    1000,
                                    function() {
                                        /*actTxt.css('left', actTxtLeft + 'px');*/
                                        /*newTxt.animate(
                                            { left: newTxtLeft + 'px' },
                                            350,
                                            function() {
                                                objEl.items.last().after(objEl.items.eq(0)
                                                    .removeClass('left')
                                                    .addClass('right')
                                                    .css('left', '610px')
                                                );
                                                self.sortIndex();
                                                lock = false;
                                            }
                                        );*/
                                        newTxt.css({
                                            'display': 'none',
                                            'left': newTxtLeft + 'px'
                                        });
                                        newTxt.fadeIn(
                                            350,
                                            function() {
                                                objEl.items.last().after(objEl.items.eq(0)
                                                    .removeClass('left')
                                                    .addClass('right')
                                                    .css('left', '610px')
                                                );
                                                self.sortIndex();
                                                lock = false;
                                            }
                                        );
                                    }
                                );
                            }
                        );
                    }
                    else {
                        objEl.items.eq(active).animate(
                            { left: '-610px' },
                            1500,
                            function() {
                                $(this).removeClass('middle').addClass('left');

                                objEl.items.last().after(objEl.items.eq(0)
                                    .removeClass('left')
                                    .addClass('right')
                                    .css('left', '610px')
                                );
                                self.sortIndex();
                                lock = false;
                            }
                        );
                        objEl.items.eq(active + 1).animate(
                            { left: 0 },
                            1500,
                            function() {
                                $(this).removeClass('right').addClass('middle');
                            }
                        );
                    }
                });

                obj.mouseenter(function() {
                    self.stopTimer();
                    objEl.buttons.css('display', 'block');
                });
                obj.mouseleave(function() {
                    self.startTimer();
                    objEl.buttons.css('display', 'none');
                });

                self.startTimer();
            }

            this.sortIndex = function() {
                objEl.items = obj.find('div.imageSlideContent > div');
                objEl.items.each(function(idx) {
                    $(this).css('z-index', (idx + 1));
                });
            }
            this.startTimer = function() {
                timer = setInterval(function() {
                    objEl.btnRight.click();
                }, 4000);
            }
            this.stopTimer = function() {
                if (timer != null) {
                    clearInterval(timer);
                }
            }

            init();
        }
	}

	new AM1();

})(jQuery);

function getPrototypeElement(id) {
	return $(id);
}

if (typeof Product != 'undefined') {
	Product.Config.prototype.configureForValues = function() { return false; };
}

