Having two points of a square and only a compass, how to find the remaining two?

I remember being presented a mathematical puzzle some years back that I still can't solve. The problem is defined as follows:

We have two points on a plane, and using only a compass, how do we find other two points, so that all four of them would be vertices of a square?

I'm not sure whether the first two points were supposed to be vertices of the same edge of a square or not, so solutions to both variants are welcome.

-
The trick is to figure out how to construct a pair of points which $\sqrt{2}$ apart... – Zhen Lin Mar 5 '12 at 7:46

Here is a description of one of the constructions:

Given the two points $\color{maroon}0$ and $\color{maroon}d$ that form one side of the square:

1. Construct the five $\color{gray}{\text{gray}}$ circles of common radius $\color{maroon}{od}$ shown in the diagram and locate the points $\color{maroon}a$, $\color{maroon}b$, and $\color{maroon}c$.
2. Construct the two $\color{maroon}{\text{maroon}}$ circles: one with center $\color{maroon}c$ and radius $\color{maroon}{cb}$, and one with center $\color{maroon}d$ and radius $\color{maroon}{ad}$. Note that $\color{maroon}{ad}$ and $\color{maroon}{cb}$ have the same length.
3. Locate the point of intersection $\color{pink}e$ of the two maroon circles.
4. Construct the $\color{pink}{\text{pink}}$ circles of radius $\color{pink}{oe}$ at centers $\color{maroon}c$ and $\color{maroon}d$.
5. The point of intersection, $\color{pink}f$, of the pink circles is a vertex of the square.
6. Draw the $\color{darkgreen}{darkgreen}$ circle centered at $\color{pink}f$ of radius $\color{maroon}{od}$.
7. The point of intersection, $\color{darkgreen}g$, of the darkgreen circle with the gray circle centered at $\color{maroon}d$ is the final vertex of the square.

Justification of step 5:

From step 1., $\color{maroon}{aboc}$ is a rhombus with common side length $l(\color{maroon}{co})$. Since the point $\color{pink}e$ is equidistant to the points $\color{maroon}c$ and $\color{maroon}d$ , the segment $\color{pink}e\color{maroon}o$ is perpendicular to the segment $\color{maroon}{cd}$. Since $\color{pink}f$ is equidistant to the points $\color{maroon}c$ and $\color{maroon}d$, the points $\color{pink}e$, $\color{pink}f$, and $\color{maroon}o$ are colinear and the segment $of$ is perpendicular to the segment $\color{maroon}od$.

We need to show that $l(fo)=l(co)$. Proceeding with some abuse of notation:

Considering the rhombus $aboc$, we have $$cb^2+ao^2=2(ac^2+co^2 );$$ or, since $ao=co=ac$, $$cb^2=3co^2.$$ Since $cb=ce$, we have $$\tag{1} ce^2=3co^2$$
Considering now the right triangle $ceo$: $$\tag{2} ce^2=eo^2+co^2.$$ Combining equations $(1)$ and $(2)$: $$\tag{3} eo^2=2co^2.$$

Considering now the right triangle $cfo$: $$\tag{4} cf^2=fo^2+co^2$$ since $cf=oe$: $$\tag{5} oe^2=fo^2+co^2$$ From $(3)$ and $(5)$ now, we finally obtain $$fo=co,$$ as desired.

-