/**
 * autor: joachim.kliemann
 */
if (!YAHOO.hmmh) YAHOO.namespace("hmmh");

YAHOO.hmmh.extendedNotepad = function() {

	return {
		init : function() {
			if(YAHOO.util.Selector.query('.merkzettelTitel').length) {
				YAHOO.hmmh.extendedNotepad.removeNotepad();
				YAHOO.hmmh.extendedNotepad.checkNotepad();
				YAHOO.hmmh.extendedNotepad.initPostIt();
				YAHOO.hmmh.extendedNotepad.transferWakoItems();
			} else if(YAHOO.util.Selector.query('#maxWarenkorb').length) {
				YAHOO.hmmh.extendedNotepad.removeCart();
				YAHOO.hmmh.extendedNotepad.addInputRequest();
			}
		},
		
		initAccordion : function() {
			YAHOO.hmmh.Accordion.listAufmachen();
		},
		
		addInputRequest : function() {
			quantityInput = YAHOO.util.Selector.query('.anzahl', 'maxWarenkorb');
			$E.on(quantityInput, 'change', YAHOO.hmmh.extendedNotepad.changeQuantity);
			$E.on(quantityInput, 'blur', YAHOO.hmmh.extendedOverview.changeQuantity);
			$E.on(quantityInput, 'keyup', YAHOO.hmmh.extendedOverview.changeQuantity);
		},

		changeQuantity : function(ev, el) {
			var regdigit = /^\d+$/
			value = this.value;
			pk = this.id;
			if(value.search(regdigit)==-1) {return false}
			$C.asyncRequest("POST", "/edit_entry.htm", { success : function() { if(ev) window.location.reload() } }, "entryPK=" + escape(pk)+ "&quantity=" + escape(value));
		},

		sendCoupon : function(ev, el) {
			if(ev){
				$E.stopEvent(ev);
			}	
			
			input = YAHOO.util.Selector.query('#couponCode', 'maxWarenkorb', true)[0];

			if(!$D.hasClass(input, 'changed')) return true;

			code = input.value;

			input.value = '';

			// Achtung: hier wird nur bei einem Event auf den Link neu geladen!
			if(code){
				$C.asyncRequest("POST", "/redeemVoucher.htm", { success : YAHOO.hmmh.extendedNotepad.showErrors  }, "code=" + escape(code));
			}					
		},

		showErrors : function(o){
            YAHOO.util.Selector.query('#voucherRow', null, true)[0].innerHTML = o.responseText;
            if(YAHOO.util.Selector.query('#errors', null, true)[0] == null) {
            	window.location.reload();
            }
        },

		sendProduct : function(ev, el) {
			if(ev) {
				$E.stopEvent(ev);
			}
			input = YAHOO.util.Selector.query('#productCode', 'maxWarenkorb', true)[0];

			if(!$D.hasClass(input, 'changed')) {
				return true;
			}	

			pk = input.value;

			input.value = '';

			// Achtung: hier wird nur bei einem Event auf den Link neu geladen!
			if(pk) {
				$C.asyncRequest("POST", "/add_entry.htm", { success : function() { if(ev) window.location.reload() } }, "pk=" + escape(pk));
			}	
		},

		removeCart : function() {
			head = YAHOO.util.Selector.query('#accordion dt', null, true)[0];
			body = YAHOO.util.Selector.query('#accordion dd', null, true)[0];
			$D.addClass(head, "invisible");
			$D.addClass(body, "invisible");
			//YAHOO.hmmh.Accordion.updateAvailableHeights();
			//YAHOO.hmmh.Accordion.listAufmachen();
		},

		removeNotepad : function() {
			if(typeof YAHOO.util.Selector.query("#extendedNotepad b")[0] == "undefined") {
				return false
			} else {
				title = YAHOO.util.Selector.query("#extendedNotepad b")[0].innerHTML;
			}
			heads = YAHOO.util.Selector.query("#accordion dt span.editable");
			
			heads = heads.filter(function(b) {
				if(b.innerHTML == title) {
					return true;
				} else {	
					return false;
				}	
			});

			if(heads.length != 1) {
				return false;
			}	

			head = heads[0];

			do {
				head = head.parentNode;
			} while(head.parentNode && head.tagName.toLowerCase() != 'dt');

			body = YAHOO.hmmh.Accordion.getNextSibByTag(head, 'dd');

			$D.removeClass(head, "active");
			$D.removeClass(body, "open");

			$D.addClass(head, "invisible");
			$D.addClass(body, "invisible");

			cartHead = YAHOO.util.Selector.query("#accordion dt")[0];
			cartBody = YAHOO.util.Selector.query("#accordion dd")[0];

			$D.addClass(cartHead, "active");
			$D.addClass(cartBody, "open");
			YAHOO.hmmh.Accordion.updateAvailableHeights();
		},
		
		initPostIt : function(){
			if(YAHOO.util.Selector.query('div.enablePostit').length == 0){
				var notelist = YAHOO.util.Selector.query("#liste img.imageNote[longdesc]")
			} else {
				var notelist = YAHOO.util.Selector.query("#liste img.imageNote");
			}
			$D.generateId(notelist, 'addPostItId-');
			$E.on(notelist, 'click', YAHOO.hmmh.extendedNotepad.showPostIt, true);
		},
		
		showPostIt : function(e){
			YAHOO.hmmh.postit = new YAHOO.widget.Overlay("postitLayer",
				{
				context:[this.id,"tl","bl"],
				constraintoviewport : false,
				draggable: false,
				visible : false
				}
			 );
			YAHOO.hmmh.postit.render();
			if(YAHOO.env.ua.ie >0){
				YAHOO.util.Selector.query("#postitLayer textarea")[0].value = this.longDesc;
			}else{
				YAHOO.util.Selector.query("#postitLayer textarea")[0].value = this.getAttribute("longdesc");	
			}
			
			var getMiniImageSrc = $D.getPreviousSibling(this);
			getMiniImageSrc = $D.getFirstChild(getMiniImageSrc).src;
			$D.get("miniImage").src = getMiniImageSrc;
			YAHOO.hmmh.postit.show();
			
			$D.setStyle("postitLayer", "opacity", "0");
			showOverlay = new $A("postitLayer", { opacity: { to: 1 } }, .6 );
			showOverlay.animate();
			
			showOverlay.onComplete.subscribe(function() {
				// disable textarea if the extendeted notepad sent to you from other users 
				var textareaElm = YAHOO.util.Selector.query("#postitLayer textarea")[0];
				if(YAHOO.util.Selector.query('div.enablePostit').length == 0){
					textareaElm.blur();
					textareaElm.setAttribute('readonly', 'readonly');
					textareaElm.setAttribute('onclick', 'this.blur()');
				}else{
					textareaElm.focus();
				} 
				$E.on(document.getElementsByTagName("body")[0], 'click', YAHOO.hmmh.extendedNotepad.closePostIt);
			});
			$E.on("addPostitNote", "click", YAHOO.hmmh.extendedNotepad.addPostIt, this);
			$E.on("cancelPostitLayer", 'click', YAHOO.hmmh.postit.hide, YAHOO.hmmh.postit, true);	
		},
		
		closePostIt : function(e,reload){
			var elTarget = YAHOO.util.Event.getTarget(e);
			
			if(elTarget) {
				if(!findID(elTarget, "postitLayer")|| findID(elTarget, "cancelPostitLayer")|| findID(elTarget, "addPostitNote")) {
		    		if(YAHOO.hmmh.postit) {	
		    			if($D.hasClass(elTarget, "imageNote")){
		    				YAHOO.hmmh.extendedNotepad.showPostIt;
		    			} else{
			    			$E.removeListener("cancelPostitLayer");
							$E.removeListener("addPostitNote");
							YAHOO.hmmh.postit.hide();
							$E.removeListener(document.getElementsByTagName("body")[0]);
							
							if(reload == 1){
								window.location.href = window.location.href;
							}
		    			}
		    		}
				}
			}
		},
		
		addPostIt : function(e, obj){
			// IE
			if(YAHOO.env.ua.ie >0) {
			obj.longDesc = YAHOO.util.Selector.query("#postitLayer textarea")[0].value;	
			var imageComment = obj.longDesc;
			} else {
			obj.setAttribute("longdesc", YAHOO.util.Selector.query("#postitLayer textarea")[0].value);
			var imageComment = obj.getAttribute("longdesc");	
			}
			var notepadEntryPk = obj.getAttribute("alt");
			if (imageComment != "" && imageComment != "undefined"){
				obj.src = "img/extendedNotepad/postit_active.png";
				obj.title = "PostIt bearbeiten";
			} else {
				obj.src = "img/extendedNotepad/postit_default.png";
				obj.title = "PostIt anlegen";
			}
			
			YAHOO.util.Selector.query("#postitLayer textarea")[0].value = "";
			YAHOO.util.Connect.asyncRequest("POST", "/add_comment.htm", {success: YAHOO.hmmh.extendedNotepad.closePostIt(1)} , "notepadEntryPk=" + escape(notepadEntryPk)+ "&comment=" + imageComment);
		},
		
		findIndex : function(e) {
			return e.options[e.selectedIndex].value;
		},
		
		transferWakoItems : function() {
			var cartThumbsTemp = YAHOO.hmmh.Marker.cartthumbs; 
			var extendedWakoElements = YAHOO.util.Selector.query("#liste a.addToCart");
			for(var i=0,j=extendedWakoElements.length; i<j ; i++) {
				$D.getFirstChild(extendedWakoElements[i]).src = YAHOO.hmmh.Marker.iconCartInactive;
				var JSONObj = YAHOO.hmmh.Util.stringToObj(extendedWakoElements[i].rel);
				if(cartThumbsTemp == null || cartThumbsTemp.length <= 0){
					return false;
				}
				for(var m=0,n=cartThumbsTemp.length; m<n ; m++) {
					if (JSONObj.wpk){
						if (JSONObj.wpk == cartThumbsTemp[m]){
							$D.getFirstChild(extendedWakoElements[i]).src = YAHOO.hmmh.Marker.iconCartActive;
						}	
					} else {
						if (JSONObj.pk == cartThumbsTemp[m]){
							$D.getFirstChild(extendedWakoElements[i]).src = YAHOO.hmmh.Marker.iconCartActive;
						}
					}
				}
				
			}
			
		},
		
		checkNotepad : function() {
			if(YAHOO.util.Selector.query('div.enablePostit').length != 0){
				return false;
			} else {
				var getPostit = YAHOO.util.Selector.query("#liste img.imageNote");
				for(var i=0,j=getPostit.length; i<j ; i++) {
					if (getPostit[i].getAttribute('longdesc') != ""){
						getPostit[i].title = "Postit zeigen";
					} else {
						getPostit[i].title = "Kein Postit vorhanden";
						$E.removeListener("click");
					}
				}	
			}
		}
		
	};

}();


$E.on(window, 'load', YAHOO.hmmh.extendedNotepad.init, YAHOO.hmmh.extendedNotepad, true);
