/**
 * @author: andre.schroeter, detlef.deertz
 */
if (!YAHOO.hmmh) YAHOO.namespace("hmmh");

//String.prototype.trim = function() { return (this.replace(/\s+$/,"").replace(/^\s+/,"")); };

YAHOO.hmmh.Accordion = function() {
	var wakoAmountProcess = null;
	var openOnClick = false; // open accordion on icon click 2009-09-11, please search in fontcalls.js for openOnClick
	var onHeightsUpdated = new YAHOO.util.CustomEvent('availableheights updated');
	/**
	 * Timeout for request product amount
	 */
	var TIMEOUT_PRODUCT_AMOUNT = 1000;

	var acdn, heads, bodies = [];
	var availableddheight = 100;
 	var slFixierungHoehe = 360;
 	var neueListeAngelegt = false;
 	var htmlCopy = null;
 	var running = [];
 	var animating = 0;
 	var imgs_pre = null;
 	var cartRequest = "GET";
 	
 	/**
 	 * Id of updated product amount field
 	 */
 	var anzPreId = null; 
 	/**
 	 * Max amount of clipboards
 	 */
 	var maxClipboards = 8;
 	/**
 	* Cart container
 	*/
 	var cartContainer = null;
 	
 	
 	var killOverflowingClipboards = 1;
	/**
	 * CSS size of thumbs
	 */
	var maxWidth = null;
	
	/**
	 * Current notepad (NOT the cart, notepads only)
	 */
	 var currentNotepad = null;
	
	return {
		init : function() {
			acdn = $D.get("accordion");
			cartContainer = YAHOO.util.Selector.query('#accordion dd', null, true)[0];
			YAHOO.hmmh.Accordion.updateGlobals();

			if(killOverflowingClipboards) {
				for(i=maxClipboards+1;dropHead=heads[i++];)
					dropHead.parentNode.removeChild(dropHead);
				for(i=maxClipboards+1;dropBody=bodies[i++];)
					dropBody.parentNode.removeChild(dropBody);
				YAHOO.hmmh.Accordion.updateGlobals();
			}

			YAHOO.hmmh.Accordion.addInputRequest();
			onHeightsUpdated.subscribe(YAHOO.hmmh.Accordion.adjustHeight);

			YAHOO.hmmh.Accordion.initEvents();
			YAHOO.hmmh.Accordion.updateBackground();
			
			//YAHOO.hmmh.Accordion.updateCartBackground();
			
			YAHOO.hmmh.Accordion.checkClassOfAcdn();

			// No open notepads ? Open one
			//var o = YAHOO.util.Selector.query("#accordion dt.notepad.open");
				
			//Warenkorb maximiert --> Merkliste oeffnen
			var i = YAHOO.util.Selector.query("#accordion dd.invisible");
			var w = YAHOO.util.Selector.query("#accordion dd.warenkorb.open");
			
			if(!w.length || i.length) {
				//YAHOO.hmmh.Accordion.listAufmachen();
			}
			// Hoehen berechnen
			//YAHOO.hmmh.Accordion.adjustHeight();
			YAHOO.hmmh.Accordion.updateAvailableHeights();
			
			// FF2 Mac Fix
			if(YAHOO.env.ua.gecko > 0 && YAHOO.env.ua.gecko <1.9) {
				var acc = $D.get("accordion");
				$D.setStyle(acc,"position","fixed");
				$D.setStyle($D.get("slNeueMerkliste"),"position","fixed");
			
				var nml = $D.get("slNeueMerkliste");
				$D.setStyle(nml,"bottom","0px");
				$D.setStyle(nml,"padding-right","47px");
			}
		},

		initEvents : function(last_one) {
			for ( var i = last_one ? (heads.length-1) : 0; head = heads[i];  i++ ) {
				$E.on( head, "click", this.toggleBody, head.nextSibling.offsetHeight);
				var headToEdit = YAHOO.util.Selector.query(".editable", head)[0];
				$E.on( headToEdit, "click", this.editHead, head, true);
				submitmlfunktion = $D.getElementsByClassName("submitMLFunktion", "input", bodies[i]);
				if (submitmlfunktion.length==1) {
					$E.on(submitmlfunktion[0], "click", this.submitMLFunktion, submitmlfunktion[0], true);
				}
				submititfunktion = $D.getElementsByClassName("submitITFunktion", "input", bodies[i]);
				if (submititfunktion.length==1) {
					$E.on(submititfunktion[0], "click", this.submitITFunktion, submititfunktion[0], true);
				}
			}
			YAHOO.hmmh.DDBilderliste.initTargets();
			
			// Damit wir beim Klicken auf den grossen WK / Notepad Button keinen Ajax
			// Request abfeuern und die Seitenleiste hoch/runterfahren, nehmen
			// wir beim Klicken das Event vom Akkordeon
			var cart = YAHOO.util.Selector.query("#warenkorb #maximizeCart");
			var notepad = YAHOO.util.Selector.query(".notepad .maximizeNotepad");
			var dts = YAHOO.util.Selector.query("dt#warenkorb, dt.notepad");

			$E.on(cart, "click", function() { $E.removeListener(dts) } );
			$E.on(notepad, "click", function() { $E.removeListener(dts) } );

			submititfunktion = YAHOO.util.Selector.query(".merkzettel .submitITFunktion");
				if (submititfunktion.length==1)
					$E.on(submititfunktion[0], "click", this.submitITFunktion, submititfunktion[0], true);

			submitmlfunktion = YAHOO.util.Selector.query(".merkzettelTitel .submitMLFunktion");
				if (submitmlfunktion.length==1)
					$E.on(submitmlfunktion[0], "click", this.submitMLFunktion, submitmlfunktion[0], true);

			copyIcons = YAHOO.util.Selector.query('#accordion dd .copyToCart');
			$E.on(copyIcons, "click", YAHOO.hmmh.Accordion.copyToCart);
			$E.on(window, "resize", YAHOO.hmmh.Accordion.updateAvailableHeights);
			$E.removeListener($D.getElementsByClassName('addToCart'), 'click', YAHOO.hmmh.Accordion.clickToAccordion); // !!
			$E.addListener($D.getElementsByClassName('addToCart'), 'click', YAHOO.hmmh.Accordion.clickToAccordion);
			
			// InitEvents wird auch aufgerufen, wenn die Events fuer die letzte
			// Merkliste regsitriert werden, dabei muessen aber nicht alle Events wieder gesetzt werden.
			if(!last_one) {
				var clipIcons = $D.getElementsByClassName('addToClipboard');
				$E.removeListener(clipIcons, 'click', YAHOO.hmmh.Accordion.clickToAccordion); //!!
				$E.addListener(clipIcons, 'click', YAHOO.hmmh.Accordion.clickToAccordion);
				// Resizing carousels
				if(self.getNewContentWidth) {
					$E.on(clipIcons, 'click', getNewContentWidth);
				}
				if(document.getElementById("slNeueMerkliste")!=null) {
					$E.on($D.get("slNeueMerkliste").childNodes[0], "click", this.appendClipboard);
				}
				if(document.getElementById("neueMerkliste")!=null) {
					$E.on($D.get("neueMerkliste").childNodes[0], "click", this.createNotepad);
				}
				$E.on("acdnzumachen", "click", this.acdnZuSchieben1);
				$E.on("acdnaufmachen", "click", this.acdnAufZiehen1);
				$E.on("wakoaufmachen", "click", this.wakoAufmachen);
				if(document.getElementById("listaufmachen")!=null) {
					$E.on("listaufmachen", "click", this.listAufmachen);
				}
				if(document.getElementById("createnotepad")!=null) {				
					$E.on("createnotepad", 'click', this.createNotepad);
				}				
			}
		},
		/**
		 * Reinit der Events f�r Clip-Icons
		 */
		initIconEvents : function () {
			var clipIcons = $D.getElementsByClassName('addToClipboard');
				$E.removeListener(clipIcons, 'click', YAHOO.hmmh.Accordion.clickToAccordion); 
				$E.addListener(clipIcons, 'click', YAHOO.hmmh.Accordion.clickToAccordion);
		},

		/**
		 * Initialize input fields for amount
		 */
		addInputRequest : function() {
			var quantityInput = YAHOO.util.Selector.query('.productAnz');
			 // onchange event does not work for IE
			if(quantityInput.length >0) {
				//$E.on(quantityInput, 'blur', YAHOO.hmmh.Accordion.changeQuantityAfterWait);
				$E.on(quantityInput, 'keyup', YAHOO.hmmh.Accordion.changeQuantityAfterWait); //must fire here!
				for(var i=0; i<quantityInput.length; i++) {
					YAHOO.hmmh.Util.form.activateEnterDisabled(quantityInput[i]);
				}
			}
		},

		changeQuantityAfterWait : function(ev) {
			// "this" arbeitet hier nicht fehlerfrei
			var obj = $E.getTarget(ev);
			var keyCode = ev.keyCode;
			var timeout = TIMEOUT_PRODUCT_AMOUNT;
			
			//On return key send request immediately
			if(keyCode && keyCode==13) {
				timeout = 0;
			}
			
			if(wakoAmountProcess != null) {
				clearTimeout(wakoAmountProcess);
				wakoAmountProcess = null;
			}
			
			wakoAmountProcess = setTimeout(
					function() {
						YAHOO.hmmh.Accordion.changeQuantity(obj);
					}
					, timeout);			
		},

		/**
		 * Onchange listener if amount of cart entry changed
		 */
		changeQuantity : function(obj) {
			
			var regdigit = /^\d+$/;
			var value = obj.value;
			// Keep id of amount field im memory
			YAHOO.hmmh.Accordion.anzPreId = obj.id;
			
			var pb = findClass(obj,"productBlock");
			if(pb == null) pb = obj.parentNode; 
			if(pb != null) {
				var entryPK = pb.id;
				// numeric vlues only
				if(value.search(regdigit)==-1) {
					return false
				}
				$C.asyncRequest("POST", "/edit_entry.htm", { 
					success : function(response) { 
						YAHOO.hmmh.Accordion.updateCart(response);
						} 
					}, 
					"entryPK=" + escape(entryPK)+ "&quantity=" + escape(value));			
			}
		},
		
		

		checkClassOfAcdn : function (ev) {
			acdn = $D.getElementsByClassName("nachtraeglich-oeffnen", "div");
			if (acdn != "") {
				this.acdnAufZiehen1(ev);
			}
		},

		updateAvailableHeights : function() {
			var headsHeight = 130;
			var retVal = 0;
			var viewportHeight = $D.getViewportHeight();
			/* Korrekturwert IE */
			if(YAHOO.env.ua.ie == 6) {
				cf = 0 //82;
			} else {
				cf = 0;
			}

			slFixierungHoehe = viewportHeight<360?360:viewportHeight-headsHeight;  // Mindesthoehe

			if(heads == undefined ) return false;
			for ( var i=0; i<heads.length;  i++ ) { headsHeight += heads[i].offsetHeight }

			headsHeight+=3; // border addieren

			retVal = Math.floor(viewportHeight)-headsHeight;
			retVal = retVal<250?250:retVal; // Mindesthoehe
			availableddheight = retVal-cf;

			onHeightsUpdated.fire();
		},

		animDD : function(el, newheight) {
			if($D.hasClass(el, "inBewegung"))
				return 0;
			// IE is not animated
			if(YAHOO.env.ua.ie) {
				$D.setStyle(el, 'height', newheight);

				YAHOO.hmmh.Accordion.toggleClassOpen(null, el);
				return;
			}
			
			$D.addClass(el, "inBewegung");
			if (newheight > 0 ) {
				$D.addClass(el, "toOpen");
				var anim = new YAHOO.util.Anim(el, { height: {from: 0, to: newheight} }, .4, YAHOO.util.Easing.easeIn);
			} else {
				var anim = new YAHOO.util.Anim(el, { height: {from: el.offsetHeight, to: 0} }, .4, YAHOO.util.Easing.easeOut);
			}

			anim.onComplete.subscribe(YAHOO.hmmh.Accordion.toggleClassOpen);
			animating = 1;
			anim.animate();

		},

		adjustHeight : function() {

			var rollbare = [];

			// Hoehe von offenem body und eingeschlossener dropList korrigieren

			wastedHeight = 0;

			rollbare = $D.getElementsByClassName("rollbar", "div", "slot-0");

			// Hier sind die Selektoren der Elemente drin, welche "verschwendete Huehe"
			// sind. Diese sind dann #accordion dd SELECTOR, die Huehen werden addiert und dann
			// von der verfuegbaren Huehe abgezogen

			findHeights = ['#sum-miniwako', '.submitBlock', '.errorBottom', '.trustedShop', '.errorShoppingCart', '.byNumber' ];

			for(i=0;findHeight=findHeights[i];i++) {
				thisOne = YAHOO.util.Selector.query("#accordion dd " + findHeight, null, true);
				if(thisOne.length == 1) {
					wastedHeight += thisOne[0].offsetHeight;
				}
			}
			$D.setStyle(rollbare[0], "height", availableddheight-(wastedHeight+5)+"px");

			var dropLists = YAHOO.util.Selector.query('#accordion dd ul.dropList');
			var groupFunctions = YAHOO.util.Selector.query('.sammelfunktionen', bodies[1]);

			for(di = 0 ; dropList = dropLists[di++];)
				$D.setStyle(dropList, "height", (availableddheight-100)+"px");

			// Hoehe von slFixierung korrigieren
			var slFixierung = $D.get("accordion");
			$D.setStyle(slFixierung, "height", (slFixierungHoehe+5)+"px");

			openDD = YAHOO.util.Selector.query("#accordion dd.open");
			if(openDD[0]) $D.setStyle(openDD[0], "height", availableddheight+"px");

		},

		toggleBody : function(ev, el) {
			var element = this; //$E.getTarget(ev);
			if(animating) return false;
			
			var nextDD = YAHOO.hmmh.Accordion.getNextSibByTag(element, "dd");
			
			// Hier bereits Zustand bestimmen
			var ddIsClosed = nextDD && !$D.hasClass(nextDD, "open");
			
			
			// Check if toggler (IMG) clicked
			var trg = $E.getTarget(ev);
			var isToggle = trg != null && trg.tagName =="IMG";
			
			
			if ($D.hasClass(element, "active") 
			&& !$D.hasClass(nextDD, "warenkorb")
			&& !isToggle
			) { return null; } // Ressourcenschoner
				
			// Den background der offnenen Merkliste aendern
			// Artikel vorhanden/nicht vorhanden hat anderes Hintergrundbild
			YAHOO.hmmh.Accordion.updateBackground();
			YAHOO.hmmh.Accordion.closeAll();
			
			// Das folgende DD oeffnen ...
			if (ddIsClosed) {
				$D.addClass(element, "active");
				YAHOO.hmmh.Accordion.animDD(nextDD, availableddheight);
				var tgg = YAHOO.util.Selector.query("img.toggler",element)[0];
				if(tgg) {
					tgg.src = "img/ml_pfeil_offen_kl.gif";
				}
			}
			// Closing cart if clicked while open, reopen recent clipboard
			else {
				if(isToggle) {
					setTimeout(function() {YAHOO.hmmh.Accordion.clickHead(heads[0]);}, 500);
				}
				else if(currentNotepad != null) {
					$D.addClass(currentNotepad, "active");
					nextDD = YAHOO.hmmh.Accordion.getNextSibByTag(currentNotepad, "dd");
					YAHOO.hmmh.Accordion.animDD(nextDD, availableddheight);
					
					element = currentNotepad;
				}
			}
			
			// Wenn ein editable-Feld vorhanden ist handelt es sich um eine Merkliste, fuer diese
			// wird der Name herausgeholt und dann der Aufruf fuer das Setzen des offenen
			// Merkzettels gestartet, der Warenkorb bekommt keinen Namensparameter mit
			
			if(YAHOO.util.Selector.query(".editable", element).length) {
				var nameMerkliste = null;
				// This try block is made for IE6
				try {
					var nameMerkliste = YAHOO.util.Selector.query(".editable", element)[0].childNodes[0].nodeValue.trim();
				}
				catch(e) {
					// no Clipboard name
				}
				//var erweitertWK = YAHOO.util.Selector.query("#bestellprozessInhalt #maxWarenkorb");

				if(!neueListeAngelegt && nameMerkliste /*&& !erweitertWK.length*/) {
					var setNotepad = $C.asyncRequest("POST", "/notepad_set.htm", null, "open=" + encodeURIComponent(nameMerkliste));
					// Merke die aktuelle Merkliste, damit der Warenkorb wieder geschlossen werden kann
					currentNotepad = element;
				}
			} else {
				if(!YAHOO.util.Selector.query('.merkzettelTitel').length)
					var setNotepad = $C.asyncRequest("POST", "/notepad_set.htm", null);
					currentNotepad = element;
			}
			
		},

		toggleClassOpen : function (ev, el) {

			var dd2toggle = YAHOO.env.ua.ie ? el : this.getEl();



			animating = 0;
			$D.removeClass(dd2toggle, "inBewegung");
			$D.removeClass(dd2toggle, "toOpen")
			if ($D.hasClass(dd2toggle, "open")) {
				$D.removeClass(dd2toggle, "open");
			} else {
				$D.addClass(dd2toggle, "open");
				YAHOO.hmmh.Accordion.adjustHeight();
				YAHOO.hmmh.Accordion.updateAvailableHeights();

				var dropList = $D.getElementsByClassName("dropList", "ul", dd2toggle);
				if (dropList[0]) { $D.setStyle(dropList[0], "height", availableddheight-100+"px") }
			}

			YAHOO.hmmh.Accordion.updateBackground();
		},

		updateGlobals : function() {
			heads = YAHOO.util.Selector.query('#accordion dt');
			bodies = YAHOO.util.Selector.query('#accordion dd');
			// Get current active notepad ; if none selected choose first notepad
			if(currentNotepad == null) {
				for(var i = 1; i< heads.length; i++) {
					if($D.hasClass(heads[i],"active")) {
						currentNotepad = heads[i];
						break;
					}
				}
				// this does not work...
				//currentNotepad = YAHOO.util.Selector.query("#accordion dt.notepad active")[0];
				if(currentNotepad == null) {
					// check for latest opened notepad on other page (latestNotepad var is set by server)
					if(!$U.isEmpty(latestNotepad)) {
						for(var i = 1; i< heads.length; i++) {
							var span = YAHOO.util.Selector.query("span.editable",heads[i])[0];
							if(span.title == latestNotepad) {
								currentNotepad = heads[i];
								break;
							}
						}
					}
					if(currentNotepad == null) {
						currentNotepad = heads[1];
					}
				}
			}
		},

		appendClipboard : function (ev, el) {
//		 Kopieren v. Elementen statt Einf. v. innerHTML bevorzugt, damit Aenderungen im HTML autm. uebernommen werden. Andre.
			if (heads.length > maxClipboards || YAHOO.util.Selector.query('#accordion .inBewegung', null, true).length) { return null; } // Ressourcenschoner

			var kopiervorlagendt, kopiervorlagendd = [];

			acdn = $D.get("accordion");
			
			kopiervorlagendt = acdn.getElementsByTagName("dt");
			kopiervorlagendd = acdn.getElementsByTagName("dd")

			var kopiervorlagedt = document.createElement("dt");
			kopiervorlagedt.innerHTML = kopiervorlagendt[1].innerHTML;

			var kopiervorlagedd = document.createElement("dd");
			kopiervorlagedd.innerHTML = kopiervorlagendd[1].innerHTML;

	 		var kopiervorlagedtSpan = $D.getElementsByClassName("editable", "span", kopiervorlagedt)[0];
			kopiervorlagedtSpan.innerHTML="Merkliste";
			
			var droplist = $D.getElementsByClassName("dropList", "ul", kopiervorlagedd)[0];
			if (droplist) { droplist.innerHTML=""; }

			acdn.appendChild(kopiervorlagedt);
			acdn.appendChild(kopiervorlagedd);
			
			// Set new notepad as current notepad
			
			currentNotepad = kopiervorlagedt;

			// Aktualisierung der glob. Arrays:
			YAHOO.hmmh.Accordion.updateGlobals();

			// Nur die events fuer die letzte Merkliste initialisieren
			YAHOO.hmmh.Accordion.initEvents(true);

			// Wird im editHeadBlur verwendet fuer die Unterscheidung edit_/add_notepad
			neueListeAngelegt = true;

			// Huehen updaten und letztes Clipboard ueffnen
			YAHOO.hmmh.Accordion.updateAvailableHeights()
			YAHOO.hmmh.Accordion.clickHead(heads[(heads.length-1)]);
			
			var headToEdit = YAHOO.util.Selector.query(".editable", heads[(heads.length-1)])[0];
			YAHOO.hmmh.Accordion.clickHead(headToEdit);
			
		},

		createNotepad : function(ev, el) {
			var notepad = $C.asyncRequest("POST", "/notepad_create_default.htm", { success: function() { 
				YAHOO.hmmh.Accordion.createClipboard(); }});

		},

		createClipboard : function(ev, el) {
			acdn = $D.get("accordion");
			var newDt = document.createElement("dt");
			with (newDt) {
				//setAttribute('type', 'text');
				className = 'notepad active';
			}
			
			var newSpan = document.createElement("span");
			newSpan.className = "editable";
			newSpan.innerHTML = "Merkliste";
			newDt.appendChild(newSpan);
			acdn.appendChild(newDt);
			
			var newDd = document.createElement("dd");
			newDd.className = "open";
			
			var newDiv = document.createElement("div");
			newDiv.className="rollbalkenschoner ddBogenUnten";
    		var newInnerDiv = document.createElement("div"); 
    		newInnerDiv.className = "ddBogenOben";
    		newDiv.appendChild(newInnerDiv);
			newDd.appendChild(newDiv);
			acdn.appendChild(newDd);
			
			// first form
			var newForm = document.createElement("form");
			with (newForm) {
				setAttribute('action', '');
				className = 'sammelfunktionen';
			}
			var newLabel = document.createElement("label");
			with (newLabel) {
				setAttribute('for', 'actionselect1');
				className = 'grey';
				innerHTML = 'markierte Artikel:';
			}
			newForm.appendChild(newLabel);
			
			var newSelect = document.createElement("select");
			newSelect.setAttribute("id","actionselect1");
			var option = document.createElement("option");
			option.setAttribute("value","add");
			option.innerHTML='in den Warenkorb legen';
			newSelect.appendChild(option);
			option = document.createElement("option");
			option.setAttribute("value","remove");
			option.innerHTML='l&ouml;schen';
			newSelect.appendChild(option);
			newForm.appendChild(newSelect);
			
			var newInput = document.createElement("input");
			with (newInput) {
				setAttribute('name', 'actionOK1');
				setAttribute('type', 'image');
				setAttribute('src', 'img/button_ml_ok.png');
				className = 'submitITFunktion';
			}			
			newForm.appendChild(newInput);
			newInnerDiv.appendChild(newForm);
			
			// second form
			var newForm2 = document.createElement("form");
			with (newForm2) {
				setAttribute('action', '');
				className = 'slDropList';
			}
			newForm2.innerHTML='<ul class="dropList empty"></ul>';
			newInnerDiv.appendChild(newForm2);
			
			var newHr = document.createElement("hr");
			newHr.className="hiddenClear";
			newInnerDiv.appendChild(newHr);
			
			// third form
			var newForm3 = document.createElement("form");
			with (newForm3) {
				setAttribute('action', '');
				className = 'sammelfunktionen unten';
			}
			var newLabel3 = document.createElement("label");
			with (newLabel3) {
				setAttribute('for', 'actionlist1');
				className = 'grey';
				innerHTML = 'Merkzettel:';
			}
			newForm3.appendChild(newLabel3);
			
			var newSelect3 = document.createElement("select");
			newSelect3.setAttribute("id","actionlist1");
			var option3_0 = document.createElement("option");
			option3_0.setAttribute("value","add");
			option3_0.innerHTML='in den Warenkorb legen';
			newSelect3.appendChild(option3_0);
			option3_1 = document.createElement("option");
			option3_1.setAttribute("value","remove");
			option3_1.innerHTML='l&ouml;schen';
			newSelect3.appendChild(option3_1);
			newForm3.appendChild(newSelect3);
			
			var newInput3 = document.createElement("input");
			with (newInput3) {
				setAttribute('name', 'actionListOK1');
				setAttribute('type', 'image');
				setAttribute('src', 'img/button_ml_ok.png');
				className = 'submitMLFunktion';
			}			
			newForm3.appendChild(newInput3);
			newInnerDiv.appendChild(newForm3);

			// Aktualisierung der glob. Arrays:
			YAHOO.hmmh.Accordion.updateGlobals();

			// Nur die events fuer die letzte Merkliste initialisieren
			YAHOO.hmmh.Accordion.initEvents(true);

			// Wird im editHeadBlur verwendet fuer die Unterscheidung edit_/add_notepad
			neueListeAngelegt = false;
			
			// Hoehen updaten und letztes Clipboard ueffnen
			YAHOO.hmmh.Accordion.updateAvailableHeights();
			YAHOO.hmmh.Accordion.clickHead(heads[(heads.length-1)]);
			// Set new Notepad as active notepad 2009-08-08, not really ness.
			currentNotepad = newDt;
		},
		
		getNextSibByTag : function(elem, tag) {
			if (elem && elem.nextSibling){
				return  (elem.nextSibling.nodeName.toLowerCase() != tag) ?  this.getNextSibByTag(elem.nextSibling, tag) : elem.nextSibling ;
			} else { return null }
		},

		getPrevSibByTag : function(elem, tag) {
			if (elem && elem.previousSibling){
				return  (elem.previousSibling.nodeName.toLowerCase() != tag) ?  this.getPrevSibByTag(elem.previousSibling, tag) : elem.previousSibling ;
			} else { return null }
		},

		clickHead : function (head) {
			// Event manuell abfeuern
			if( document.createEvent ) {
				var evObj = document.createEvent('MouseEvents');
			  evObj.initEvent( 'click', true, false );
			  head.dispatchEvent(evObj);
			} else if( document.createEventObject ) {
				// IE
				head.fireEvent('onclick');
			}
		},

		wakoAufmachen : function(ev, el) {
			YAHOO.hmmh.Accordion.updateGlobals();
			if ($D.hasClass(heads[0], "active")) { return null; } // Wako schon offen, Ressourcenschoner

			// Auf den ersten Head klicken
			YAHOO.hmmh.Accordion.clickHead(heads[0]);
			
			if (YAHOO.hmmh.teaserRegion  && $D.getElementsByClassName("body","bilder") && document.getElementById("liste")) {
				YAHOO.hmmh.teaserRegion.init();
			}
		},

		closeAll : function() {

			// Alles offene holen und schlieueen
			var openDD = YAHOO.util.Selector.query("#accordion dd.open");
			var activeDT = YAHOO.util.Selector.query("#accordion dt.active");
			var activeTogglers = YAHOO.util.Selector.query("#accordion img.toggler");

			for(i=0;i<openDD.length;i++) {
				YAHOO.hmmh.Accordion.animDD(openDD[i], 0);
			}

			for(i=0;i<activeDT.length;i++) {
				$D.removeClass(activeDT[i], 'active');
			}
			for(i=0;i<activeTogglers.length;i++) {
				activeTogglers[i].src ="img/ml_pfeil_zu_kl.gif";
			}
			
		},
		/**
		 * opens clipboard, shows clipboard if already opened,otherwise opens first clipboard
		 * @param openAccordion if false do init sutff but dont open accordion
		 */
		listAufmachen : function(ev, openAccordion) {
			if(heads == undefined) {return false;}
			if(typeof openAccordion !="undefined") {
				if(openAccordion) {
					YAHOO.hmmh.Accordion.acdnAufZiehen1(ev);
				}
			}
			// check for opened clipboard
			for(var i=1; i<bodies.length; i++) {
				if ($D.hasClass(bodies[i], "open")) { return; } 
			}
			
			// Click on recent notepad if set
			if(currentNotepad != null) {
				var spTag = YAHOO.util.Selector.query("span",currentNotepad)[0];
				YAHOO.hmmh.Accordion.clickHead(spTag);
			}
			// Click on first clipboard if none opened
			else {
				YAHOO.hmmh.Accordion.clickHead(heads[1]);
			}
			
			
		},

		acdnZuSchieben1 : function(ev, el) {
			if (ev) $E.stopEvent(ev);
			
			closeAccordion = $C.asyncRequest("POST", "/accordionStatus.htm", null, "open=false");
			//setNotepad = $C.asyncRequest("POST", "notepad_set.htm", null);
			
			// Klassen und Styles anpassen
			$D.removeClass(document.body, "slOffen");
			$D.addClass(document.body, "slGeschlossen");

			$D.setStyle("topLogo", "position", "absolute");
			$D.setStyle("mainCol", "margin-left", "28px");
			$D.setStyle("slFixierung", "left", "-170px");
			
			
			var checkBuyLayers = $D.getElementsByClassName("detailFontsWrap","div");
			if(checkBuyLayers.length != 0) {
				for(var i=1; i<checkBuyLayers.length; i++) {
					if (checkBuyLayers[i].style.display == "block") { 
						var getLayerPosition = checkBuyLayers[i].style.left;
						getLayerPosition = getLayerPosition.replace('px', '');
						getLayerPosition = (parseInt(getLayerPosition)-170)+'px';
						checkBuyLayers[i].style.left = getLayerPosition; 
							
					} 
				}
			}
	
			// Karussells aktualisieren
			//if(getNewContentWidth) {
			//	getNewContentWidth();
			//}
			
			if (YAHOO.hmmh.teaserRegion && $D.getElementsByClassName("body","bilder") && document.getElementById("liste")) {
				YAHOO.hmmh.teaserRegion.init();
			}
			
		},

		acdnAufZiehen1 : function(ev) {
			if (ev) $E.stopEvent(ev);
			if ($D.hasClass(document.body, "slOffen")) return null; // Es gibt nichts zu tun.

			$C.asyncRequest("POST", "/accordionStatus.htm", null, "open=true"); //var openAccordion = entfernt
	
			// Klassen und Styles anpassen
			$D.removeClass(document.body, "slGeschlossen");
			$D.addClass(document.body, "slOffen");

			$D.setStyle("slFixierung", "left", "0");
			$D.setStyle("topLogo", "position", "fixed");
			$D.setStyle("mainCol", "margin-left", "198px");

			var checkBuyLayers = $D.getElementsByClassName("detailFontsWrap","div");
			if(checkBuyLayers.length != 0) {
				for(var i=1; i<checkBuyLayers.length; i++) {
					if (checkBuyLayers[i].style.display == "block") { 
						var getLayerPosition = checkBuyLayers[i].style.left;
						getLayerPosition = getLayerPosition.replace('px', '');
						getLayerPosition = (parseInt(getLayerPosition)+170)+'px';
						checkBuyLayers[i].style.left = getLayerPosition; 
							
					} 
				}
			}

			// Den Cache der Drop-Target-Positionen lueschen
			YAHOO.util.DragDropMgr.refreshCache();
			
			// Karussells aktualisieren
			if(typeof getNewContentWidth != "undefined") {
				getNewContentWidth();
			}
			
			if ($D.getElementsByClassName("body","bilder") && document.getElementById("liste")) {
				if(YAHOO.hmmh.teaserRegion) YAHOO.hmmh.teaserRegion.init();
			}
			 
			
		},

		editHead : function(ev, el) {
			var nextDD = YAHOO.hmmh.Accordion.getNextSibByTag(this, "dd");
			if (!$D.hasClass(nextDD, "open") && !neueListeAngelegt) { return null; } // Ressourcenschoner
			var text2replace = $D.getElementsByClassName("editable", "span", el)[0];
			$D.addClass(text2replace, "currentEdit");
			if (text2replace) {
				// check for existing  tag
				var tg = $D.getLastChild(text2replace);
				if (!(tg && tg.tagName && tg.tagName.toLowerCase()=="form")) { 
					if(YAHOO.env.ua.ie >0) {
						htmlCopy = text2replace.innerText;
					}
					else {
						htmlCopy = text2replace.childNodes[0].nodeValue;
					}
					
					text2replace.innerHTML = "";

					// innerHTML zum Aufbau von inputs taugt nicht bei Geckos, weil dann dessen value nicht auslesbar ist!!
					var eipForm = document.createElement('form');
					var eipFormDiv = document.createElement('div');
					var eipFormDivInput = document.createElement('input');

					$D.addClass(eipForm, "eipform");
					eipFormDivInput.type="text";
					eipFormDivInput.maxLength="15";
					
					eipFormDivInput.value=htmlCopy;
					$E.on(eipForm, "submit", YAHOO.hmmh.Accordion.editHeadBlur, eipFormDivInput, true);

					eipFormDiv.appendChild(eipFormDivInput);
					eipForm.appendChild(eipFormDiv);
					text2replace.appendChild(eipForm);

					eipFormDivInput.focus();
					eipFormDivInput.select();
					$E.on(eipFormDivInput, "blur", YAHOO.hmmh.Accordion.editHeadBlur, eipFormDivInput, true);
				}
			}
		},

		// Zaehlt die vorhanden Merklisten-Namen. Wenn fuer einen Merklisten-Namen mehr als eine
		// Merkliste vorhanden ist, dann ist was faul!
		/**
		 * @deprecated ersetzt durch checkDuplicateHeadName()
		 */
		duplicateHeadNames : function() {
			var names = YAHOO.util.Selector.query("#accordion dt .editable");
			var count = new Object();
			
			for(i=0;i<names.length;i++) {
				this_name = names[i].childNodes[0].nodeValue;
				if(!count[this_name]) count[this_name] = 0;
				count[this_name]++;

				if(count[this_name] > 1) {
					return true;
				}
			}

			return false;
		},
		
		checkDuplicateHeadName : function(element) {
			var names = YAHOO.util.Selector.query("#accordion dt .editable");
			for(i=0;i<names.length;i++) {
				if(names[i] != element) {
					
					if(names[i].childNodes[0].nodeValue == element.childNodes[0].nodeValue) {
						return true;
					}
				}
			}
			return false;
		},

		editHeadBlur : function(ev, el) {
			$E.stopEvent(ev);
			if(htmlCopy == null) {
				return;
			}
			//var text2replace = el.parentNode.parentNode.parentNode;
			var text2replace = YAHOO.util.Selector.query("#accordion .active span")[0];
			
			var newName = el.value;
			
			// Der Name wird noch bereinigt (um < und >)
			newName = newName.replace(/(<|>)/g, "");
			newName = newName.trim();
			newName = newName ? newName : "Merkliste";
			
			text2replace.innerHTML = "";
			
			text2replace.innerHTML = newName.replace(/&/g,"&amp;");

			var i = 1;
			var title = newName;
			while(YAHOO.hmmh.Accordion.checkDuplicateHeadName(text2replace)) {
				if(i > maxClipboards) {
					// Zuviele Merklisten ?
					break;
				}
				text2replace.innerHTML = newName.replace(/&/g,"&amp;") + " " + i;
				title = newName + " " + i;
				i++;
			}
			text2replace.title = title;
			
			if(neueListeAngelegt) {
				// Erst das Notepad anlegen, dann oeffnen
				var addClipboard = $C.asyncRequest("POST", "/notepad_add.htm", {
					success: function () {
						var setClipboard = $C.asyncRequest("POST", "/notepad_set.htm", 
												null, 
												"open=" + encodeURIComponent(title));
					}
				}, "name=" + encodeURIComponent(title));

			} else {
				// Wenn sich der Name tatsaechlich geaendert hat, den request absetzen
				if(htmlCopy != title) {
					var changeName = $C.asyncRequest("POST", "/notepad_edit.htm", 
									null, 
									"oldName=" + encodeURIComponent(htmlCopy) + "&newName=" + encodeURIComponent(title));
				}
			}

			neueListeAngelegt = false;
			htmlCopy = null;
			$D.removeClass(text2replace, "currentEdit");
		},

		/**
		 * Funktion, welche die Merklisten-Selectbox-Funktionalituet bereitstellt.
		 */
		submitMLFunktion : function(ev, el) {
			if (ev) $E.stopEvent(ev);
			var select = el.parentNode.getElementsByTagName("select")[0];
			var options = el.parentNode.getElementsByTagName("option");
			if(findClass(el, 'merkzettelTitel')) {
				// Wir befinden uns im Merkzettel, daher diesen Merkzettel-Namen holen
				var nameMerkliste = YAHOO.util.Selector.query(".merkzettelTitel strong b")[0].innerHTML.trim();
				var checked = YAHOO.util.Selector.query(".merkzettel ol li input");
			} else {
				// Normales Element im Accordion
				var nameMerkliste = YAHOO.util.Selector.query("#accordion .active .editable")[0].innerHTML.trim();
				var checked = YAHOO.util.Selector.query("#accordion .open ul li input");
			}
			var productPks = new Array();

			// Die PKs kommen als Array mit pk= als Praefix raus
			pks = checked.map(function(b) {
				// den productBlock holen
				var block = findClass(b, 'dragItem');

				// Den PK holen
				pk = YAHOO.hmmh.Accordion.findInfo(b).pk;

				var img = YAHOO.util.Selector.query('img.thumb', block, true)[0];
				
				// Produkt-PK merken
				var prodPk = YAHOO.hmmh.Marker.stripPk(img);
				
				productPks.push(prodPk);
				// Fuer loeschen Element entfernen
				if(select.value == 'remove') {
					block.parentNode.removeChild(block);
				}
				return 'pk=' + pk;
			});

			// Die Liste fuer den Request bauen
			var pk_list = pks.join("&");
			
			//Warenkorb links oeffnen AUSSER wenn grosser Warenkorb schon auf
			var i = YAHOO.util.Selector.query("#accordion dd.warenkorb.invisible");
			if(options[select.selectedIndex].value == 'add') {

				// Beim Hinzufuegen muss einfach nur der Aufruf gemacht werden und der Warenkorb neu geladen.
				var copyEntries = $C.asyncRequest("POST", "/copy_entry.htm", { // changed copy => add 
					success: function() { 
								YAHOO.hmmh.Accordion.reloadCart(); 
								if (i.length) { 
									window.location.reload(); 
								 }
								// .. und oeffnen sofern grosser WK nicht zu sehen ist
								else {
									YAHOO.hmmh.Accordion.wakoAufmachen();
									if(YAHOO.util.Selector.query('.merkzettelTitel').length) {
										YAHOO.hmmh.extendedNotepad.transferWakoItems();
									}
								}
							} 
					}
				, "sourceName=" + encodeURIComponent(nameMerkliste) + "&" + pk_list);
				return true;
			}


			else if(options[select.selectedIndex].value == "remove") {
				// TODO: Hier muss unterschieden werden, ob wir in einem erweiterten Merkzettel sind!
				// Dazu muessen die LIs aus dem erweiterten ausgewertet werden (das Unterscheiden,
				// welcher Selector gewuehlt wird, duerfte reichen), ein Setzen der aktiven Merkliste
				// auf den neuen Namen (notepad_set) am Ende, ein Auslassen des innerHTML-uendern
				// fuer den Namen, und ein Refresh am Ende muss noch rein
				// Dann wuers das auch.

				// Zuerst alle Bilder holen
				imgs = YAHOO.util.Selector.query('#accordion dd.open img.thumb');
				
				if(YAHOO.util.Selector.query("#accordion dd").length <= 2) {
					// Ist nur eine Merkliste vorhanden kuennen wir nicht loeschen.
					// Stattdessen wir die letzte komplett geleert

					// Alle LIs (die Produktbloecke) werden selektiert
					// lis = YAHOO.util.Selector.query("dd.open .dropList li", "accordion");

					// Die PKs werden ueber das map herausgeholt, kommen also als Array zurueck
					// und die LIs dabei geloescht.
					pks = pks.map(function (b) {
						var pk = b.split("=")[1];
						//pk = b.id;
						//b.parentNode.removeChild(b);

						return pk;
					});


					// Ein Query-String fuer die PKs wird erstellt und der Aufruf abgefeuert
					pk_list = "";

					for(i = 0; i< pks.length ; i++) {
						pk_list = pk_list + "&pk=" + escape(pks[i]);
					}
					// Loeschen
					deleteContents = $C.asyncRequest("POST", "/remove_entry.htm", {
						success: function() {
							if(YAHOO.util.Selector.query('.merkzettelTitel').length) {
								YAHOO.hmmh.extendedNotepad.transferWakoItems();
							}
						}
					}, "name=" + encodeURIComponent(nameMerkliste) + pk_list);

					// Der Name wird geaendert, die Merkliste ist dann 'frisch'
					// TODO: Es koennte das Problem auftreten, dass es bereits eine "Merkliste"
					// benannte Merkliste gibt, dann entsteht ein Konflikt im Merklisten-Namensraum
					// Behandelt wird das noch nicht
					newName = 'Merkliste';

					YAHOO.util.Selector.query("#accordion .active .editable")[0].innerHTML = newName;
					var changeName = $C.asyncRequest("POST", "/notepad_edit.htm", null, "oldName=" + encodeURIComponent(nameMerkliste) + "&newName=" + encodeURIComponent(newName));

					YAHOO.hmmh.Accordion.updateBackground();

				} else {

					try {
						// Wir loeschen diese Merkliste und den Head
						YAHOO.util.Selector.query("#accordion .open")[0].parentNode.removeChild(YAHOO.util.Selector.query("#accordion .open")[0]);
						YAHOO.util.Selector.query("#accordion .active")[0].parentNode.removeChild(YAHOO.util.Selector.query("#accordion .active")[0]);

						// Die Hoehen muessen aktualisiert werden
						YAHOO.hmmh.Accordion.updateAvailableHeights();

						// Die merklisten werden neu geladen
						YAHOO.hmmh.Accordion.updateGlobals();

						// Der letzte Head wird geklickt / geueffnet
						YAHOO.hmmh.Accordion.clickHead(heads[(heads.length-1)]);
					} catch(e){}


					/*// Die Targets wurden hier neu getriggert, duerfte nicht noetig sein, daher auskommentiert
					if (YAHOO.hmmh.DDBilderliste)
						YAHOO.hmmh.DDBilderliste.initTargets();*/

					YAHOO.hmmh.Accordion.updateBackground();
					if(findClass(el, 'merkzettelTitel')) {
						if ($U.findUrlValue('referredFromPage')) {
							var deleteNotepad = $C.asyncRequest("POST", "/notepad_remove.htm", {success: function() {
								YAHOO.hmmh.Accordion.updateGlobals();
								window.location.href = $U.findUrlValue('referredFromPage');
								}
							}, 
							"name=" + encodeURIComponent(nameMerkliste));
						}
					} else {
						var deleteNotepad = $C.asyncRequest("POST", "/notepad_remove.htm", null, 
						"name=" + encodeURIComponent(nameMerkliste));
					}	
					
					YAHOO.hmmh.Accordion.listAufmachen();
				}
				// Ein Marker-Update durchfuehren
				//YAHOO.hmmh.Marker.updateThumbs(1);
				YAHOO.hmmh.Marker.updateThumbs(2);
				if(YAHOO.hmmh.Marker.updateClipboards()) {
					productPks.map(function(prodPk) {
						YAHOO.hmmh.Marker.updatePkItem(prodPk);
					});
				}
				
			} else {
				// Erweiterte Merkliste wird hier verschickt, indem sie an den Mailclient uebermittelt wird
				window.location = options[select.selectedIndex].value;
			}
		},

		submitITFunktion : function(ev, el) {
			if (ev) $E.stopEvent(ev);

			var select = el.parentNode.getElementsByTagName("select")[0];
			var options = el.parentNode.getElementsByTagName("option");

			// Namen der Merkliste und die Checkboxen holen
			if(findClass(el, 'merkzettel')) {
				// Wir sind in einem erweiterten Merkzettel
				var nameMerkliste = YAHOO.util.Selector.query(".merkzettelTitel strong b")[0].innerHTML.trim();
				var checked = YAHOO.util.Selector.query(".merkzettel ol li input");
			} else {
				// Wir sind im Accordion
				var nameMerkliste = YAHOO.util.Selector.query("#accordion .active .editable")[0].innerHTML.trim();
				var checked = YAHOO.util.Selector.query("#accordion .open ul li input");
			}

			// Nur die markierten markierten Checkboxen rausfiltern
			checked = checked.filter(function(b) {if(b.checked) return true; return false;});
			
			// Sammle die Produkt-PKs
			var productPks = new Array();
			
			// Die PKs kommen als Array mit pk= als Praefix raus
			pks = checked.map(function(b) {
				// den productBlock holen
				var block = findClass(b, 'dragItem');

				// Den PK holen
				pk = YAHOO.hmmh.Accordion.findInfo(b).pk;

				var img = YAHOO.util.Selector.query('img.thumb', block, true)[0];
				
				// Produkt-PK merken
				var prodPk = YAHOO.hmmh.Marker.stripPk(img);
				
				productPks.push(prodPk);
				
				// Fuer loeschen Element entfernen
				if(select.value == 'remove') {
					block.parentNode.removeChild(block);
				}
				return 'pk=' + pk;
			});

			// Die Liste fuer den Request bauen
			var pk_list = pks.join("&");

			// Geloeschte Elemente an AJAX-Call binden
			if(select.value == 'remove' && pk_list)
				var deleteEntries = $C.asyncRequest("POST", "/remove_entry.htm", {
					success: function() {
						if(YAHOO.util.Selector.query('.merkzettelTitel').length) {
							YAHOO.hmmh.extendedNotepad.transferWakoItems();
						}
					}
				}, ( nameMerkliste ? "name=" + encodeURIComponent(nameMerkliste) + "&" : "" ) + pk_list);

			// Zu kopierende Elemente an AJAX-Call binden
			if(select.value == 'add' && pk_list) {

				var i = YAHOO.util.Selector.query("#accordion dd.warenkorb.invisible");
				var j = YAHOO.util.Selector.query("#accordion dd.warenkorb.active");

				// Produkte hinzufuegen, Warenkorb aktualisieren...
				
				var copyEntries = $C.asyncRequest("POST", "/copy_entry.htm", { // changed copy => add
									success: function() { 
										YAHOO.hmmh.Accordion.reloadCart();
										if(YAHOO.util.Selector.query('.merkzettelTitel').length) {
											YAHOO.hmmh.extendedNotepad.transferWakoItems();
										} 
										if (i.length) { window.location.reload(); }
									}
				}, "sourceName=" + encodeURIComponent(nameMerkliste) + "&" + pk_list);

				// .. und oeffnen
				if (!i.length && j)
					YAHOO.hmmh.Accordion.wakoAufmachen();
			}


			YAHOO.hmmh.Marker.updateThumbs(2);
			if(YAHOO.hmmh.Marker.updateClipboards()) {
				productPks.map(function(prodPk) {
					YAHOO.hmmh.Marker.updatePkItem(prodPk);
				});
			}

			// Die markierten Boxen zuruecksetzen
			checked.map(function(b) {
				if(b.type=="checkbox")
					b.checked = false;
			});
		},
		/**
		* @param object el element to insert into
		* @param object ddItem element to include
		* @param boolean addToCart if true, force adding item to cart even if closed (2008-10-27) 
		*/
		addToAccordion : function(el, ddItem, addToCart, openAccordion) {
			
			var openedElement = YAHOO.util.Selector.query("#accordion dd.open .dropList, #accordion dd.toOpen .dropList", null, true)[0];

			if(typeof addToCart == "undefined") {
				if(typeof openedElement == "undefined") { // Keine Merkliste ge�ffnet?
					addToCart = true;
				}
				else {
					addToCart = false;
				}
			}
			
			// Verhindere bei Bedraf das �ffnen der Seitenleiste
			if(typeof openAccordion == "undefined") {
				openAccordion = true;
			}
			
			
			var istMerkliste = false;
			
			// Wenn kein Event vorhanden ist, muessen wir zwei Elemente manuell holen
			if(!el.dragEl){
				el.dragEl = YAHOO.util.Selector.query("div#ygddfdiv", null, true)[0];
			}
			// TODO checke, ob per DnD etwas in den WK (und nicht in ) geschoben wurde
			// 2009-09-11 wird �ber ein Icon (einen Link) etwas in den WK / ML geschoben
			// dann �ffne Seitenleiste nicht
			if(!addToCart && currentNotepad) {
				YAHOO.hmmh.Accordion.listAufmachen(openAccordion);
				el.updateElem = openedElement;
			}
			// abw. komp.
			if(!el.updateElem) {
				el.updateElem = openedElement;
			}
			// Befinden wir uns in einer Merkliste?
			if(!addToCart && YAHOO.util.Selector.query('#accordion dt.active .editable').length) {
				istMerkliste = true;
				var	nameMerkliste = YAHOO.util.Selector.query('#accordion dt.active .editable')[0].innerHTML.trim();
			}
			
			// Daten (hauptsaechlich den PK) holen
			info = YAHOO.hmmh.Accordion.findInfo(ddItem);
			// Aus dem JSON einen erweiterten String bauen. Alle Informationen aus einem REL werden hier verarbeitet
			// und im Query uebergeben
			var rel_str = "";
			if(typeof(info.JSONObj) == "object") {
				for(i in info.JSONObj) {
					if(i != 'noEselsohr' && i != 'pk') {
						rel_str += "&" + i + "=" + info.JSONObj[i];
					}
					/*if(i == 'imgURL') {
						if (ddItem.name=="fonts4render"){
							//nothing for now - important: DO NOT check against font-render-url here
						} else {
							ddItem.src = info.JSONObj[i];
						}
					}*/
					
				}
			}
			var productPk = info.pk;
			var fontName = null;
			var longDesc = YAHOO.hmmh.Marker.stripLongDesc(ddItem);
			var isFont = false;
			var postit = info.postit;
			
			if(
			YAHOO.hmmh.Util.isValid(info.isPackageDrop) || 
			YAHOO.hmmh.Util.isValid(info.cutsCount) || 
			YAHOO.hmmh.Util.isValid(info.singleDrop)) {
				isFont = true;
				if(info.fontName) {
					fontName = info.fontName;
				}
			}
			// Gucken, ob das Element bereits abgelegt ist bzw. abgelegt werden kann
			// entzerrt DD 2008-09-11
			if(!isFont && ddItem && ddItem.tagName && (ddItem.tagName.toLowerCase() == 'img'
				|| ddItem.tagName.toLowerCase() == 'a')) {
				//hier liegt der Hase im Pfeffer und daher aendern wir nichtmehr den productPk
				//productPk = YAHOO.hmmh.Marker.stripPk(ddItem);
				var sidethumbs = null;
				// Sonderzeichen beruecksichtigen
				for(clipthumb in YAHOO.hmmh.Marker.clipthumbs){
					if(productPk == clipthumb) {
						sidethumbs = YAHOO.hmmh.Marker.clipthumbs[clipthumb];
					}
				}
				if(sidethumbs &&
				sidethumbs.indexOf(nameMerkliste) != -1 &&
				!findClass(el.updateElem, 'warenkorb')) {
				
					// Item ist bereits abgelegt
					if(ddItem.tagName.toLowerCase() == 'img')
						el.targetBacklite.animate();
					return false;
				}
			}
		
			imgURL = info.imgURL;
			dogear = info.dogear;
			
			/**
			 * FIX for Fonts - Single or Package Drop possible
			 * 4)
			 */
			singleDrop = info.singleDrop;
			/**
			 * FIX for HD 885, must be distinguished whether unspecified drop or not
			 */
			cutsCount = info.cutsCount;
			
			/**
			 * FIX for background image, whether package Drop or not
			 */
			isPackageDrop = info.isPackageDrop;

			/**
			 * FIX for correct wrapper if subProduct is assigned to multiple ones
			 */
			wrapperPK = info.wrapperPK;
			
			realm = info.realm;


			// Die Elemente zuruecksetzen
			ddItem.style.border = "";
			if(el.dragEl) {
				el.dragEl.className = "";
				el.dragEl.innerHTML = '';
			}

			/**
			 * FIX for Fonts - Single Drop - set Border
			 */
			// not wanted as of HD 670
//			if (singleDrop!="") {
//				var surrDiv4El = $D.get("div4Overflow"+singleDrop);
//				if (surrDiv4El) {
//					surrDiv4El.setAttribute("style", "border: 2px solid #006FB9; overflow: hidden;");
//				}
//			}

	  		var updateElem = el.updateElem;
	  		// lokale Variablen...
			var targetBacklite = el.targetBacklite;
			// Braucht man mglw mal spaeter um Verlinkung nach direktem Drag Drop zu ermoeglichen
			// onclick=\"javascript:switchToDetailsPage(" + info.prodId + ", 'cart_inc', 'true', 'false');\"

			var switch2DetailsJS = ' onclick="switchToDetailsPage(' + productPk + ', '+"'cart_inc'"+', '+"'true'"+', '+"'false'"+');';
			// Param im rel fuer Bereich
			if (realm != null && realm != "" && (realm == "book" || realm == "studio")) {
				switch2DetailsJS = ' onclick="switchToOthersDetailsPage(' + productPk + ', '+"'cart_inc'"+', '+"'" + realm +"'"+');';
			}

			

			/**
			 * FIX for FONTS
			 */
			var checkedSrc = (ddItem.src?ddItem.src:imgURL);
			
			if (checkedSrc != null && checkedSrc.contains('size=layout'))
				var checkedSrc = checkedSrc.replace('size=layout', 'size=s');
			
			if (ddItem.name=="fonts4render" || (imgURL!=null && imgURL.contains("fonts.fontshop.de")) || isFont == true){
//				var defRenderText = "";
//				if (document.getElementById("renderTextDefault")!=null) {
//					defRenderText = document.getElementById("renderTextDefault").value;
//				}
//				var textToRender = "Ag";
//				if (document.getElementById("renderTextNotePad")!=null) {
//					textToRender = document.getElementById("renderTextNotePad").value;
//				}

//				checkedSrc = checkedSrc.replace('text='+textToRender, 'text='+defRenderText);
				
				checkedSrc = imgURL;	//(ddItem.src?imgURL:ddItem.src);// changed DD
				switch2DetailsJS = ' onclick="switchToDetailsPageFonts(' + productPk + ', '+"'cart_inc'"+', '+"'true'"+');';
				
				try {
					var varsArray = checkedSrc.split("&");
					if (null != varsArray) {
						var pathSplitStr = varsArray[1].replace("path=", "");
						var pathSplit = pathSplitStr.split("/");
						if (null == fontName) {
							fontName = pathSplit[pathSplit.length-1];
						}
						if (null == fontName) {
							fontName = "Bibliothek"
						}
					}
				} catch(u) {
					//
				}
				
			}
			
			var html2String = '';
			/* html2String += '<a href="javascript:;" class="imgLink-m pHelp">'; */
			 
			html2String += '<a href="javascript:;" class="imgLink-m pHelp">' 
						+ '<img id="wako'+ddItem.id+'" class="thumb newthumb" longDesc="' 
						+ (isFont ? longDesc : productPk) 
						+ '" src="' +checkedSrc+ '" ' 
						+ switch2DetailsJS + '" onload="YAHOO.hmmh.Accordion.updateSize(this);"'
						+ ' title="' + (YAHOO.hmmh.Util.isValid(fontName) ? ' '+fontName : '') +'">';
			/**
			 * FIX for background image, whether package Drop or not (placing)
			 */
 
			if(isPackageDrop == "true") {
				html2String = '<a href="javascript:;" class="imgLink-m pHelp">' 
						+ '<img id="wako'+ddItem.id+'" class="thumb newthumb isPackageDropImg" longDesc="' 
						+ (isFont ? longDesc : productPk) 
						+ '" src="' +checkedSrc+ '" ' 
						+ switch2DetailsJS + '" onload="YAHOO.hmmh.Accordion.updateSize(this);"' 
						+ ' title="' + (YAHOO.hmmh.Util.isValid(fontName) ? ' '+fontName : '') +'">';
			}
			if(isFont){
				html2String += '</a>';	
			}
			if(postit != ""){
				html2String += '<img class="' 
					+(isFont ? 'imageNoteFont' : 'imageNote')
					+ '" src="img/extendedNotepad/postit_active.png" title="zu diesem Produkt gibt es eine Notiz" alt="" />';
			} else {
				html2String += '<img class="' 
					+(isFont ? 'imageNoteFont' : 'imageNote')
					+ '" src="img/extendedNotepad/postit_default.png" title="" alt="" />';
			}
			if(!isFont){
				html2String += '</a>';	
			}
			html2String += '<p><a href="javascript:;" class="imgLink-m"><input name="dummy" type="checkbox"></a>';
			/**
			 * FIX for HD 885, must be distinguished whether unspecified drop or not => done via cutsCount
			 */
			if (cutsCount != null && isPackageDrop == "true") {
				html2String += "<a href=\"javascript:;\" rel=\"{ prodId : '" + productPk + "', cutsCount : '" + cutsCount + "', wrapperPK : '" + wrapperPK + "' }\" class=\"addToCart\" style=\" margin: 0 5px;\"><img width=\"16\" height=\"16\" src=\"img/icon_wk.gif\" alt=\"Warenkorb\"></a>";
			} else {
				if (isPackageDrop == "true") {
					html2String += "<a href=\"javascript:;\" rel=\"{ prodId : '" + productPk + "', wrapperPK : '" + wrapperPK + "' }\" class=\"addToCart\" style=\" margin: 0 5px;\"><img width=\"16\" height=\"16\" src=\"img/icon_wk.gif\" alt=\"Warenkorb\"></a>";
				} else if (cutsCount != null) {
					if (wrapperPK != null) {
						html2String += "<a href=\"javascript:;\" rel=\"{ prodId : '" + productPk + "', cutsCount : '" + cutsCount + "', wrapperPK : '" + wrapperPK + "'}\" class=\"addToCart\" style=\" margin: 0 5px;\"><img width=\"16\" height=\"16\" src=\"img/icon_wk.gif\" alt=\"Warenkorb\"></a>";
					} else {
						html2String += "<a href=\"javascript:;\" rel=\"{ prodId : '" + productPk + "', cutsCount : '" + cutsCount + "'}\" class=\"addToCart\" style=\" margin: 0 5px;\"><img width=\"16\" height=\"16\" src=\"img/icon_wk.gif\" alt=\"Warenkorb\"></a>";
					}
				} else {
					html2String += "<a href=\"javascript:;\" rel=\"{ prodId : '" + productPk + "'}\" class=\"addToCart\" style=\" margin: 0 5px;\"><img width=\"16\" height=\"16\" src=\"img/icon_wk.gif\" alt=\"Warenkorb\"></a>";
				}
			}
			
			html2String += "<a href=\"javascript:;\" class=\"removeFromWako\"><img width=\"16\" height=\"16\" src=\"img/icon_loeschen_ml.gif\" alt=\"Papierkorb\"></a></p>";

			// Kopieren wir ein Element oder fuegen neu hinzu?
			var copy = 0;
			if(findClass(ddItem, "copy")) {
				var copy = 1;
				var srcMerkliste = YAHOO.util.Selector.query(".merkzettelTitel span.editable")[0].innerHTML.trim();
			}

			/** 
			 * Diese Funktion ist zustaendig, den PK aus dem Request in die ID des productBlocks
			 * in der Merkliste einzustzen, damit wir den korrekten PK haben
			*/
			var replacePK = function(o) {
				// Damit die Fehler besser nachvollzogen werden koennen
				if(o && o.responseText && o.responseText.indexOf("<!-- begin exception.vm -->") != -1 && o.responseText.indexOf("Fehler :::") != -1) {
					// Was tun , wenns kracht?
					return false;
				}
					//window.location = "/";

				// Fuer den Warenkorb ist hier nichts zu tun.
				if(YAHOO.util.Selector.query("#accordion .open.warenkorb", null, true).length) return true;

				// Die Blocks holen und nur Blocks ohne ID ausgeben
				var blocks = YAHOO.util.Selector.query('#accordion .open li.dragItem');
				blocks = blocks.filter(function(b) {if(b.id) return false; return b;});

				if(blocks.length) {
					// Wenn noch welche vorhanden sind huengen wir die ID an den letzten dran
					var block = blocks[blocks.length-1];
					 //method will return null if no product can be found
					if (null != o.responseText.match(/[0-9]+/)) {
						block.id = o.responseText.match(/[0-9]+/)[0];
						$D.addClass(block, "productBlock");
						$D.addClass(block, "pk"+o.responseText.match(/[0-9]+/)[0]);
					}
				}
			}
			
			
			if(singleDrop != null && singleDrop.length() > 0 && isPackageDrop == true ){
				var formats = document.getElementsByName('pFontFormnat');
				for(var index=0; index<formats.length; index++) {
					if(formats[index].checked){
						rel_str = rel_str + "&format=" + formats[index].value;
						break;
					}
				}
			} 
			
			//Einsprungstelle wenn Produkt in den Warenkorb gelegt wurde
			if (productPk != "" && productPk != "FEHLER") {
				var waitWheel = YAHOO.util.Selector.query('#waitWheel')[0];
				var getWheelContainer = YAHOO.util.Selector.query('.ddBogenOben');
				$D.addClass(waitWheel,"waitWheelShow");
				
				// Den Request absetzen, Callback fuer success ist entweder Warenkorb neu laden fuer Merkliste oder PK ersetzen
				var addNotpad = $C.asyncRequest("POST", "" + (copy ? '/copy' : '/add' ) + "_entry.htm", 
				{success: 
						function(o) {
							if(istMerkliste) {
								replacePK(o);
							} else {
							 	if(YAHOO.util.Selector.query("#bestellprozessInhalt div#maxWarenkorb").length > 0) {
									// Im grossen WK machen wir 'nen reload => ueber location.href sonst popup durch den browser!!!
									window.location.href = document.URL;
									return;
								} 
								//cartContainer.innerHTML='';
								cartContainer.innerHTML='<div class="waitmsg">' + jsTexts["shoppingCart.loading"] + '</div>';
								YAHOO.hmmh.Accordion.updateCart(o);
								YAHOO.hmmh.Accordion.wakoAufmachen();
								// if element from extentend notepad
								if(YAHOO.util.Selector.query('.merkzettelTitel').length) {
									YAHOO.hmmh.extendedNotepad.transferWakoItems();
								} 
							}
							if(openAccordion) {
								YAHOO.hmmh.Accordion.acdnAufZiehen1();
							}
							
							$D.removeClass(waitWheel,"waitWheelShow");
							
						}

				}, (copy ? 'srcName=' + srcMerkliste + '&' : '') + "pk=" + encodeURI(productPk)+ (istMerkliste ? "&name=" + encodeURI(nameMerkliste) : "" ) + rel_str )
			}
			
			// Wenn es eine Animation gibt - zurueckfahren
			if(targetBacklite && istMerkliste)
				targetBacklite.animate();

			// Fuer die Merkliste: HTML hinzufuegen.
			if(istMerkliste) {
				if(updateElem) {
					var elm = document.createElement("li");
					elm.className="dragItem";
					
					/**
					 * FIX for background image, whether package Drop or not
					 */
						
					if (isPackageDrop == "true") {
						elm.className="dragItem isPackageDropBG";
					}
					
					//updateElem.innerHTML += html2String;
					
					elm.innerHTML = html2String;
					updateElem.appendChild(elm);
					
					YAHOO.hmmh.Marker.updateThumbs(); // noetig??
					YAHOO.hmmh.Marker.updateThumbs(1);
					YAHOO.hmmh.Marker.updateThumbs(2);
					
					
					
					//commented out because in freak cases like thesis classic (with 144 single buyable cuts), this may take
					// up to 10 seconds and freeze the browser	
						// Das letzte Bild aktualisieren
					imgs = YAHOO.util.Selector.query("img", elm);
					
					if(imgs.length >= 1) {
						var img = imgs[0];
						setTimeout(function() {
						YAHOO.hmmh.Marker.updateItem(img, false, isFont); 
						},10);
					}
					
					
					//YAHOO.hmmh.Accordion.initEvents()
					cartElements = YAHOO.util.Selector.query('.addToCart', elm); // scope changed!! DD
					$E.removeListener(cartElements, 'click', YAHOO.hmmh.Accordion.clickToAccordion);
					$E.addListener(cartElements, 'click', YAHOO.hmmh.Accordion.clickToAccordion);
					
					YAHOO.hmmh.Marker.updateClipboards();
				}

			/**
			 * FIX for Fonts: update Notepad Icon
			 * but only you are in the font section
			 */
				/*
				if(document.getElementById("mainColFonts")) {
					changeNotePadIcon2Green(pk);
				}*/
			}
			/**
			 * FIX for Fonts: update WaKo Icon
			 */
			else {
				/*if(document.getElementById("mainColFonts")) {
					changeWaKoIcon2Green(pk);
				}*/
			}

			// Hintergrund zuruecksetzen + "Hierher-ziehen"-Erklaerungsbild aktualisieren
			YAHOO.hmmh.Accordion.updateBackground();
			YAHOO.hmmh.removeFromShoppingCart.init();
			return true;
		},

		findInfo: function(ddItem) {
			// Hier werden die Informationen geholt. Das rel muss sich
			// in einem Tag befinden, welches die Klassen infoLink,
			// addToCart oder addToClipboard besitzt und zwischen dem
			// Drag-Element und document sitzt. Ansonsten im
			// Drag-Element selber.
			// Es gibt aber noch weitere Mueglichkeiten, den PK zu finden
			//alert('ddItem: ' + ddItem)
			if((infoLink = findClass(ddItem, 'infoLink')) ||
			(infoLink = findClass(ddItem, 'addToCart')) ||
			(infoLink = findClass(ddItem, 'addToClipboard'))) {
				infoLink = infoLink.rel;
			} else {
				if(ddItem.rel)
					infoLink = ddItem.rel;
			}

			// Wenn der infoLink da ist, wird er ausgewertet
			if(infoLink) {
				var JSONObj = YAHOO.hmmh.Util.stringToObj(infoLink);
			} else if(infoLink == undefined) {
				try {
				//in case the drop is faulty, try again
				if(ddItem.rel)
					infoLink = ddItem.rel;
				} catch(y) {
					//ignore
				}
			}
			
			var imgURL = "";
			var pk = "";
			var dogear = "";
			var rel_str = "";
			var singleDrop = ""; /* Fonts - Single or Package Drop possible */
			var cutsCount = null;
			var isPackageDrop = "false"; /* Background image, whether package Drop or not */
			var wrapperPK = "";
			var fontName = null;
			var realm = "";
			var postit = "";
			 
			// Wenn wir ein Objekt haben, wird es durchlaufen, die
			// Optionen werden dann an den rel_str gehaengt. Dieser
			// kommt auch in den Query mit rein
			if(typeof(JSONObj) == "object") {
				pk = JSONObj.prodId ? JSONObj.prodId : JSONObj.pk;
				imgURL = JSONObj.imgURL;
				dogear = JSONObj.dogear;
				
				if (JSONObj.singleDrop) {
					singleDrop = JSONObj.singleDrop;
				}
				if (JSONObj.fontName) {
					fontName = JSONObj.fontName;
				}
				if (JSONObj.cutsCount) {
					cutsCount = JSONObj.cutsCount;
				}
				if (JSONObj.isPackageDrop) {
					isPackageDrop = JSONObj.isPackageDrop;
				}
				if (JSONObj.wrapperPK) {
					wrapperPK = JSONObj.wrapperPK;
				}
				if (JSONObj.realm) {
					realm = JSONObj.realm;
				}
				
				for(i in JSONObj) {
					if(i != 'noEselsohr' && i != 'pk') {
						rel_str += "&" + i + "=" + escape(JSONObj[i]);
					 }
				}
				
				if(JSONObj.postit) {
					postit = JSONObj.postit;
				}
			}
			
			// Wenn es keinen PK gibt, haben wir noch mehr Mueglichkeiten
			if(pk=="") {
				// Wir suchen nach einm productBlock
				block = findClass(ddItem, 'productBlock');
				if(block) {
					// Wenn die Klasse pkNUMMER vorhanden ist, wird diese genommen
					if(block.className.match(/pk([0-9]+)/)) {
						pk = block.className.match(/pk([0-9]+)/)[1];
					} else {
						// Falls die ID des Blockes eine Nummer ist, nehmen wir die
						if(block.id.match(/([0-9]+)/))
							pk = block.id.match(/([0-9]+)/)[0];
					}
				}
			
			}

			// Wenn wir dann immer noch keinen PK haben, dann
			// gucken wir, ob es einen Kommentar direkt im
			// Elternelement des Drag-Lementes gibt, wo nur eine PK drin ist
			if(pk=="") {
				if (ddItem.origEl.parentNode.rel){
					pk = eval('(' + ddItem.origEl.parentNode.rel + ')').pk
				} else {
					pk = parseInt(ddItem.parentNode.innerHTML.split(" ")[1]) ? ddItem.parentNode.innerHTML.split(" ")[1] : "0";
				}
			}
			
			// Objekt zusammenbauen und zurueckgeben
			info = new Object();
			info.pk = pk;
			info.imgURL = imgURL;
			info.dogear = dogear;
			info.JSONObj = JSONObj;
			info.fontName = fontName;
			info.isPackageDrop = isPackageDrop;
			info.cutsCount = cutsCount;
			info.wrapperPK = wrapperPK; 
			info.realm = realm; 
			info.postit = postit;
			
			return info;
		},

		copyToCart : function() {
			block = findClass(this, 'dragItem');
			
			pk = YAHOO.hmmh.Accordion.findInfo(this).pk;

			/**
			 * Fix for addEntry package check
			 */
			cutsCount = YAHOO.hmmh.Accordion.findInfo(this).cutsCount;
			if (cutsCount != null && cutsCount != "" && cutsCount == "1") {
				singleDrop = pk; //same as pk, only set if this is a cut
			} else {
				singleDrop = '';
			}
		
			var i = YAHOO.util.Selector.query("#bestellprozessInhalt div#maxWarenkorb");
			
			nameMerkliste = YAHOO.util.Selector.query("#accordion dt.active .editable")[0].innerHTML.trim();
			copyEntry = $C.asyncRequest("POST", "/add_entry.htm", // changed copy => add
							{	success : function() { 
									if (i.length > 0) { 
										window.location.reload(); 
									} 
									else { 
										YAHOO.hmmh.Accordion.reloadCart();
										YAHOO.hmmh.Accordion.wakoAufmachen(); 
									}
								} 
							}, "sourceName=" + encodeURIComponent(nameMerkliste) + '&pk=' + pk + '&singleDrop=' + singleDrop );

		},



		countItems : function () {
			// Anzahl der Items in der Merkliste zuehlen
			return YAHOO.util.Selector.query('#accordion dd.open .dropList li, #accordion .inBewegung ul').length;
		},

		updateBackground : function() {
			if(this.countItems()) {
				$D.removeClass(YAHOO.util.Selector.query("#accordion .open ul, #accordion .inBewegung ul"), 'empty');
			} else {
				$D.addClass(YAHOO.util.Selector.query("#accordion .open ul, #accordion .inBewegung ul"), 'empty');
			}
		},
		/**
		 * @deprecated will be set by server
		 * Shows or hides background image of cart slot
		 * @param hide Force hiding of background
		 */
		updateCartBackground : function() {
			if(YAHOO.util.Selector.query("#accordion .open .rollbar p").length == 0) {
				$D.addClass(YAHOO.util.Selector.query("#accordion .open .rollbar"), 'background-image-wk');
				
			} else {
				$D.removeClass(YAHOO.util.Selector.query("#accordion .open .rollbar"), 'background-image-wk');
			}
		},

		/** 
		 * Laedt den Warenkorb per Ajax neu 
		 */
		reloadCart : function() {
			// Wir laden moeglicherweise bereits gerade
			if(YAHOO.hmmh.Accordion.updatingCart) return false;
			// imgs_pre wird im updateCart verwendet
			imgs_pre  = YAHOO.util.Selector.query('#accordion dd.warenkorb img.thumb');
			//cartContainer.innerHTML='';
			cartContainer.innerHTML='<div class="waitmsg">' + jsTexts["shoppingCart.loading"] + '</div>';
			if(YAHOO.env.ua.ie) {
				cartRequest = "POST";
			}
			$C.asyncRequest(cartRequest, '/cart_inc.htm', { 
					success: YAHOO.hmmh.Accordion.updateCart, 
					failure : function() {YAHOO.hmmh.Accordion.updatingCart = 0 } 
				}
			);
			YAHOO.hmmh.Accordion.updatingCart = 1;
		},
		/**
		 * Eventhandler nach Laden des Warenkorbs
		 */
		updateCart : function(o) {
			// replace cart content with response:
			//YAHOO.util.Selector.query('#accordion dd', null, true)[0].innerHTML = o.responseText;
			cartContainer.innerHTML = o.responseText;
			if(o && o.responseText && 
				(o.responseText.indexOf("<!-- begin exception.vm -->") != -1 
					|| o.responseText.indexOf("infoContent errorpage") != -1)) {
					window.parent.location.reload();
			}


			// Hoehen updaten (die Funktion aendert auch innerhalb des Warenkorbes)
			YAHOO.hmmh.Accordion.updateAvailableHeights();

			// Events erstellen fuer loeschen und waehlen aus der Selectbox
			YAHOO.hmmh.removeFromCart.createEvents();
			YAHOO.hmmh.updateUnits.createEvents();

			// Anzahl Artikel und den cartHeader holen
			count = YAHOO.util.Selector.query("#accordion #slot-0 p.productBlock").length;
			cartHeader = YAHOO.util.Selector.query('#accordion #warenkorb span')[0];
			if(cartHeader) {
				// Die Zahl im Header erstzen
				cartHeader.innerHTML = cartHeader.innerHTML.replace(/([0-9]+)/g, count);

				// Wenn wir mehr als 99 Produkte haben wir der Text zu gross und muss die Klasse small bekommen
				if(count > 99)
					$D.addClass(cartHeader, 'small');
				else
					$D.removeClass(cartHeader, 'small');
			}

			// Jetzige imgs holen
			imgs_post = YAHOO.util.Selector.query('#accordion dd.warenkorb img.thumb');

			// Marker-Cache fuer Warenkorb updaten
			YAHOO.hmmh.Marker.updateThumbs(1);
			YAHOO.hmmh.Marker.updateThumbs(2);
			
			// Alte und neue IMGs zusammenfuehren
			if(imgs_pre == null)
				imgs_pre = [];
			imgs = imgs_pre.concat(imgs_post);

			// Alle imgs updaten
			imgs.map(function(b) {
				YAHOO.hmmh.Marker.updateItem(b, false); // DD Omit calling updateThumbs() again
			});
			YAHOO.hmmh.Marker.updateClipboards();

			// Wir updaten nicht mehr!
			YAHOO.hmmh.Accordion.updatingCart = 0;
			
			//YAHOO.hmmh.Accordion.updateCartBackground(count >0);

			var proAnzList = YAHOO.util.Selector.query("input.productAnz");

			if(proAnzList.length > 0) {
				YAHOO.hmmh.Accordion.addInputRequest();
			}
			// Re-focus amount field (or cpu)
			if(YAHOO.hmmh.Accordion.anzPreId != null) {
				if(YAHOO.env.ua.ie >0) {
					window.focus();
				}
				$D.get(YAHOO.hmmh.Accordion.anzPreId).focus();
				$D.get(YAHOO.hmmh.Accordion.anzPreId).select();
				YAHOO.hmmh.Accordion.anzPreId = null;
			}
			if(YAHOO.util.Selector.query('.merkzettelTitel').length ) {
				YAHOO.hmmh.extendedNotepad.transferWakoItems();
			}
		},

		/** 
		 * Wrapper fuer das Hinzufuegen zum Warenkorb, 
		 * entweder per Klick oder per Drag&Drop 
		 */
		clickToAccordion : function(ev, el) {
			var ddElement;
			var addToCart = $D.hasClass(this, "addToCart");
			var addToClip = $D.hasClass(this, "addToClipboard");
			
			if(addToCart) {
				ddElement = YAHOO.util.Selector.query("#accordion dd")[0];
			} else if(addToClip) {
				// Wir haben auf ein addToClipboard geklickt
				if($D.hasClass(YAHOO.util.Selector.query("#accordion dd")[0], 'open')) {
					// Wenn der Warenkorb offen ist eine Merkliste oeffnen
				 	ddElement = YAHOO.util.Selector.query("#accordion dd")[1];
				 	YAHOO.hmmh.Accordion.listAufmachen(ev, openOnClick); // 2009-09-11 �ffne die Seitenleiste nicht mehr bei klick 
				} else {
					// Nur offene Merkliste holen
					ddElement = YAHOO.util.Selector.query("#accordion dd.open")[0];
				}
			}

			// ddElement, in welches eingefuegt werden soll + Element,
			// das eingefuegt werden soll, uebergeben
			YAHOO.hmmh.Accordion.addToAccordion(ddElement, this, addToCart, openOnClick);
			copyIcons = YAHOO.util.Selector.query('#accordion dd .copyToCart');
			$E.on(copyIcons, "click", YAHOO.hmmh.Accordion.copyToCart);
		},
		
		// TODO:
		// Dieses Event muss dann aufgerufen werden, wenn ein Element im erweiterten Warenkorb umsortiert wird,
		// hier wird aber sicher noch gebaut!

		sort : function(element, pos) {
			pos = YAHOO.hmmh.DDBilderliste.sortBoxes.indexOf(pos.id);

			nameMerkliste = YAHOO.util.Selector.query(".merkzettelTitel strong b")[0].trim();

			pk = YAHOO.hmmh.Accordion.findInfo(element).pk;

			if(pos == -1 || !nameMerkliste || !pk) return false;

			//copyEntry = $C.asyncRequest("POST", "/notepad_sort.htm", null, "name=" + encodeURIComponent(nameMerkliste) + '&pk=' + pk + '&index=' + pos);
		},
		
		/**
		 * This function is needed for IE 6/7 only; resizing the thumb to original width / height ratio 
		 * @author DD
		 * @version 2008-10-06
		 */
		updateSize : function(img) {
			if(!YAHOO.env.ua.ie >0) {
				return;
			}
			var width;
			var height;
			if(img.width <= 0) {
				// since IE does not know the size of hidden images we resize hidden thumbs with a dummy image
				var dummy = new Image();
				dummy.src = img.src;
				
				width = dummy.width;
				height = dummy.height;
				dummy = null;
			}
			else {
				width = img.width;
				height = img.height;
			}
			
			/*
			 * Lazy-Initialization of Thumb size; the max size of images is read only once
			 * to prevent the images fromm getting smaller and smaller (IE reloads images on each DOM change)
			 * */
			if(maxWidth == null || typeof maxWidth == "undefined") {
				if(YAHOO.env.ua.ie >6) {
					maxWidth = YAHOO.util.Dom.getStyle(img,"max-width"); // IE 7
				}
				else {
					maxWidth = YAHOO.util.Dom.getStyle(img,"width"); // IE 6
				}
				if(maxWidth == null) {
					maxWidth = width >height ? width : height;
				}
				maxWidth = parseInt(maxWidth);
			}
			
			if(maxWidth>=width && maxWidth >= height) {
				return;
			}
			if(width >height) {
				img.style.width = maxWidth +"px";
				img.style.height= parseInt(maxWidth * height/width) + "px";
			}
			else {		
				img.style.height = maxWidth +"px";
				img.style.width= parseInt(maxWidth * width/height) +"px";
			}
		}
		
	};
}();
		
if(YAHOO.env.ua.ie >0) {
	$E.onContentReady("accordion", YAHOO.hmmh.Accordion.init, YAHOO.hmmh.Accordion, true);
}
else {
	$E.on(window, 'load', YAHOO.hmmh.Accordion.init, YAHOO.hmmh.Accordion, true);
}
