Equation for mining profit
The average amount of time (in seconds) to find a single share is:

difficulty * 2^32 / hashrate


In that equation, difficulty is the difficulty of a share and hashrate is your hash rate in hashes per second.  A day has 86,400 seconds in it, so the number of shares you'll find in 24 hours is:

86,400 / (difficulty * 2^32 / hashrate)


A slightly more complex formula, using PHP:

$hashTime = ((float) $difficulty) * (pow(2.0, 32) / ($hashRate * 1000.0)) ;
$powerCostPerYear = 365.25 * 24.0 * $powerConsumption / 1000.0 * $electricityRate;
$blocksPerYear =  (365.25 * 24.0 * 3600.0) / $hashTime ;
$coinsPerYear = $blockCoins * $blocksPerYear;
$revenuePerYear = $coinsPerYear * $conversionRate;
$profitPerYear = $revenuePerYear - $powerCostPerYear;
$netProfit1st = $revenuePerYear - $costHardware - $powerCostPerYear;
if ($profitPerYear &lt;= 0) $breakEvenTime = -1;
else $breakEvenTime = $costHardware / ($profitPerYear / (365.25 * 24.0 * 3600.0));