/*
Drag n Dock script by Brothercake - http://www.brothercake.com/
based on Drag and Drop script from Dynamic Drive - www.dynamicdrive.com
*/


var dragapproved = false;
var z,x,y;
var dn = 0;
var obj;
var tempObj=null;
var cs;
var pd;
var did;
var tid;
var yes = true;
var dockID = 0;
var infowin = false; 

var dockO = new Array; var dockN = new Array;
var dockOL = new Array; var dockNL = new Array;

// thanks to jimmy282 at www.experts-exchange.com for this function which builds 
// an array of values for a specific attribute in all occurences of a specic tag.

function assignDockIDs() {
 var dElm = document.getElementsById ?
   document.getElementsByTagName('cite') :
   document.getElementsByTagName ?
   document.getElementsByTagName ('cite') : new Array();


	// open information output window
	if (infowin) { infoWindow(dElm.length); }
	
	// information output
	if (infowin) { proxInfo(); }


 var dIDs = new Array();
 var i = 0;
 for (var m = 0; m < dElm.length; m++) {
     var spOUT = '<cite class=dock id=dock' + m + ' onmouseover="setTempObj(this)" onmouseout="clearTempObj()" style="left:' + dx[m] + 'px\; top:' + dy[m] + 'px\;">';
     var spIN = dElm[m].innerHTML;
     dElm[m].outerHTML = spOUT + spIN + '</cite>';
     dElm[m].style.left = dx[m];
     dElm[m].style.top = dy[m];
     dIDs[i++] = dElm[m].id;
     }
for (v=0;v<(dIDs.length);v++) { document.getElementById(dIDs[v]).style.visibility = "visible";
 
 
 	// information output
     	if (infowin) { dpoInfo(v); }

 	}
 
return dIDs;
}


function getOldPositions () {
 var oElm = document.getElementsById ?
   document.getElementsByTagName('cite') :
   document.getElementsByTagName ?
   document.getElementsByTagName ('cite') : new Array();
 var oPos = new Array(); var oPosL = new Array();
 var i = 0; var j = 0;
 for (var m = 0; m < oElm.length; m++) {
     oPos[i++] = oElm[m].style.top;
     oPosL[j++] = oElm[m].style.left;
     }
	for (n=0;n<(oPos.length);n++) {
		oPos[n]=Number(oPos[n].replace('px',''));
		oPosL[n]=Number(oPosL[n].replace('px',''));
		}
for (a=0;a<(oPos.length);a++) { dockO[a] = oPos[a]; dockOL[a] = oPosL[a]; }
return oPos; return oPosL;
}


function getPositions () {
 var dElm = document.getElementsById ?
   document.getElementsByTagName('cite') :
   document.getElementsByTagName ?
   document.getElementsByTagName ('cite') : new Array();
 var dPos = new Array(); var dPosL = new Array();
 var i = 0; var j = 0;
 for (var m = 0; m < dElm.length; m++) {
     dPos[i++] = dElm[m].style.top;
     dPosL[j++] = dElm[m].style.left;
     }
	for (n=0;n<(dPos.length);n++) {
		dPos[n]=Number(dPos[n].replace('px',''));
		dPosL[n]=Number(dPosL[n].replace('px',''));
		}
for (a=0;a<(dPos.length);a++) { dockN[a] = dPos[a]; dockNL[a] = dPosL[a]; }
return dPos; return dPosL;
}



function shiftPositions(pd) {
for (qd=0;qd<(dockN.length);qd++) {
	if ((dockN[pd] == dockO[qd]) && (dockNL[pd] == dockOL[qd])) {
		did = 'dock' + String(qd);
		document.getElementById(did).style.left = dockOL[pd];
		document.getElementById(did).style.top = dockO[pd];

			// information output
			if (infowin) { spInfo(dockOL[pd],dockO[pd]);  }

		}
	}
}


function move() {
if (dragapproved&&event.button==1) {
	z.style.zIndex++;
	z.style.pixelLeft = temp1+event.clientX-x;
	z.style.pixelTop = temp2+event.clientY-y;
	return false;
	}
}


function drag() {
if (!document.getElementById) return;
if (tempObj!=null) {

			// information output
			if (infowin) { dragInfo(); }

	yes = false;
	dragapproved = true;
	z = tempObj;
	temp1 = z.style.pixelLeft;
	temp2 = z.style.pixelTop;
	x = event.clientX;
	y = event.clientY;
	var olddock = getOldPositions(); void 0;
	document.onmousemove = move;
	}
}

document.onmousedown = drag;



function dockCheck(dcL,dcR,dcZ){
	var fX=new Array;
	var fY=new Array;
	for(dd=0;dd<dx.length;dd++){
		fX[dd]=false;
		fY[dd]=false;
		var tpdL=document.all["dock"+dd].style.left;
		var tpdT=document.all["dock"+dd].style.top;
		for(de=0;de<dx.length;de++){
			if(parseInt(tpdL)==dx[de]){fX[dd]=true;}
			if(parseInt(tpdT)==dy[de]){fY[dd]=true;}
			}
		}
	for(nd=0;nd<dx.length;nd++){
		if(fX[nd]==false||fY[nd]==false){
			nx=dx[nd];ny=dy[nd];
			z.style.left = nx;
			z.style.top = ny;
			var dock = getPositions(); void 0;
			shiftPositions(tid);
			yes = true;
			}
	
		}
	}




function dock() {
if (!document.getElementById) return;
if (tempObj==null&&z){
	dragapproved=false;
	dockCheck(z.style.pixelLeft,z.style.pixelTop,z);
	}
if (tempObj!=null) {
	dragapproved = false;
	var nx = dockOL[tid]; var ny = dockO[tid];
	var mx = z.style.pixelLeft;
	var my = z.style.pixelTop;
	for (cd=0;cd<(dx.length);cd++) {
		if ((mx>(dx[cd]-proximity)&&mx<(dx[cd]+proximity))&&(my>(dy[cd]-proximity)&&my<(dy[cd]+proximity))) {
			nx = dx[cd]; ny = dy[cd];
			}
		}
	z.style.left = nx;
	z.style.top = ny;

			// information output
			if (infowin) { dockInfo(nx,ny); }


	var dock = getPositions(); void 0;
	shiftPositions(tid);
	yes = true;
	}
}

document.onmouseup = dock;



function setTempObj(obj) {
if (infowin) { if (infowin.closed) { infowin=false; }}
tempObj = obj;
	if (yes) {


		// information output
		if (infowin) { stoInfo(); }


	tempObj.style.zIndex = 102;
	tid = tempObj.id;
	tid=Number(tid.replace('dock',''));
	}
}

function clearTempObj(obj) {
tempObj.style.zIndex = 101;
tempObj = null;
}




var agt=navigator.userAgent.toLowerCase();
if (((agt.indexOf('msie 5') != -1) || (agt.indexOf('msie 6') != -1)) && (agt.indexOf('opera') == -1)) {
for (rd=0;rd<(dx.length);rd++) {
document.write('<img src="' + anchor + '" alt="" border=0 style="position:absolute\; left:' + dx[rd] + 'px\; top:' + dy[rd] + 'px\; z-index:100\;">');
}
var stlSTR='<style><!--';
stlSTR+='cite \{ position:absolute\; z-index:101\; visibility:hidden\; cursor:' + cursor + '\; \}';
stlSTR+='--></style>';
document.write(stlSTR);
}

