If you can give more details on the site (language?), that would help.
From what I see, your looking for the JSON-RPC API provided with bitcoind (the daemon version of the satoshi client).
Note this will require being able to execute a program in your production environment (aka, not a shared hosting plan) and have enough storage to hold the entire blockchain, as well as a CPU powerful enough to verify the blockchain in a timely manner (this isn't as important). Also note, any bitcoins stored on the site are vulnerable to hacks! Best to send them off to cold storage if they aren't required to be on the site (even then, delayed withdrawl is much better than no withdrawl). Please don't store large amounts of users coins in a hot wallet, I cannot stress this enough! This is the same for a blockchain.info API method where the password/private key is stored on the online machine.
Anyways, the RPC API calls your looking for:
Creating a new wallet
Returns: '1YourUsersDepositAddress'
Getting the addresses of an account:
Returns: [
'1YourUsersDepositAddress11111',
'1YourUsersDepositAddress22222'
]
Checking the balance of a wallet
Returns: 0.00000000
Getting transactions (to display non-confirmed transactions)
Returns: {
"account" : "user-01234",
"address" : "1YourUsersDepositAddress",
"category" : "receive",
"amount" : 0.01234567,
"confirmations" : 13172,
"blockhash" : "000000000000002217950f22b11d8c3f6c957b29a764173c7a7562036f2aa17b",
"blockindex" : 93,
"blocktime" : 1378290684,
"txid" : "87fd5e9e...",
"time" : 1378289833,
"timereceived" : 1378289833
}
Send BTC from account/wallet (note this will not go over the users balance)
Returns: '87fd5e9e...txid_goes_here'
Send BTC from server wallet (will take from any account, though account balances will not change):
Returns: '87fd5e9e...txid_goes_here'
Edit: To clarify, I am piggy backing off of bitcoind's internal account system. This allows multiple addresses to be tied to an account. If you ever want to give your users a new address (or they request it), running the getnewaddress call will give you another address, and both can be used. Note that an accounts balance does not always represent the actual amount of bitcoins in the address tied to the account (due to the ability to move coins off-chain to another account).
If you need more help, feel free to ask!