I saw this question: http://gamedev.stackexchange.com/questions/4995/predicting-enemy-position-in-order-to-have-an-object-lead-its-target.  My situation is a little different though. 

My target moves, and the shooter moves.  Also, the shooter's velocity is added to the bullets' velocities, i.e. bullets fired while sliding to the right will have a greater velocity toward the right. 

What I'm trying to do is to get the enemy to be able to determine where they need to shoot in order to hit the player.  Using the linked SO solution, unless the player and enemy are stationary, the velocity difference will cause a miss.  How can I prevent that?  

---
Here is the solution presented from the stack overflow answer.  It boils down to solving a quadratic equation of the form:

    a * sqr(x) + b * x + c == 0

Note that by `sqr` I mean square, as opposed to square root. Use the following values:

    a := sqr(target.velocityX) + sqr(target.velocityY) - sqr(projectile_speed)
    b := 2 * (target.velocityX * (target.startX - cannon.X)
          + target.velocityY * (target.startY - cannon.Y))
    c := sqr(target.startX - cannon.X) + sqr(target.startY - cannon.Y)

Now we can look at the discriminant to determine if we have a possible solution.

    disc := sqr(b) - 4 * a * c

If the discriminant is less than 0, forget about hitting your target -- your projectile can never get there in time. Otherwise, look at two candidate solutions:

    t1 := (-b + sqrt(disc)) / (2 * a)
    t2 := (-b - sqrt(disc)) / (2 * a)

Note that if disc == 0 then t1 and t2 are equal.