/*Use YUI Compressor [http://developer.yahoo.com/yui/compressor/] to create a minified and obfuscated version of this file as basic-min.js
java -jar yuicompressor-2.4.2.jar basic.js -o basic-min.js --preserve-semi
*/
YUI.namespace('OLS');

function showSite(){ // outside of namespace because it is called by homepage intro movie flash
	YUI().use('node', 'anim', function(Y){
		YUI.OLS.IntroMovieController = (function(){
			return {
				initialize: function(){

					var fadeout = new Y.Anim({
						node: '#introContainer',
						to: {
							opacity: 0
						},
						duration: 0.5
					});

					document.getElementById('container').style.display = 'block';
					document.getElementById('intro').style.display = 'none';
					fadeout.run();
					fadeout.on('end', function(){
						document.getElementById('introContainer').style.display = 'none';
					})

					delete YUI.OLS.IntroMovieController.initialize;
					delete arguments.callee;
				}
			}
		})();
		Y.on("contentready", function(elm) {
			YUI.OLS.IntroMovieController.initialize();
		}, "#introContainer", Y, Y.get("#introContainer"));
	});
}

YUI().use("node", function(Y){
	if (Y.UA.ie != 0 && Y.UA.ie < 7) {
		YUI.OLS.HoverController = (function(){
			return {
				initialize: function(){
					Y.all(".ieover").each(function(elm){
						elm.on("mouseover", function(e){
							elm.addClass("hover");
						});
						elm.on("mouseout", function(e){
							elm.removeClass("hover");
						});
					});

					delete YUI.OLS.HoverController.initialize;
					delete arguments.callee;
				}
			}
		})(); // [HoverController]
		Y.on("domready", function(){
			YUI.OLS.HoverController.initialize();
		});
	}
});

YUI().use('node', 'cookie', function(Y){

	YUI.OLS.ViewController = (function(){
		var container, elmContent, trGridView, trSingleView, listname, viewType;

		var setViewCookie = function (type) {
			if(type == viewType) {
				return;
			}

			viewType = type;
			if (Y.Cookie.exists("viewType")) {
				Y.Cookie.remove("viewType");
			}
			Y.Cookie.set("viewType", viewType, {
				path: '/'
			});
		};

		return {
			initialize: function(){
				container = Y.get("div.js_pageviewcontrol");
				elmContent = Y.get("ul.js_pageviewtarget");
				if (!container || !elmContent) {
					return;
				}
				listname =  elmContent.get('id');
				trGridView = container.query("a.viewGrid");
				trSingleView = container.query("a.viewSingle");
				viewType = trGridView.hasClass('viewGridActive') ? "grid" : "single";

				trGridView.on("click", (function(e){
					e.preventDefault();
					elmContent.addClass("gridView");
					elmContent.removeClass("singleView");

					trGridView.addClass("viewGridActive");
					trSingleView.removeClass("viewSingleActive");
					setViewCookie("grid");
				}));
				trSingleView.on("click", (function(e){
					e.preventDefault();
					elmContent.addClass("singleView");
					elmContent.removeClass("gridView");

					trSingleView.addClass("viewSingleActive");
					trGridView.removeClass("viewGridActive");
					setViewCookie("single");
				}));

				delete YUI.OLS.ViewController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [ViewController]
	Y.on("domready", (function(){
		var elm = Y.all(".js_pageviewcontrol");
		if (elm.size() > 0) {
			YUI.OLS.ViewController.initialize();
		}
	}));
});

YUI({
	base: '/extensions/lib/yui_3/build/'
}).use('node', 'overlay', 'plugin', 'io', 'json', function(Y){

	YUI.OLS.DialogController = (function(){
		var elmBody, dimOverlay, someDlgOpen = false;
		var arrDialogs = [];
		var options = {x: 0, y: 70};

		var resizeDialog = (function(ovl){
			var reg = ovl.get('contentBox').get('region');
			ovl.get('boundingBox').setStyles({'height': reg.height + "px", 'width': reg.width + "px"});
			ovl.set("y", options.y)
		});

		var createDialog = (function(elm, idx, show){
			if (!elm) {
				return;
			}

			var boxwidth = elm.getStyle('width');
			boxwidth = boxwidth.substr(0,boxwidth.length - 2);
			var x = elm.get('viewportRegion').width/2 - boxwidth/2;

			var elmDialog = new Y.Overlay({
				contentBox: elm,
				close: false,
				xy: [x, options.y],
				zIndex: 800 + idx,
				draggable: true,
				visible: false,
				SECTION_CLASS_NAMES: {
					header: 'hd',
					footer: 'ft',
					body: 'bd'
				}
			});

			elmDialog.render();
			if (show) {
				YUI.OLS.DialogController.showDialog(elm.get('id'));
			}

			elm.queryAll("a.js_dlgclose").on("click", (function(e){
				e.preventDefault();
				YUI.OLS.DialogController.hideDialog(elmDialog);
				//reload flash content in layer for IE, the evil way...
				var scriptBlocks = elm.all("script");
				if (Y.UA.ie && scriptBlocks.size() > 0) {
					scriptBlocks.each(function(block){
						if (block.get("innerHTML").indexOf("swfobject.embedSWF") !== -1) {
							eval(block.get("innerHTML"));
						}
					});
				}
			}));

			return elmDialog;
		});

		return {
			showDialog: function(eid){
				if (eid) {
					var currOverlay = Y.Widget.getByNode(Y.get('#' + eid));
					if (!currOverlay) {
						try {
							YUI.OLS.DialogController.registerDialog(eid);
							return;
						}
						catch (err) {
							//alert(err);
							return;
						}
					}
					Y.each(arrDialogs, function(elm){
						if (elm) {
							elm.hide();
						}
					});
					resizeDialog(currOverlay);
					elmBody.addClass("masked");
					currOverlay.get('contentBox').setStyle('display', 'block');
					currOverlay.show();
					someDlgOpen = true;
					Y.fire('dialog:opened', currOverlay);
				}
			},
			hideDialog: function(elm){
				if (typeof elm == "string") {
					var dlg = Y.Widget.getByNode(Y.get('#' + dlg));
					if (!dlg) {
						try {
							var dlg = YUI.OLS.DialogController.registerDialog(elm);
						}
						catch (err) {
							//alert(err);
							return;
						}
					}
				}
				else {
					var dlg = elm;
				}

				if (dlg) {
					Y.each(arrDialogs, (function(elm, idx){
						if(elm) {
							elm.hide();
						}
					}));
					dlg.get('contentBox').setStyle('display', 'none');
					someDlgOpen = false;
					Y.fire('dialog:closed', dlg);
				}
				elmBody.removeClass("masked");
			},
			registerDialog: function(eid){
				elmBody = elmBody || Y.get('body');
				dimOverlay = dimOverlay || Y.get("#dimOverlay") || elmBody.appendChild(Y.Node.create('<div id="dimOverlay"></div>'));
				var dlg = createDialog(Y.get('#' + eid), arrDialogs.length, true);
				arrDialogs.push(dlg);
				return dlg;
			},
			removeDialog: function(eid){
				if (eid) {
					var currOverlay = Y.Widget.getByNode(Y.get('#' + eid));
					if (currOverlay) {
						Y.get('#' + eid).ancestor('div').remove();
						arrDialogs.splice(Y.Array.indexOf(arrDialogs, currOverlay), 1);
					}
				}
			},
			isSomeDlgOpen: function() {
				return someDlgOpen;
			},
			initialize: function(){
				elmBody = Y.get('body');
				var container = Y.all("div.js_dialogBox");
				if (container.size() < 0) {
					return;
				}

				dimOverlay = dimOverlay || Y.get("#dimOverlay") || elmBody.appendChild(Y.Node.create('<div id="dimOverlay"></div>'));
				container.each(function(elm, idx){
					elmBody.appendChild(elm);
					var dlg = Y.Widget.getByNode(elm) ? Y.Widget.getByNode(elm) : createDialog(elm, idx, false);
					arrDialogs.push(dlg);
				});

				var arrDialogTrigger = Y.all("a.js_dlg");
				if (arrDialogTrigger.size() > 0) {
					arrDialogTrigger.each(function(elm, idx){
						elm.on("click", (function(e){
							e.preventDefault();
							e.target.blur();
							var targetID = (elm.get('hash')) ? elm.get('hash').substr(1) : false;
							YUI.OLS.DialogController.showDialog(targetID);
						}));
					});
				}

				Y.all(".dialogContainer .js_dlgclose").on("click", (function(e){
					e.preventDefault();
					var dlg = e.target.ancestor('.dialogBox').get('id');
					YUI.OLS.DialogController.hideDialog(dlg);
				}));

				delete YUI.OLS.DialogController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [DialogController]

	Y.on("domready", (function(){
		var elms =  Y.all('.js_dialogBox,.js_dlg');
		if(elms.size() > 0) {
			YUI.OLS.DialogController.initialize();
		}
	}));
	Y.on("available", function () {
		Y.on("dialog:opened", function(e) {
			if(e.get('contentBox').get('id') == "dlg_stylingTipp") {
				YUI.OLS.ProductFlashController.reloadStyleTippFlash();
			}
		});
	}, "#dlg_stylingTipp", Y);

});

YUI().use('node', function(Y){

	YUI.OLS.ProductFlashController = (function(){

		var initSwfObject = (function(o){
			if (Y.get('#' + o.container)) {
				swfobject.embedSWF(o.flashURL, o.container, o.width, o.height, o.minVersion, false, o.config, o.params);
			}
		});

		var initFlashSwitcher = (function(elm, o){

			var flashSwitcher = elm ? elm.queryAll("img") : false;
			if (flashSwitcher) {
				flashSwitcher.each(function(elm, idx){
					elm.on("click", function(e){
						e.preventDefault();
						flashSwitcher.each(function(el){
							el.ancestor("li").removeClass("active");
						});
						e.target.ancestor("li").addClass("active");
						swfobject.embedSWF(o.flashURL, o.container, o.width, o.height, o.minVersion, false, {
							configFile: o.configFile[idx]
						}, o.params);
					});
				});
			}
		});
		return {
			reloadStyleTippFlash: function () {
				if (styleTippFlashData) {
					 initSwfObject(styleTippFlashData);
				}
			},
			initialize: function(elm){
				if (productFlashData) {
					initFlashSwitcher(elm, productFlashData);
				}

				delete YUI.OLS.ProductFlashController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [ProductFlashController]
	Y.on("available", function () {
		YUI.OLS.ProductFlashController.initialize(this.get('#js_flashSwitcher'));
	}, "#js_flashSwitcher", Y);

});


YUI().use('node', 'cookie', 'plugin', function(Y){

	YUI.OLS.CategoryListController = (function(){

		var initImageSwitcher = function (li) {
			var switchSrc = function(switchTarget, to) {
				switchTarget.set('src', to);
			},
				thumbs = li.queryAll('.js_imgSwitch');
			if (thumbs && thumbs.size() > 1) {
				Y.each(thumbs, (function(thumb, idx){
					var switchTarget = thumb.ancestor('li.box').query('a img.productImg'),
						originalSrc = switchTarget.get('src');
					thumb.on('mouseover', function(e) {
						if (switchTarget.size() > 0) {
							switchSrc(switchTarget, thumb.get('name'));
						}
					});
					thumb.on('mouseout', function(e) {
						if (switchTarget.size() > 0 && originalSrc) {
							switchSrc(switchTarget, originalSrc);
						}
					});
				}));
			}
		};

		/*var initInfoBox = function(li) {
			var infoBoxLink = li.query('.js_moreInfoLink'),
				infoBox = li.query('.js_moreInfoBox');
			if (infoBoxLink.size() > 0 && infoBox) {
				infoBoxLink.on('mouseover', function(e) {
					infoBox.setStyle('display','block');
				});
				infoBoxLink.on('mouseout', function(e) {
					infoBox.setStyle('display','none');
				});
				infoBox.on('mouseover', function(e) {
					infoBox.setStyle('display','block');
				});
				infoBox.on('mouseout', function(e) {
					infoBox.setStyle('display','none');
				});
			}
		}*/

		return {
			initialize: function(elm){
				if (elm) {
					var listItems = elm.item(0).queryAll('li.box');
					Y.each(listItems, (function(li, idx){
						initImageSwitcher(li);
						/*initInfoBox(li);*/
					 }));
				}
				delete YUI.OLS.CategoryListController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [CategoryListController]
	Y.on("domready", (function(){
		var elm = Y.all(".js_categoryList");
		if (elm.size() > 0) {
			YUI.OLS.CategoryListController.initialize(elm);
		}
	}));
});



YUI().use('node', 'cookie', 'plugin', function(Y){

	YUI.OLS.SizeSelectController = (function(){

		var createSizeSelector = (function(elm){

			var s2SizeSelect = function(config){
				var ow = config.host;

				var setSize = (function(newSize, lnk, idx){
					var sizeCookie = Y.Cookie.get("ols_size");
					var options = sizeSelector.get('options');
					var selIndex = sizeSelector.get("selectedIndex"), oldSize = options.item(selIndex).get('value');
					if (newSize != oldSize) {
						options.item(selIndex).selected = false;
						Y.Node.getDOMNode(options.item(idx+1)).selected = true;
						sizeLis.removeClass("active");
						lnk.addClass("active");
					}

					if (!sizeCookie || sizeCookie != newSize) {
						if (sizeCookie) {
							Y.Cookie.remove("ols_size");
						}
						Y.Cookie.set("ols_size", newSize, {
							path: '/'
						});
						sizeCookie = newSize;
					}
				});

				if (ow) {
					var sizeSelector = ow.query("select");
					ow.query("fieldset").setStyle("display", "none");
					var sizeLis = ow.queryAll("ul>li");
					ow.query("ul").setStyle("visibility", "visible");

					sizeLis.each(function(elm,idx){
						elm.on("click", function(e) {
							e.preventDefault();
							var size = Y.Lang.trim(e.target.get('text'));
							setSize(size, elm, idx);
						});
					});
				}
			};
			s2SizeSelect.NAME = "s2SizeSelect";
			s2SizeSelect.NS = "s2siz";
			s2SizeSelect.prototype = {};
			elm.plug(s2SizeSelect);

		});

		return {
			initialize: function(elms){
				var sizeListContainer = elms;
				if (sizeListContainer) {
					Y.each(sizeListContainer, (function(elm, id){
						createSizeSelector(elm);
					}));
				}
				delete YUI.OLS.SizeSelectController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [SizeSelectController]
	Y.on("domready", (function(){
		var elm = Y.all(".js_sizeSelect");
		if (elm.size() > 0) {
			YUI.OLS.SizeSelectController.initialize(elm);
		}
	}));
});


YUI().use('node', 'plugin', function(Y){

	YUI.OLS.TabBoxController = (function(){
		var container;

		var createTabbox = (function(elm){
				var ow = elm;
				var tbTabs = [], tbTabLabels = [], tbContents = [];

				var toggleSelecedTab = (function(tab){
					if (tab.hasClass('tab')) {
						tbTabs.each(function(elm, idx){
							if (elm == tab) {
								elm.addClass("selected");
							}
							else {
								elm.removeClass("selected");
							}
						});
					}
				});
				var getTabPosition = (function(idx){
					var x = idx, pos = 0, prevtab = null;
					while (x > 0) {
						x--;
						prevtab = tbTabLabels.item(x);
						pos += prevtab.get('scrollWidth');
						getTabPosition(x);
					}
					return pos
				});

				var toggleHoverStatus = (function(e){
					var tab = e.currentTarget.ancestor('li.tab');
					if(tab) {
						tab.toggleClass('over');
					}
				});

				if (ow) {
					ow.addClass("tabboxProcessed");
					tbTabs = ow.queryAll("li.tab");
					tbTabLabels = ow.queryAll("li.tab > h4");
					tbContents = ow.queryAll("li.tab > .tabContent");
					if (tbTabs.size() == 0 || tbTabs.size() != tbContents.size()) {
						return;
					}

					tbTabLabels.each(function(elm, idx){
						if (idx > 0) {
							var tpos = getTabPosition(idx);
							elm.setStyle("left", tpos + 'px');
						}
					});
					tbTabs.on("click", function(e){
						var tab = e.currentTarget;
						toggleSelecedTab(tab);
					});
					tbTabLabels.on("mouseover", function(e){
						toggleHoverStatus(e);
					});
					tbTabLabels.on("mouseout", function(e){
						toggleHoverStatus(e);
					});

				}
		});

		return {
			initialize: function(elm){
				container = elm;
				if (!container) {
					return;
				}
				createTabbox(container);

				delete YUI.OLS.TabBoxController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [TabBoxController]
	Y.on("available", function (box) {
		YUI.OLS.TabBoxController.initialize(this.get('#js_detailTabbox'));
	}, "#js_detailTabbox", Y);
});


YUI().use('node', 'plugin', function(Y){

	YUI.OLS.PrefilledFormFieldsController = (function(){

		var createPrefill = (function(elm){

			var s2Prefill = function(config){
				var field = config.host, defaultvalue = field.get('defaultValue');

				if (field) {
					field.on("focus", function(e){
						if (field.get('value') == defaultvalue) {
							field.set('value', '');
						}
					});
					field.on("blur", function(e){
						if (field.get('value') == '') {
							field.set('value', defaultvalue);
						}
					});
				}
			};
			s2Prefill.NAME = "s2Prefill";
			s2Prefill.NS = "s2pre";
			elm.plug(s2Prefill);
		});

		return {
			initialize: function(elms){
				//elm = inputfelder
				elms.each(function(elm){
					createPrefill(elm);
				});

				delete YUI.OLS.PrefilledFormFieldsController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [PrefilledFormFieldsController]
	Y.on("domready", (function(){
		var elm = Y.all('.js_prefilled');
		if (elm.size() > 0) {
			YUI.OLS.PrefilledFormFieldsController.initialize(elm);
		}
	}));
});


YUI().use('node','anim', function(Y){

	YUI.OLS.PopupController = (function(){

		var openPopup = (function(obj){
			var pop = window.open(obj.url, "olsen", "width=" + obj.width + ",height=" + obj.height + ",left=" + obj.left + ",top=" + obj.top + ",location=" + obj.location + ",menubar=" + obj.menubar + ",resizable=" + obj.resizable + ",scrollbars=" + obj.scrollbars + ",status=" + obj.status + ",toolbars=" + obj.toolbars)
		});

		return {
			openPopup: function(url, type){
				var obj = {
					width: 600,
					height: 500,
					url: url,
					left: 100,
					top: 100,
					location: 'no',
					menubar: 'no',
					resizable: 'yes',
					scrollbars: 'no',
					status: 'yes',
					toolbar: 'no'
				}
				if (type && type == 'mini') {
					obj.width = 450;
					obj.height = 290;
				}
				openPopup(obj);
			},
			initialize: function(){
				var popupLinks = Y.all('.js_popup');
				if (popupLinks.size() > 0) {
					popupLinks.each(function(elm){
						var url = elm.get('href');
						var type = (elm.hasClass('js_pop_mini')) ? 'mini' : false;
						elm.on("click", function(e){
							e.preventDefault();
							YUI.OLS.PopupController.openPopup(url, type);
						});
					});
				}
				var closeLink = Y.get('.js_popup_close');
				if (closeLink) {
					closeLink.on("click", function(e){
						e.preventDefault();
						window.close();
					});
				}

				delete YUI.OLS.PopupController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [PopupController]

	YUI.OLS.CountrySelectController = (function(){
		var headlines, countries;

		return {
			initialize: function(elm){
				headlines = elm.queryAll('.headline');
				countries = elm.queryAll('.countries');

				countries.addClass('js_hidden');

				headlines.on("click", (function(e){
					var lists = e.target.next('.countries');
					var toggle = lists.plug(Y.Plugin.NodeFX, {
						from: {
							height: function(node){ // dynamic in case of change
								return node.get('scrollHeight'); // get expanded height (offsetHeight may be zero)
							},
							marginBottom: 30
						},
						to: {
							height: 0,
							marginBottom: 0
						}
					});
					lists.toggleClass('js_hidden');
				}));

				delete YUI.OLS.CountrySelectController.initialize;
				delete arguments.callee;

			}
		};
	})(); // [CountrySelectController]

	Y.on("domready", (function(){
		YUI.OLS.PopupController.initialize();
		var elm = Y.get('#countryselector');
		if (elm) {
			YUI.OLS.CountrySelectController.initialize(elm);
		}
	}));
});


YUI().use('node', 'plugin', function(Y){

	YUI.OLS.HintsController = (function(){

		var hintLinks, tPos = {}, tOffset = {}, hints = [];
		var positionHint = function(hnt, e){

			hnt.addClass("hinthidden");
			var visibleRegion = hnt.get('viewportRegion');
			var hintRegion = hnt.get('region');
			tOffset = {
				x: 0,
				y: 30
			}
			if (e.target.ancestor('.mod .inner')) {
				tOffset = {
					x: e.target.ancestor('.inner').get('region').left,
					y: e.target.ancestor('.inner').get('region').top
				};
			}
			tPos = {
				x: e.pageX - tOffset.x + 30,
				y: e.pageY - tOffset.y - 30
			};

			//hint is running outside the viewport?
			var topOff = (tPos.y - 5 < visibleRegion.top - tOffset.y)
				? visibleRegion.top + tOffset.y - tPos.y
				: false;
			var rightOff = (tPos.x + 5 + hintRegion.width > visibleRegion.right - tOffset.x)
				? (tPos.x + 5 + hintRegion.width) - visibleRegion.right + tOffset.x
				: false;
			var leftOff = (tPos.x - 5 < visibleRegion.left - tOffset.x)
				? visibleRegion.left + tOffset.x - tPos.x
				: false;
			var bottomOff = (tPos.y + 5 + hintRegion.height > visibleRegion.bottom - tOffset.y)
				? (tPos.y + hintRegion.height) - visibleRegion.bottom + tOffset.y
				: false;
			if (leftOff) {
				tPos.x = e.pageX + 30;
			}
			else
				if (rightOff) {
					tPos.x = e.pageX - 30 - hintRegion.width;
				}
			if (topOff) {
				tPos.y = tPos.y + topOff + 5;
			}
			else
				if (bottomOff) {
					tPos.y = tPos.y - bottomOff - 5;
				}

			hnt.setStyles({
				left: tPos.x + 'px',
				top: tPos.y + 'px'
			});
		}

		var createHint = (function(elm){

			var s2Hint = function(config){
				var ow = config.host;
				//var hintId = 'js_hint_' + hints.length;
				if (ow) {
					var hintTrigger = ow.ancestor('.js_hintholder') || ow;
					var hintContainer = ow.next('.js_hintcontainer') /*|| createHintContainer(ow,hintId,hintParent) */;
					if (!hintContainer) {
						return
					}
					//var hintHead = hintContainer.query('.hd');
					//var hintBody = hintContainer.query('.bd');

					hintTrigger.on("mouseover", function(e){
						positionHint(hintContainer, e);
						hintContainer.addClass("hintvisible");
					});
					hintTrigger.on("mousemove", function(e){
						positionHint(hintContainer, e);
					});
					hintTrigger.on("mouseout", function(e){
						hintContainer.removeClass("hintvisible");
					});
					ow.on("click", function(e){
						e.preventDefault();
					});

					hints.push(ow);
				}
			};
			s2Hint.NAME = "s2Hint";
			s2Hint.NS = "s2Hint";
			elm.plug(s2Hint);
		});

		return {
			initialize: function(elms){
				hintLinks = elms;

				if (hintLinks) {
					hintLinks.each(function(elm, idx){
						createHint(elm);
					});
				}

				delete YUI.OLS.HintsController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [HintsController]
	Y.on("domready", (function(){
		var elm = Y.all('.js_hint');
		if (elm.size() > 0) {
			YUI.OLS.HintsController.initialize(elm);
		}
	}));
});


//YUI({fetchCSS: false}).use('node', 'event', 'anim', 'cookie', 'dom', 'queue', 'overlay', 'io', 'json', 'json-parse', 'plugin', function(Y){
YUI({
	base: '/extensions/lib/yui_3/build/'
}).use('cookie', 'queue', 'overlay', 'io', 'json', 'json-parse', 'plugin', function(Y){
	YUI.OLS.CartController = (function(){
		var editDlg, colorSizeMap;
		//var targetDiv = Y.Node.get('#container');

		var showEditLayer = (function(elm){
			var editRow = elm.ancestor('tr').previous('tr.edit');
			if (typeof editRow == 'undefined') {
				return;
			}
			var editRowCopy = editRow.cloneNode(true);
			editRowCopy.set('id','layer_' + editRowCopy.id);
			var trRowspan = editRowCopy.query('tr td[rowspan]');
			if (trRowspan) {
				trRowspan.removeAttribute('rowspan');
			}
			editDlg.query('.bd tbody').setContent(Y.Node.getDOMNode(editRowCopy));
			YUI.OLS.DialogController.showDialog(editDlg.get('id'));

			//add selector dependency and show selectors in ie6 too
			var editItem = elm.ancestor('tr').previous('tr').query('span.articleid').get('text');
			var colorSelect = editRowCopy.query('select.clothingColor').setStyle('visibility','visible');
			var sizeSelect = editRowCopy.query('select.clothingSize').setStyle('visibility','visible');

			colorSelect.on('change', function(e){
				var selectedColor = this.get('value');
				var availableSizes = colorSizeMap[editItem][selectedColor].sizes || [];
				var newOptions = "";
				Y.Array.each(availableSizes, function(elm, idx){
					newOptions += "<option value='" + elm + "'>" + elm + "</option>";
				});
				sizeSelect.setContent(newOptions);
			}, colorSelect, editItem);
		});

		var createToggleExpress = (function(elm){

			var fields = elm.queryAll('input[name="expressShippingWanted"]');
			if (fields.size() <= 0) {
				return false;
			}
			var fieldType = fields.item(0).get('type'), elmForm = elm, elmsSinglePrice =Y.all('span.js_shippingcosts'), elmsTotalPrice = Y.all('span.js_sum'),checkedField;

			var getNewValue = function(f){
				if(f.get('id') == checkedField.get('id')) {
					return;
				}
				checkedField = f;

				var cfg = {
					method: 'POST',
					data: "ajax=true&expressShippingButton=true",
					form: Y.Node.getDOMNode(elmForm)
				};
				Y.on('io:complete', function(id, o, args){
					if (o.status == 500) {
						alert(o.statusText + "\n" + o.responseText);
						return false;
					}
					updateCartPrices(o.responseText);
				});
				var request = Y.io(elmForm.get('action'), cfg);
				return request;
			};
			var updateCartPrices = function(obj){
				var o;
				try {
					o = Y.JSON.parse(obj);
				}
				catch (e) {

				}
				if (o.error && o.error == "reload") {
					window.location.reload();
					return false;
				}
				elmsSinglePrice.setContent(o.singlePrice);
				elmsTotalPrice.setContent(o.totalPrice);
				//todo: add highlight
			};

			if (fieldType == 'checkbox' || fieldType == "radio") {
				checkedField = fields.filter('input:checked');
				fields.on("click", function(e){
					getNewValue(e.target);
				});
			}
		});

		return {

			initializeEditCart: function(elms){
				editDlg = Y.get('#dlg_changeCart');
				if (!editDlg) {
					return;
				}
				//import from inline script
				colorSizeMap = editcartCSM;
				elms.on('click', function(e){
					e.preventDefault();
					showEditLayer(e.target);
				});

				delete YUI.OLS.CartController.initializeEditCart;
				delete arguments.callee;
			},
			initializeToggleExpressShipping: function(elm){

				createToggleExpress(elm);

				delete YUI.OLS.CartController.initializeToggleExpressShipping;
				delete arguments.callee;
			}
		};
	})(); // [CartController]

	Y.on("contentready", function(elm) {
		YUI.OLS.CartController.initializeToggleExpressShipping(Y.get("#js_cartForm"));
	}, "#js_cartForm", Y);


	Y.on("domready", (function(){
		var elm = Y.all('.js_editcart');
		if (elm.size() > 0) {
			YUI.OLS.CartController.initializeEditCart(elm);
		}
	}));
});
YUI().use('node', 'plugin', function(Y){

	YUI.OLS.RadioSwitcherController = (function(){

		var createRadioSwitcher = (function(arr){

			var radios = arr, targets = [];
			if (!radios) {
				return;
			}

			radios.each(function(elm, idx){
				var id = elm.get('id');
				var target = Y.get('.js_' + id) || false;

				if(target) {
					targets.push(target);
					if (Y.Node.getDOMNode(elm).defaultChecked == true) {
						target.removeClass('js_hidden');
					}
					else {
						target.addClass('js_hidden');
					}
				}

				elm.on('click', function(e){
					Y.Array.each(targets, function(t, idx){
						if (target && target.compareTo(t)) {
							target.removeClass('js_hidden');
						}
						else {
							t.addClass('js_hidden');
						}
					});
				});
			});
		});

		var getRadioGroups = function(elms) {
			var g = [];
			var lastGroupSize = 0;
			var filter = function(nlist, idx) {
				var elmName = nlist.item(idx).get('name');
				var elmsGroup = nlist.filter('input[name="' + elmName + '"]');
				g.push(elmsGroup);
				if (nlist.size() > elmsGroup.size() + lastGroupSize) {
					lastGroupSize = elmsGroup.size();
					filter(nlist, elmsGroup.size());
				}
			}

			filter(elms,0);
			return g;
		};

		return {

			initialize: function(elms){
				var groups = getRadioGroups(elms);
				Y.Array.each(groups, function(arr, idx){
					createRadioSwitcher(arr);
				});

				delete YUI.OLS.RadioSwitcherController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [RadioSwitcherController]
	Y.on("domready", (function(){
		var elms = Y.all('.js_radioSwitch');
		if (elms.size() > 0) {
			YUI.OLS.RadioSwitcherController.initialize(elms);
		}
	}));
});

YUI().use('node', function(Y){

	YUI.OLS.PrintController = (function(){

		return {
			initialize: function(elms){
				 elms.each(function(elm, idx){
					elm.on('click', function (e) {
						e.preventDefault();
						window.print();
					});
				});

				delete YUI.OLS.PrintController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [PrintController]
	Y.on("domready", (function(){
		var elm = Y.all(".js_printpage");
		if (elm.size() > 0) {
			YUI.OLS.PrintController.initialize(elm);
		}
	}));
});

YUI().use('node', function(Y){

	YUI.OLS.BacklinkController = (function(){

		return {
			initialize: function(elms){
				 elms.each(function(elm, idx){
					elm.on('click', function (e) {
						e.preventDefault();
						history.back();
					});
				});

				delete YUI.OLS.BacklinkController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [PrintController]
	Y.on("domready", (function(){
		var elm = Y.all(".js_backlink");
		if (elm.size() > 0) {
			YUI.OLS.BacklinkController.initialize(elm);
		}
	}));
});


YUI().use('node', function(Y){

	YUI.OLS.TrendShowController = (function(){
		var bigImgBox, bigImgDefault, productTags, editMode = false;

		var switchProduct = function (product) {
			var p = product;
			// switch big image
			if (p.bigImgSrc) {
				bigImgBox.setStyle('backgroundImage', 'url("' + p.bigImgSrc + '")');
			}
			else {
				bigImgBox.setStyle('backgroundImage', bigImgDefault);
			}
			// switch link to product on big image
			var bigImgBoxAnker = bigImgBox.query('a.productLink') || false;
			if (bigImgBoxAnker) {
				bigImgBoxAnker.setAttribute('href', p.productLink);
			}
			// switch visibility of productTags
			productTags.each(function(elm,idx) {
				if (p.productTag && elm.get('id') == p.productTag.get('id')[0] ) { // warum hat das mehrere ids?
					elm.addClass('active');
					if (editMode) {
						//elm.next('.cmsDragHandle').setStyle('display','block');
						elm.ancestor('.cmsPositionContainer').setStyle('display','block');
					}
				}
				else {
					elm.removeClass('active');
					if (editMode) {
						//elm.next('.cmsDragHandle').setStyle('display','none');
						elm.ancestor('.cmsPositionContainer').setStyle('display','none');
					}
				}
			});
		};

		return {
			initialize: function(elms){
				bigImgBox = Y.get('#js_trendVisual');
				if (!bigImgBox) {
					return;
				}
				bigImgDefault = bigImgBox.getStyle('backgroundImage');

				productTags = bigImgBox.queryAll('.productTag');

				var thumbTiles = elms.filter('li.trendThumb');
				var products = [];
				thumbTiles.each(function(elm, idx){
					// get src of big image
					var src = elm.query('a.image');
					src = src ? src.get('href') : false;
					src = src && (src.indexOf('.jpg') != -1 || src.indexOf('.png') != -1 || src.indexOf('.gif') != -1) ? src : false;
					if (src) {
						// get corresponding priceTag element
						var tag = elm.hasClass('trendProduct') ? productTags.filter('div[id="productTag_' + elm.get('id').match(/_([0-9]+)$/i)[1] + '"]') : false;
						// get link to product
						var lnk = (tag && tag.item(0)) ? tag.item(0).query('a.button').get('href') : '#';
						// collect params
						products[idx] = {
							bigImgSrc: src,
							productTag: tag,
							productLink: lnk
						};

							elm.on('click', (function (e){
								e.preventDefault();
								switchProduct(products[idx]);
							}));
						}
				});

				editMode = (productTags.item(0) && productTags.item(0).next('div.cmsDragHandle')) ? true : false;
				if (editMode) {
					bigImgBox.queryAll('.cmsDragHandle').each(function (elm,idx) {
						if (!elm.previous('.productTag').hasClass('active')) {
							//elm.setStyle('display','none');
							elm.ancestor('.cmsPositionContainer').setStyle('display','none');
						}
					});
				}


				delete YUI.OLS.TrendShowController.initialize;
				delete arguments.callee;
			}
		};
	})(); // [PrintController]
	Y.on("domready", (function(){
		var elms = Y.all(".js_trendShow li");
		if (elms.size() > 0) {
			YUI.OLS.TrendShowController.initialize(elms);
		}
	}));
});


YUI().use('node', function(Y){
	YUI.OLS.StageAccordionController = (function() {
		var activeIdx,
			listSize,
			direction;
		return {
			onClickAccordionItem: function(e){
				e.target.ancestor('.dl').all('.dt').removeClass('dtActive');
				e.target.ancestor('.dl').all('.dd').removeClass('ddActive');
				e.target.ancestor('.dt').addClass('dtActive');
				e.target.ancestor('.dt').next('.dd').addClass('ddActive');
				// add/remove flash videos
				if (document.getElementById("currentSlideVideo")) {
					swfobject.removeSWF("currentSlideVideo");
				}
				if (typeof embedFlash != "undefined" && e.target.ancestor('.dt').next('.dd').one('.video')) {
					embedFlash[e.target.ancestor('.dt').next('.dd').one('.video').getAttribute('id')]();
				}
			},
			onClickSlideNav: function(e){
				listSize = e.target.ancestor('.dd').all('ul.js_slides > li').size();
				activeIdx = e.target.ancestor('.dd').all('ul.js_slides > li').indexOf(e.target.ancestor('.dd').one('ul.js_slides > li.active'));
				if (e.target.hasClass('js_next')){
					direction = 1;
				};
				if (e.target.hasClass('js_previous')){
					direction = -1;
				};
				Y.all('.js_accordion .ddActive ul.js_slides > li').removeClass('active');
				var currentSlide = Y.all('.js_accordion .ddActive ul.js_slides > li').item((activeIdx + listSize + direction) % listSize);
				currentSlide.addClass('active');
				// add/remove flash videos
				if (document.getElementById("currentSlideVideo")) {
					swfobject.removeSWF("currentSlideVideo");
				}
				if (typeof embedFlash != "undefined" && currentSlide.one('.video')) {
					embedFlash[currentSlide.one('.video').getAttribute('id')]();
				}
			},
			initialize: function(){
				Y.all('.js_accordion .dt').on('click', YUI.OLS.StageAccordionController.onClickAccordionItem);
				Y.all('.js_slideNav .js_nav').on('click', YUI.OLS.StageAccordionController.onClickSlideNav);
			}
		}
	})();
	Y.on("domready", (function(){
		YUI.OLS.StageAccordionController.initialize();
	}));
});

YUI().use('node','anim', function(Y) {
		YUI.OLS.HomepageController = (function() {
				return {
					onClickCollapsibleTeaser: function(e){
						if (!(e.target.hasClass('detailContent') || e.target.ancestor('.detailContent'))) {
							if (!Y.get('#dimOverlay')) {
								Y.get('body').appendChild(Y.Node.create('<div id="dimOverlay"></div>'));
							}
							e.target.ancestor('.js_collapsibleTeaserContainer').toggleClass('opened');
						}
					},
					initialize: function(){
						var homeSlideAnim = new Y.Anim({
								node: '#homeSlides',
								to: {left: -700},
								duration: .6,
								easing: Y.Easing.easeBoth
						});
						homeSlideAnim.on('end', function() {
								Y.one('#homeSlides').append(Y.one('#homeSlides .slide'));
								Y.one('#homeSlides').setStyle('left', 0);
						});
						var collapsibleTeaserProductList = Y.one('.js_collapsibleTeaser .js_categoryList');
						if (collapsibleTeaserProductList) {
							var collapsibleTeaserProductListBoxWidth = 185;//collapsibleTeaserProductList.one('.box').width();
							var collapsibleTeaserProductListBoxAmount = collapsibleTeaserProductList.all('.box').size();
							var collapsibleTeaserProductAnimDirection = 1;
							collapsibleTeaserProductList.all('.box').each(function(){
									collapsibleTeaserProductList.append(this.cloneNode('deep'));
							}).each(function(){
									collapsibleTeaserProductList.append(this.cloneNode('deep'));
							});
							collapsibleTeaserProductList.setStyles({
									left: -1 * collapsibleTeaserProductListBoxAmount * collapsibleTeaserProductListBoxWidth,
									width: 3 * collapsibleTeaserProductListBoxAmount * collapsibleTeaserProductListBoxWidth
							});
							var collapsibleTeaserProductAnim = new Y.Anim({
									node: collapsibleTeaserProductList,
									to: {
										left: function() {
											return collapsibleTeaserProductAnimDirection * collapsibleTeaserProductListBoxWidth - collapsibleTeaserProductListBoxAmount * collapsibleTeaserProductListBoxWidth;
										}
									},
									duration: .6,
									easing: Y.Easing.easeBoth
							});
							collapsibleTeaserProductAnim.on('end', function() {
									if (collapsibleTeaserProductAnimDirection == -1) {
										collapsibleTeaserProductList.append(collapsibleTeaserProductList.one('.box'));
									} else {
										collapsibleTeaserProductList.prepend(collapsibleTeaserProductList.all('.box').item(collapsibleTeaserProductList.all('.box').size()-1));
									}
									collapsibleTeaserProductList.setStyle('left', -1 * collapsibleTeaserProductListBoxAmount * collapsibleTeaserProductListBoxWidth);
							});
						}
						Y.delegate('click', function(e){e.preventDefault(); homeSlideAnim.run();}, '#homeSlides', '.js_next');
						Y.delegate('click', function(e){e.preventDefault(); e.target.blur(); collapsibleTeaserProductAnimDirection = -1; collapsibleTeaserProductAnim.run();}, '.js_collapsibleTeaser .js_productNavi', '.js_next');
						Y.delegate('click', function(e){e.preventDefault(); e.target.blur(); collapsibleTeaserProductAnimDirection = 1; collapsibleTeaserProductAnim.run();}, '.js_collapsibleTeaser .js_productNavi', '.js_previous');
						Y.all('.js_collapsibleTeaser').on('click', YUI.OLS.HomepageController.onClickCollapsibleTeaser);
					}
				}
		})();
		Y.on("domready", (function(){
				YUI.OLS.HomepageController.initialize();
		}));
});

