/*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', '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:120};
      
        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);
            }));
            
            return elmDialog;
        });
        
        return {
            showDialog: function(eid){
                //elmBody = elmBody || Y.get('body');
            	
                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){
                //elmBody = elmBody || Y.get('body');
              	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){
                    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();
                            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]	
    
	/*
      YUI.OLS.DialogController = (function(){
        var elmBody, dlgLinks, iframe, dlg, dimOverlay, someDlgOpen = false;
        var arrDialogs = [];
        var arrDialogTrigger = [];
        var options;
        
        var positionOverlay = (function(){
            dimOverlay.setStyle('height', dimOverlay.get('docHeight') + "px");
        });
                
        var createDialog = (function(elm){
            if (!elm) {
                return;
            }
            dimOverlay = Y.get("#dimOverlay") || elmBody.appendChild(Y.Node.create('<div id="dimOverlay"></div>'));

            var elmDialog = new Y.Overlay({
                contentBox: elm,
                centered: true,
                close: false,
                xy: [0,0],
                zIndex: 800,
                draggable: true,
                visible: false
            });
           
            positionOverlay();  			
            elmDialog.render();

            return elmDialog;
        });
        
         var positionDialog = (function(d){
            d.get('contentBox').setStyle('width',iframe.getStyle('width'));
            d.set('xy',[0,120]);
        });
        
        var resizeDialog = (function(d){
        	var iw = iframe.get('contentDocument').query('.dialogBox').get('region');
        	iframe.setAttribute('width', iw.width);
        	iframe.setAttribute('height', iw.height);
        });
        
        return {
            loadDialog: function(t){
				if (iframe.get('src') == t) {
					YUI.OLS.DialogController.showDialog();
				}
				else  {
					iframe.setAttribute('src',t);
				}
            },
            showDialog: function(){
				resizeDialog(dlg);
				positionDialog(dlg);
				elmBody.addClass("masked");
				dlg.show();
            },
            hideDialog: function(){
            	elmBody.removeClass("masked");
				dlg.hide();
            },
            isSomeDlgOpen: function() {
            	return someDlgOpen;
            },
            initialize: function(){
                elmBody = Y.get('body');
                dlgLinks = Y.all('.js_dlg');
                
                if (dlgLinks) {
               		
               		var container = Y.get('#dlg_container') || elmBody.appendChild(Y.Node.create('<div id="dlg_container"><iframe src="about:blank" width="10" height="10" border="0" frameborder="0"></iframe></div>'));
                	iframe = container.query('iframe');
                	dlg = createDialog(container);
                
                    dlgLinks.each(function(elm, idx){
                        elm.on("click", (function(e){
                            e.preventDefault();
                            var targetLink = elm.get('href');
                            if (targetLink) {
								YUI.OLS.DialogController.loadDialog(targetLink);
							}
                        }));
                    });
                }
                delete YUI.OLS.DialogController.initialize;
                delete arguments.callee;
            }
        };
    })(); // [DialogController]	  
    
	YUI.OLS.IframeDialogController = (function(){
		return {
			initialize: function() {
				//this only concerns the layercontent loaded in an iframe
				
            	//self positioning
            	window.parent.YUI.OLS.DialogController.showDialog();
            	
            	//self closing
            	var elmClose = Y.get("a.js_dlgclose");
            	elmClose.on("click", (function(e){
	                e.preventDefault();
	                window.parent.YUI.OLS.DialogController.hideDialog();
	            }));
				
				delete YUI.OLS.IframeDialogController.initialize;
                delete arguments.callee;
			}
		}
	})();
    */
    Y.on("domready", (function(){
    	var elms =  Y.all('.js_dialogBox,.js_dlg');
    	if(elms.size() > 0) {
    		YUI.OLS.DialogController.initialize();
    	}
    	/*
    	if (!Y.get('body').hasClass('popup')) {
    		YUI.OLS.DialogController.initialize();
    	}
    	else {
    		YUI.OLS.IframeDialogController.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);
                /*container.each(function(el){
                    var tbx = createTabbox(el);
                    arrTabboxes.push(tbx);
                });*/
                
                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)
    /*
    Y.on("domready", (function(){
        var elm = Y.all(".js_tabbox");
        if (elm.size() > 0) {
            YUI.OLS.TabBoxController.initialize(elm);
        }
    }));
    */
});


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.FaqBoxController = (function(){
        var faqQuestions, faqAnswers, faqLayers, faqSwitches;
        
        return {
            initialize: function(elm){
                faqQuestions = elm.queryAll('.question');
                faqAnswers = elm.queryAll('.answer');
                faqLayers = elm.queryAll('.js_faqbox');
                faqSwitches = elm.queryAll('.js_faqswitch');
                if (faqQuestions.size() != faqAnswers.size()) {
                    return;
                }
                faqSwitches.on('click', (function(e){
                    e.preventDefault();
                    //Y.all('.js_faqswitch').each(console.log(this.index));
                }))
                faqAnswers.addClass('hidden');
                faqQuestions.on("click", (function(e){
                    var lists = e.target.next('.answer');
                    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
                        },
                        easing: Y.Easing.easeOut,
                        duration: 0.5
                    });
                    lists.toggleClass('hidden');
                    toggle.fx.set('reverse', !toggle.fx.get('reverse')); // toggle reverse
                    toggle.fx.run();
                }));
                delete YUI.OLS.FaqBoxController.initialize;
                delete arguments.callee;
            }
        };
    })(); // [FaqBoxController]
    */
    YUI.OLS.CountrySelectController = (function(){
        var headlines, countries;
        
        return {
            initialize: function(elm){
                headlines = elm.queryAll('.headline');
                countries = elm.queryAll('.countries');
                
                countries.addClass('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('hidden');
                    /*toggle.fx.set('reverse', !toggle.fx.get('reverse')); // toggle reverse
                    toggle.fx.run();*/
                }));
                
                delete YUI.OLS.CountrySelectController.initialize;
                delete arguments.callee;
                
            }
        };        
    })(); // [CountrySelectController]
    
    Y.on("domready", (function(){
        YUI.OLS.PopupController.initialize();
        /*
        var elm = Y.get('.js_faqbox');
        if (elm) {
            YUI.OLS.FaqBoxController.initialize(elm);
        }
        */
        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 createHintContainer = function(lnk, id, p){
            var node = Y.Node.create('<div id="' + id + '" class="js_hint_container"><div class="hd"></div><div class="bd"></div><div class="ft"></div></div>');
            p.ancestor('li').append(node);
            return node;
        }
        */
        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().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 (!editRow) {
                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);
        }
       /* var elm = Y.all('.js_express');
        if (elm.size() > 0) {
            YUI.OLS.CartController.initializeToggleExpressShipping(elm);
        }*/
    }));
});
/*
YUI().use('node', 'anim', 'plugin', function(Y){

    YUI.OLS.AjaxHighlightController = (function(){
    
        var createHighlightElement = function(elm){
        
            var getBackgroundColor = function(elm){
                var col = elm.getStyle('backgroundColor');
                if (col.indexOf('#') != -1) {
                    return col;
                }
                else 
                    if (col == "transparent") {
                        getBackgroundColor(elm.ancestor());
                    }
            };
            
            var s2HighlightElement = function(config){
                var ow = config.host;
                var baseColor = getBackgroundColor(ow);
                var highlightColor = 'yellow';
                
                var flashing = new Y.Anim({
                    node: elmSinglePrice,
                    from: {
                        backgroundColor: baseColor
                    },
                    to: {
                        backgroundColor: targetColor
                    },
                    duration: 0.5,
                    direction: 'alternate'
                });
                flashing.on('end', function(){
                    flashing.run();
                });
                flashing.run();
            };
            s2HighlightElement.NAME = "s2HighlightElement";
            s2HighlightElement.NS = "s2hle";
            elm.plug(s2HighlightElement);
        };
        
        return {
            highlightElement: function(elm){
                if (elm) {
                    createHighlightElement(elm);
                }
            }
        };
    });// [AjaxHighlightController]
});
*/
/*
YUI().use('node', 'anim', 'plugin', function(Y){

    YUI.OLS.DrawerBoxController = (function(){
        var elmBoxes = [];
        
        var createDrawerBox = (function(elm){
        
            var s2DrawerBox = function(config){
                var drawer, drawerMinHeight, drawerMaxHeight, speed, drawOpen, drawClose, drawBounce;
                
                var ow = config.host;
                if (ow) {
                    drawer = ow.query('.js_drawer');
                    if (!drawer) {
                        return;
                    }
                    var bounceOnLoad = (drawer.hasClass('js_bounce_on_load')) ? true : false;
                    drawerMinHeight = drawer.getStyle('height').match(/^[0-9]+/) || 0;
                    drawerMaxHeight = drawer.query('*').get('offsetHeight');
                    var defaultDuration = 0.5;
                    var defaultEasing = Y.Easing.backBoth;
                    
                    var openDrawer = (function(f, t, d, e){
                        drawer.replaceClass("closed", "open");
                        drawOpen = new Y.Anim({
                            node: drawer,
                            from: {
                                height: f
                            },
                            to: {
                                height: t
                            },
                            duration: d
                        });
                        if (e) {
                            drawOpen.setAttrs({
                                'easing': e
                            });
                        }
                        drawOpen.run();
                        return drawOpen;
                    });
                    var closeDrawer = (function(f, t, d, e){
                        drawClose = new Y.Anim({
                            node: drawer,
                            from: {
                                height: f
                            },
                            to: {
                                height: t
                            },
                            duration: d
                        });
                        if (e) {
                            drawClose.setAttrs({
                                'easing': e
                            });
                        }
                        drawClose.run();
                        drawClose.on('end', function(){
                            drawer.replaceClass("open", "closed");
                        });
                        return drawClose;
                    });
                    var bounceDrawer = (function(){
                        var f = drawerMinHeight.input, t = parseInt(drawerMinHeight[0], 10) + 10 + 'px', d = 0.4;
                        var anim = openDrawer(f, t, d, Y.Easing.backIn);
                        anim.on('end', function(){
                            Y.later(300, this, function(){
                                closeDrawer(t, f, d, Y.Easing.easeOut);
                            });
                        });
                    });
                    
                    ow.on('mouseenter', function(e){
                        openDrawer(drawerMinHeight.input, drawerMaxHeight, defaultDuration, defaultEasing);
                    });
                    ow.on('mouseleave', function(e){
                        closeDrawer(drawerMaxHeight, drawerMinHeight.input, defaultDuration, defaultEasing);
                    });
                    ow.on('click', function(e){
                        //e.preventDefault();
                    });
                    if (bounceOnLoad) {
                        Y.later(50, this, bounceDrawer);
                    }
                    elmBoxes.push(ow);
                }
            };
            s2DrawerBox.NAME = "s2DrawerBox";
            s2DrawerBox.NS = "s2Draw";
            elm.plug(s2DrawerBox);
        });
        
        return {
            initialize: function(elms){
                elms.each(function(elm, idx){
                    createDrawerBox(elm);
                });
                delete YUI.OLS.DrawerBoxController.initialize;
                delete arguments.callee;
            }
        };
    })(); // [DrawerBoxController]	
    Y.on("domready", (function(){
        var elm = Y.all('.js_drawerbox');
        if (elm.size() > 0) {
            YUI.OLS.DrawerBoxController.initialize(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('hidden');
                    }
                    else {
                		target.addClass('hidden');
                    }
                }
                
                elm.on('focus', function(e){
                    Y.Array.each(targets, function(t, idx){
						if (target && target.compareTo(t)) {
							target.removeClass('hidden');
						}
						else {
							t.addClass('hidden');
						}
                    });
                });
            });
        });
        
        var getRadioGroups = function(elms) {
    		var g = [];
    		var filter = function(nlist, idx) {
	    		var elmName = nlist.item(idx).get('name');
        		g.push(nlist.filter('input[name="' + elmName + '"]'));
        		var elmsRest = nlist.filter('input:not([name="' + elmName + '"])');
	        	if (elmsRest.size() > 0) {
	        		filter(elmsRest, idx++);
	        	}
    		}
    		
    		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 elm = Y.all('.js_radioSwitch');
        if (elm.size() > 0) {
            YUI.OLS.RadioSwitcherController.initialize(elm);
        }
    }));
});

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);
        }
    }));
});
