function () public payable {

        
        require(isRunning());

        address member = msg.sender; 
        uint amount = msg.value; 

        
        if (now - jackpot.time >= JACKPOT_DURATION && jackpot.time > 0) {

            send(member, amount); 

            if (!payouts()) { 
                return;
            }

            send(jackpot.lastMember, jackpot.amount); 
            startTime = 0; 
            return;
        }

        
        require(amount >= MINIMAL_DEPOSIT && amount <= MAX_DEPOSIT);

        
        if (amount >= JACKPOT_MINIMAL_DEPOSIT) {
            jackpot.lastMember = member;
            jackpot.time = now;
        }

        
        deposits.push( Deposit(member, amount * calcMultiplier() / 100) );
        totalInvested += amount;
        jackpot.amount += amount * JACKPOT_PERCENTAGE / 10000;

        
        send(PROMOTION_FUND, amount * PROMOTION_PERCENTAGE / 10000);
        send(SUPPORT_FUND, amount * PAYROLL_PERCENTAGE / 10000);

        
        payouts();

    }