docs: function startDrag(e) {	
  	var eventSource = nn6 ? e.target : event.srcElement;
  	if (eventSource.tagName == 'HTML')
  		return;
  
  	while (eventSource != document.body && !hasClass(eventSource, "draggable"))
  	{  	
  		eventSource = nn6 ? eventSource.parentNode : eventSource.parentElement;
  	}
  
  	// if a draggable element was found, calculate its actual position
  	if (hasClass(eventSource, "draggable")) {
  		isdrag = true;
  		elementToMove = eventSource;
  
  		// set absolute positioning on the element		
  		elementToMove.style.position = "absolute";
  				
  		// calculate start point
  		elementStartX = elementToMove.offsetLeft;
  		elementStartY = elementToMove.offsetTop;
  		
  		// calculate mouse start point
  		mouseStartX = nn6 ? e.clientX : event.clientX;
  		mouseStartY = nn6 ? e.clientY : event.clientY;
  		
  		// calculate bounds as left, top, width, height of the parent element
  		if(getStyle(elementToMove.parentNode, "position") == 'absolute') {
  			bounds[0] = bounds[1] = 0;
  		} else {
  			bounds[0] = calculateOffsetLeft(elementToMove.parentNode);
  			bounds[1] = calculateOffsetTop(elementToMove.parentNode);
  		}
  		bounds[2] = bounds[0] + elementToMove.parentNode.offsetWidth;
  		bounds[3] = bounds[1] + elementToMove.parentNode.offsetHeight;		
  		
  		// either find the block related to the dragging element to call its onMove method
  		blocksToMove = new Array();
  		
  		blocksToMoveScanner.scan(eventSource);
  		document.onmousemove = movemouse;
  		
  		originalZIndex = getStyle(elementToMove, "z-index");
  		elementToMove.style.zIndex = "3";
  		
  		return false;
  	}
  }