/* Λόγω προβλήματος στο css τo getposOffset() δεν επιστρέφει τις κανονικές συντεταγμένες, 
	αλλά προσθέτει σε αυτές το μήκος της αριστερής μπάρας και της πάνω.
	Οπότε για να διορθωθεί το πρόβλημα αφαιρέσαμε από το αποτέλεσμα τα δύο αυτά μήκη.
	Σε περίπτωση που διορθωθεί το πρόβλημα με μελλοντικό css, παρακαλούμε να διορθωθούν οι γραμμές:
	dropmenuobj.x=getposOffset(obj, "left")-172
	dropmenuobj.y=getposOffset(obj, "top")-130
*/

var menuwidth='30px'; 			//default menu width
var menubgcolor='lightyellow';	//menu bgcolor
var disappeardelay=700;			//menu disappear speed onMouseout (in miliseconds)
var hidemenu_onclick="yes";		//hide menu when user clicks within menu?

if (ie4 || ns6) {
	document.write('<div id="dropmenudiv" style="display:none; width:' + menuwidth +
	';background-color:' + menubgcolor + '" onMouseover="clearhidemenu()" onmouseout="dynamichide(event)"></div>')
}

function getposOffset(what, offsettype)
{
	var totaloffset = (offsettype=="left") ?  what.offsetLeft : what.offsetTop;
	var parentEl = what.offsetParent;

	while (parentEl != null) {
		totaloffset = (offsettype=="left") ? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
		parentEl = parentEl.offsetParent;
	}

	return totaloffset;
}


function showhide(obj, e, visible, hidden, menuwidth)
{
	if (ie4 || ns6) {
		dropmenuobj.style.left=dropmenuobj.style.top = "-500px";
	}

	if (menuwidth != "") {
		dropmenuobj.widthobj=dropmenuobj.style
		dropmenuobj.widthobj.width=menuwidth
	}

	if (e.type == 'click' && obj.style.display == 'none' || e.type == 'mouseover') {
		obj.display = 'block';
	} else if (e.type=="click") {
		obj.display = 'none';
	}
}

function iecompattest()
{
	return (document.compatMode && document.compatMode!="BackCompat") ?
		document.documentElement : document.body;
}

function clearbrowseredge(obj, whichedge)
{
	var edgeoffset = 0;

	if (whichedge == "rightedge") {
		var windowedge=ie4 && !window.opera ?
			iecompattest().scrollLeft+iecompattest().clientWidth-15 :
			window.pageXOffset+window.innerWidth-15;

		dropmenuobj.contentmeasure=dropmenuobj.offsetWidth;

		if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure) {
			edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth;
		}
	} else {
		var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset;
		var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18;

		dropmenuobj.contentmeasure=dropmenuobj.offsetHeight;

		if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure) { //move up?
			edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight;
			if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) { //up no good either?
				edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge;
			}
		}
	}
	return edgeoffset;
}

/* Menu population function
 * Prepares the contents of the menu before it's displayed
 */
function populatemenu(what)
{
	dom_source = document.getElementById(what);

	if (ie4||ns6) {
		dropmenuobj.innerHTML=dom_source.innerHTML;
	}
//	if (ie4||ns6)
//		dropmenuobj.innerHTML=what.join("")
}


/* Displays the drop down menu near the element 'obj', with event coordinates
 * taken from 'e', filling drop-down menu with menucontents-div's innerHTML
 * Limits the menu width to menuwidth.
 */
function dropdownmenu(obj, e, menucontents, menuwidth, offsetx, offsety)
{
	var offsetx= (offsetx==null) ? 28: offsetx;
	var offsety= (offsety==null) ? 33: offsety;

	if (window.event) {
		event.cancelBubble = true;
	} else if (e.stopPropagation) {
		e.stopPropagation();
	}

	// Stops previously initiated started hide timer
	clearhidemenu();

	dropmenuobj=document.getElementById ?
		document.getElementById("dropmenudiv") : dropmenudiv;

	populatemenu(menucontents);

	if (ie4||ns6) {
		showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth);
		dropmenuobj.x=getposOffset(obj, "left")-offsetx;
		dropmenuobj.y=getposOffset(obj, "top")-offsety;
		dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px";
		dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px";
	}

	return clickreturnvalue();
}

function clickreturnvalue()
{
	if (ie4||ns6) {
		return false;
	} else {
		return true;
	}
}

function dynamichide(e)
{
	if (ie4&&!dropmenuobj.contains(e.toElement)) {
		delayhidemenu();
	} else if (ns6&&e.currentTarget!= e.relatedTarget&& !bln_contains_ns6(e.currentTarget, e.relatedTarget)) {
		delayhidemenu();
	}
}

/*
 * Hides the menu (called by the timer started in delayhidemenu)
 */
function hidemenu(e)
{
	if (typeof dropmenuobj != "undefined") {
		if (ie4||ns6) {
			dropmenuobj.style.display = 'none';
		}
	}
}

/* Initiates the hidemenu timer to "exploded" (and hide the menu) after disapperdelay milliseconds
 */
function delayhidemenu()
{
	if (ie4||ns6) {
		delayhide=setTimeout("hidemenu()",disappeardelay);
	}
}

/*
 * We're going to display a new menu. Interrupt the delayed hide of previous menu
 * if a timer has been started
 */
function clearhidemenu()
{
	if (typeof delayhide != "undefined") {
		clearTimeout(delayhide);
	}
}

if (hidemenu_onclick == "yes") {
	document.onclick = hidemenu;
}

