var timeout	= 150;
var closetimer = 0;
var oldSubMenu = 0;
var oldMenuLink = 0;

// open hidden layer
function showMenu ( id ) {
	document.onmousemove = null;
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if ( oldSubMenu ) {
		oldSubMenu.style.visibility = 'hidden';
	}
	
	// get new layer and show it
	oldSubMenu = document.getElementById('sub-menu-item-' + id);
	oldSubMenu.style.visibility = 'visible';
	
	oldMenuLink = document.getElementById('menu-link-' + id);
	oldMenuLink.className = 'menu-link-over';
}

// close showed layer
function hideMenu ( ) {
	if ( oldSubMenu ) {
		oldSubMenu.style.visibility = 'hidden';
	}
	if ( oldMenuLink ) {
		oldMenuLink.className = 'menu-over';
	}
}

// go close timer
function mclosetime ( ) {
	closetimer = window.setTimeout(hideMenu, timeout);
}

// cancel close timer
function mcancelclosetime ( ) {
	if ( closetimer ) {
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

// close layer when click-out
document.onclick = hideMenu; 


function darkenAndRemove ( elem ) {
	if ( elem.style.color != 'rgb(0, 0, 0)' ) {
		elem.value = '';
		elem.style.color = '#000';
	}
}


function show ( elem ) {
	elem.style.display = 'block';
}


function hide ( elem ) {
	elem.style.display = 'none';
}


function showHide ( elem ) {
	if ( elem.style.display == 'block' ) {
		elem.style.display = 'none';
	} else {
		elem.style.display = 'block';
	}
}


function setClass( elem, className ) {
	// Small delay to stop IE onmouseout on parent element when mouseover child element it has a slightly different internal call order or something, dunno.
	setTimeout(function(){elem.className = className;}, 10);
}


function hideAll ( divClassName ) {
	elems = getDivsByClassName(divClassName);
	for ( var i = 0; i < elems.length; i++ ) { 
		hide(elems[i]);
	}
}


function getDivsByClassName ( divClassName ) {
	var allDivs = document.getElementsByTagName('div');
	var matchingDivs = new Array();
	var currentDiv;
	
	for ( var i = 0; i < allDivs.length; i++ ) {
		if ( (currentDiv = allDivs[i]).className.search(divClassName) > -1 ) {
			matchingDivs.push(currentDiv);
		}
	}
	return matchingDivs;
}


function setSelectedIDs ( ) {
	idListElem = document.getElementById('SelectedIDList');
	elems = document.getElementsByName('SelectedIDs[]');
	idList = '';
	for ( var i = 0; i < elems.length; i++ ) {
		if ( elems[i].checked ) {
			idList = idList + elems[i].value + ',';
		}
	}
	idListElem.value = idList;
}


function setFieldValue ( elemID, value ) {
	document.getElementById(elemID).value = value;
}


function setFieldFromField ( toID, fromID ) {
	document.getElementById(toID).value = document.getElementById(fromID).value;
}


var alreadyConfirmed = false;
function handleEmailOptionChange ( ) {
	if ( document.getElementById('EmailWho').value == 'Everyone' ) {
		if ( alreadyConfirmed ) {
			
		} else {
			res = confirm('Are you sure you want e-mail ALL users, this could potentially be a lot people and take a long time!'); 
			if ( !res ) {
				document.getElementById('EmailWho').value = 'Selected';
			} else {
				alreadyConfirmed = true;
			}
		}
	}
	if ( document.getElementById('EmailWho').value == 'ThisPage' ) {
		setFieldFromField('EmailToIDList', 'PageIDList');
	} else {
		setFieldFromField('EmailToIDList', 'SelectedIDList');
	}
}


function handleComposeEmailClick ( ) {
	if ( document.getElementById('EmailWho').value == 'Selected' ) {
		setFieldFromField('EmailToIDList', 'SelectedIDList');
	}
	return true;
}




// Obviously not done...
function ajaxRequest ( URL, callbackFunctionName ) {
	var xmlhttp = new XmlHTTPRequest();
}


function getTinyMCEIFrameWindow ( ) {
	var i = 0;
	foundFrame = false;
	while ( !foundFrame ) {
		try {
			var iframeWindow = document.getElementById('mce_' + i + '_ifr').contentWindow;
			return iframeWindow;
		} catch( err ) {
			i++
		}
	}
	return false;
}


var hideTipTimer;
var toolTip;
var resetOnMouseMove = function ( ) {
	document.onmousemove = null;
	document.onmousemove = getCursorXY;
	window.setTimeout(resetOnMouseMove, '10000');
}


function initTooltips ( ) {
	if ( window.Event ) {
		//document.captureEvents(Event.MOUSEMOVE);
	}
	document.onmousemove = getCursorXY;
	window.setTimeout(resetOnMouseMove, '10000');
	
	elems = document.getElementsByTagName('img');
	for ( var i = 0; i < elems.length; i++ ) {
		if ( elems[i].alt && elems[i].className == 'tooltip' ) {
			elems[i].id = 'tooltip-' + i;
			elems[i].onmouseover = function ( ) { setTooltip('tooltip-' + this.id); };
			elems[i].onmousemove = function ( ) { showTooltip('tooltip-' + this.id); };
			elems[i].onmouseout = function ( ) { hideTooltip('tooltip-' + this.id); };
			divElem = document.createElement('div');
			divElem.className = 'tooltip-popup';
			divElem.style.display = 'none';
			divElem.style.float = 'right';
			divElem.id = 'tooltip-' + elems[i].id;
			divElem.innerHTML = elems[i].alt;
			document.getElementById('tooltip-container').appendChild(divElem);
			elems[i].alt = '';
		}
	}
}


var cursor = {x:0, y:0};
function setTooltip ( elemID ) {
	if ( toolTip ) {
		toolTip.style.display = 'none';
	}
}


function showTooltip ( elemID ) {
	if ( toolTip ) {
		toolTip.style.display = 'none';
	}
	toolTip = document.getElementById(elemID);
	document.getElementById(elemID).style.top = (cursor.y + 10) + 'px';
	document.getElementById(elemID).style.left = (cursor.x + 20) + 'px';
	document.getElementById(elemID).style.display = 'block';
	
	if ( hideTipTimer ) {
		window.clearTimeout(hideTipTimer);
		hideTipTimer = null;
	}
}


function hideTooltip ( elemID ) {
	hideTipTimer = window.setTimeout(function ( ) { document.getElementById(elemID).style.display = 'none' }, 1);
}


function getCursorXY ( e ) {
	if ( !e ) {
		if ( window.event ) {
			var e = window.event;
		} else {
			var e = window.Event;
		}
	}
	if ( e.pageX || e.pageY ) {
		cursor.x = e.pageX;
		cursor.y = e.pageY;
	} else {
		cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
		cursor.y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
	}
	return cursor;
}

window.onload = initTooltips;
