
	function openFinDesigner(fid)
	{
		window.location = 'http://demo.nass24.de/findesigner/index.php?fid=' + fid;
	}

	function openAngebot(artnr)
	{
		var link = 'angebot.php?artnr='+ artnr;
		var opts = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizeable=no,copyhistory=no,width=700,height=550';
		window.open(link, 'NewWindow', opts);
	}

	function setFinDesignerButton()
	{
		if ( ! $('finbtn') ) return false;

		var value = $('optionen').value;

		value = value.gsub(';', ':');
		value = value.gsub('ä', 'ae');
		value = value.gsub('Ä', 'Ae');
		value = value.gsub('ö', 'oe');
		value = value.gsub('Ö', 'Öe');
		value = value.gsub('ü', 'ue');
		value = value.gsub('Ü', 'Ue');
		value = value.gsub('ß', 'ss');

		var check = $('id' + value).value;

		if ( check == '0' ) {
			$('finbtn').title = 'Für diese Option nicht verfügbar';
			$('finbtn').addClassName('disabled');
			$('finbtn').setStyle({backgroundPosition: 'bottom left'});
			$('finbtn').stopObserving('click');
			$('finbtn').stopObserving('mouseover');
			$('finbtn').stopObserving('mouseout');
		} else {
			$('finbtn').removeClassName('disabled');
			$('finbtn').removeAttribute('title');
			$('finbtn').observe('mouseover', hoverFinButton);
			$('finbtn').observe('mouseout', unhoverFinButton);
			$('finbtn').observe('click', function () {
				openFinDesigner(check);
			});
		}
	}

	function hoverButton(btnid)
	{
		$(btnid).setStyle({backgroundPosition: 'top right'});
	}

	function unhoverButton(btnid)
	{
		$(btnid).setStyle({backgroundPosition: 'top left'});
	}

	function hoverAngebotButton()
	{
		hoverButton('angebotbtn');
	}

	function unhoverAngebotButton()
	{
		unhoverButton('angebotbtn');
	}

	function hoverFinButton()
	{
		hoverButton('finbtn');
	}

	function unhoverFinButton()
	{
		unhoverButton('finbtn');
	}

	function initFAQ()
	{
		$$('#faq ul#fragen a').each(function (e) {
			var id = e.toString().sub(/^.*#/, '');
			$('frage_' + id).observe('click', function (e) {
				var id = e.element().id.sub(/frage_/, '');
				highlightEntry(id);
			});
		});

		var id = window.location.hash.substr(1);

		highlightEntry(id);
	}

	function initPage()
	{
		// Classic Menu
		if ( $('classicmenucontainer') ) $('classicmenucontainer').hide();

		// Login
		if ( $('loginnic') ) {
			$('nic').observe('focus', changeNic);
		}

		if ( $('loginpass') ) {
			if ( $('passwordhidden').value == 'Passwort' ) changeLoginPassInputType('text');
			$('passwordhidden').observe('focus', changePass);
			$('passwordvisible').observe('focus', changePass);
		}

		// Warenkorb
		initMenuCart();

		// Link holen
		var link = document.URL.replace(/^.*link=([^\&#]*).*$/, '$1');

		// link hat nicht getroffen
		if ( link.match(/^https?:\/\//) ) link = 'home';

		switch (link) {
			case 'druckauftrag':
				initDruckauftrag();
				break;
			case 'detail':
				initDetail();
				break;
			case 'faq':
				initFAQ();
				break;
			case 'servicepunkte':
				initServicePunkte();
				break;
			case 'artikel':
			case 'neueprodukte':
				initArtikel();
				break;
			case 'neuanmeldung':
				initNeuanmeldung();
				break;
		}
	}

	function initNeuanmeldung()
	{
		if ( $('branchedetails') ) $('branchedetails').hide();
		if ( $('gewerbescheinset') ) $('gewerbescheinset').hide();

		$('anmeldeform').getInputs('radio', 'branche').each(function (elem) {
			$(elem).observe('click', function (evt) {
				var value = $RF('anmeldeform', 'branche');
				if ( (value==16) || (value==25) ) { // Sonstiges
					$('branchedetails').show();
					highlightEntry('branchedetails');
				} else {
					$('branchedetails').hide();
				}

				if ( ($(evt.element()).hasClassName('grosshandel')) && (!$('gewerbescheinset').visible()) ) {
					$('gewerbescheinset').show();
					highlightEntry('gewerbescheinset');
				} else if ( $(evt.element()).hasClassName('einzelhandel') ) {
					$('gewerbescheinset').hide();
				}
			});
		});
	}

	function initMenuCart()
	{
		if ( $('menucart') ) {
			makeMenuCartDroppable();
			setMenuCartEffect();
		}
	}

	function makeMenuCartDroppable()
	{
		Droppables.add('menucart', {
			hoverclass: 'draggableover',
			onDrop: function (element) {
				$(element.next('.artikel_details')).removeAttribute('style');
				showProtoCart($(element));
			}
		});
	}

	function setMenuCartEffect()
	{
		if ( $('cartmenudetails') ) {
			clearQueue('menucartin');
			clearQueue('menucartout');
			$('menucartitems').observe('mouseover', function (evt) {
				menuCartMouseOverEffect();
			});
			$('menucartitems').observe('mouseout', function (evt) {
				var y = evt.pointerY();
				var pos = $('cartmenudetails').viewportOffset();
				var y1 = pos[1];
				if ( (y < y1) && $('cartmenudetails').visible() ) {
					menuCartMouseOutEffect();
				}
			});
			if ( $('cartmenudetails') ) {
				$('cartmenudetails').observe('mouseout', function (evt) {
					var xp = evt.pointerX();
					var yp = evt.pointerY();
					var off = $('cartmenudetails').viewportOffset();
					var x = off[0];
					var y = off[1];
					var dim = $('cartmenudetails').getDimensions();
					var w = dim.width;
					var h = dim.height;
					var wa = x + w;
					var ha = y + h;
					if ( ((xp<x) || (xp>wa)) || ((yp<y) || (yp>ha)) ) {
						menuCartMouseOutEffect();
					}
				});
			}
		}
	}

	function menuCartMouseOverEffect()
	{
		$('menucartitems').stopObserving('mouseover');
		clearQueue('menucartin');
		$('menucartitems').setStyle({cursor: 'help'});
		$('cartmenudetails').setStyle({cursor: 'help'});
		new Effect.Appear('cartmenudetails', { 
			duration: 0.4,
			queue: { scope: 'menucartin', position: 'end', limit: 1 }
		});
	}

	function menuCartMouseOutEffect()
	{
		unsetMenuCartEffect();
		clearQueue('menucartout');
		new Effect.Fade('cartmenudetails', {
			duration: 0.4,
			delay: 1.1,
			afterFinish: function (effect) {
				setMenuCartEffect();
			},
			queue: { scope: 'menucartout', position: 'end', limit: 1 }
		});
	}

	function clearQueue(queuename)
	{
		var queue = Effect.Queues.get(queuename);
		if ( queue ) {
			queue.each(function(effect) { effect.cancel(); });
		}
	}

	function unsetMenuCartEffect()
	{
		$('menucartitems').setStyle({cursor: 'auto'});
		$('menucartitems').stopObserving();
		if ( $('cartmenudetails') ) $('cartmenudetails').stopObserving();
	}


	function showProtoCart(element)
	{
		var bodyHeight = getBody().getHeight() + 100;
		var artikel = $(element.up('.info')).getAttribute('id');
		$('overlay').setStyle({height: bodyHeight + 'px'});
		$('overlay').setOpacity(0.5);
		$('overlay').show();
		var offset = $('loadbox').viewportOffset();
		var newHeight = 200 - offset[1];
		$('loadbox').setStyle({ marginTop: newHeight + 'px' });
		$('loadbox').setOpacity(0.5);
		$('loadbox').show();
		$('protocartcontainer').show();
		new Ajax.Request('getprotocart.php', {
			method: 'post',
			parameters: { artikel: artikel },
			onFailure: function (transport) {
				$('protocart').update("<div id='protocarterr'>Ein Fehler ist aufgetreten!</div>");
				var offset = $('protocart').viewportOffset();
				var newHeight = 200 - offset[1];
				$('protocart').setStyle({ marginTop: newHeight + 'px' });
				$('loadbox').hide();
				new Effect.Appear('protocart', {duration: 0.5});
				hideProtoCart.delay(2);
			},
			onSuccess: function (transport) {
				$('protocart').update(transport.responseText);

				$('loadbox').hide();
				replaceCancelButton();
				if ( $('protocartform') ) {
					$('protocartform').observe('submit', validateProtoCartQuantity);
				}

				var offset = $('protocart').viewportOffset();
				var newHeight = 200 - offset[1];
				$('protocart').setStyle({ marginTop: newHeight + 'px' });
				Effect.Appear('protocart', {
					duration: 0.5,
					afterFinish: function (effect) {
						Field.activate('mengeinput');
					}
				});
			}
		});
	}

	var hideProtoCart = function () {
		new Effect.Fade('protocart', {
			duration: 0.3,
			afterFinish: function () {
				$('protocartcontainer').hide();
				$('overlay').hide();
			}
		});
	};

	function replaceCancelButton() {
		if ( $('cancelbtn') ) {
			var cancelbutton = Builder.node('input', {
				id: 'cancelbtn',
				type: 'button',
				style: 'width: 90px',
				className: 'buttonstyle',
				value: 'Abbrechen'
			});
			Element.replace('cancelbtn', cancelbutton);

			$('cancelbtn').observe('click', validateProtoCartQuantity);
		}
	}

	function validateProtoCartQuantity(evt)
	{
		var eventElement = evt.element().id;

		if ( eventElement == 'cancelbtn' ) {
			Event.stop(evt);
			hideProtoCart();
			return false;
		}

		var menge = $('mengeinput').value;

		if ( (menge == '') || (menge == '0') ) {
			protoCartQuantityWarning('Bitte Menge angeben!');
			Event.stop(evt);
			return false;
		} else if ( isNaN(menge) ) {
			protoCartQuantityWarning('Ung&uuml;ltige Mengenangabe!');
			Event.stop(evt);
			return false;
		} else if ( $('tocartbtn') ) {
			setSubmit('in den Warenkorb');
			return true;
		} else if ( $('reservebtn') ) {
			setSubmit('Jetzt vormerken');
			return true;
		}

		return false;

	}

	function protoCartQuantityWarning(text)
	{
		$('quantitywarn').update(text).show();
	}

	function initServicePunkte()
	{
		$$('.infobox').each(function (e) {
			$(e).hide();
			var img = $(e).previous().down('img');
			img.setStyle({cursor: 'pointer'});
			$(img).observe('click', function (e) {
				var id =e.element().up('div').next().id;
				showInfoBox(id);
			});
		});
	}

	function initArtikel()
	{
		if ( ! $('menucart') ) return false;

		$$('.artikel_item').each(function (element) {
			convertDetailLinkToSpan(element);
			var img = $(element).down('img');
			// IE Fix
			img.removeAttribute('alt');
			new Draggable(img, { 	
				ghosting: false,
				revert: function () {
					// IE Fix
					if (document.all) {
					 	Event.stopObserving(document.body, "drag", wedge, false);
						Event.stopObserving(document.body, "selectstart", wedge, false); 
					}

					return true;
				},
				scroll: window,
				reverteffect: function (element, top_offset, left_offset) {
					if ( (top_offset < 10) && (left_offset < 10) ) {
						var artnr = getArtikelNummer(element);
						DetailRedirect(artnr);
					}
					//$('menucart').setStyle({position: 'static'});
					$(getBody()).setStyle({cursor: 'auto'});
					setMenuCartEffect();
					setArtikelMouseOverEffect();
					$(element).hide();
					$(element).setStyle({width: '100px', height: '130px'});
				        new Effect.Move(element, { 
						x: -left_offset, 
						y: -top_offset,
						duration: 0.1,
						queue: {scope:'_draggable', position:'end'},
						afterFinish: function (effect) {
							var elem = $(effect.element);
							$(elem.next('.artikel_details')).removeAttribute('style');
							$(elem.up('.info')).observe('click', function (evt) {
								var artnr = getArtikelNummer(evt.element());
								DetailRedirect(artnr);
							});
							elem.show();
						}
					});
				},
				onStart: function (effect, evt) {
					// IE Fix
					if (document.all) {
						Event.observe(document.body, "drag", wedge, false);
						Event.observe(document.body, "selectstart", wedge, false); 
					}
					unsetMenuCartEffect();
					unsetArtikelMouseOverEffect();
					$(getBody()).setStyle({cursor: 'pointer'});
					//$('menucart').setStyle({position: 'fixed', top: '30px', right: '80px', zIndex: 500});
					$(effect.element.up('.info')).stopObserving('click');
					$(effect.element).setStyle({width: '50px', height: '65px', zIndex: 999});
					$(effect.element.next('.artikel_details')).setStyle({display: 'block', visibility: 'hidden'});
				}
			});
		});

		setArtikelMouseOverEffect();
	}

	function setArtikelMouseOverEffect()
	{
		$$('.artikel_details').each(function (elem) {
			var element = $(elem).up('.artikel_item');
			$(element).observe('mouseover', function (evt) {
				var elem = $(evt.element());

				if ( ! elem.hasClassName('artikel_item') ) {
					elem = $(elem.up('.artikel_item'));
				}

				if ( $(elem) && $(elem.down('.artikel_details')) ) {
					$(elem.down('.artikel_details')).setStyle({display: 'block', visibility: 'visible'});
				}
			});
			$(element).observe('mouseout', function (evt) {
				var elem = $(evt.element());

				if ( ! $(elem).hasClassName('artikel_item') ) {
					elem = $(elem.up('.artikel_item'));
				}

				if ( $(elem) && $(elem.down('.artikel_details')) ) {
					$(elem.down('.artikel_details')).setStyle({display: 'block', visibility: 'hidden'});
				}
			});
		});

		$$('.artikel_item img').each(function (elem) {
			$(elem).observe('mouseover', function (evt) {
				var evtelem = $(evt.element());
				var elem = $(evtelem.up('.artikel_item'));
				var cartnotifyline = $(elem).down('.cartnotifyline');
				if ( ! $(elem).hasClassName('cartnotifier') ) $(elem).addClassName('cartnotifier');
				$(cartnotifyline).show();
			});
			$(elem).observe('mouseout', function (evt) {
				var evtelem = $(evt.element());
				var elem = $(evtelem.up('.artikel_item'));
				var cartnotifyline = $(elem).down('.cartnotifyline');
				if ( $(elem).hasClassName('cartnotifier') ) $(elem).removeClassName('cartnotifier');
				$(cartnotifyline).hide();
			});
		});
	}

	function unsetArtikelMouseOverEffect()
	{
		$$('.artikel_item').each(function (elem) {
			if ( $(elem).hasClassName('cartnotifier') ) $(elem).removeClassName('cartnotifier');
			$(elem).stopObserving('mouseover');
		});
		$$('.artikel_item').each(function (elem) {
			$(elem).stopObserving('mouseout');
		});
		$$('.artikel_item img').each(function (elem) {
			$(elem).stopObserving('mouseover');
		});
		$$('.artikel_item img').each(function (elem) {
			$(elem).stopObserving('mouseout');
		});
	}

	function setSubmit(text)
	{
		var submit = Builder.node('input', {
			type: 'hidden',
			name: 'submit',
			value: text
		});

		$('protocartform').insert(submit);
	}

	function DetailRedirect(artnr)
	{
		var href = window.location.toString();
		href = href.replace(/\?.*$/, '');
		href = href + '?link=detail&artikel=' + artnr;
		window.location = href;
	}

	function getArtikelNummer(elem)
	{
		var artnr = '';

		if ( $(elem).hasClassName('info') ) {
			artnr = $(elem).getAttribute('id');
		} else {
			artnr = $(elem.up('.info')).getAttribute('id');
		}

		return artnr;
	}

	function getMousePosition(element, evt)
	{
		var objX = element.offsetLeft + 50;
		var objY = element.offsetTop + 20;
		var clickX = evt.pointerX();
		var clickY = evt.pointerY();
		var inElementPosX = clickX - objX;
		var inElementPosY = clickY - objY;

		//getElementAbsolutePosition(element);
	}

	function getElementAbsolutePosition(element)
	{
		var body = getBody();
		var parElem = $(element).getOffsetParent();

		while ( parElem != body ) {
			parElem = $(parElem).getOffsetParent();
		}
	}

	function convertDetailLinkToSpan(element)
	{
		var link = $(element.down('a.info'));
		var href = $(link).getAttribute('href');
		var artnr = href.replace(/^.*artikel=([^\&#]*).*$/, '$1');
		var children = $(link).childElements();
		var span = Builder.node('span', { id: artnr, className: 'info' }, children);
		$(link).replace($(span));
		$(span).setStyle({cursor: 'pointer'});
		$(span).observe('click', function (evt) {
			var artnr = getArtikelNummer(evt.element());
			DetailRedirect(artnr);
		});
		$(link).setStyle({cursor: 'pointer'});
	}

	function showInfoBox(id)
	{
		var visible = $(id).visible();

		if ( visible ) {
			Effect.BlindUp(id, { duration: 0.5, queue: {position: 'end', scope: 'infobox_' + id, limit: 2}});
		} else {
			$$('.infobox').each(function (e) {
				if ( $(e).visible() ) Effect.BlindUp($(e), { duration: 0.5, queue: {position: 'end', scope: 'infobox_' + $(e).id, limit: 2}});
			});

			Effect.BlindDown(id, { duration: 0.5, queue: {position: 'end', scope: 'infobox_' + id, limit: 2 }});
		}
	}

	function initDetail()
	{
		if ( ! $('angebotbtn') ) return false;

		$('angebotbtn').removeClassName('disabled');
		$('angebotbtn').removeAttribute('title');
		$('angebotbtn').observe('click', function () {
			if ( ! $('artnr') ) return false;
			openAngebot($('artnr').value);
		});
	}

	function initDruckauftrag()
	{
		new Ajax.Autocompleter("bestellid", "autobestellid", "druckbestellid.php", {	select: '.valclass', 
												afterUpdateElement: function (auto, selected) {
			document.forms[1].submit();
		}});
	} 

	function leaveNic(evt)
	{
		$('nic').setStyle({color: '#888'});
	}

	function leavePass(evt)
	{
		$('passwordhidden').setStyle({color: '#888'});
		$('passwordvisible').setStyle({color: '#888'});
		if ( $('passwordhidden').value == 'Passwort' ) changeLoginPassInputType('text');
	}

	function changeNic(evt)
	{
		$('nic').setStyle({color: '#666'});
		if ( $('nic').value == 'Benutzername' ) $('nic').setAttribute('value', '');
	}

	function changePass(evt)
	{
		if ( $('passwordhidden').value == 'Passwort' ) {
			$('passwordhidden').setAttribute('value', '');
		}
		changeLoginPassInputType('password');
		Field.activate('passwordhidden');
		$('passwordhidden').setStyle({color: '#666'});
		$('passwordvisible').setStyle({color: '#666'});
	}

	function changeLoginPassInputType(newType)
	{
		/*
		if ( $('password') && ( $('password').getAttribute('type') != newType) ) {
			$('password').stopObserving('focus');
			$('password').stopObserving('blur');
			var val = $('password').getAttribute('value');
			var newInput = Builder.node('input');//, { type: newType, size: 20});//, name: 'pass', value: val, id: 'password', className: 'inputstyle' });
			$(newInput).id = 'password';
			$(newInput).name = 'pass';
			$(newInput).value = val;
			$(newInput).addClassName('inputstyle');

			Element.replace($('password'), $(newInput));
			if ( newType == 'text' ) {
				$('password').observe('focus', changePass);
			} else {
				Field.activate('password');
				$('password').observe('blur', leavePass);
			}
		}
		*/

		if ( newType == 'password' ) {
			$('passwordvisible').hide();
			$('passwordhidden').show();
			$('passwordhidden').observe('focus', changePass);
			$('passwordhidden').observe('blur', leavePass);
			$('passwordvisible').stopObserving();
		} else {
			$('passwordhidden').hide();
			$('passwordvisible').show();
			$('passwordvisible').observe('focus', changePass);
			$('passwordvisible').observe('blur', leavePass);
			$('passwordhidden').stopObserving();
		}
	}

	function highlightEntry(id)
	{
		if ( $(id) ) new Effect.Highlight($(id), { startcolor: '#ffff99', endcolor: '#ffffee', restorecolor: '#ffffff', duration: 1.5 });
	}

	function getBody()
	{
		var body = $$('body').first();

		return body;
	}

	function wedge(event){ return false };

	function $RF(el, radioGroup) 
	{
	    if($(el).type && $(el).type.toLowerCase() == 'radio') {
	        var radioGroup = $(el).name;
	        var el = $(el).form;
	    } else if ($(el).tagName.toLowerCase() != 'form') {
	        return false;
	    }
	 
	    var checked = $(el).getInputs('radio', radioGroup).find(
	        function(re) {return re.checked;}
	    );
	    return (checked) ? $F(checked) : null;
	}

	document.observe('dom:loaded', initPage);

