var menuShown = false;
var openedMenu = -1;
var mouseX = 0;
var mouseY = 0;
var IE = document.all?true:false
var lastTimerID = null;
// If NS -- that is, !IE -- then set up for mouse capture

if (!IE) document.captureEvents(Event.MOUSEMOVE)
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser versio
var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1));
var is_opera = ((clientPC.indexOf('msie') == -1) && (clientPC.indexOf('opera') != -1));
var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1));

var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_ie6  = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );



// Set-up to use getMouseXY function onMouseMove
//
if(is_ie6) {
	document.onmousemove = getMouseXYnew;
} else {
 	document.onmousemove = getMouseXY;
}



// Temporary variables to hold mouse x-y pos.s
var tempX = 0;
var tempY = 0;

var eventPositionX = 0;
var eventPositionY = 0;

// ViewPort height
var viewportwidth;
var viewportheight;
// Main function to retrieve mouse x-y pos.s

function getMouseXY(e) {
	if (typeof window.innerWidth != 'undefined') {
		viewportwidth = window.innerWidth;
	    viewportheight = window.innerHeight;
	} else if (typeof document.documentElement != 'undefined'
		&& typeof document.documentElement.clientWidth != 	'undefined'  
		&& document.documentElement.clientWidth != 0)	{		
	 // IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	       viewportwidth = document.documentElement.clientWidth; 		/* IE6 problem */
	       viewportheight = document.documentElement.clientHeight; 	/* IE6 problem */
	} else {
 // older versions of IE
		viewportwidth = document.getElementsByTagName('body')[0].clientWidth;
    	viewportheight = document.getElementsByTagName('body')[0].clientHeight;
	}

	if (is_ie) { // grab the x-y pos.s if browser is IE
	  	tempX = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
	    tempY = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
  	} 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;
  	} 	 
	
	mouseX = tempX;
  	mouseY = tempY;
  	return true
}

function selectBanner(button, id, url, elemcount, link) {
	var banner = document.getElementById(id);
	var oldbanner = getOldSelected(elemcount, "banner-image", "visible banner-image");
	if (oldbanner.id == banner.id) { return; }
	
	banner.setAttribute("class", "visible banner-image");
	banner.setAttribute("style", "display: block;");
	oldbanner.setAttribute("class", "unvisible banner-image");
	oldbanner.setAttribute("style", "display: none;");
	
	var old = getOldSelected(elemcount, "banner", "radio-selector radio-selected");
	old.setAttribute("class",'radio-selector');
	button.setAttribute("class", "radio-selector radio-selected");
}

function getOldSelected(elemcount, id, clazz) {
	for (var i=0;i<elemcount;i++) {
		var current = document.getElementById(id+i);
		if (current.className == clazz)
			return current;
	}
	return null;
}

function selectLinkPage(button, number, elemcount) {
	var page = document.getElementById('page'+number);
	var oldpage = getOldSelected(elemcount, 'page', 'visiblepage')
	oldpage.style.display = 'none';
	oldpage.setAttribute('class', 'unvisiblepage');
	page.style.display = 'block';
	page.setAttribute('class', 'visiblepage');
	var old = getOldSelected(elemcount, "links", "radio-selector radio-selected");
	old.setAttribute("class",'radio-selector');
	button.setAttribute("class", "radio-selector radio-selected");
}

function getMouseXYnew(e) {
	if (IE) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } 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
	mouseX = tempX;
  	mouseY = tempY;
  return true
}


function getMouseXY_ie6(e) {
	if (!event) { 
		event = window.event;
	}
	tempX = event.clientX + window.scrollX; 
	tempY = event.clientY + window.scrollY; // :
    
  	// catch possible negative values in NS4
  	if (tempX < 0){
  		tempX = 0;
  	}
  	if (tempY < 0){
	  	tempY = 0;
  	} 	 
	mouseX = tempX;
  	mouseY = tempY;
  	return true
}



function showMenu(e) {
	if (lastTimerID == null || lastTimerID == 'undefined') {
		
		if (!e) var e = window.event;
		
		var targ;
		
		if (e.target) {
			targ = e.target;
		} else if (e.srcElement) {
			targ = e.srcElement;
		}
		
		if (targ.nodeType == 3) {// defeat Safari bug
			targ = targ.parentNode;
		}
		eventPositionX = e.pageX;
		eventPositionY = e.pageY;
	
		if (!menuShown) {
			lastTimerID = setTimeout(function() { 		
				processShowMenu(targ);
			}, 1100);
		}
	}
}
 
function processShowMenu(targ) {
	var userID = parseIDFromString('photo', targ.id);
	openedMenu = userID; 

	var el = document.getElementById('userPopupMenu' + userID);
	hideOrShowElement('userPopupMenu' + userID, true);
	menuShown = true;
	var actualY = mouseY - document.documentElement.scrollTop;
	if (actualY < 0) {
		actualY = 0;
	}
	
	var toMoveX = mouseX;
	var toMoveY = mouseY;
	
	if (actualY + el.offsetHeight > viewportheight) {
		toMoveY = mouseY - el.offsetHeight; 
	} 
	
	if (is_ie6) {
		moveXTo('userPopupMenu' + userID, toMoveX- 5);
	} else { 
		moveTo('userPopupMenu' + userID, toMoveX, toMoveY);
	} 
}

function hideMenu(e) {
	if (lastTimerID != null) {
		clearTimeout(lastTimerID);
		lastTimerID = null;
	}
	
	if (openedMenu != -1) {
		if (!e) var e = window.event;
		
		var relTarg = e.relatedTarget || e.toElement;
	
		if (relTarg == null || relTarg == 'undefined') {
			return;
		}
		var id = relTarg.id;
		var nodeName = relTarg.nodeName;
		
		var realID = openedMenu;
		if (nodeName == 'IMG') {
			if (id.indexOf('photo') != -1) {
				realID = parseIDFromString('photo', id);
			}
		}
			
		if ((realID != openedMenu) || (nodeName != 'SPAN' && nodeName != 'IMG' && nodeName != 'UL' && nodeName != 'LI' && nodeName != 'A')) {
			var targ;
			
			if (e.target) {
				targ = e.target;
			} else if (e.srcElement) {
				targ = e.srcElement;
			}
			
			if (targ.nodeType == 3) {// defeat Safari bug
				targ = targ.parentNode;
			}
				
				
			if (id.indexOf('userPopupMenu') != -1) {
		//		realID = parseIDFromString('userPopupMenu', relTarg.id);
				
			} else {
				processHideMenu();
			}
					
		} 
	}
}

function processHideMenu() {
	hideOrShowElement('userPopupMenu' + openedMenu, false);
	menuShown = false;		
	openedMenu = -1;
}

function moveTo(elementName, x, y) {
	var el = document.getElementById(elementName);

	el.style.left = x + 'px';
	el.style.top = y + 'px';
}
function moveXTo(elementName, x) {
	var el = document.getElementById(elementName);
	
	el.style.left = x + 'px';
}

function parseIDFromString(suffix, parsingIDName) {
	return parsingIDName.replace(suffix, '');
}

function hideOrShowElement(elName, value) {
	var styleName = 'none';
	var toHide = null;
	if (value) {
		styleName = 'block';
	}
	toHide = document.getElementById(elName);
	if (toHide != null && toHide != 'undefined') {
		if (document.layers){
			toHide.display = styleName;
		} else {
			toHide.style.display =styleName;
		}
	}
}

function isElementVisible(toCheck) {
	if (toCheck == null || toCheck == 'undefined') {
		return false;
	} 
	if (document.layers){
		return 'block' == toCheck.display;
	} else {
		return 'block' == toCheck.style.display;
	}
}
