/**
 * EMC namespace
 * 
 * @author Patrick Lehnen <pl@i22.de>
 */
var EMC = function() {};

/**
 * EMC Toggle
 * 
 * @author Patrick Lehnen <pl@i22.de>
 */
EMC.Toggle = function() {

    /**
     * Icon: open state
     * 
     * @var {String}
     */
    var _icoOpen = basepath + 'images/layout/arr_gray_dn.gif';
    
    /**
     * Icon: close state
     * 
     * @var {String}
     */
    var _icoClosed = basepath + 'images/layout/arr_gray_rt.gif';
    
    var $activePageInput;
    
    /**
     * Constructor
     * 
     */
    var _construct = function() {
    
        // Tabs:
        var $ulMenu = $('<ul class="menu"/>');
        var $cnt = 0;
        
        $activePageInput = $( 'input#active_page' );
        var currentTab = $activePageInput.val();
        
        $('.tab').each( function( i ) {
            var $fieldset = $( this );
            var $legend = $fieldset.find('legend:first');
            
            var tabErrorCnt = 0;
            $('.subtab', $fieldset ).each( function() {
                var $subtab = $( this );
                
                // convert legend into div because of ie6-css issue:
                var $sublegend = $subtab.find('div.legend');
                
                var subtabErrorCnt = $( 'input.error, select.error', $subtab ).length;
                if ( subtabErrorCnt ) {
                	$sublegend.append( ' ('+ subtabErrorCnt +')' );
                    $subtab.addClass('error');
                }
                tabErrorCnt += subtabErrorCnt;
            } );
            
            
            var title = $legend.text();
            var cls = '';
            if ( tabErrorCnt ) {
                title += ' ('+ tabErrorCnt +')';
                cls = 'class="error"';
            }
            
            var $li = $( '<li '+cls+'><a href="javascript:void(0);">'+ title +'</a></li>' );
            
            if ( i == currentTab ) $li.addClass( 'active' );
            
            $legend.hide();
            $li.attr( 'cnt', $cnt );
            $li.click( _toggleTab );
            $ulMenu.append( $li );
            
            if ( $cnt != currentTab ) {
                $fieldset.hide();
            }
            $cnt++;
        });
        
        $('.tabs_header').prepend( '<div class="clearfix" />' );
        $('.tabs_header').prepend( $ulMenu );
        
        // Sub-Tabs
        $('.subtab .legend')
            .prepend( '<img src="'+ _icoOpen +'" alt="Toggle" class="toggle_ico" style="padding: 0 5px 0 5px;"/>' )
            .css( 'cursor', 'pointer')
            .click( _toggleSubTab )
        ;
    }
    
    /**
     * Click-Event on Tab
     * 
     */
    var _toggleTab = function() {
    
        //this.blur();
    	
    	$li = $( this );
        
        $('.tabs_header li.active').removeClass( 'active' );
        
        $li.addClass( 'active' );
        
        targetCnt = $li.attr( 'cnt' );
        
        $activePageInput.val( targetCnt );
        
        var cnt = 0;
        $('.tab').each( function() {
            $fieldset = $( this );
            if ( cnt == targetCnt ) {
                $fieldset.show();
            } else {
                $fieldset.hide();
            }
            cnt++;
        });
    }
    
    /**
     * Click-Event on SubTag
     * 
     */
    var _toggleSubTab = function() {
    
        var $this = $( this );
        var $table = $this.parents( 'fieldset:first' ).find( '.tab_content' );
        var $ico = $this.find( '.toggle_ico' );
        
        if ( $table.is( ':hidden' ) ) { // open:
            $ico.attr( 'src', _icoOpen );
            $table.show();
            $table.parent().removeClass('hidden');
        } else { // close:
            $ico.attr( 'src', _icoClosed );
            $table.hide();
            
            $table.parent().addClass('hidden');
        }
    }
    
    _construct();
}