// JavaScript Document
//
| $1 | ' +
'' +
' | ' +
'
',
caption, nextID);
// If canMove is false, don't register event handlers
if (canMove) {
// IE doesn't support addEventListener, so check for its presence
if (newdiv.addEventListener) {
// firefox, etc.
newdiv.addEventListener("mousemove", function(e) { return mouseMove(e) }, true);
newdiv.addEventListener("mousedown", function(e) { return mouseDown(e) }, true);
newdiv.addEventListener("mouseup", function(e) { return mouseUp(e) }, true);
}
else {
// IE
newdiv.attachEvent("onmousemove", function(e) { return mouseMove(e) });
newdiv.attachEvent("onmousedown", function(e) { return mouseDown(e) });
newdiv.attachEvent("onmouseup", function(e) { return mouseUp(e) });
}
}
document.body.appendChild(newdiv);
var newdiv2;
newdiv2 = document.createElement("div");
newdiv2.id = "dragContent" + String(nextID);
newdiv2.className = "divDragContent";
newdiv2.style.width = theWidth;
newdiv2.style.left = AddPx(startX);
newdiv2.style.top = AddPx(startY + 20);
newdiv2.style.zIndex = topZ;
if (contentSource) {
newdiv2.innerHTML = document.getElementById(contentSource).innerHTML;
}
if (canMove) {
if (newdiv2.addEventListener) {
// firefox, etc.
newdiv2.addEventListener("mousedown", function(e) { return contentMouseDown(e) }, true);
}
else {
// IE
newdiv2.attachEvent("onmousedown", function(e) { return contentMouseDown(e) });
}
}
document.body.appendChild(newdiv2);
// Save away the content DIV into the title DIV for
// later access, and vice versa
newdiv.content = newdiv2;
newdiv2.titlediv = newdiv;
topZ += 1;
startX += 20;
startY += 20;
// If you want you can check when these two are greater than
// a certain number and then rotate them back to 100,100...
nextID++;
}
function toggleContentWin(id) {
var elem = document.getElementById("dragContent" + String(id));
var img = document.getElementById("dragButton" + String(id));
if (elem.style.display == "none") {
// hidden, so unhide
elem.style.display = "block";
// Change the button's image
img.src = "/static/buttontop.gif";
}
else {
// showing, so hide
elem.style.display = "none";
// Change the button's image
img.src = "/static/buttonbottom.gif";
}
}
// Drag methods
var dragObjTitle = null;
var dragOffsetX = 0;
var dragOffsetY = 0;
function contentMouseDown(e) {
// Move the window to the front
// Use a handy trick for IE vs FF
var dragContent = e.srcElement || e.currentTarget;
if ( ! dragContent.id.match("dragContent")) {
dragContent = findParentTagById(dragContent, "dragContent");
}
if (dragContent) {
dragContent.style.zIndex = topZ;
dragContent.titlediv.style.zIndex = topZ;
topZ++;
}
}
function mouseDown(e) {
// These first two lines are written to handle both FF and IE
var curElem = e.srcElement || e.target;
var dragTitle = e.currentTarget || findParentDiv(curElem);
if (dragTitle) {
if (dragTitle.className != 'divDragTitle') {
return;
}
}
// Start the drag, but first make sure neither is null
if (curElem && dragTitle) {
// Attach the document handlers. We don't want these running all the time.
addDocumentHandlers(true);
// Move this window to the front.
dragTitle.style.zIndex = topZ;
dragTitle.content.style.zIndex = topZ;
topZ++;
// Check if it's the button. If so, don't drag.
if (curElem.className != "divTitleButton") {
// Save away the two objects
dragObjTitle = dragTitle;
// Calculate the offset
dragOffsetX = e.clientX -
dragTitle.offsetLeft;
dragOffsetY = e.clientY -
dragTitle.offsetTop;
// Don't let the default actions take place
if (e.preventDefault) {
e.preventDefault();
}
else {
document.onselectstart = function () { return false; };
e.cancelBubble = true;
return false;
}
}
}
}
function mouseMove(e) {
// If not null, then we're in a drag
if (dragObjTitle) {
if (!e.preventDefault) {
// This is the IE version for handling a strange
// problem when you quickly move the mouse
// out of the window and let go of the button.
if (e.button == 0) {
finishDrag(e);
return;
}
}
dragObjTitle.style.left = AddPx(e.clientX - dragOffsetX);
dragObjTitle.style.top = AddPx(e.clientY - dragOffsetY);
dragObjTitle.content.style.left = AddPx(e.clientX - dragOffsetX);
dragObjTitle.content.style.top = AddPx(e.clientY - dragOffsetY + 20);
if (e.preventDefault) {
e.preventDefault();
}
else {
e.cancelBubble = true;
return false;
}
}
}
function mouseUp(e) {
if (dragObjTitle) {
finishDrag(e);
}
}
function finishDrag(e) {
var finalX = e.clientX - dragOffsetX;
var finalY = e.clientY - dragOffsetY;
if (finalX < 0) { finalX = 0 };
if (finalY < 0) { finalY = 0 };
dragObjTitle.style.left = AddPx(finalX);
dragObjTitle.style.top = AddPx(finalY);
dragObjTitle.content.style.left = AddPx(finalX);
dragObjTitle.content.style.top = AddPx(finalY + 20);
// Done, so reset to null
dragObjTitle = null;
addDocumentHandlers(false);
if (e.preventDefault) {
e.preventDefault();
}
else {
document.onselectstart = null;
e.cancelBubble = true;
return false;
}
}
function addDocumentHandlers(addOrRemove) {
if (addOrRemove) {
if (document.body.addEventListener) {
// firefox, etc.
document.addEventListener("mousedown", function(e) { return mouseDown(e) }, true);
document.addEventListener("mousemove", function(e) { return mouseMove(e) }, true);
document.addEventListener("mouseup", function(e) { return mouseUp(e) }, true);
}
else {
// IE
document.onmousedown = function() { mouseDown(window.event) } ;
document.onmousemove = function() { mouseMove(window.event) } ;
document.onmouseup = function() { mouseUp(window.event) } ;
}
}
else {
if (document.body.addEventListener) {
// firefox, etc.
remove.addEventListener("mousedown", function(e) { return mouseDown(e) }, true);
remove.addEventListener("mousemove", function(e) { return mouseMove(e) }, true);
remove.addEventListener("mouseup", function(e) { return mouseUp(e) }, true);
}
else {
// IE
// Be careful here. If you have other code that sets these events,
// you'll want this code here to restore the values to your other handlers,
// rather than just clear them out.
document.onmousedown = null;
document.onmousemove = null;
document.onmouseup = null;
}
}
}
//]]>