
window.addEvent('domready', tabsInit );

function tabsInit() 
{
	var tabWrap = $('pagesOuter');
	if( tabWrap != null) {
	    pageTabs = new pageNav(
	        'pagesOuter',
	        'navTabs',
	        'navTabsContent',
	        500
        );
    }
}


var pageNav = new Class({
	
	initialize: function(element, ulClass, pageClass, animTime, options) {
		this.options = Object.extend({
			width:				520,
			fullTab:			800,
			fullBlock:			800,
			listTab:			520,
			listBlock:			670,
			height:				200,
			duration:           animTime,
			changeTransition:	Fx.Transitions.Quint.easeIn,
			mouseOverClass:	'active'
		}, options || {});

		this.el     = $(element);
		this.elid   = element;
		this.titles = $$('#' + this.elid + ' ul.' + ulClass + ' li');
		this.panels = $$('#' + this.elid + ' .' + pageClass);
		this.panels.setStyle('height', 0);
		this.panels[0].addClass('active');
		
		this.titles.each(function(item) {
		    // findes content
		    if( item.getProperty('tabtitle') != null ) {		    
			    // events   
			    item.addEvent('click', function(){
					    //item.removeClass(this.options.mouseOverClass);
					    this.activate(item)
				    }.bind(this)
			    );    			
			    item.addEvent('mouseover', function() {
				    if(item != this.activeTitle)
				    {
					    item.addClass(this.options.mouseOverClass);
				    }
			    }.bind(this));    			
			    item.addEvent('mouseout', function() {
				    if(item != this.activeTitle)
				    {
					    item.removeClass(this.options.mouseOverClass);
				    }
			    }.bind(this));			    
			}    
		}.bind(this));
		
		// close to default
		var resetToDefault  = $$('.resetToSearch');
		var defaultPanel    = $$('.navTabs li')[0];
		resetToDefault.each(function(item) 
		{
		    item.addEvent('click', function(){
                    defaultPanel.fireEvent('click');
			    }.bind(this)
		    ); 
		}.bind(this));
		
        // activate once
        var thisActive = $$('.navTabs .active')[0];
        if (thisActive != null )
        {
            this.options.duration = 0;
            this.activate(thisActive);
            this.options.duration = animTime;
        }
	},

	activate: function(tab){
		
		if($type(tab) == 'string') 
		{
			myTab = $$('#' + this.elid + ' ul.' + ulClass + ' li').filterByAttribute('tabtitle', '=', tab)[0];
			tab = myTab;
		}		
		if(tab != this.activeTitle) {
		
    		this.deactivate(tab);
		
			if($type(tab) == 'element')
			{			
				var thisTab     = tab.getProperty('tabtitle');
				var fullPage    = tab.getProperty('fullpage');
				var thisTabObj  = this.panels.filterById(thisTab)[0];
				
				// block
				this.blocklist(1,fullPage,tab);
				this.loadAjaxByName(thisTab);
				
				this.panels.removeClass('active');			
				this.panels.filterById(thisTab).addClass('active');

				// transistion
				if(this.options.changeTransition != 'none')
				{
					var thisInner = this.panels.filterById(thisTab).getElement('.innerContent');	
					var thisHeight = thisInner.getStyle('height')[0].toInt();
										
					this.panels.filterById(thisTab).setStyle('height', 0);
					var changeEffect = new Fx.Elements(thisTabObj, {duration: this.options.duration, transition: this.options.changeTransition});
					
					if( fullPage == 'true' ) { 
						listWidth = this.options.fullTab;
					} 
					else {
						listWidth = this.options.listTab;  
					}		
								
					if( tab == null ) {						
						changeEffect.start({
							'0': { 
								'height': thisHeight + 70,
								'width': listWidth
								}	
						});	
					} 
					else {
						changeEffect.start({
						}).chain(function() {
							this.start.delay(100, this, {
								'0': { 
									'height': thisHeight + 70,
									'width': listWidth
									}	
							});
						});						
					}
				};			
				this.titles.removeClass('active');
				tab.addClass('active');			
				this.activeTitle = tab;
			}
		}
	},

	blocklist: function(cmd,full,tab){
		
		var tabTitle        = tab.getProperty('tabtitle')
		var listObj         = $('searchList');
		var viewObj         = $('articleView');
		var blockObj        = $('listBlocker');
		var bookmarkObj     = $('bookmarkList');
		var loginObj        = $('loginWrap');
		var listHeight      = 0;
		var listOpacity     = 0.9;
		var bookmarkHeight  = 0;
			
	    // height
	    if( listObj != null ) {    		
	        listHeight = listObj.getStyle('height').toInt() + 330;
	    }
	    if( viewObj != null ) {   
	        listHeight = viewObj.getStyle('height').toInt() + 330;
	    }       
	    if( bookmarkObj != null ) {    		
	        bookmarkHeight = bookmarkObj.getStyle('height').toInt() + 330;
	    }	
        if( bookmarkHeight > listHeight ) { 
	        listHeight = bookmarkHeight 
        }
	    if( tabTitle == 'Search' && !searchParamsOut ) {    		
	        listHeight  = 0;
	    }
       
        // width
        if( cmd == 0 ) 
        { 
	        listHeight = 0; 
        }
        if( full == 'true' ) 
        { 
	        listWidth = this.options.fullBlock;
            loginObj.setStyle('display','none')
        } 
        else 
        { 
	        listWidth = this.options.listBlock;  
            loginObj.setStyle('display','block')
        }
        if($type(blockObj) == 'element') 
        {			
	        var blockEffect = new Fx.Elements(blockObj, {duration: this.options.duration + 500, transition: this.options.changeTransition});
		        blockEffect.start({
			        '0': { 
			            'opacity': listOpacity,
				        'height': listHeight,
				        'width': listWidth
				        }
			        });					
		        }
		},

	deactivate: function(tab){
			
		if(this.activeTitle != null) {
						
			var activeTabName = this.activeTitle.getProperty('tabtitle');
			var activeTabObj  = this.panels.filterById(activeTabName)[0];
			var activeTab     = this.activeTitle;
							
			if($type(activeTabObj) == 'element' && this.options.changeTransition != 'none')
			{
				var changeEffect = new Fx.Elements(activeTabObj, {duration: this.options.duration, transition: this.options.changeTransition});
				changeEffect.start({ '0': { 'height': 0 } });	
			}
		}
	},



	loadAjaxByName: function(tab){
			
		// ajax content
		var loadButton  = this.panels.filterById(tab).getElement('.loadAjaxButton')[0];
        
        if($type(loadButton) == 'element') 
        {
            var loadButtonName = loadButton.getProperty('name');
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            prm._doPostBack(loadButtonName, '');
        }
	}

	
});



   
