var FwpMagnifier = new Class({
	Implements: Options,

	options: {
		elements: 'img'
	},

	initialize: function(options) {
		this.setOptions(options);

		$$(options.elements).each(function(el, index) {
			el.addEvents({
				'mouseover': function(e) {
					this.createImgMagnifier(el.getCoordinates(), el.get('src'));
				}.bind(this),

				'mouseout': function(e) {
					this.removeImgMagnifier();
				}.bind(this),

				'mousemove': function(e) {
					this.moveImgMagnifier(el.getCoordinates(), e);
				}.bind(this)
			});
		}.bind(this));
	},

	createImgMagnifier: function(coordinates, src) {
		coordinates.left += coordinates.width + 10;

		var el = new Element('div', {
			'id': 'mt-image-magnifier'
		}).addClass('img-magnifier').setStyles(coordinates).setStyle('background-image', 'url(' + src + ')');

		el.inject($('body'));
	},

	removeImgMagnifier: function() {
		if ($defined($('mt-image-magnifier'))) {
			$('mt-image-magnifier').destroy();
		}
	},

	moveImgMagnifier: function(coordinates, event) {
		if (!$defined($('mt-image-magnifier'))) {
			return;
		}

		var x = event.page.x - coordinates.left;
		var y = event.page.y - coordinates.top;

		var bgX = ((x / coordinates.width) * 100);
		var bgY = ((y / coordinates.height) * 100);

		var bgPos = bgX.toInt() + '% ' + bgY.toInt() + '%';

		$('mt-image-magnifier').setStyle('background-position', bgPos);
	}
});
var FwpRating = new Class({
	Implements: Options,

	options: {
		container: null,
		amount: 5
	},

	initialize: function(options) {
		this.setOptions(options);

		if (!$defined($(this.options.container))) {
			return false;
		}

		//var container = $(this.options.container).getElements('a');
		var container = $('rating-elements').getElements('a');

		var myFx = new Fx.Morph($('prod-rate'), {
		    onComplete: function(){
		        //alert('complete');
		    }
		});

		if (navigator.appVersion.indexOf('MSIE 6.0') == '-1') {
			$('boxWithoutJs').setStyle('display','none');               /* Js weiche für user ohne JS. */
			$('prod-rating-background').removeClass('none');
			$('rating-elements').removeClass('none'); 	/*			*/
		}
		$('prod-rate').setStyle('width', (productRate*23));


		container.each(function(el, index) {
			el.addEvent('mouseover', function(e) {
				myFx.pause();
				myFx.start({
				    'width': [$('prod-rate').getStyle('width').toInt(), (23 * (index + 1))]
				});
			});

			el.addEvent('mouseout', function(e) {
				myFx.pause();
				myFx.start({
					'width': [$('prod-rate').getStyle('width').toInt(), (productRate*23)]
				});
			});

			el.addEvent('click', function(e) {
				e.stop();
				//$('Product_vote').send();
				//alert('erfolgreich abgestimmt');
				$('Product_vote').getElements('select').set('value', (index + 1));
				document.vote.submit();
			});
		});
	}
});
var initRegisterMenu = function() {
	$$('.register').setStyle('display', 'none').fade(0); // hide all register boxes
	$$('.register')[0].setStyle('display', 'block').fade(1); // show first element

	var displayedRegister = 0;

	$$('.switchButton').each(function(el, index) {
		el.addEvent('click', function(e) {
			if (displayedRegister == index) {
				return;
			}

			this.morph('.activeSwitchButton');

			$$('.switchButton')[displayedRegister].morph('.switchButton');

			$$('.register')[index].setStyle('display', 'block').fade(1);
			$$('.register')[displayedRegister].setStyle('display', 'none').fade(0);
			displayedRegister = index;
		});
	});
}

var initSubMenu = function() {
	var mySliders    = [];
	var subMenus     = [];
	var defaultClass = 'notActiveSubMenu';
	var morphClass   = '.activeSubMenu';

	$$('#serviceBox ul li a').each(function(el, index) {
		if (el.getNext() != null) {
			// create a slider for each element, so we can slide down the sub menus
			mySliders[index] = new Fx.Slide(el.getNext());

			// hide every element
			mySliders[index].hide();

			// add a default class
			el.getParents()[0].addClass(defaultClass);
		}

		// on click, we have to show/hide the sub menu for this headline
		el.addEvent('click', function(e) {
			if (this.getNext() != null) {
				e.stop();

				if (this.getParents()[0].hasClass(defaultClass)) {
					this.getParents()[0].morph(morphClass).removeClass(defaultClass).addClass(morphClass);
				} else {
					this.getParents()[0].morph('.' + defaultClass).removeClass(morphClass).addClass(defaultClass);
				}

				mySliders[index].toggle();
			}
		});
	});
}

var mySliders    = [];
var displayedSlider = 0;
var initCartCompareSubMenu = function() {

	var mySliderInput 	= [];
	var newCartItem 	= document.URL.indexOf('#prod');
	displayedSlider     = $$('#cartCompareBox ul li.subLink a').length-1;
	$$('#cartCompareBox ul li.subLink a').each(function(el, index) {

		if (el.getParent().getNext() != null && el.getParent().getNext().get('html').trim() != '') {
			// create a slider for each element, so we can slide down the sub menus
			mySliders[index]		= new Fx.Slide(el.getParent().getNext());
			mySliderInput[index] 	= el.getParent().getNext();
			// hide every element
			mySliders[index].hide();

			if (mySliders[displayedSlider] != null) {
				mySliders[displayedSlider].slideIn();
			}




			// on click, we have to show/hide the sub menu for this headline
			el.addEvent('click', function(e) {
				if (this.getParent().getNext() != null) {
					e.stop();

					mySliders[index].toggle();
					if (mySliders[displayedSlider].open) {
						mySliders[displayedSlider].slideOut();
					}

					displayedSlider = index;
				}
			});
		}


		if (el.getParent().getNext() != null && el.getParent().getNext().get('html').trim() == '') {
			el.getParent().getNext().destroy();
		}

		/** IE HACK **/
		if (navigator.appVersion.indexOf("MSIE 6") != '-1' || navigator.appVersion.indexOf("MSIE 7") != '-1') {
			el.getParent().setStyles({'margin-bottom':'-3'});
		}
	});

	if (newCartItem != '-1') {
		mySliders[mySliders.length-1].slideIn();
	} // open Cartbox if there have a new element.
}

var initRecommend = function() {
	$('Product_recommend').addEvent('submit', function(e) {
		e.stop();
		this.set('action', 'ajax.php?sPage=recommend&ajax=1');
	});
}

var initLogin = function() {
	var loginMsg = $('login-msg');

	$('login_form').addEvent('submit', function(e) {
	     e.stop();
	     this.set('action', 'ajax.php?sPage=login&ajax=1');

	     if (loginMsg.hasClass('loginFailed')) {
			 loginMsg.removeClass('loginFailed').addClass('ajaxLoader');
	     } else {
			 loginMsg.addClass('ajaxLoader');
	     }

	     this.set('send', {
	     	onComplete: function(response) {
	          if (response == 0) {
		 		loginMsg.removeClass('ajaxLoader').addClass('loginFailed');
				$('login-err-msg').set('html', loginFailed);
	          } else {
	          	if (location.href.indexOf('order') != '-1') { // transfer the user if he log on at the order process
	          		location.href = 'index.php?sPage=order&sCurrentStep=delpaycoupon';
	          		return;
	          	}
	          	loginMsg.removeClass('ajaxLoader').addClass('loginSuccessful');
	          	$('login_box').empty();

	          	var newH2 = new Element('h2', {
          			'text': frontClientAccount
          		});

	          	var newUL = new Element('ul', {
          			'class':'CustomerLinks bullet yelloworange'
          		});
	          	var newLI 	= new Element('li');
	          	var newA 	= new Element('a', {
          			'href': accountLink,
          			'text': basicAccount
          		});

          		newA.inject(newLI);
          		newLI.inject(newUL);

	          	var newLI 	= new Element('li');
	          	var newA 	= new Element('a', {
          			'href': accountLogout,
          			'text': basicLogout
          		});

          		newA.inject(newLI);
          		newLI.inject(newUL, 'bottom');

	          	newH2.inject($('login_box'));
	          	newUL.inject($('login_box'), 'bottom');
	          }
	     }});

	     this.send();
	});
}

var setEvent = function (e, typ) {
	if (typ == 'blur') {
		e.addEvent('blur', function(e) {
			checkPw('password_field', 'blur');
		});
	} else {
		e.addEvent('focus', function(e) {
			checkPw('password_field', 'focus');
		});
	}

}
var checkPw = function(id, typ) {
	var obj = $(id);
	if (typ != 'blur') {
		new Element('input', {
				'type' : 'password',
				'value': '',
				'name' : obj.get('name'),
				'tabindex' : '211',
				'id'   : obj.get('id')
			}).addClass(
				obj.get('class')
			).injectBefore(obj).focus();
			obj.destroy();
			setEvent($(obj.get('id')), 'blur'); /* for the stupid Internet explorer */
	} else {
		if (obj.value == '') {
			new Element('input', {
				'type' : 'text',
				'value': passwordValue,
				'name' : obj.get('name'),
				'onFocus' : 'checkPw(\'password_field\', \'focus\');',
				'tabindex' : '211',
				'id'   : obj.get('id')
			}).addClass(
				obj.get('class')
			).injectBefore(
				obj
			);
			obj.destroy();
			setEvent($(obj.get('id')), 'focus'); /* for the stupid Internet explorer */
		}
	}
}


var addProductToSide = function(place, pName) {
	var el = new Element('div', {'class': 'naviCartRow'});
	var name = new Element('span', {'html': pName}).inject(el);
	el.inject(place);
}


var FwpMoveImageToCart = function() {

	$('productAddToCart').addEvent('submit', function(e) {
		e.stop();
		if ($$('.variant_textfield').length > 0) {
				var quantityOfProducts = 0;
				$$('.variant_textfield').each(function(el, index) {
					if(el.value > 0) {
						quantityOfProducts += el.value;
					}
				});
				if (quantityOfProducts == 0) {
					alert(noQuantityOfProducts);
					return false;
				}
		}
		if ($defined($$('.prodImg img')[0])) {
			var imgClone 	= $$('.prodImg img')[0].clone();
			imgClone.addClass('imgMoveToCart').setStyles($$('.prodImg img')[0].getCoordinates());
		} else {
			var imgClone = new Element('div');
			imgClone.addClass('noImgMoveToCart').setStyles(this.getCoordinates());
		}

		imgClone.inject($('body'));

		var oDestinationCoordinates;
		oDestinationCoordinates = $('cartCompareBox').getCoordinates();
		var oCurrentCoordinates;
		oCurrentCoordinates = imgClone.getCoordinates();

		var fx = new Fx.Morph(imgClone, {
			duration: 1000,
			wait: false,
			onComplete: function(){
				imgClone.fade(0);
				imgClone.destroy();
			}
		});
		fx.setOptions({
			transition: Fx.Transitions.linear
		});
		fx.start({
		    'height': 	[imgClone.getStyle('height'), 10], //Morphs the 'height' style from 10px to 100px.
		    'width': 	[imgClone.getStyle('width'), 10],  //Morphs the 'width' style from 900px to 300px.
		    'left':		[oCurrentCoordinates.left, oDestinationCoordinates.left+30],
		    'top':		[oCurrentCoordinates.top, oDestinationCoordinates.top+80]

		});
	this.submit();
	});
}
var initSmallToBigPhotoGallery = function() {
	/**
	* @todo recht unschï¿½n, neu machen bei gelegenheit
	* anleitung
	* <a href="{$aProd.aImg.GALLERY_BIG.sPath}" rel="slimbox"> fï¿½r das groï¿½e Bild auf der Produktdetail seite
	* sowie rel="slimbox" von den Links aus den dem Galerie-Template meist "product_gallery_mini.box.tpl" entfernen.
	*/
	$$('.galerie a').each(function(el, index) {
		el.addEvent('click', function(e) {
			e.stop();
			$$('.prodImg img').set('src',el.get('href'));
			$$('.prodImg a').set('href',el.get('href'));
		});
	});
}
var FwpMoveImageToSidebar = function() {
	var compareButtons = [];

	$$('#middle .buttons').each(function(el, index) {
		// on click, we have to show/hide the sub menu for this headline
		var liButtons = el.getChildren();

		liButtons.each(function(el, index) {
			if (index == 0) {
				return;
			}

			el.addEvent('click', function(e) {
				var idLink 	 = this.getChildren('a')[0].get('id');

				if (idLink === null) {
					return;
				} else {
					return; // todo
				}

				e.stop();

				var itemId 	 = idLink.substring(idLink.indexOf('_') + 1);
				var handleId = idLink.substring(0,idLink.indexOf('_'));

				if ($defined($('img_' +  itemId))) {
					var imgClone = $('img_' +  itemId).clone();
					imgClone.addClass('imgMoveToCart').setStyles($('img_' +  itemId).getCoordinates());
				} else {
					var imgClone = new Element('div');
					imgClone.addClass('noImgMoveToCart').setStyles(this.getCoordinates());
				}

				imgClone.inject($('body'));

				var sideBox = $('cartCompareBox').getChildren('ul')[0];
				var topPic = 0;

				if (handleId == "notice") {

					//We can use one Request object many times.
					var req = new Request({
						url: $(idLink).get('href') + '?bAjax=1',
						data: 'bAjax=1',

						onSuccess: function(resp) {
							if (resp != 0) {
								var oDestinationCoordinates;
								oDestinationCoordinates = $('cartCompareBox').getCoordinates();

								var oCurrentCoordinates;
								oCurrentCoordinates = imgClone.getCoordinates();

								if (!mySliders[0].open) {
									mySliders[0].slideIn();
									mySliders[displayedSlider].slideOut();
									displayedSlider = 0;
								} else {
									mySliders[0].slideIn();
								}
								topPix = 10;

								var fx = new Fx.Morph(imgClone, {
									duration: 1000,
									wait: false,
									onComplete: function(){
										imgClone.fade(0);
										imgClone.destroy();
									}
								});

								fx.setOptions({
									transition: Fx.Transitions.linear
								});

								fx.start({
								    'height': 	[imgClone.getStyle('height'), 10], //Morphs the 'height' style from 10px to 100px.
								    'width': 	[imgClone.getStyle('width'), 10],  //Morphs the 'width' style from 900px to 300px.
								    'left':		[oCurrentCoordinates.left, oDestinationCoordinates.left+topPix.toInt()],
								    'top':		[oCurrentCoordinates.top, oDestinationCoordinates.top+topPix.toInt()]

								});

								addProductToSide(sideBox.getChildren('div')[0].getChildren('li.subSlide')[0], resp);
							} else {
								alert('Bitte melden Sie sich an.');
							}
						}
					}).send();


				} else {
					addProductToSide(sideBox.getChildren('div')[1].getChildren('li.subSlide')[0], itemId);

					if (!mySliders[1].open) {
						mySliders[1].slideIn();
						mySliders[displayedSlider].slideOut();
						displayedSlider = 1;
					} else {
						var sideBox = $('cartCompareBox').getChildren('ul')[0].getChildren('div')[1];
						mySliders[1].slideIn();
						displayedSlider = 1;
					}

					topPix = 50;

					var oDestinationCoordinates;
					oDestinationCoordinates = $('cartCompareBox').getCoordinates();

					var oCurrentCoordinates;
					oCurrentCoordinates = imgClone.getCoordinates();

					var fx = new Fx.Morph(imgClone, {
						duration: 1000,
						wait: false,
						onComplete: function(){
							imgClone.fade(0);
							imgClone.destroy();
						}
					});
					fx.setOptions({
						transition: Fx.Transitions.linear
					});
					fx.start({
					    'height': 	[imgClone.getStyle('height'), 10], //Morphs the 'height' style from 10px to 100px.
					    'width': 	[imgClone.getStyle('width'), 10],  //Morphs the 'width' style from 900px to 300px.
					    'left':		[oCurrentCoordinates.left, oDestinationCoordinates.left+topPix.toInt()],
					    'top':		[oCurrentCoordinates.top, oDestinationCoordinates.top+topPix.toInt()]

					});
				}
			});

		});
	});
};

var initNewDeliveryAddress = function() {
	var newDeliveryBox = new Fx.Slide($('newDeliveryAddress'));

	if ($('newDeliveryAddress').style.display == 'none') {
		$('newDeliveryAddress').style.display = '';
		newDeliveryBox.hide();
	} else {
		newDeliveryBox.show();
	}
	$$('input[name=iDeliveryAddressId]').each(function(el, index) {
		el.addEvent('click', function(e) {
			if(el.value == 'new') {
				if (newDeliveryBox.open === false) {
					newDeliveryBox.slideIn();
				}
			} else {
				if (newDeliveryBox.open === true) {
					newDeliveryBox.slideOut();
				}
			}
		});
	});
};

var initCheckGTC =  function() {
	var Checkbox		= $$('input[name=bConfirmOrder]')[0].getParent().getElement('input[type=checkbox]');
	var submitButton 	= $$('input[name=bConfirmOrder]')[0].getParent().getElement('input[type=submit]');

	if (Checkbox.get('checked') != true) {
		submitButton.setStyle('opacity', '0.5');
	}

	Checkbox.addEvent('click', function(e) {
		if (Checkbox.get('checked') == true) {
			submitButton.fade(1);
		} else {
			submitButton.fade(0.5);
		}
	});

	submitButton.addEvent('click', function(e) {
		if (Checkbox.get('checked') != true) {
			alert(gtcRequired);
			e.stop();
		}

	});
}

var intCatProductPreview = function() {
	$$('.mt-preview-img').each(function(el) {
      el.addEvent('mouseenter', function(e) {
         var el = new Element('img', {
            'src': this.getProperty('src')
         }).setStyles({
            'position': 'absolute',
            'top': (e.page.y + 15),
            'left': (e.page.x + 35),
            'opacity': '0.5'
         }).addClass('mt-preview-image-visible');
         el.injectInside($('body')).fade(1);

         this.addEvent('mousemove', function(e) {
            $$('.mt-preview-image-visible').each(function(el) {
               el.setStyles({
                  'top': (e.page.y + 15),
                  'left': (e.page.x + 35)
               });
            });
         });
      });

      el.addEvent('mouseleave', function(e) {
         this.removeEvent('mousemove', function() {});

         $$('.mt-preview-image-visible').each(function(el) {
            el.destroy();
         });
      });
   });
}
var moveObject = function(oObject, iMoveLeft, iMoveTop) {
	oObject.setStyle('top', oObject.getStyle('top') + iMoveTop);
	oObject.setStyle('left', oObject.getStyle('left') + iMoveLeft);

};

var initHoverCompareRow = function() {
	/*
	$$('td.compare_headings').getElements('td').each(function(el, index) {
		el.addEvent('mouseenter', function(e) {
					this.addClass('mt-compareHover');
		});
		el.addEvent('mouseleave', function(e) {
					this.removeClass('mt-compareHover');
		});
	});

	$$('td.compare.column').each(function(el, index) {
		el.addEvent('mouseenter', function(e) {

		});
	}); */

}
compareCols = [];
var initComparePositionSwitcher = function() {
	compareCols.empty();
	$$('td.compare_column').each(function(el, index) {
		compareCols[index] = (el.get('id') == 'mt_' + index) ? el : el.set('id', 'mt_' + index);
	});

	if (compareCols.length > 0 && !compareCols[compareCols.length-1].hasClass('last-cell')) {
		compareCols[compareCols.length-1].addClass('last-cell');
	}
	initHoverCompareRow();
	$$('.compare_column a.mt-changePosition').each(function(elem, index) {
		elem.addEvent('click', function(e) {
			e.stop();
			var direction	= this.get('href').substring(1, this.get('href').length);
			var inOfCol 	= ($defined(this.getParents('td.compare_column')[0])) ? this.getParents('td.compare_column')[0].get('id').substring(3,this.getParents('td.compare_column')[0].get('id').length) : '' ;

			if (direction != 'left' && direction != 'right') {
				return '';
			}

			if (direction != "" && inOfCol != "") {
				if (direction == 'left')  	{ var newCol= inOfCol-1;
				} else { var newCol= (parseInt(inOfCol)+1); }
				if ($type(compareCols[newCol]) !== false) {
					var tempHtml = compareCols[inOfCol].get('html');
					compareCols[inOfCol].empty();
					compareCols[inOfCol].set('html',compareCols[newCol].get('html'));
					compareCols[newCol].set('html',tempHtml);
					initComparePositionSwitcher();
					initCompareDeleteLinks();
				} else {
					return false;
				}
			}
		});
	});
}

var initChangeCompareBoxes = function (direction, response) {
	var tempHtml;
	var newDirec;

	for (var i=0; i<compareCols.length;i++) {
		newDirec 		= (i - parseInt(direction));
		if (newDirec != '-1' && $defined(compareCols[i+1])) {
			tempHtml = compareCols[i+1].get('html');
			compareCols[newDirec].set('html', tempHtml);
		}
	}
	compareCols[compareCols.length-1].empty();
}


var initHideOverlay = function(elem, speed) {
	if (typeof speed == 'undefined') {
		elem.setStyles({
			'visibility':'hidden',
			'display': 'none'
		});
		$('overLayContentBox').destroy();
	} else if (speed == 'slow') {
		$('overLayContentBox').setStyle('overflow', 'hidden');
		var morphFx = new Fx.Morph($('overLayContentBox'), {
			duration: 1000,
			wait: false,
			onComplete: function(){
				elem.setStyles({
					'visibility':'hidden',
					'display': 'none'
				});
				$('overLayContentBox').destroy();
			}
		});

		morphFx.start({
		'height': 	[$('overLayContentBox').getSize().y, 0],
		'width': 	[$('overLayContentBox').getSize().x,0]
		});
	}
}
var initOverLay = function() {
	if ($defined($('load-screen'))) {
		return $('load-screen').setStyles({
			'visibility':'visible',
			'display': 'block'
		});
	}
	return new Element('div', {
	   'id': 'load-screen'
	  }).setStyles({
	   'width': window.getSize().x,
	   'height': window.getScrollHeight(),
	   'opacity': '0.5'
	  }).addClass('compareOverlay').addEvent('click', function(e) {
		e.stop();
	  	initHideOverlay(this);
	  });
}
var initAjaxLoaderIcon = function(element) {
	new Element('div',{
	'id': 'temp-ajaxloader'
	}).addClass('mt-ajaxLoader').setStyles({
		'width' : '20px',
		'height': '20px',
		'top': (element.getSize().y/2)-20,
		'left': (element.getSize().x/2)-20
	}).injectInside(element);
	//(element.getStyle('left').toInt()+element.getStyle('margin-left').toInt()-element.getSize().x/2)
}
var initOverlayContentBox = function(middle, center) {
	if ($defined($('overLayContentBox'))) {
		return $('overLayContentBox');
	}
	return new Element('div', {
			'id' : 'overLayContentBox'
	}).addClass('compareContent').setStyles({
			'top': Math.max(0, middle - (200 / 2)) + 'px',
			'left': center + 'px'
    });

}


var startCompare = function (href) {
	    var win        = window;
		var middle 	   = win.getScrollTop() + (win.getHeight() / 2);
		var center 	   = (win.getWidth() / 2);
		var overlay    = initOverLay();
		var ContentBox = initOverlayContentBox(middle, center);

        var reqUrl = (href == null) ? 'ajax.php' : 'ajax.php' + href.substring(href.indexOf('?'), href.length);

        if (reqUrl.indexOf('compare') == '-1') {
        	reqUrl += '?sPage=compare';
        }

        if ($defined($('productCompare'))) {
        	$('overLayContentBox').getElements('table#productCompare').setStyle('opacity', '0.2');
        	initAjaxLoaderIcon($('overLayContentBox'));
        }


        var req = new Request({
            method: 'get',
            url: reqUrl,
            data: {
            	'ajax' : '1'
             },
            onRequest: function() {
            	overlay.injectInside(document.body);
       			ContentBox.injectInside(document.body);
        		initAjaxLoaderIcon(ContentBox);
            },
           onComplete: function(response) {
           		ContentBox.set('html', response);
           		if (!$defined($('productCompare'))) { return ''; }
           		var iWidth  = $('productCompare').getElements('td.compare_column').length * 120 + 220;
           		/** 30 per row and 160 for the big picture **/
           		var iHeight	= $('productCompare').getElements('td.last-cell')[0].getElements('td').length * 30 + 160 ;

				ContentBox.setStyle('left',center);
           		$('productCompare').setStyle('display','none');
           		ContentBox.injectInside(document.body);
           		var morphFx = new Fx.Morph('overLayContentBox', {
					duration: 1000,
					wait: false,
					onComplete: function(){
						$('productCompare').setStyle('display','');
					}
				});
				morphFx.start({
			    		'height': 	[300, iHeight],
			    		'width': 	[200, iWidth],
			    		'margin-left': 	[-150, '-'+(iWidth/2)]
				});
				initCompareDeleteLinks();
           		initComparePositionSwitcher();
           }
        }).send();
}

var initCompareOverLayBox = function() {

	$$('.mt-productCompare').each(function(el, index) {
		el.addEvent('click', function(e) {
			e.stop();
			startCompare(this.get('href'));
		});
	});

}

var resetBorder = function() {
	this.setStyle('border-collapse','collapse');
}

var initCompareDeleteLinks = function() {
	$$('.mt-deleteCompare').each(function(el, index) {
		el.addEvent('click', function(e) {
			e.stop();
			var req = new Request({
	            method: 'get',
		       data: { 'ajax' : '1' },
	            url: el.get('href'),
	            onRequest: function() {
					$('overLayContentBox').getElements('table#productCompare').setStyle('opacity', '0.2');
		        	initAjaxLoaderIcon($('overLayContentBox'));
	            },
	           onComplete: function(response) {
	            	$('temp-ajaxloader').destroy();
	           	$('overLayContentBox').getElements('table#productCompare').setStyle('opacity', '1');
	           	if (response == 1) {
		           	var tempBox = new Element('div', {
						'class' : 'mt-tempbox'
						}).setStyles({
							'overflow': 'hidden'
					});
					var compareCol = el.getParents('td.compare_column')[0];
					tempBox.injectInside(compareCol).set('html', compareCol.getFirst().get('html'));
					compareCol.getFirst().destroy();


					var morphFx = new Fx.Morph(tempBox, {
						duration: 1000,
						wait: false,
						onComplete: function() {
							compareCol.destroy();
							// if the is no item on the list, close the overlay
							if ($$('.compare_column').length < 1) {
								initHideOverlay($('load-screen'), 'slow');
							}
							// init the links etc. new
							initComparePositionSwitcher();
							// a hack for the Firefox to set the right border
							if (Browser.detect().name == 'gecko') {
								$$('table#productCompare')[0].setStyle('border-collapse','separate');
								resetBorder.delay(200,$$('table#productCompare')[0]);
							}

						}
					});
					morphFx.start({
						'height': 	[tempBox.getSize().y, 0],
						'width': 	[tempBox.getSize().x,0]
					});

	           	} else {
	           		return '';
	           	}

	           }
	        }).send();

		});
	})
}

var partingPoint = 3;
var setDotsToNumber = function (number, parting) {
	var parting = (typeof parting == 'undefined') ? parseInt(partingPoint) : parseInt(parting) ;
	var numLen  = number.indexOf(',');

	if (numLen > parting) {

		var i	= parseInt(numLen);

		while (i > 0) {
			if (i != numLen) {
				number = number.substring(0, i) + '.' + number.substring(i, number.length);
			}
			i -= parting;
		}

	}
	return number;
}

var initCalcVariantPrice = function() {
	var preis 		= [];
	var currIcon	= '';

	$$('.variant_textfield').each(function(el, index) {


		el.addEvent('keyup', function(event) {
			if ($type(preis[index]) === false) {
				if ($('product_variant_price_' + index).get('text').indexOf('.') == '-1') {
					preis[index] = $('product_variant_price_' + index).get('text').trim().split(' ');
				} else {
					preis[index] = $('product_variant_price_' + index).get('text').replace(/\./g,'').trim().split(' '); /* 'highlighting error */
					partingPoint = $('product_variant_price_' + index).get('text').indexOf(',')-1 - $('product_variant_price_' + index).get('text').lastIndexOf('.');
				}

				// set currency icon if the price is a number!!

				if (currIcon == '' && $type(preis[index][preis[index].length-2].replace(/,/g,'.').toFloat()) == 'number') {
					currIcon = preis[index].getLast();
				}

			}

			var gesamtSumme 	= 0;
			var gesamtAnzahl	= 0;
			for (var i=0; i<$$('.variant_textfield').length;i++) {
				if ($type($$('.variant_textfield')[i].get('value').toInt()) == 'number' && $type(preis[i]) !== false) {
					gesamtSumme  += ($type(preis[i][preis[i].length-2].replace(/,/g,'.').toFloat()) != 'number') ? 0 : $$('.variant_textfield')[i].get('value').toInt() * (preis[i][preis[i].length-2].replace(/,/g,'.'));
					gesamtAnzahl += $$('.variant_textfield')[i].get('value').toInt();
				}
			}

			$('anzahl_gesamt').set('value', gesamtAnzahl);
			$('product_variant_price_all').set('text', setDotsToNumber(gesamtSumme.toFixed(2).replace(/\./g,',')) + ' ' + currIcon);
		});
	});
};

var closeLayer = function (e) {
		e.morph('.smallSubscriptionLayer');
			$$('.subscriptionLayer').morph('.smallSubscriptionLayer');
			    ( function(){
			      $$('.subscriptionLayer').destroy();
			    }).delay(500, this);
			return false;
	return false;
}

// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
Slimbox.scanPage = function() {
	$$(document.links).filter(function(el) {
		return el.rel && el.rel.test(/^slimbox/i);
	}).slimbox({/* Put custom options here */}, null, function(el) {
		return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
	});
};
var initValidateVars = function () {
	currentLanguage 	= currentLanguage.replace(/&amp;/g,'&');
	frontClientAccount 	= frontClientAccount.replace(/&amp;/g,'&');
	basicAccount 		= basicAccount.replace(/&amp;/g,'&');
	basicLogout 			= basicLogout.replace(/&amp;/g,'&');
	accountLink 			= accountLink.replace(/&amp;/g,'&');
	accountLogout 		= accountLogout.replace(/&amp;/g,'&');
	loginFailed 			= loginFailed.replace(/&amp;/g,'&');
	if (document.getElementsByName('sSearch').length == 1) {
		searchValue			= document.getElementsByName('sSearch')[0].value;
	} else if (document.getElementsByName('sSearch').length > 0) {
		searchValue			= document.getElementsByName('sSearch')[document.getElementsByName('sSearch').length-1].value;
	}
	if (document.getElementsByName('sMailAddressLogin').length == 1) {
		emailValue 			= document.getElementsByName('sMailAddressLogin')[0].value;
		passwordValue		= document.getElementsByName('sPasswordLogin')[0].value;
	} else if (document.getElementsByName('sMailAddressLogin').length > 0) {
		emailValue 			= document.getElementsByName('sMailAddressLogin')[document.getElementsByName('sMailAddressLogin').length-1].value;
		passwordValue		= document.getElementsByName('sPasswordLogin')[document.getElementsByName('sMailAddressLogin').length-1].value;
	}
}

var resetInputValues = function(param, value) {
	if ($$('input[name='+param+']').length == 1) {
		var el = $$('input[name='+param+']')[0];
	} else {
		var el = $$('input[name='+param+']')[$$('input[name='+param+']').length-1];
	}
	el.addEvent('focus', function(event) {
		if (this.value == value) {
			this.value = '';
		}
	});
	el.addEvent('blur', function(event) {
		if (this.value == '') {
			this.value = value;
		}
	});
}
window.addEvent('domready', function() {
	// Register funktion auf der Produktseite.
	if ($$('.register').length > 0) {
		initRegisterMenu();
	}
	if($defined($$('.galerie'))) {
		initSmallToBigPhotoGallery();
	}

	if ($defined(currentLanguage)) {
		initValidateVars();
	}

	if (document.getElementsByName('sSearch').length > 0) {
		resetInputValues('sSearch', searchValue);
	}
	if ($defined($('serviceBox'))) {
		initSubMenu();
	}

	if ($defined($('cartCompareBox'))) {
		initCartCompareSubMenu();
	}

	if ($defined($('password_field'))) {
		$('password_field').addEvent('focus', function(e) {
			checkPw('password_field', 'focus');
		});
	}
	if ($defined($('login_form'))) {
		initLogin();
		resetInputValues('sMailAddressLogin', emailValue);
	}
	var mag = new FwpMagnifier({
		elements: '.prodImg img'
	});

	var productRating = new FwpRating({
    		container: 'prod-rate'
	});

	if($defined($('newDeliveryAddress'))) {
		initNewDeliveryAddress();
	}

	if ($defined($$('#compare'))) {
		FwpMoveImageToSidebar();
	}

	if ($defined($$('.mt-preview-img'))) {
		intCatProductPreview();
	}

	if ($defined($('cartButton'))) {
		FwpMoveImageToCart();
	}

	if ($$('input[name=bConfirmOrder]').length > 0) {
		initCheckGTC();
	}

	if ($$('.variant_textfield').length > 0) {
		initCalcVariantPrice();
	}

	if ($$('.compare_column').length > 0) {
		initComparePositionSwitcher();
	}
	if ($defined($$('.mt-pagebrowser'))) {
		initCompareOverLayBox();
	}


	// check for slimbox usage
	Slimbox.scanPage();

	if ($defined($('show-ps-layer')) && $defined($('ps-layer'))) {
		$('show-ps-layer').addEvent('mouseover', function(e) {
			var y = this.getCoordinates().top + 20;

			$('ps-layer').setStyles({
				'display': 'block',
				'top': '' + y + 'px',
				'left': '' + this.getCoordinates().left + 'px'
			});
		});

		$('show-ps-layer').addEvent('mouseout', function(e) {
			$('ps-layer').setStyle('display', 'none');
		});
	}
});

