var slider = function(){
    var triggers = ".teaser_head";
    var target = ".teaser_content";
    var hide_class = "hide_content";//to set negative margin & filter elements
    var anchor_triggers = "#teaser_navigation li";
    var duration = 1000;
    var animate_params = {};
    var container, body, elements, extraElements = ".item,.found,.pages";
    var openTeaser;
    var elementVisibleIndex = false;
    /**
     * 
     * @param {Object} callback
     */
    var init = function(callback){
    
        elements = $("#cocktails,#classic,#sparkling_tea,#tvspots,#cities");
		
        $.each(elements, function(i, item){
            if ($(item).children(".teaser_content:visible").length == 1) {
                elementVisibleIndex = $(this, elements).index();
            }
        });
		
        callback();
        
        // widerruf should only be displayed on initial pageload
        if (check_cookie() === true) {
        	hide_element($("#widerruf .teaser_content"));
        	show_element($("#classic .teaser_content"));
        }

    };
	/**
	 * 
	 */
    var set_clicker = function(){
	
        $(triggers).live("click", function(e){
        
            animate_params.height = ['toggle'];
            
            var head = $(this);
            body = head.next(target);
            container = head.parent();
			//get index of current element
            var index = $(container.get(0), elements).index();
            
            // if widerruf clicked set cookie
            if (index == 0) {
            	set_cookie('widerrufclicked','yes');
            }

//            console.debug(index);
//			console.debug(elementVisibleIndex);
        
            if (index == elementVisibleIndex) {//clicked element is already open
				hide_element(body);
				scrollToTeaser($("#header"));
				index = false;//no element is open                
			}
			else {
				if (elementVisibleIndex === false) {//no teaser is open				
					show_element(body);					
					scrollToTeaser($("#cocktails"));
				}
				else {//one element is open but a different one is clicked
//					console.debug(elements);
//					console.debug(elements[elementVisibleIndex]);
					var openElement = $(elements[elementVisibleIndex-1]).children(".teaser_content:visible");
					  
					hide_element(openElement, function(){
						show_element(body, function(){
							scrollToTeaser($(elements[0]));
						});
					});
				}
			}
            elementVisibleIndex = index;
            
            return false;
            
        });//click
        //anchornavigation
//        $(anchor_triggers).click(function(){
//            var that = $(this);
//            $(triggers).filter(function(){
//                if (that.attr("class") == "cocktails" && $(this).parent().attr("id") == "sitemap") {//special for sitemap page
//                    return true;
//                }
//                return that.attr("class") === $(this).parent().attr("id");
//            }).trigger("click");
//            return false;
//        });
    };
    /**
     *
     * @param {Object} obj
     */
    var show_element = function(obj, cb){
        if ($.browser.msie) {
            obj.find(extraElements).css("visibility", "hidden");
        }
        obj.animate(animate_params, {
            duration: duration,
            animation: "easeOutCubic",
            queue: true,
            complete: function(){
                if (typeof cb == "function") {
                    cb();
                }
                if ($.browser.msie) {
                    obj.find(extraElements).css("visibility", "visible");
                }
            }
        }).parent().removeClass("hide_content");
        
        
        
    };
    /**
     * @param {Object} obj
     */
    var scrollToTeaser = function(obj){
    
        var targetOffset = obj.offset().top;
        $('html, body').animate({
            scrollTop: targetOffset
        }, {
            duration: 1500,
            animation: "easeOutCubic",
            queue: true
        });
        
    };
    /**
     *
     * @param {Object} obj
     * @param {Object} callback
     */
    var hide_element = function(obj, cb){
        if ($.browser.msie) {
            obj.find(extraElements).css("visibility", "hidden");
        }
        
        obj.animate(animate_params, {
            duration: duration,
            animation: "easeInCubic",
            queue: true,
            complete: function(){
                if (typeof cb == "function") {
                    cb();
                }
                obj.parent().addClass("hide_content");
            }
        });
    };

    /**
     * @param {String} cookie name
     * @param {String} cookie value
     * @param {Integer} cookie lifetime
     */
    var set_cookie = function(c_name,value,exdays)
    {
    	var exdate=new Date();
    	exdate.setDate(exdate.getDate() + exdays);
    	var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    	document.cookie=c_name + "=" + c_value;
    };
    
    /**
     * @param {String} cookie name
     */
    var get_cookie = function(c_name)
    {
    	var i,x,y,ARRcookies=document.cookie.split(";");
    	for (i=0;i<ARRcookies.length;i++)
    	{
    	  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
    	  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
    	  x=x.replace(/^\s+|\s+$/g,"");
    	  if (x==c_name) {
    	    return unescape(y);
    	  }
    	}
    };
    
    /**
     * 
     */
    var check_cookie = function()
    {
    	var clicked=get_cookie("widerrufclicked");
    	if (clicked!=null && clicked=="yes") {
    		return true;
    	} else {
    		return false;
    	}
    };
    
    init(set_clicker);
    
};

