var content_tabs_controller;

function contentTabsController()
{
    _this= this;

	this.myselectedindex=0;//mw+
    this.mytitleislink=new Array();
	
	this.tab_index= new Array();
    this.tab_titles= new Array();

    this.special_tabs= new Array();
    this.tab_bar_length= 0;
    
    this.scrolling_handle= false;


    this.gallery_tabs= new Array();
    this.description_tabs= new Array();

    this.startScrollingLeft= function()
    {
        if( this.scrolling_handle )
            window.clearInterval( this.scrolling_handle );
        
        this.scrolling_handle= window.setInterval(
            function(){ _this.scrollLeft() },
            20
            );
    }



    this.startScrollingRight= function()
    {
        if( this.scrolling_handle )
            window.clearInterval( this.scrolling_handle );

        this.scrolling_handle= window.setInterval(
            function(){ _this.scrollRight() },
            20
            );
    }


    this.scrollLeft= function()
    {
        var tbar= document.getElementById( 'contentTabBar' );

        var currmar= parseInt( tbar.style.marginLeft );

        // ,,,
        if( currmar < 26 )
            tbar.style.marginLeft= ""+(currmar+6)+"px";
        else
            window.clearInterval( this.scrolling_handle );

    }
    

    this.scrollRight= function()
    {
        var tbar= document.getElementById( 'contentTabBar' );

        var currmar= parseInt( tbar.style.marginLeft );


/*        console.log(  Math.abs( currmar )+600 );*/
/*        console.log( tbar.offsetWidth );*/
        
        if( ( Math.abs( currmar )+580 ) < this.tab_bar_length )
            tbar.style.marginLeft= ""+(currmar-6)+"px";
        else
             this.stopScrolling()

    }



    this.stopScrolling= function()
    {
        if( this.scrolling_handle )
            window.clearInterval( this.scrolling_handle );

        this.scrolling_handle= false;
    }


    
    this.prepareTabBarElement= function( parent_node )
    {
        parent_node= parent_node.parentNode;
        var tab_bar= document.createElement( 'div' );

        
        
        tab_bar.className= "contentTabBar";
        tab_bar.id= "contentTabBar";
        tab_bar.style.marginLeft= "8px";
        var tab_bar_wrapper= document.createElement( 'div' );

        tab_bar_wrapper.className= "contentTabBarWrapper";
        tab_bar_wrapper.appendChild( tab_bar );
        parent_node.insertBefore( tab_bar_wrapper, parent_node.firstChild );


        var left_slider= document.createElement( 'div' );
        left_slider.className= "leftTabSlider";

        var left_slider_link= document.createElement( 'a' );
        left_slider.appendChild( left_slider_link );

        addPortableEventListener(
            left_slider,
            'mouseover',
            function(){ _this.startScrollingLeft(); }
            )

        addPortableEventListener(
            left_slider,
            'mouseout',
            function(){ _this.stopScrolling(); }
            )
        
        tab_bar_wrapper.appendChild( left_slider );

        

        
        var right_slider= document.createElement( 'div' );
        right_slider.className= "rightTabSlider";

        var right_slider_link= document.createElement( 'a' );
        right_slider.appendChild( right_slider_link );


        addPortableEventListener(
            right_slider,
            'mouseover',
            function(){ _this.startScrollingRight(); }
            )

        addPortableEventListener(
            right_slider,
            'mouseout',
            function(){ _this.stopScrolling(); }
            )
            
        tab_bar_wrapper.appendChild( right_slider );




        
        
        return tab_bar;
    }


    this.selectTab= function( number )
    {


        
        if( document.getElementById( 'selectedContentTab' ) )
        {
            if( document.getElementById( 'selectedContentTab' ).className == 'contentTabHandle oldSpecialTab' )
                document.getElementById( 'selectedContentTab' ).className= 'contentTabHandle specialTab';

            document.getElementById( 'selectedContentTab' ).removeAttribute('id');


        }

        
        var tab_bar= document.getElementById( 'contentTabBar' );

        
        tab_bar.childNodes[ number ].id= 'selectedContentTab';
//         console.log( tab_bar );

        if( tab_bar.childNodes[ number ].className == 'contentTabHandle specialTab' )
                tab_bar.childNodes[ number ].className= 'contentTabHandle oldSpecialTab';


        
        var tabs= portableGetElementsByClassName( tab_bar.parentNode.parentNode, 'contentTab' );

/*        console.log( 'tabs:' );*/
/*        console.log( tabs );*/
/*        console.log( '<-tabs' );*/
        
        
        for( var itr= 0; itr < tabs.length; itr++ )
        {
            if( itr == number )
                tabs[ itr ].style.display= "block";
            else
                tabs[ itr ].style.display= "none";
        }


        var galls= portableGetElementsByClassName( tabs[ number ], 'loadGalleryContents' );
        if( galls[ 0 ] )
            contentLoader.loadGallery( galls[ 0 ] );

        
        var desc= portableGetElementsByClassName( tabs[ number ], 'loadDescriptionContents' );
        if( desc[ 0 ] )
            contentLoader.loadDescription( desc[ 0 ] );
        
    }










    this.selectNamedTab= function( name )
    {
	
        var tab_bar= document.getElementById( 'contentTabBar' );
        var tabs= tab_bar.childNodes;
        for( var itr= 0; itr < tabs.length; itr++ )
        {
            if( tabs[ itr ].firstChild.nodeValue == name )
            {
                this.selectTab( itr );
                break;
                
            }
        }
    }


    this.selectFirstTabOfType= function( tab_type )
    {
        if( ( tab_type == 'gallery' ) && ( this.gallery_tabs.length > 0 ) )
            this.selectTab( this.gallery_tabs[ 0 ] );
        else if( ( tab_type == 'description' ) && ( this.description_tabs.length > 0 ) )
            this.selectTab( this.description_tabs[ 0 ] );

        
    }






    this.handleTabClick= function( event )
    {
        var sender= getEventTarget( event );
//         console.log( sender );

        while( ( sender.className != 'contentTabHandle' ) && ( sender.className != 'contentTabHandle specialTab' ) )
            sender= sender.parentNode;

        var pos= 0;
        var tmp_tab= sender;
        
        while( tmp_tab.previousSibling )
        {
            pos++;
            tmp_tab= tmp_tab.previousSibling;
        }

        
        this.selectTab( pos );
    }
    

    this.fillTabBar= function( bar )
    {
/*        console.log( bar );*/
        for( var itr= 0; itr < this.tab_titles.length; itr++ )
        {
/*            console.log( 'test' );*/
            var tab= document.createElement( 'div' );

            tab.innerHTML= this.tab_titles[ itr ];

            tab.className= "contentTabHandle";

            if( this.special_tabs[ itr ] )
                tab.className= "contentTabHandle specialTab";

            
            var tmp= document.createElement( 'div' );
            
            tmp.className= "tabLeftTopCorner";
            tab.appendChild( tmp );

            var tmp2= document.createElement( 'div' );

            tmp2.className= "tabRightTopCorner";
            tab.appendChild( tmp2 );
			//dont assign a click handler if H1 has A element(link)
            if(this.mytitleislink[itr]==false){	
				
				addPortableEventListener(
					tab,"click",function( event ){ _this.handleTabClick( event ); }
					);
			}
            bar.appendChild( tab );
            
            this.tab_bar_length= tab.offsetLeft+tab.offsetWidth;
/*            console.log( this.tab_bar_length );*/
        }//for##

		$(tab).children('a:first').click(function(){this.selectTab();});
        
    }
    
    
    this.prepareTabBar= function()
    {
        var tabs= document.getElementsByClassName( 'contentTab' );

        

        for( var itr= 0; itr < tabs.length; itr++ )
        {
            var titles= tabs[ itr ].getElementsByTagName( 'H1' );
			var currtab=$(tabs[itr]);//jq object
			var currH1=$(currtab.children('H1')[0]);
			//console.log(currtab.html());
			//console.log(currH1.html());
			//save information wheter H1 contains a link
			if(currH1.children('a').length==0){//console.log('NO A');	
				this.mytitleislink[itr]=false;
			}else{this.mytitleislink[itr]=true;}
			
            this.tab_titles[ itr ]= titles[ 0 ].innerHTML;
			if($(titles[0]).hasClass('tabIsSelected')){this.myselectedindex=itr;}


            if( ( titles[ 0 ].className ) && ( titles[ 0 ].className  == 'specialTab' ) )
                this.special_tabs[ itr ]= true;
            else
                this.special_tabs[ itr ]= false;

            
            tabs[ itr ].removeChild( titles[ 0 ] );
            this.tab_index[ itr ]= tabs[ itr ];


            var galls= portableGetElementsByClassName( tabs[ itr ], 'loadGalleryContents' );
            if( galls[ 0 ] )
                this.gallery_tabs[ this.gallery_tabs.length ]= itr;


            var desc= portableGetElementsByClassName( tabs[ itr ], 'loadDescriptionContents' );
            if( desc[ 0 ] )
                this.description_tabs[ this.description_tabs.length ]= itr;





            
/*            tabs[ itr ].style.display= "none";*/
        }
        
        var tbar= this.prepareTabBarElement( tabs[ 0 ] );
        this.fillTabBar( tbar );

        
        
    }
    
    
//     console.log( 'test123' );

    
    if (document.getElementsByClassName( 'contentTab' ).length>0){
		this.prepareTabBar();
	/*    console.log( 'test1234' );*/
		this.selectTab( this.myselectedindex );
	//     console.log( 'test12345678' );
	}
	return this;
}







function initContentTabsController()
{
    //alert( 'test' );
    content_tabs_controller= new contentTabsController();
//	$('div.contentTabBar').prepend($('div.contentTabHandle#selectedContentTab'));

}


runOnLoad( initContentTabsController );

function myselectTab(num){
	content_tabs_controller.selectTab(num);
}
//------------------------- toggle floated tabs hover effect

function mytoggle(el){
	var th=$(el).parent();//contentTabHandle
	var lc=$(el).next();//tab left corner
	var rc=$(el).next().next();//tab right corner
	if(th.hasClass('specialTab')){
		$(th).toggleClass('specialTab2');
		$(lc).toggleClass('specialTab_tabLeftTopCorner');
		$(rc).toggleClass('specialTab_tabRightTopCorner');
	}else{
		if(th.attr('id')=='selectedContentTab'){
			$(th).toggleClass('selectedContentTab_contentTabHandle');
			$(lc).toggleClass('selectedContentTab_tabLeftTopCorner');
			$(rc).toggleClass('selectedContentTab_tabRightTopCorner');
		}else{
			$(th).toggleClass('contentTabHandle2');
			$(lc).toggleClass('contentTabHandle_tabLeftTopCorner');
			$(rc).toggleClass('contentTabHandle_tabRightTopCorner');
		}//if2
	}//if

}//mytoggle
function myf(){
	if (document.getElementsByClassName( 'contentTab' ).length ==0)
	return;
	$('.contentTabBar').append('<span style="clear:left;"></span>');
	$('.contentTabHandle a').each( function(index) { 
		$(this).hover(function(){mytoggle(this);},function(){mytoggle(this);});//hover
	});//each
}//myf
runOnLoad( myf);

