// ---------- BROWSER OBJECT ----->
function Browser(){
	this.isIE = false;
	this.isNS = false;
	ua = navigator.userAgent;
	if (ua.lastIndexOf('MSIE') != -1){
		this.isIE = true;
	}
	else {
		this.isNS = true;
	}
} // END

browser = new Browser();

var showing=false;
var thisId = 0;
var activeButton = null;
if (browser.isIE){
document.onclick = closeMenu;
}
else{
addEventListener("mouseup",closeMenu,true);
}

// ---------- GET PAGE OFFSET LEFT ----->
function getPageOffsetLeft(el) {
	var x;
  	x = el.offsetLeft;
	if (el.offsetParent != null){
   		 x += getPageOffsetLeft(el.offsetParent);
	}
	 return x;
} // END

function getPageOffsetTop(el) {

  var y;

  // Return the x coordinate of an element relative to the page.

  y = el.offsetTop;
  if (el.offsetParent != null)
    y += getPageOffsetTop(el.offsetParent);

  return y;
}

// ---------- FIT IN WINDOW ----->
function fitInWindow(button,x){
	var maxX, maxY;

 	 if (browser.isNS) {
    		maxX = window.scrollX + window.innerWidth;
   	 }
 	 if (browser.isIE) {
   		 maxX = document.body.scrollLeft + document.body.clientWidth;
	}
 		 maxX -= button.menu.offsetWidth;
	if (x > maxX) {
   		 x = Math.max(0, (x + button.offsetWidth) - button.menu.offsetWidth);
	}
	return x;
} // END

// ---------- REMOVE CLASS NAME ----->
function removeClassName(el, name) {
	var i, curList, newList;
	 if (el.className == null){
   		 return;
	}
 	 newList = new Array();
	curList = el.className.split(" ");
 	 for (i = 0; i < curList.length; i++) {
		if(curList.length<2 && curList[i] == name){
			el.className = ' ';
			return;
		}
   		 if (curList[i] != name) {
     			 newList.push(curList[i]);
			 el.className = newList.join(" ");
		}
	}
} // END

// ---------- OPEN MENU ----->
function openMenu(event,which){
	var button;
	thisId = 'menu' + which;
	 if (browser.isIE){
   		 button = window.event.srcElement;
	} else {
		if (event.currentTarget != event.relatedTarget){
			return;
		}
   		 button = event.currentTarget;
	}
	button.blur();
	if (button.menu == null && which != 0) {
		button.menu = document.getElementById(thisId);
	}
	if (activeButton != null) {
		resetButton(activeButton);
	}
	 if (button != activeButton && which !=0) {
   		 depressButton(button);
   		 activeButton = button;
 	 }
 	 else{
   		activeButton = null;
		return false;
	}
} // END

// ---------- DEPRESS BUTTON ----->
function depressButton(button){
	var x,y;
	button.className += 'active';
	x = getPageOffsetLeft(button);
	x = fitInWindow(button,x);
    y = getPageOffsetTop(button) + button.offsetHeight;

	button.menu.style.left = x + 'px';
	button.menu.style.top = y + 'px';
	button.menu.style.visibility = 'visible';
} // END

// ---------- RESET BUTTON ----->
function resetButton(button){
	removeClassName(button,'active');
	if (button.menu != null){
		button.menu.style.visibility = 'hidden';
	}
} // END

// ---------- CLOSE MENU ----->
function closeMenu(){
	if(activeButton != null){
		resetButton(activeButton);
	}
	activeButton = null;
} // END

