contract SAMOYED is StandardToken {

    function () {
        //if ether is sent to this address, send it back.
        throw;
    }

    /* Public variables of the token */

    /*
    NOTE:
    The following variables are OPTIONAL vanities. One does not have to include them.
    They allow one to customise the token contract & in no way influences the core functionality.
    Some wallets/interfaces might not even bother to look at this information.
    */
    string public name;                    //Token Name: SAMOYED
    uint8 public decimals;                //Decimal place
    string public symbol;                 //identification
    string public version = 'H0.1';       //Version number

    function SAMOYED(
        uint256 _initialAmount,
        string _tokenName,
        uint8 _decimalUnits,
        string _tokenSymbol
        ) {
        balances[msg.sender] = _initialAmount;               //The contract publisher's balance is the number of issues
        totalSupply = _initialAmount;                        //Circulation
        name = _tokenName;                                  //Token name
        decimals = _decimalUnits;                           // Token decimal
        symbol = _tokenSymbol;                              //Token identification
    }

    /*Approval and then call the receiving contract. */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);

        //Call the receiveapprovalcall method that you want to notify the contract. This method does not need to be included in the contract.
        //receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData)
        //Assume that this can succeed, otherwise you should call vanilla approve.
        if(!_spender.call(bytes4(bytes32(sha3("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData)) { throw; }
        return true;
    }
}
function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);

    //Call the receiveapprovalcall method that you want to notify the contract. This method does not need to be included in the contract.
    //receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData)
    //Assume that this can succeed, otherwise you should call vanilla approve.
    if(!_spender.call(bytes4(bytes32(sha3("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData)) { throw; }
    return true;
}

/*Approval and then call the receiving contract. */