

FixedMenu = Class.create();
FixedMenu.DEFAULT_OPTIONS = {referenceElement:document.body};
Object.extend(FixedMenu.prototype,{
            initialize:function(element,options){
                this.element = element;
                this.options = Object.extend({},FixedMenu.DEFAULT_OPTIONS);
                this.options = Object.extend(this.options,options);                
                this.ieScrollElement = this.options.ieScrollElement;
                this.setMenuOffset = this.setMenuOffset.bind(this);
                this.setMenuOffsetIE6 = this.setMenuOffsetIE6.bind(this);
            },
            loadPanel:function(){
                this.menuWindowLoad();
            },
            setMenuOffset: function () {                
                var header = $('menu');
                if (!header) return;                
                var currentOffset = document.documentElement.scrollTop || document.body.scrollTop; // body for Safari
                var startPos = parseInt(this.initialPos) || 190;
                var desiredOffset = startPos - currentOffset;
                if (desiredOffset <= 0){                    
                    Element.addClassName(this.element,'fixed');
                }else {                    
                    Element.removeClassName(this.element,'fixed');
                }
                /*
                if (desiredOffset != parseInt(header.style.top)) 
                        header.style.top = desiredOffset + 'px';

                var currentLeftOffset = document.documentElement.scrollLeft || document.body.scrollLeft; // body for Safari
                if (currentLeftOffset != - parseInt(header.style.left))
                        header.style.left = '-' + currentLeftOffset + 'px';
                */
            },
            setMenuOffsetIE6: function (){            
                var header = $(this.element);                     
                if (!header) return;                                                
                var currentOffset = document.documentElement.scrollTop || document.body.scrollTop; // body for Safari                
                var currentLeftOffset = document.documentElement.scrollLeft || document.body.scrollLeft; // body for Safari
                var startPos = parseInt(this.initialPos) || 190;
                var desiredOffset = startPos - currentOffset;
                
                if (desiredOffset <= 0){              
                
                    header.absolutize();
                    header.setStyle({top:currentOffset+'px',left:+this.initialLeft+currentLeftOffset+'px'});
                    
                
                }else {
                    header.setStyle({'position':'static'})
                }
                /*
                if (currentLeftOffset != - parseInt(header.style.left))
                        header.style.left = '-' + currentLeftOffset + 'px';                
                    */
            },
            /*copied and adapted from www.quirksmode.org*/
            menuWindowLoad:function (){
                
                this.initialPos = $(this.element).cumulativeOffset().top;
                this.initialLeft = $(this.element).cumulativeOffset().left;
                if( window.XMLHttpRequest ){/*non-ie6*/
                    Event.observe(window,'scroll',this.setMenuOffset);
                    this.setMenuOffset();
                }else{        
                    //http://192.168.36.50/russ/navtest/nav2.jsp#login                               
                    Event.observe(window,'scroll',this.setMenuOffsetIE6);                    
                    this.setMenuOffsetIE6();
                }
                
                /* in Moz 1.7.12/FF 1.5 window.onscroll is wiped when you use the mouse wheel while 
		the pointer is NOT above a true page element (ie. when it is above the naked documentElement)
		 ... or something ...
		Of course Safari doesn't accept document.documentElement.onscroll; Op and IE 7 do */                
            }            
});
FixedMenu.DEFAULT_INFO = {'autoLoad':true};
FixedMenu.createFixedMenu= function(param){
    try{
        
    var fixedmenu = new FixedMenu(param.element,{ieScrollElement:param.ieScrollElement});
    fixedmenu.loadPanel();
    }catch(e){
        console.log(e);
    }
    return fixedmenu;
}
FixedMenu.menuWindowLoad = function(){
    var info = Object.extend({},this.DEFAULT_INFO);
    info = Object.extend(info,this.options);    
    this.options = info;//store object for possible debugging purposes.
    if( info.elem == null ) return;
    if( info.elem.length == null ){
        info.elem=  [info.elem];
    }
    var params= info.elem;
    for( var i=0; i < params.length; i++){
        var param = params[i];        
        param.object = this.createFixedMenu(param);//store reference for debugging.
    }
}
Event.observe(window,'load',FixedMenu.menuWindowLoad.bind(FixedMenu));
