/* ---- drag&drop products ---- */
window.addEvent( 'domready', function()
{
    var basket = $( 'basket' );
    
    if( !basket )
    {
        return;
    }
    
    $$( '.product' ).each( function( product )
    {
        if( !product.getElement( '.add_cart_button' ) )
        {
            return;
        }
        
        product.addEvent( 'mousedown', function( ev )
        {
            var clone = product.clone().set( 'id', 'cloneProduct' ).setStyles( this.getCoordinates() ).setStyles(
            {
                'opacity': 0.7, 
                'position': 'absolute',
                'z-index': 30000
            } ).inject( document.body );
            
            new Drag.Move( clone,
            {
                snap: 0,
                droppables: [basket],
                
                onDrop: function( element, droppable )
                {
                    if( droppable )
                    {
                        var item = element.clone();
                        
                        item.setStyles(
                        {
                            'left': 0,
                            'top': 0,
                            'right': 0,
                            'bottom': 0,
                            'width': 'auto',
                            'height': 'auto',
                            'position': 'relative',
                            'opacity': 1.0
                        } );
                    
                        item.inject( droppable.getElements( 'div.hr' ).getLast(), 'after' );
                        droppable.getElements( 'div.hr' ).getLast().clone().inject( item, 'after' );
                    }
                },
             
                onEnter: function( element, droppable )
                {
                    basket.addClass( 'active' );
                },
             
                onLeave: function( element, droppable )
                {
                    basket.removeClass( 'active' );
                },
                
                onBeforeStart: function( element )
                {
                    basket.addClass( 'droppable' );    
                },
                
                onCancel: function( element )
                {
                    basket.removeClass( 'droppable' );
                    basket.removeClass( 'active' );
                    
                    element.destroy();    
                },
                
                onComplete: function( element )
                {
                    basket.removeClass( 'droppable' );
                    basket.removeClass( 'active' );
                    
                    element.destroy();
                }
            } ).start( ev );
        } );
        
        product.getElements( 'a' ).addEvent( 'mousedown', function( ev )
        {
            new Event( ev ).stopPropagation();
        } );
        
        product.getElements( 'button' ).addEvent( 'mousedown', function( ev )
        {
            new Event( ev ).stopPropagation();
        } );
    } );
} );