///////////////////////////////////////////////
// DO NOT USE BROWSER DETECT
//    DETECT INSTEAD ON OBJECT EXISTENCE
//    some browsers other than IE/Netscape complicate it, plus INFO can be altered
///////////////////////////////////////////////
//      Name: MOUSE.js
//   Created: 2003-10-11
//  Modified: 2003-10-12 20:51
//   Purpose:
////////////////////////////////

//var DEBUG_ALERT=1;   // 1 for ALERT messages on click
var DEBUG_ALERT=0;
//var DEBUG_ALERT=3;

var codeRunning = 0;         // temp fix..... mouse moving on startup issue

// arbitrary
var NO_IMPORTANT_VALUE=0,
    RIGHT_BUTTON_CLICKED = 2,
    MIDDLE_BUTTON_CLICKED =5,
    LEFT_BUTTON_CLICKED = 1,
    DOUBLE_CLICK = 3,
    MOUSEMOVED = 4;

// ---- DON'T MAKE DECISIONS BASED ON THIS -----
var NavigatorVersion  = parseInt(navigator.appVersion);
var isNavigator = navigator.appName=="Netscape";
var isIE = navigator.appName=="Microsoft Internet Explorer";




if (isNavigator && NavigatorVersion<5) 
  window.onmousedown = handleRightClick;            // RIGHT CLICK - Navigator < 5

//------------------------


if (document.layers) {   // NETSCAPE has  captureEvents
  window.captureEvents(Event.MOUSEDOWN);            // RIGHT CLICK

  document.captureEvents(Event.MOUSEMOVE);
  document.captureEvents(Event.DBCLICK);

//  document.captureEvents(Event.CLICK);              // NORMALLY DON"T HANDLE HERE

  document.captureEvents(Event.DRAGDROP);
//  document.captureEvents(Event.MOUSEDOWN);


  document.onmousedown = handleRightClick;            // RIGHT CLICK

}

document.onmousemove = getMousePosition;
document.ondblclick = getMouseDblClick;
//document.onclick = getMouseClick;          // NORMALLY DON"T HANDLE HERE
document.onDragDrop = myDragDrop;

document.oncontextmenu = nocontextmenu;     // right click menu
document.onmousedown = handleRightClick;
document.onmouseup = handleRightClick;




function nocontextmenu(whichEvent) {         
  if (DEBUG_ALERT==1)  alert("CONTEXT-MENU(right click) in mouse.js");

// alert("contextmenu"+event.button);
 handleRightClick(whichEvent);

 return false;

}


 

// -------------------------------------------------
//     handle Right Click + sees other stuff too
// -------------------------------------------------
function handleRightClick (whichEvent) {          // RIGHT or MIDDLE BUTTON
  if (DEBUG_ALERT==1)  alert("HANDLE_RIGHT_CLICK_routine in mouse.js");


   // whichEvent works in Netscape  -- 1=>LEFT,2=>MIDDLE,3=>RIGHT,
   //event.button works in Explorer -- 1=>LEFT,2=>RIGHT,4=>MIDDLE

//   if(whichEvent.which>3) alert (whichEvent.which);
//   if ( event.button > 1 )  alert ("new handleRight "+event.button);
      
  var isRight = NO_IMPORTANT_VALUE;

  if ( whichEvent )  {

   if (whichEvent.which > 1)  {

  if (DEBUG_ALERT==3)  alert("handle Right Click ---- value="+whichEvent.which);

     // whichEvent works in Netscape  -- 1=>LEFT,2=>MIDDLE,3=>RIGHT,
     // set isRight to RIGHT or MIDDLE, else to NO_IMPORTANT_VALUE
     isRight = ( (whichEvent.which==3) 
                 ? RIGHT_BUTTON_CLICKED 
                 : (  (whichEvent.which==2) ? MIDDLE_BUTTON_CLICKED : NO_IMPORTANT_VALUE )
               );                 

     if ( isRight!=NO_IMPORTANT_VALUE )  {
       local_X = whichEvent.pageX;
       local_Y = whichEvent.pageY;
     
       mouseEvent ( isRight, local_X, local_Y);
       return false;
     }


   }

  }

  // CHECK FOR EVENT existing ???
  else if ( event.button >= 1 ) {
  
     //event.button works in Explorer -- 1=>LEFT,2=>RIGHT,4=>MIDDLE
     // set isRight to RIGHT or MIDDLE, else to NO_IMPORTANT_VALUE
     isRight = ( (event.button==2) 
                 ? RIGHT_BUTTON_CLICKED 
                 : (  (event.button==4) ? MIDDLE_BUTTON_CLICKED : NO_IMPORTANT_VALUE )
               );                 
     event.cancelBubble = true, event.returnValue = false;
  

     if ( isRight!=NO_IMPORTANT_VALUE )  {
       local_X = event.clientX + document.body.scrollLeft;
       local_Y = event.clientY + document.body.scrollTop;
     
       mouseEvent ( isRight, local_X, local_Y);
       return false;
     }

  }


}




// -------------------------------------------------
//     get Mouse Positon
// -------------------------------------------------
function getMousePosition(whichEvent) {
  if (DEBUG_ALERT==2 )  alert("GET_MOUSE_POSITION in mouse.js");

  if ( whichEvent )  {
    local_X = whichEvent.pageX;
    local_Y = whichEvent.pageY;
  }
  else {
    local_X = event.clientX + document.body.scrollLeft;
    local_Y = event.clientY + document.body.scrollTop;
  }

  if (codeRunning)       // temp fix......
    mouseEvent(MOUSEMOVED,local_X,local_Y ); 
//  else  {
    //alert("NO"); // cgi send me a note.....
	// VERY RARE, but possible.... mouseEvent is declared in the CALLER for this .js
	//  due to mouseMove during slow init...
//  }

  return true;

}



// -------------------------------------------------
//     get Mouse Click
// -------------------------------------------------
function getMouseClick(whichEvent) {

  if (DEBUG_ALERT==1)  alert("GET_MOUSE_CLICK in mouse.js");

  if ( whichEvent )  {

//    if ( whichEvent.which>1 )  alert (whichEvent.which);

    if (whichEvent.which==1)  {
       mouseEvent ( LEFT_BUTTON_CLICKED , local_X, local_Y);
//       return false; 
    } 
  }

  else {

  }

}


// -------------------------------------------------
//     get Mouse Dbl Click
// -------------------------------------------------
function getMouseDblClick(whichEvent) {
  if ((DEBUG_ALERT==1)||(DEBUG_ALERT==3))  alert("DOUBLE-CLICK in mouse.js");


  if ( whichEvent )  {
    local_X = whichEvent.pageX;
    local_Y = whichEvent.pageY;
  }

  else  {
    local_X = event.clientX + document.body.scrollLeft;
    local_Y = event.clientY + document.body.scrollTop;
  }

  mouseEvent(DOUBLE_CLICK,local_X,local_Y ); 
  return true;

}







function myDragDrop () {

alert("Drag Drop");
document.form1.STATUS.value="MOVING="+moving;

  if ( moving==1)  {
    SHOW_SHOTS_ID.style.left=event.clientX + document.body.scrollLeft;
    SHOW_SHOTS_ID.style.top=event.clientY + document.body.scrollTop;
  }
    document.form1.startX.value = BALL_START_X = STARTING_POINT.style.left = 
	  - DOT_WIDTH / 2 +
	  ( isIE ? ( event.clientX + document.body.scrollLeft )
	         : whichEvent.pageX );

  document.form1.startY.value = BALL_START_Y = STARTING_POINT.style.top = 
	  -  DOT_HEIGHT / 2 +
	  ( isIE ? ( event.clientY + document.body.scrollTop )
	         : whichEvent.pageY );
}







/*


<script language="JavaScript1.2">
if (window.Event)
  document.captureEvents(Event.MOUSEUP);

function nocontextmenu() {
  event.cancelBubble = true, event.returnValue = false;

  return false;
} 

function norightclick(e) {
  if (window.Event) {
    if (e.which == 2 || e.which == 3) return false;
  }
  else if (event.button == 2 || event.button == 3) {
    event.cancelBubble = true, event.returnValue = false;
    return false;
  }
}

if (document.layers)
  document.captureEvents(Event.MOUSEDOWN);

document.oncontextmenu = nocontextmenu;
document.onmousedown = norightclick;
document.onmouseup = norightclick;
</script>


*/






