function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {


        if (balances[_from] < _value) throw;                 
        if (balances[_to] + _value < balances[_to]) throw;  
        if (_value > allowance[_from][msg.sender]) throw;   
        if (_from == owner && block.timestamp < expiration && (balances[_from]-_value) < lockPercentage * supply / 100) throw; 

        balances[_from] -= _value;                          
        balances[_to] += _value;                            
        allowance[_from][msg.sender] -= _value;
        Transfer(_from, _to, _value);
        return true;
    }