Implementación de arrastrar y soltar en elementos relativamente posicionados en JavaScript

Me disculpo por publicar tantas preguntas, ¡todavía estoy aprendiendo! Entonces, puedo arrastrar y soltar el primer elemento en el html sin problema; sin embargo, cuando trato de arrastrar y soltar el segundo, aparecebastant debajo del mouse. Todavía se arrastra donde muevo el mouse, pero muy por debajo. ¿Qué pasa?

Aquí está el javascript:

// JavaScript Document

var posX;
var posY;
var element;

document.addEventListener("mousedown", drag, false);

function drag(event) {
    if(event.target.className == "square") {
        element = event.target;
        posX = event.clientX -parseInt(element.offsetLeft);
        posY = event.clientY -parseInt(element.offsetTop);
        document.addEventListener("mousemove", move, false);
    }
}

function move(event) {

    if (typeof(element.mouseup) == "undefined")
        document.addEventListener("mouseup", drop, false);
    //Prevents redundantly adding the same event handler repeatedly

    element.style.left = event.clientX - posX + "px";
    element.style.top = event.clientY - posY + "px";
}    

function drop() {
    document.removeEventListener("mousemove", move, false);
    document.removeEventListener("mouseup", drop, false);
    //alert("DEBUG_DROP");
}    

Aquí está el html:

<body>

<p class="square">Thing One</p>
<p class="square">Thing Two</p>

</body>

Aquí está el CSS:

/* CSS Document */

.square {
    position: relative;
    width: 100px;
    height: 100px;
    background: red;
}

p {
    padding: 0px;
    margin: 0px;
}

¡Gracias por su tiempo a todos! ¡Lo aprecio mucho!

Respuestas a la pregunta(2)

Su respuesta a la pregunta