Determine the chances of blood group type and rhesus factor of unknown parent?
Simple explanation: that "Blood Type Calculator" is wrong.

Inspecting the source code of that page we can find the if statement that chooses the outcome for the unknown parent, regarding the Rh factor. And it has a problem. Whoever knows JavaScript will understand the problem, but even people that don't know programming languages can follow this, it's not complicated. Let me explain it.

When you choose the Rh blood type in the dropdown menu, the Rh+ blood is associated to the value p and the Rh- blood is associated to the value n. Those are just strings, the programmer can chose any value he/she wants, that's not important, as you know. The variables that hold those values are msel2 for the known parent and csel2 for the child.

Now comes the if statement:

var frh = "+";
if (csel2 == "n" &amp;&amp; msel2 == "n") frh = "-";


Let's break it down:

The default value that will be printed on the result, called frh, is + (positive), as you can see before the if statement. As already said, msel holds the value for the known parent, and csel holds the value for the child.

In the if statement, only if the user chooses the known parent type as Rh- (msel2 == "n") AND the child as Rh- as well (csel2 == "n"), the value of frh will be changed to - (the double &amp;&amp; represents the AND). Any other combination will not change frh, which will remain +.

And that's plain wrong!

There is no need for me to explain you the genetics of Rh factor, there are plenty of resources online and answers here at Bio SE as well, but here is a summary:

Given that Rh+ individuals can be either DD or Dd, it's easy to show that the unknown parent can be Rh- in case that the known parent and the child have both Rh+:

(Known parent)     (Unknown parent)
    D_ --------------- dd
              |
              |
             Dd
           (Child)


The lesson to learn here: don't trust everything you find online.

Correct algorithm: 

For your second task ("Determine the possible blood group and rhesus factor of an "unknown parent" based on the blood group and rhesus factors of the child and the known parent."), let's see all possible cases:


Known parent Rh+ and child Rh+: the unknown parent can be either Rh+ or Rh-.
Known parent Rh+ and child Rh-: the unknown parent can be either Rh+ or Rh-.
Known parent Rh- and child Rh-: the unknown parent can be either Rh+ or Rh-.
Known parent Rh- and child Rh+: the unknown parent has to be Rh+.


As you can see, in only one case the unknown parent cannot be either Rh+ or Rh-. That being said, this is a possible solution:

var frh = "+/-";
if (csel2 == "p" &amp;&amp; msel2 == "n") frh = "+";


What this snippet does is this: 

It assigns the default value for the unknown parent (frh) as +/- (meaning that he/she can be Rh+ or Rh-, we can't know) for all possible combinations. However, if the mother is Rh- AND the child is Rh+, that value is changed for + (because, in that situation, the unknown parent has to be Rh+).