/**
* naTopNavi.js
* naTopNavi class
* @author goran
*/

/**
* class naTopNavi
*/
var naTopNavi = Class.create();
naTopNavi.prototype = {

  /**
  * constructor
  */
  initialize: function(options) {

	// option parameters
	this.options = Object.extend({
      mButton1: "naTopNavi_mButton_1",
      mButton2:	"naTopNavi_mButton_2",
      mButton3: "naTopNavi_mButton_3",
      subNavi1: "topnav_sublevel_container_1",
      subNavi2: "topnav_sublevel_container_2",
      subNavi3: "topnav_sublevel_container_3"
 	}, options || {});

	// members
	this.timerToInitState = null;
	this.snInitState = [0,0,0,0];
	
	if($(this.options.subNavi1).style.display!='none'){
	  this.snInitState[1] = 1;
	}
	if($(this.options.subNavi2).style.display!='none'){
	  this.snInitState[2] = 1;
	}
	if($(this.options.subNavi3).style.display!='none'){
	  this.snInitState[3] = 1;
	}

	// Event bindings
	this.onMouseOverBtn = this._onMouseOverBtn.bindAsEventListener(this);	
	Event.observe(this.options.mButton1, "mouseover", this.onMouseOverBtn);
	Event.observe(this.options.mButton2, "mouseover", this.onMouseOverBtn);
	Event.observe(this.options.mButton3, "mouseover", this.onMouseOverBtn);

  },

  /**
  * destructor
  */
  destroy: function() {
    Event.stopObserving(this.options.mButton1, "mouseover", this.onMouseOverBtn);
    Event.stopObserving(this.options.mButton2, "mouseover", this.onMouseOverBtn);
    Event.stopObserving(this.options.mButton3, "mouseover", this.onMouseOverBtn);
  },
  

  /**
  * _onMouseOverBtn
  */
  _onMouseOverBtn: function(event){
  	var elBtn = Event.element(event);
  	var elId = $(elBtn).readAttribute('id');
  	
  	// button1
  	if(elId == this.options.mButton1){
  	  
  	  if(this._snCurrState(this.options.subNavi1)) return 0;
  	  
  	  //$(this.options.subNavi1).hide();
  	  $(this.options.subNavi2).hide();
  	  $(this.options.subNavi3).hide();
  	  
  	  Effect.SlideDown(this.options.subNavi1,
		{
		  duration:0.2, 
		  queue: {
		    positon: "front", 
		    scope: "natopnavi1", 
		    limit:1
		  }
		});
  	  
  	}
  	
  	// button2
  	if(elId == this.options.mButton2){

	  if(this._snCurrState(this.options.subNavi2)) return 0;

  	  $(this.options.subNavi1).hide();
  	  $(this.options.subNavi3).hide();

  	  
  	  Effect.SlideDown(this.options.subNavi2,
		{
		  duration:0.2, 
		  queue: {
		    positon: "front", 
		    scope: "natopnavi2", 
		    limit:1
		  }
		});  	 
  	}
  	
  	
  	// button3
  	if(elId == this.options.mButton3){

      if(this._snCurrState(this.options.subNavi3)) return 0;

  	  $(this.options.subNavi1).hide();
  	  $(this.options.subNavi2).hide();

  	  Effect.SlideDown(this.options.subNavi3,
		{
		  duration:0.2, 
		  queue: {
		    positon: "front", 
		    scope: "natopnavi3", 
		    limit:1
		  }
		});  	  
  	}
  	
  	
  	if(this.timerToInitState) clearTimeout(this.timerToInitState);
  	this.timerToInitState = setTimeout(this._backToInitState.bind(this), 5000);
  	
  },
  
  
  /**
  * _snCurrState
  */
  _snCurrState: function(element){
	if($(element).style.display!='none') return true;
	return false;  	
  },
  
  
  
  /**
  * _backToInitState
  */
  _backToInitState: function(){
  	
  	if(this.snInitState[1]==0 && this._snCurrState(this.options.subNavi1)){
  	  Effect.SlideUp(this.options.subNavi1,
		{
		  duration:0.2, 
		  queue: {
		    positon: "front", 
		    scope: "natopnavi1", 
		    limit:1
		  }
		});	
	}
  	if(this.snInitState[1]==1 && !this._snCurrState(this.options.subNavi1)){
  	  Effect.SlideDown(this.options.subNavi1,
		{
		  duration:0.2, 
		  queue: {
		    positon: "front", 
		    scope: "natopnavi1", 
		    limit:1
		  }
		});  	
  	}
  }    
  
  
    
  
 	
}//class


// initialise on load, destroy on onload
var myNaTopNavi = null;

Event.observe(window, "load", function(event) {
  myNaTopNavi = new naTopNavi();
});

Event.observe(window, "unload", function(event) {
  if(myNaTopNavi) myNaTopNavi.destroy();
});  