// Global holds reference to selected element
var selectedObj;

// Globals hold location of click relative to element
var offsetX, offsetY;
var zind;
var child;
// Set global reference to element being engaged and dragged
function setSelectedElem(evt) {
    var	target = (evt.target) ? evt.target : evt.srcElement;
    child = target;
	var divID = (target.name && target.src) ? target.name + "Wrap" : "";
    if (divID) {
        if (document.layers) {
			
            selectedObj = document.layers[divID];
			
        } else if (document.all) {
			
            selectedObj = document.all(divID);
			
        } else if (document.getElementById) {
			
            selectedObj = document.getElementById(divID);
			//alert(selectedObj);
        }
		
        //setZIndex(selectedObj, 100);
		
        return;
    }
    selectedObj = null;
    return;
}

// Turn selected element on
function engage(evt) {
	
    evt = (evt) ? evt : event;
    setSelectedElem(evt);
	
    if (selectedObj) {
		
        if (document.body && document.body.setCapture) {
            // engage event capture in IE/Win
            document.body.setCapture();
			
        }
        if (evt.pageX) {
			
            offsetX = evt.pageX - ((selectedObj.offsetLeft) ? 
                      selectedObj.offsetLeft : selectedObj.left);
            offsetY = evt.pageY - ((selectedObj.offsetTop) ? 
                      selectedObj.offsetTop : selectedObj.top);
                      //alert(offsetX+' '+offsetY);
        } else if (typeof evt.offsetX != "undefined") {
			
            offsetX = evt.offsetX - ((evt.offsetX < -2) ? 
                      0 : document.body.scrollLeft);
            offsetX -= (document.body.parentElement && 
                     document.body.parentElement.scrollLeft) ? 
                     document.body.parentElement.scrollLeft : 0
            offsetY = evt.offsetY - ((evt.offsetY < -2) ? 
                      0 : document.body.scrollTop);
            offsetY -= (document.body.parentElement && 
                     document.body.parentElement.scrollTop) ? 
                     document.body.parentElement.scrollTop : 0
        } else if (typeof evt.clientX != "undefined") {
			
            offsetX = evt.clientX - ((selectedObj.offsetLeft) ? 
                      selectedObj.offsetLeft : 0);
            offsetY = evt.clientY - ((selectedObj.offsetTop) ? 
                      selectedObj.offsetTop : 0);
        }
        return false;
    }
}

var drwin = false;
// Drag an element
function dragIt(evt) {
	//setSelectedElem(evt);
	if(child==null)
	{ return false;}
	var childId =  child.id;
    evt = (evt) ? evt : event;
  if(selectedObj==null)
  {return false;}
	if(selectedObj.className == 'slider'){
		slideIt(evt);
		}else{
		if (selectedObj) {
			drwin = true;
			/*
			var tableImgs = selectedObj.getElementsByTagName('IMG');
			var popbutt;
			for (var i = 0; i < tableImgs.length; i++){
				if(tableImgs[i].name == 'brbutton'){
					//alert(tableImgs[i].id);
					popbutt = tableImgs[i];
				}
			}
			var popbuttId = popbutt.id;
			var origX = getElementPosition(popbuttId).left;
			var origY = getElementPosition(popbuttId).top;
			*/
			if((evt.pageX - offsetX) >210 && (evt.pageY - offsetY) > 210 || (evt.clientX - offsetX) >210 && (evt.clientY - offsetY) > 210)
			{
			if (evt.pageX) {
				document.getElementById(selectedObj.id+'shadow').style.display = 'none';
				opaqueWin(selectedObj.firstChild);
				
				shiftTo(selectedObj, (evt.pageX - offsetX), (evt.pageY - offsetY));
				moveCone(selectedObj, childId+'PopWrap');//, origX, origY
				
				moveCloseOver(selectedObj);
				
			} else if (evt.clientX || evt.clientY) {
				shiftTo(selectedObj, (evt.clientX - offsetX), (evt.clientY - offsetY));
				moveCone(selectedObj, childId+'PopWrap');//, origX, origY
				document.getElementById(selectedObj.id+'shadow').style.display = 'none';
				opaqueWin(selectedObj.firstChild);
				
				moveCloseOver(selectedObj);
			}
		}
			
			evt.cancelBubble = true;
			return false;
    	}
	}
}
function slideIt(evt) {
	
    evt = (evt) ? evt : event;
    if (selectedObj) {
		var objid = selectedObj.id;
		var railObj = document.getElementById(objid+'Rail');
		var railId = railObj.id;
		var range = railObj.offsetWidth;
		var limitStart = getElementPosition(railId).left;
		var limitEnd = getElementPosition(railId).left+railObj.offsetWidth;
		var parentname = selectedObj.firstChild.name;
		var xxp;
		var percent;
		var currentpix;
			//xxp = selectedObj.offsetLeft;//+selectedObj.offsetWidth
		if (evt.pageX) {
			xxp = evt.pageX;
			if(xxp >= limitStart && xxp <= limitEnd){
            	slideHTo(selectedObj, (evt.pageX - offsetX));
				
				if(selectedObj.firstChild.name == 'transparency'){
					currentpix = xxp - limitStart;
				var onePerc = range/100;
				percent = Math.round((currentpix/onePerc));
					var prc = Math.round(percent/3);
					coneopp = prc;
					applytranparency(prc);
					document.getElementById(parentname+'display').value = prc+'%';
				}
				if(selectedObj.firstChild.name == 'cones'){
					currentpix = xxp - limitStart;
					var onePerc = range/100;
					percent = Math.round((currentpix/onePerc));
					applycones(percent);
					document.getElementById(parentname+'display').value = '#'+percent;
					//deleteDrawnCones();
				}
			}
        } else if (evt.clientX) {
			xxp = evt.clientX;
			
			if(xxp >= limitStart && xxp <= limitEnd){
				
				if(selectedObj.firstChild.name == 'transparency'){
					currentpix = xxp - limitStart;
					var onePerc = range/100;
					percent = Math.round((currentpix/onePerc));
					var prc = Math.round(percent/3);
					coneopp = prc;
					applytranparency(prc);
					 
					document.getElementById(parentname+'display').value = prc+'%';
				}
				if(selectedObj.firstChild.name == 'cones'){
					currentpix = xxp - limitStart;
					var onePerc = range/100;
					percent = Math.round((currentpix/onePerc));
					applycones(percent);
					document.getElementById(parentname+'display').value = '#'+percent;
					//deleteDrawnCones();
				}
				
            	slideHTo(selectedObj, (evt.clientX - offsetX));
				
					
			}
        }
		
		
		evt.cancelBubble = true;
        return false;
    }
}
// Turn selected element off
function release(evt) {
	
	if (selectedObj) {
			
	if (document.body && document.body.releaseCapture) {
            // stop event capture in IE/Win
			document.body.releaseCapture();
		}
		if(selectedObj.firstChild.name == 'cones'){
			selectedObj = null;
			deleteDrawnCones();
		}
		if(drwin == true){
			stopOpaque(selectedObj.firstChild);
			document.getElementById(selectedObj.id+'shadow').style.display = '';
			selectedObj = null;
			drwin = false;
		}
	    selectedObj = null;
    }
	
}

// Assign event handlers used by both Navigator and IE
function initDrag() {
    if (document.layers) {
        // turn on event capture for these events in NN4 event model
        document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
        return;
    } else if (document.body & document.body.addEventListener) {
        // turn on event capture for these events in W3C DOM event model
    	document.addEventListener("mousedown", engage, true);
    	document.addEventListener("mousemove", dragIt, true);
    	document.addEventListener("mouseup", release, true);
    	return;
    }
  	document.onmousedown = engage;
   	document.onmousemove = dragIt;
   	document.onmouseup = release;
    return;
}


