



var package_box_folder_manager;



function packageBoxFolder()
{
    var _this= this;

    this.package_webservice= '/webserv/getPackageContents.php';
    this.default_package_box_height= '154px';

    this.loop_handle= 0;
    this.loop_step;

    this.layer_height= 0;
    this.current_opacity= 0;


    this.unfoldLoopStep= function( box )
    {
        //var limit= parseInt( _this.default_package_box_height );

        var box_height= parseInt( box.style.height );
        
        
        if( box_height < _this.layer_height + 50 )
        {
            box.style.height= ''+( box_height+5 )+'px';


            if( _this.current_opacity < 1 )
            {
                _this.current_opacity= _this.current_opacity+0.1;
            
                var short= portableGetElementsByClassName( box, 'SPAdesc' )[ 0 ];
                var long= portableGetElementsByClassName( box, 'SPAlongdesc' )[ 0 ];

                short.style.display= "block";
                long.style.display= "block";
                setOpacity( long, _this.current_opacity );
                setOpacity( short, 1-_this.current_opacity );



                
            }
            
            
        }
        else
        {
            var short= portableGetElementsByClassName( box, 'SPAdesc' )[ 0 ];
            short.style.display= "none";
            window.clearInterval( _this.loop_handle );
            _this.loop_handle= 0;
        }
        
    }



    this.foldLoopStep= function( box )
    {
        //var limit= parseInt( _this.default_package_box_height );

        var df= parseInt( _this.default_package_box_height );
        var box_height= parseInt( box.style.height );


        if( box_height > df )
        {
            box.style.height= ''+( box_height-5 )+'px';


            if( _this.current_opacity > 0 )
            {
                _this.current_opacity= _this.current_opacity-0.1;

                var short= portableGetElementsByClassName( box, 'SPAdesc' )[ 0 ];
                var long= portableGetElementsByClassName( box, 'SPAlongdesc' )[ 0 ];

                short.style.display= "block";
                long.style.display= "block";
                setOpacity( long, _this.current_opacity );
                setOpacity( short, 1-_this.current_opacity );




            }





            
        }
        else
        {
            var long= portableGetElementsByClassName( box, 'SPAlongdesc' )[ 0 ];
            long.style.display= "none";
            
            window.clearInterval( _this.loop_handle );
            _this.loop_handle= 0;
        }

    }





    


    this.displayFetchedDescription= function( response )
    {
//         console.log( response.responseText );
        var res= JSON.parse( response.responseText );

        console.log( 'test' );
        
        var elem_id= res.type+'_'+res.id;

        console.log( 'test2' );
        
        var box= document.getElementById( elem_id ).parentNode.parentNode;
        
        var short_desc_box= portableGetElementsByClassName( box, 'SPAdesc' )[ 0 ];
        var newbox= document.createElement( 'div' );

        console.log( 'test25' );

        newbox.className= 'SPAlongdesc';

                console.log( 'test25 ===' );
        console.log( "Data %o", res );
        console.log( 'Nothing...' );
        
        newbox.innerHTML= res.description;
        console.log( 'test3' );

        var folder_link= document.createElement( 'a' );
        folder_link.innerHTML= lang.dict.packageLessButton;
        folder_link.href= 'javascript:void(0)';
        console.log( 'test4' );
        newbox.appendChild( folder_link );
        console.log( 'test45' );

        console.log( short_desc_box.parentNode );
        
        short_desc_box.parentNode.insertBefore( newbox, short_desc_box );
        
        console.log( short_desc_box.parentNode );
        addPortableEventListener( folder_link, 'click', function( event ){ _this.switchPackagePage( event ); } );

                console.log( 'starting' );
        _this.startUnfoldLoop( box );
        
    }
    
    
    this.startUnfoldLoop= function( box )
    {
        console.log( 'starting2' );
        if( this.loop_handle != 0 )
            return;

        console.log( 'starting' );
        var short= portableGetElementsByClassName( box, 'SPAdesc' )[ 0 ];
        var long= portableGetElementsByClassName( box, 'SPAlongdesc' )[ 0 ];

        this.current_opacity= 0;
        short.style.display= "block";
        long.style.display= "block";
        setOpacity( long, 0.0 );

        
        box.style.height= this.default_package_box_height;

        this.layer_height= long.clientHeight;
        
        this.loop_handle= window.setInterval( function(){ _this.unfoldLoopStep( box ) }, 20 );
    }
    

    this.unfoldPackageBox= function( box, id, type )
    {
        var elems= portableGetElementsByClassName( box, 'SPAlongdesc' );

        console.log( 'UNFOLDING', box );
        console.log( elems );

        if( elems.length == 0 )
        {
            advAJAX.get({
                url: _this.package_webservice,
                parameters : {
                    "id" : id,
                    "type" : type
                    },
                onSuccess: function( response ){ _this.displayFetchedDescription( response ); }
                });
        }
        else
            this.startUnfoldLoop( box );
        
    }


    this.foldPackageBox= function( box )
    {
        if( this.loop_handle != 0 )
            return;
        

        console.log( 'starting' );
        var short= portableGetElementsByClassName( box, 'SPAdesc' )[ 0 ];
        var long= portableGetElementsByClassName( box, 'SPAlongdesc' )[ 0 ];

        this.current_opacity= 1;
        short.style.display= "block";
        long.style.display= "block";
        setOpacity( short, 0.0 );
//         box.style.height= this.default_package_box_height;

//         this.layer_height= long.clientHeight;

        this.loop_handle= window.setInterval( function(){ _this.foldLoopStep( box ) }, 20 );
    }


    this.isPackageBoxFolded= function( box )
    {
        var bh;
        
        try
        {
            bh= box.style.height;
            console.log( bh );

            if( bh.length == 0 )
                return true;
            
            console.log( this.default_package_box_height );
            
            if( bh == this.default_package_box_height )
                return true;
            else
            {
                console.log( 'returning true' );
                return false;
            }

        }
        catch( e )
        {
            return true;
        }

    }

















    this.switchPackagePage= function( event )
    {

        var clicked= getEventTarget( event );
        
        var package_box= clicked.parentNode.parentNode;


        var tmp2= clicked.id.split( '_' );

//         console.log( package_box );


        var tmp=  _this.isPackageBoxFolded( package_box );
        console.log( "tmp: ", tmp );

        
        if( tmp )
        {
            //console.log( '---1 ' );
            this.unfoldPackageBox( package_box, tmp2[ 1 ], tmp2[ 0 ] );
        }
        else
        {
            //console.log( '---2 ' );
            this.foldPackageBox( package_box );

        }
    }




    this.highlightPackageBox= function( box )
    {
        // e1e1e1
        console.log( 'highlighted package: %o', box );
        box.style.backgroundColor= '#e1e1e1';
        box.style.backgroundImage= 'url( /main/img/spaOffer_bg_dark.gif )';

    }
    
    

    this.selectUnfoldedPackage= function()
    {
        
    var path= window.location.pathname.split( '/' );

    switch( path[ 1 ] )
    {
        case 'accomodation':
        {
            if( ( path[ 3 ] ) && ( path[ 3 ] == 'package' ) )
            {
                // forgive me please...
                var id= parseInt( ( path[ 4 ].split( '=' ) )[ 1 ] );
                var box= document.getElementById( 'package_'+id ).parentNode.parentNode;
                
                this.unfoldPackageBox( box, id, 'package' );
                this.highlightPackageBox( box );
                console.log( id );
                break;
            }


            console.log( path[ 3 ]  );
            if( ( path[ 3 ] ) && ( path[ 3 ] == 'spa' ) )
            {
                var id= parseInt( ( path[ 4 ].split( '=' ) )[ 1 ] );
                var box= document.getElementById( 'spa_'+id ).parentNode.parentNode;

                console.log( box, id, 'spa' );
                this.unfoldPackageBox( box, id, 'spa' );
                this.highlightPackageBox( box );
                console.log( id );

            }
            break;
        }

        case 'leisure':
        {
            if( ( path[ 3 ] ) && ( path[ 3 ] == 'package' ) )
            {
                var id= parseInt( ( path[ 4 ].split( '=' ) )[ 1 ] );
                var box= document.getElementById( 'leisure_'+id ).parentNode.parentNode;

                this.unfoldPackageBox( box, id, 'leisure' );
                console.log( id );

            }
            break;
        }



    }




    }












    
    
    var buttons= document.getElementsByClassName( 'packageUnfolderButton' );

    for( var itr= 0; itr < buttons.length; itr++ )
    {
        console.log( buttons[ itr ] );
        addPortableEventListener( buttons[ itr ], 'click', function( event ){ _this.switchPackagePage( event ); } );
    }


    this.selectUnfoldedPackage();


}






function initPackageOfferPageUnfolder()
{
    package_box_folder_manager= new packageBoxFolder();
    
    
    
    
}









runOnLoad( initPackageOfferPageUnfolder );










