YAHOO.namespace("example.container");

YAHOO.util.Event.onDOMReady(function () {
    var oMenu = new YAHOO.widget.Menu("basicmenu");
	
    oMenu.subscribe("itemAdded", function (p_sType, p_aArgs) {
        var oMenuItem = p_aArgs[0];
        oMenuItem.subscribe("mouseover", onMenuItemMouseOver, 1);
    });

    oMenu.addItems([
    {
        helptext: "080101",
        text: "COLLECTION //////////////////////////////",
        value: "collection",
        url: "office_1.php"
    },

    {
        helptext: "100506",
        text: "office 1",
        value: "collection",
        url: "office_1.php"
    },
    {
        helptext: "091225",
        text: "office 2",
        value: "collection",
        url: "office_2.php"
    },

    {
        helptext: "091220",
        text: "bulky waste",
        value: "collection",
        url: "bulky_waste.php"
    },

    {
        helptext: "091020",
        text: "park",
        value: "collection",
        url: "park.php"
    },
    
    {
        helptext: "080101",
        text: "cornerstore",
        value: "collection",
        url: "cornerstore.php"
    },

    {
        helptext: "090230",
        text: "library mdf",
        value: "collection",
        url: "library_mdf.php"
    },

    {
        helptext: "080101",
        text: "library oak",
        value: "collection",
        url: "library_oak.php"
    },

    {
        helptext: "080101",
        text: "library seki",
        value: "collection",
        url: "library_seki.php"
    },

    {
        helptext: "080101",
        text: "INDIVIDUALS //////////////////////////////",
        value: "individuals",
        url: "cocktailbar.php"
    },

    {
        helptext: "091220",
        text: "cocktailbar",
        value: "individuals",
        url: "cocktailbar.php"
    },

    {
        helptext: "080101",
        text: "arena",
        value: "individuals",
        url: "arena.php"
    },

    {
        helptext: "080101",
        text: "bus big",
        value: "individuals",
        url: "bus_big.php"
    },

    {
        helptext: "080101",
        text: "bus small",
        value: "individuals",
        url: "bus_small.php"
    },

    {
        helptext: "080101",
        text: "cityhall",
        value: "individuals",
        url: "cityhall.php"
    },

    {
        helptext: "080101",
        text: "disko",
        value: "individuals",
        url: "disko_alder.php"
    },

    {
        helptext: "090230",
        text: "disko",
        value: "individuals",
        url: "disko_cherry.php"
    },

    {
        helptext: "080101",
        text: "flowertower",
        value: "individuals",
        url: "flowertower_2.php"
    },

    {
        helptext: "080101",
        text: "flowertower",
        value: "individuals",
        url: "flowertower.php"
    },

    {
        helptext: "080101",
        text: "highschool",
        value: "individuals",
        url: "highschool.php"
    },

    {
        helptext: "080101",
        text: "hotel",
        value: "individuals",
        url: "hotel_big.php"
    },

    {
        helptext: "090230",
        text: "hotel",
        value: "individuals",
        url: "hotel_linoleum.php"
    },

    {
        helptext: "080101",
        text: "hotel",
        value: "individuals",
        url: "hotel_small.php"
    },

    {
        helptext: "080101",
        text: "ENVIRONMENT ///////////////////////////",
        value: "environment",
        url: "office.php"
    },

    {
        helptext: "091020",
        text: "office mannheim",
        value: "environment",
        url: "office.php"
    },

    {
        helptext: "090601",
        text: "bedroom berlin",
        value: "environment",
        url: "bedroom.php"
    }
    ]);

    oMenu.render("menucontainer");
	
    function onMenuItemMouseOver() {
        if(isStartPage == true) document.getElementById('visual').src="img/pulldown_" + this.value + ".jpg";
    }

    itemList = oMenu.getItems();
    selectedMenuItemIndex = 0;
    var myDate = new Date();
    var myYear = myDate.getFullYear() + "";
    myYear = myYear.substr(2);
    var myMonth = myDate.getMonth() + 1;
    if(myMonth < 10) myMonth = "0" + myMonth;
    var myDay = myDate.getDate();
    if(myDay < 10) myDay = "0" + myDay;
	
    var myToday = myYear + myMonth + myDay;

    for (i = 0; i < itemList.length; i++) {
        itemUrl = itemList[i].cfg.getProperty("url");
        itemHelptext = itemList[i].cfg.getProperty("helptext");
        if(itemUrl == selectedMenuItem) selectedMenuItemIndex = i;
        itemList[i].cfg.setProperty("helptext", "");
        if(itemHelptext > myToday) itemList[i].cfg.setProperty("helptext", "/// new ///");
    }

    var oMenuButton = new YAHOO.widget.Button( {
        type: "menu",
        label: oMenu.getItem(selectedMenuItemIndex).cfg.getProperty("text"),
        name: "mymenubutton",
        menu: oMenu,
        container: "menubuttoncontainer"
    });
    oMenuButton.subscribe("click", onMenuButtonMouseClick);
    oMenu.getItem(selectedMenuItemIndex).cfg.setProperty("selected", true);

    function onMenuButtonMouseClick() {
       if(externals) document.getElementById('myContent').innerHTML = '<img id="visual" src="'+externals["alt"]+'" alt="" height="400" />';
    }

    YAHOO.example.container.menumodule = new YAHOO.widget.Module("menumodule", {
        visible:true
    } );
    YAHOO.example.container.menumodule.render();
} );

YAHOO.namespace("myowndb");
YAHOO.myowndb.slideshow = function (container, o) {
    this.container = YAHOO.util.Dom.get(container);
    this.effect = o.effect;
    var frames = o.frames;
    this.frames = [];
    //add cached frames
    var cached_frames = YAHOO.util.Dom.getElementsByClassName("yui-sldshw-frame", null, this.container);
	
    for (var i=0; i<cached_frames.length; i++)
    {
        this.frames[i] = {
            id: i,
            type: 'cached',
            value: cached_frames[i]
            };
    }

    if (frames != null && frames!=undefined)
    {
        for (var j=0; j<o.frames.length; j++)
        {
            this.frames[j+cached_frames.length] = o.frames[j];
        }
    }

    //set slide selector
    if (! o.slide_selector)
    {
        this.slide_selector = function(number_of_slides, current_index)
        {
            return (current_index+1)%number_of_slides;
        }
    }
    else
    {
        this.slide_selector = o.slide_selector;
    }

    if (o.interval)
        this.interval = o.interval
    else
        this.interval = 2000

    this.init();
}


YAHOO.myowndb.slideshow.prototype = {
    init: function()
    {
        if (! this.effect)
        {
            this.effect= YAHOO.myowndb.slideshow.effects.slideUp;
        }
			
        this.active_frame = this.get_active_frame();
        this.choose_next_frame();
    },
    get_active_frame: function()
    {
        var current_frame =  YAHOO.util.Dom.getElementsByClassName("yui-sldshw-active", null,  this.container)[0];
        return current_frame;
    },
    get_frame_index: function(frame)
    {
        for(var i=0; i<this.frames.length;i++)
        {
            if (this.frames[i].value==frame)
                return i;
        }
        return -1;
    },
    choose_next_frame : function( my_reverse )
    {
        var reverse = (my_reverse == null) ? false : true ;
        var current_index = this.get_frame_index(this.get_active_frame());
        if (current_index<0)
            current_index=0;
        var all_frames = this.frames;
        var next_index = 0;
        if (reverse)
        {
            next_index = current_index -1;
            if (next_index < 0)
                next_index = all_frames.length + next_index;
            YAHOO.util.Dom.replaceClass(YAHOO.util.Dom.getElementsByClassName("yui-sldshw-next")[0], "yui-sldshw-next", "yui-sldshw-cached");
        }
        else
        {
            next_index = this.slide_selector(all_frames.length, current_index);
        }
        var next = all_frames[next_index];
        var next_frame;
        //possible infinite loop....
        while (next.value==this.active_frame || next.type=="broken")
        {
            next = all_frames[this.slide_selector(all_frames.length, next_index)];
        }
        if (next.type=='cached')
        {
            next_frame = next.value;
            YAHOO.util.Dom.replaceClass(next_frame, "yui-sldshw-cached", "yui-sldshw-next");
            this.next_frame = next_frame;
            this.effect.setup(this.next_frame);
        }
        else if ( next.type=='image_url')
        {
            next_frame = document.createElement('img');
            next_frame.setAttribute('src',next.value);
            next.type='cached';
            next.value=next_frame;
            YAHOO.util.Dom.addClass(next_frame, "yui-sldshw-frame");
            YAHOO.util.Dom.addClass(next_frame, "yui-sldshw-next");
            this.container.appendChild(next_frame);
            this.next_frame = next_frame;
            this.effect.setup(this.next_frame);
        }
        else if (next.type=='remote_html')
        {
            var callback = {
                success: function(o) {
                    var next_frame = document.createElement('div');
                    next_frame.innerHTML = o.responseText;
                    next_frame.setAttribute('id','frame_'+o.argument.id);
                    o.argument.type='cached';
                    o.argument.value=next_frame;
                    YAHOO.util.Dom.addClass(next_frame, "yui-sldshw-frame");
                    YAHOO.util.Dom.addClass(next_frame, "yui-sldshw-next");
                    this.container.appendChild(next_frame);
                    this.next_frame = o.argument.value;
                    this.effect.setup(this.next_frame);
                },
                failure: function(o) {
                    this.type='broken';
                    this.choose_next_frame();
                },
                scope: this,
                argument: next
            }
            var transaction = YAHOO.util.Connect.asyncRequest('GET', next.value , callback,  null);
        }
    },
    clean_up_transition : function()
    {
        YAHOO.util.Dom.replaceClass(this.active_frame, "yui-sldshw-active", "yui-sldshw-cached");
        YAHOO.util.Dom.replaceClass(this.next_frame, "yui-sldshw-next", "yui-sldshw-active");
        this.active_frame = this.next_frame;
        this.choose_next_frame();
    },
    transition: function( my_o )
    {
        var o = (my_o == null) ? {} : o ;
        var previous = (o.reverse ==null)?false:o.reverse;
        if (previous)
        {
            this.choose_next_frame(true);
        }
        var hide = this.effect.get_animation(this.active_frame);
			
        hide.onComplete.subscribe(this.clean_up_transition, this, true);
        hide.animate();
    }
    ,
    loop: function()
    {
        var self;
        self =this;
        this.loop_interval = setInterval( function(){
            self.transition();
        }, this.interval );
    }
}	

YAHOO.myowndb.slideshow.effects = {
    fadeOut: {
        setup: function(frame){
            YAHOO.util.Dom.setStyle(frame, 'opacity', '1');
        },
        get_animation: function(frame){
            return new YAHOO.util.Anim(frame, {
                opacity: {
                    to: 0
                }
                }, 1, YAHOO.util.Easing.easeOut);
        }
    },
    fadeIn: {
        setup: function(frame){
            YAHOO.util.Dom.setStyle(frame, 'opacity', '0');
            YAHOO.util.Dom.setStyle(frame, 'z-index', '20');
        },
        get_animation: function(frame){
            var region = YAHOO.util.Dom.getRegion(frame);
            return new YAHOO.util.Anim(frame, {
                opacity: {
                    to: 1
                }
                }, 1, YAHOO.util.Easing.easeOut);
        }
    }
}
YAHOO.myowndb.slideshow.effects.slideUp = {
    setup: function(frame){
        YAHOO.util.Dom.setStyle(frame, 'top', '0');
        YAHOO.util.Dom.setStyle(frame, 'left', '0');
    },
    get_animation: function(frame){
        var region = YAHOO.util.Dom.getRegion(frame);
        return new YAHOO.util.Motion(frame, {
            points: {
                by: [0,region.top-region.bottom]
            }
        }, 1, YAHOO.util.Easing.easeOut);
    }
}

var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;

YAHOO.namespace("snippet");
YAHOO.snippet.ticker = {
    init : function(className){
        this.speed = 50;
        // get all ticker element from a page
        this.tickerEl = Dom.getElementsByClassName(className);
        for(var i=0; i<this.tickerEl.length; i++) {
            this.buildTicker(this.tickerEl[i]);
        }
    },
    buildTicker : function(tickerEl) {
        // get all newsitems from a ticker element
        this.tickerItem = tickerEl.getElementsByTagName("li");
        this.tickerItemContainer = tickerEl.getElementsByTagName("ul");

        // get width of all list items and set the container to this width
        this.containerWidth = 0;
        for(var i=0; i<this.tickerItem.length; i++) {
            this.containerWidth += Dom.getRegion(this.tickerItem[i]).right - Dom.getRegion(this.tickerItem[i]).left;
        }
        Dom.setStyle(this.tickerItemContainer[0],"width",this.containerWidth + "px");

        // set position of container to the left of the containing box
        Dom.setStyle(this.tickerItemContainer[0],"left", (Dom.getRegion(tickerEl).right - Dom.getRegion(tickerEl).left) + "px");
        this.yPos = Dom.getRegion(this.tickerItemContainer[0]).top;

        // set listener for mouseover
        Event.addListener(this.tickerItemContainer[0],"mouseover",this.pauseAnim,this);

        // set listener for mouseout
        Event.addListener(this.tickerItemContainer[0],"mouseout",this.restartAnim,this);

        // start animation
        this.startAnim(tickerEl);
    },
    startAnim : function(tickerEl) {
        this.attributes = {
            points: {
                to: [-this.containerWidth + Dom.getX("newsTicker"),this.yPos]
            }
        };
        this.anim = new YAHOO.util.Motion(this.tickerItemContainer[0], this.attributes);
        this.startPos = Dom.getStyle(this.tickerItemContainer[0],"left");
        this.startPos = this.startPos.split("px")[0];
        this.currentWidth = this.containerWidth + parseFloat(this.startPos);
        this.anim.duration = this.currentWidth/this.speed;
        this.anim.useSeconds = true;
        this.anim.onComplete.subscribe(this.endAnim,this);
        this.anim.animate();
        tickerEl.style.visibility = "visible";
    },
    pauseAnim : function(e,obj) {
        obj.anim.stop();
    },
    restartAnim : function(e,obj) {
        obj.currentWidth = obj.containerWidth + Dom.getRegion(obj.tickerItemContainer[0]).left - Dom.getX("newsTicker");
        obj.anim.duration = obj.currentWidth/obj.speed;
        obj.anim.animate();
    },
    endAnim : function(state,dur,obj) {
        if(Dom.getRegion(obj.tickerItemContainer[0]).left <= -obj.containerWidth + Dom.getX("newsTicker")) {
            YAHOO.snippet.ticker.init("newsTicker");
        }
    }
}

initPage = function() {
    YAHOO.snippet.ticker.init("newsTicker");
}

Event.on(window,"load",initPage);
