// Detect if the browser is IE or not.
// If it is not IE, we assume that the browser is NS.
var IE = document.all?true:false

// If NS -- that is, !IE -- then set up for mouse capture
if (!IE) document.captureEvents(Event.MOUSEMOVE)

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMouseXY;

// Temporary variables to hold mouse x-y pos.s
var tempX = 0;
var tempY = 0;


// Main function to retrieve mouse x-y pos.s

function getMouseXY(e) {
if (IE) { // grab the x-y pos.s if browser is IE
 var e = e || window.event;
if (document.documentElement && document.documentElement.scrollTop) {
 tempX = e && e.clientX;
 tempX += document.documentElement.scrollLeft;
 tempY = e && e.clientY + document.documentElement.scrollTop;
} else {
 tempX = e && e.clientX;
 tempY = e && e.clientY;
 } 
} else { // grab the x-y pos.s if browser is NS
tempX = e.pageX;
tempY = e.pageY;
} 
// catch possible negative values in NS4
if (tempX < 0){tempX = 0}
if (tempY < 0){tempY = 0} 
// show the position values in the form named Show
// in the text fields named MouseX and MouseY
 // document.Show.MouseX.value = tempX
 // document.Show.MouseY.value = tempY
return true;
}


function AdjustMenuPosition (theMenu, offsetX, offsetY, menuPosStepX, menuPosStepY) {
 
 var menuId = 'menuDiv' + theMenu;
 var styleObject = getStyleObject(menuId);
 
 if (! menuPosStepX) {
  // document.all['menuDiv' + theMenu].style.left = (tempX + offsetX).toString() + 'px';
  styleObject.left = (tempX + offsetX).toString() + 'px';
 } else { // правим стъпка по X
  // document.all['menuDiv' + theMenu].style.left = (Math.round(tempX / menuPosStepX) * menuPosStepX  + offsetX).toString() + 'px';
  styleObject.left = (Math.floor(tempX / menuPosStepX) * menuPosStepX  + offsetX).toString() + 'px';
 } // правим стъпка по X
 
 if (! menuPosStepY)
  // document.all['menuDiv' + theMenu].style.top = (tempY + offsetY).toString() + 'px';
  styleObject.top = (tempY + offsetY).toString() + 'px';
 else { // правим стъпка по Y
  if (Math.floor(tempY / menuPosStepY) * menuPosStepY  + offsetY > 0)
   // document.all['menuDiv' + theMenu].style.top = (Math.round(tempY / menuPosStepY) * menuPosStepY  + offsetY).toString() + 'px';
   styleObject.top = (Math.floor(tempY / menuPosStepY) * menuPosStepY  + offsetY).toString() + 'px';
  else 
   // document.all['menuDiv' + theMenu].style.top =  (menuPosStepY  + offsetY).toString() + 'px';
   styleObject.top =  (menuPosStepY  + offsetY).toString() + 'px';
 } // правим стъпка по Y
} // function AdjustMenuPosition


function ShowMenuPos (theMenu, offsetX, offsetY, doNotHide, menuPosStepX, menuPosStepY) {

 AdjustMenuPosition (theMenu, offsetX, offsetY, menuPosStepX, menuPosStepY);
 ShowMenu(theMenu);
 
 for (counter = 0; counter < ids.length; counter++) {
   if (doNotHide.toString().indexOf(ids[counter])!==-1) {
    // skip++;
   } else 
	changeObjectVisibility('menuDiv' + ids[counter], 'hidden');
	// var menuTitle = getStyleObject('menuTitle' + counter);
	// menuTitle.backgroundColor = '#000000';
 } // for
 
} // function ShowMenuPos

 

function ShowMenuFixedPos (theMenu, startXmargin, offsetY, doNotHide, stepXmargin, menuPosStepY) { 
 
 var menuId = 'menuDiv' + theMenu;
 var styleObject = getStyleObject(menuId);

 styleObject.left = '50%'; 
 styleObject.marginLeft = (startXmargin + stepXmargin).toString() + 'px';
 
 
 if (! menuPosStepY)
  // document.all['menuDiv' + theMenu].style.top = (tempY + offsetY).toString() + 'px';
  styleObject.top = (tempY + offsetY).toString() + 'px';
 else { // правим стъпка по Y
  if (Math.floor(tempY / menuPosStepY) * menuPosStepY  + offsetY > 0)
   // document.all['menuDiv' + theMenu].style.top = (Math.round(tempY / menuPosStepY) * menuPosStepY  + offsetY).toString() + 'px';
   styleObject.top = (Math.floor(tempY / menuPosStepY) * menuPosStepY  + offsetY).toString() + 'px';
  else 
   // document.all['menuDiv' + theMenu].style.top =  (menuPosStepY  + offsetY).toString() + 'px';
   styleObject.top =  (menuPosStepY  + offsetY).toString() + 'px';
 } // правим стъпка по Y
 ShowMenu(theMenu);
 
 for (counter = 0; counter < ids.length; counter++) {
   if (doNotHide.toString().indexOf(ids[counter])!==-1) {
    // skip++;
   } else 
	changeObjectVisibility('menuDiv' + ids[counter], 'hidden');
	// var menuTitle = getStyleObject('menuTitle' + counter);
	// menuTitle.backgroundColor = '#000000';
 } // for
 
} // function ShowMenuFixedPos

function ShowMenu(who)
{

    var menuId = 'menuDiv' + who;
    if(changeObjectVisibility(menuId, 'visible')) {
	return true;
    } else {
	return false;
    }
}

function HideMenu(who)
{
 var id="menuDiv"+who;
 if (who) {
  changeObjectVisibility(id, 'hidden');
  // document.forms['test'].debug.value = 'HideMenu ' + id;
 }  
} // function HideMenu

var ids = new Array ();
var idSunsorted = new Array ();
var startOffset = new Array ();

var alreadyOver = 0;
var tmsubmenus;

function hideAllMenus() {
    for(counter = 0; counter < ids.length; counter++) {
	changeObjectVisibility('menuDiv' + ids[counter], 'hidden');
	var menuTitle = getStyleObject('menuTitle' + counter);
	menuTitle.backgroundColor = '#000000';
    }
}

function showSelMenus (which) {
    which.sort ();

    var iwh = 0;


    for(counter = 0; counter < ids.length; counter++) {
      if (ids[counter] == which[iwh]) {
       ShowMenu(ids[counter]);
       iwh++;
      } else 
       HideMenu(ids[counter]); 
    } // for
}

var constShow = new Array (); // constantly visible menus

function getRefToDiv(divID,oDoc) {
  if( document.getElementById ) {
    return document.getElementById(divID); }
  if( document.all ) {
    return document.all[divID]; }
  if( !oDoc ) { oDoc = document; }
  if( document.layers ) {
    if( oDoc.layers[divID] ) { return oDoc.layers[divID]; } else {
      //repeatedly run through all child layers
      for( var x = 0, y; !y && x < oDoc.layers.length; x++ ) {
        //on success, return that layer, else return nothing
        y = getRefToDiv(divID,oDoc.layers[x].document); }
    return y; } }
  return false;
}



 function MoveDiv (theDiv, offSetLeft, offsetTop, loopLeftOn, loopTopOn, posLoopLeft, posLoopTop) {
  var styleObject = getStyleObject(theDiv);
  if (styleObject) {
   var myReference = getRefToDiv( theDiv ); 
   var noPx = document.childNodes ? 'px' : 0;
if( myReference.style ) { myReference = myReference.style; }

 var myLeft = 0; 
 var myTop = 0; 

if (myReference.left) myLeft = parseInt(myReference.left);
if (myReference.top) myTop = parseInt(myReference.top);
/*
if (myLeft == loopLeftOn)
 myReference.left = posLoopLeft + noPx;
else 
*/
 myReference.left = ( myLeft + offSetLeft) + noPx;
 /*
if (myTop == loopTopOn)
 myReference.top = posLoopTop + noPx;
else  
*/
 myReference.top = ( myTop + offsetTop) + noPx;
  } 
  else
   return false;
 }
 
 function MoveDivSlide (theDiv, offSetLeft, offsetTop, loopLeftOn, loopTopOn, posLoopLeft, posLoopTop, steps, time) {
 
    var myLeft = 0; 
   var myTop = 0; 
 
   var myReference = getRefToDiv( theDiv ); 
   var noPx = document.childNodes ? 'px' : 0;
   if ( myReference.style ) { myReference = myReference.style; }
   if (myReference.left) { 
    myLeft = parseInt(myReference.left);
   } 
   
 if (myLeft == loopLeftOn && steps) {
/*
 var excNext = "MoveDivSlide ('" + theDiv + "', " + (posLoopLeft - myLeft) + ", " + offsetTop + ", " + loopLeftOn + ", " + loopTopOn + ", " + posLoopLeft + ", " + posLoopTop + ", " + steps + ", " + time + ");"; 
	*/
	
	if (myLeft < posLoopLeft) 
	{
	 myReference.left = myLeft + Math.round((posLoopLeft - myLeft) / steps)  + noPx;
	 var loopOffsetHere = Math.abs(myLeft + Math.round((posLoopLeft - myLeft) / steps)); 
	} 
	else {
	 // alert (myLeft + ' < ' + posLoopLeft);
	 myReference.left = myLeft - Math.round(myLeft / steps)  + noPx;
	 var loopOffsetHere =  posLoopLeft - Math.round(myLeft / steps ); 
	} 
	
	var excNext = "MoveDivSlide ('" + theDiv + "', " + loopOffsetHere + ", " + offsetTop + ", " + loopLeftOn + ", " + loopTopOn + ", " + posLoopLeft + ", " + posLoopTop + ", " + (steps - 1) + ", " + (time - Math.round(time/steps)) + ");"; 
	 setTimeout (excNext, Math.round(time/steps));
   // alert (excNext);
   }
   else 
    {
	if (steps) {
   MoveDiv (theDiv, Math.round(offSetLeft / steps), Math.round(offsetTop / steps), loopLeftOn, loopTopOn, posLoopLeft, posLoopTop);
   var excNext = "MoveDivSlide ('" + theDiv + "', " + (offSetLeft - Math.round(offSetLeft / steps)) + ", " + offsetTop + ", " + loopLeftOn + ", " + loopTopOn + ", " + posLoopLeft + ", " + posLoopTop + ", " + (steps - 1) + ", " + (time - Math.round(time/steps)) + ");"; 
     // alert (excNext);
   setTimeout (excNext, Math.round(time/steps));
   
   
  } else {
   var excNext = "MoveDivSlide ('" + theDiv + "', " + offSetLeft + ", " + offsetTop + ", " + loopLeftOn + ", " + loopTopOn + ", " + posLoopLeft + ", " + posLoopTop + ", " + steps + ", " + time + ");"; 
   // alert(excNext);
   }
  }
 }
 
 
function BlinkDiv (theDiv, timeShow, timeHide, theState) {
 if (theState == 1) {
  HideAnyDiv(theDiv);
  var excNext = "BlinkDiv ('" + theDiv + "', '" + timeShow + "', '" + timeHide + "', 0)";
  setTimeout (excNext, timeHide);
 } else {
  ShowAnyDiv(theDiv);
  var excNext = "BlinkDiv ('" + theDiv + "', '" + timeShow + "', '" + timeHide + "', 1)";
  setTimeout (excNext, timeShow);
 }
} // function BlinkDiv

function ExpandDivs (divs) {
 for (i = 0; i < divs.length; i++)
  DisplayDiv(divs[i]);
}

function MinimizeDivs (divs) {
 for (i = 0; i < divs.length; i++)
  UndisplayDiv(divs[i]);
} 
