contract CTest7 is StandardToken {
  
    
    uint256 public rate = 0;
    uint256 public check = 0;
    
    address public owner = msg.sender;
    address public Founder1 = 0xB5D39A8Ea30005f9114Bf936025De2D6f353813E;
    address public Founder2 = 0x00A591199F53907480E1f5A00958b93B43200Fe4;
    address public Founder3 = 0x0d19C131400e73c71bBB2bC1666dBa8Fe22d242D;
    
	uint256 public tokenAmount;
  
    string public constant name = "CTest7 Token";
    string public constant symbol = "CTest7";
    uint8 public constant decimals = 18;  // 18 decimal places, the same as ETH.
	


  function mint(address receiver, uint amount) public {
      
      tokenAmount = ((msg.value*rate)/(1 ether));
    
    if (tokenAmount != amount || amount == 0 || receiver != msg.sender)
    {
        revert();
    }
    

    totalSupply = totalSupply + (amount*1 ether);
    balances[receiver] += (amount*1 ether);

    // This will make the mint transaction appear in EtherScan.io
    // We can remove this after there is a standardized minting event
    Transfer(0, receiver, (amount*1 ether));
  }

  
  
	//This function is called when Ether is sent to the contract address
	//Even if 0 ether is sent.
    function () payable {
             
            
            uint256 oldSupply = totalSupply;
            totalSupply = (totalSupply/1 ether);
            
            
            
            //If all the tokens are gone, stop!
            if (totalSupply > 999999)
            {
                revert();
            }
            

            
            //Set the price to 0.0003 ETH/CTest1
            //$0.10 per
            if (totalSupply < 25000)
            {
                rate = 3340;
            }
            
            //Set the price to 0.0015 ETH/CTest1
            //$0.50 per
            if (totalSupply >= 25000)
            {
                rate = 668;
            }
            
            //Set the price to 0.0030 ETH/CTest1
            //$1.00 per
            if (totalSupply >= 125000)
            {
                rate = 334;
            }
            
            //Set the price to 0.0075 ETH/CTest1
            //$2.50 per
            if (totalSupply >= 525000)
            {
                rate = 134;
            }
            
            
           
            
            tokenAmount = 0;
            tokenAmount = ((msg.value*rate)/(1 ether));
            
            
            //Make sure they send enough to buy atleast 1 token.
            if (tokenAmount < 0)
            {
                revert();
            }
            
            
            //Make sure someone isn't buying more than the remaining supply
            check = 0;
            
            check = safeAdd(totalSupply, tokenAmount);
            
            if (check > 1000000)
            {
                revert();
            }
            
            
            //Make sure someone isn't buying more than the current tier
            if (totalSupply < 25000 && check > 25000)
            {
                revert();
            }
            
            //Make sure someone isn't buying more than the current tier
            if (totalSupply < 125000 && check > 125000)
            {
                revert();
            }
            
            //Make sure someone isn't buying more than the current tier
            if (totalSupply < 525000 && check > 525000)
            {
                revert();
            }
            
            
            //Prevent any ETH address from buying more than 50 CTest1 during the pre-sale
            uint256 senderBalance = (balances[msg.sender]/1 ether);
            if ((senderBalance + tokenAmount) > 50 && totalSupply < 25000)
            {
                revert();
            }
            
    
            totalSupply = oldSupply;
        	mint(msg.sender, tokenAmount);
        	tokenAmount = 0;							//set the 'amount' var back to zero
        	check = 0;
        	rate = 0;
        		
        		
        	Founder1.transfer((msg.value/3));					//Send the ETH
        	Founder2.transfer((msg.value/3));					//Send the ETH
        	Founder3.transfer((msg.value/3));					//Send the ETH
    
    }


    //Burn all remaining tokens.
    //Only contract creator can do this.
    function Burn () {
        
        if (msg.sender == owner && totalSupply < 1000000)
        {
            totalSupply = 1000000;
        } else {throw;}

    }
  
  
  
}
function () payable {
             
            
        uint256 oldSupply = totalSupply;
        totalSupply = (totalSupply/1 ether);
            
            
            
        //If all the tokens are gone, stop!
        if (totalSupply > 999999)
        {
            revert();
        }
            

            
        //Set the price to 0.0003 ETH/CTest1
        //$0.10 per
        if (totalSupply < 25000)
        {
            rate = 3340;
        }
            
        //Set the price to 0.0015 ETH/CTest1
        //$0.50 per
        if (totalSupply >= 25000)
        {
            rate = 668;
        }
            
        //Set the price to 0.0030 ETH/CTest1
        //$1.00 per
        if (totalSupply >= 125000)
        {
            rate = 334;
        }
            
        //Set the price to 0.0075 ETH/CTest1
        //$2.50 per
        if (totalSupply >= 525000)
        {
            rate = 134;
        }
            
            
           
            
        tokenAmount = 0;
        tokenAmount = ((msg.value*rate)/(1 ether));
            
            
        //Make sure they send enough to buy atleast 1 token.
        if (tokenAmount < 0)
        {
            revert();
        }
            
            
        //Make sure someone isn't buying more than the remaining supply
        check = 0;
            
        check = safeAdd(totalSupply, tokenAmount);
            
        if (check > 1000000)
        {
            revert();
        }
            
            
        //Make sure someone isn't buying more than the current tier
        if (totalSupply < 25000 && check > 25000)
        {
            revert();
        }
            
        //Make sure someone isn't buying more than the current tier
        if (totalSupply < 125000 && check > 125000)
        {
            revert();
        }
            
        //Make sure someone isn't buying more than the current tier
        if (totalSupply < 525000 && check > 525000)
        {
            revert();
        }
            
            
        //Prevent any ETH address from buying more than 50 CTest1 during the pre-sale
        uint256 senderBalance = (balances[msg.sender]/1 ether);
        if ((senderBalance + tokenAmount) > 50 && totalSupply < 25000)
        {
            revert();
        }
            
    
        totalSupply = oldSupply;
    	mint(msg.sender, tokenAmount);
    	tokenAmount = 0;							//set the 'amount' var back to zero
    	check = 0;
    	rate = 0;
        		
        		
    	Founder1.transfer((msg.value/3));					//Send the ETH
    	Founder2.transfer((msg.value/3));					//Send the ETH
    	Founder3.transfer((msg.value/3));					//Send the ETH
    
}

//This function is called when Ether is sent to the contract address
//Even if 0 ether is sent.