//get platform info
ns4=(document.layers && parseInt(navigator.appVersion)>=4) ? 1:0

// cross-browser function to get an object's style object given its id
function getStyleObject(objectId) {
	if(document.getElementById && document.getElementById(objectId)) {
		// W3C DOM
		return document.getElementById(objectId).style;
	} else if (document.all && document.all(objectId)) {
		// MSIE 4 DOM
		return document.all(objectId).style;
	} else if (document.layers && document.layers[objectId]) {
		// NN 4 DOM.. note: this won't find nested layers
		return document.layers[objectId];
	} else {
		return false;
	}
}

function getObject(objectId) {
	if (document.getElementById) {
		return document.getElementById(elemID);
	} else if (document.all) {
		return document.all(elemID);
	} else if (document.layers) {
		return document.layers[elemID];
	} else {
		return false;
	}
}

// get a reference to the cross-browser style object and make sure the object exists
function changeObjectVisibility(objectId, newVisibility) {
	var styleObject = getStyleObject(objectId);
	if(styleObject) {
		styleObject.visibility = newVisibility;
		return true;
	} else {
		// we couldn't find the object, so we can't change its visibility
		return false;
	}
}
// provera da li su inicijalizovane startne pozicije menija
// da miniji ne bi mogli biti prikazani pre pozicioniranja
var startPositionSet = false;

function calculateMenuPositions(){
//	if (navigator.appName == "Netscape") {
//		imageLeft = document["zeroMarker"].pageX+2; // addtional fine tuning 2px
//		imageTop  = document["zeroMarker"].pageY+3; // addtional fine tuning 3px
//	} else {
//		imageLeft = document["zeroImage"].getClientRects()[0].left;
//		imageTop  = document["zeroImage"].getClientRects()[0].top;
//	}

	var x = 0;
	var y = 0;
// dodatak za preracun offset-a na osnovu pozicije marker elementa
	var offsetPointer = document.getElementById("tdPos"); // cElement;
	while (offsetPointer) {
		x += offsetPointer.offsetLeft;
		y += offsetPointer.offsetTop;
		offsetPointer = offsetPointer.offsetParent;
	}
	// correct for MacIE body margin factors
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") {
		x += document.body.leftMargin;
		y += document.body.topMargin;
	}
//	alert('pos='+x+', '+y);

	// menu
	changeObjectPosition('menu', mainMenuPos[0], mainMenuPos[1], x, y)
	// drops
	for (var i=0; i<numOfDrops; i++){
		changeObjectPosition(getDropName(i), menuHorOfset[i], menuVertOfset[i], x, y)
	}
	startPositionSet = true;
}

function changeObjectPosition(objName, horOff, vertOff, leftCorrection, topCorrection) {
//	alert("1="+objName+",2="+horOff+",3="+vertOff+",4="+leftCorrection+",5="+topCorrection);
	var styleObject = getStyleObject(objName);
	if(styleObject) {
		styleObject.left = horOff  + leftCorrection;
		styleObject.top  = vertOff + topCorrection;
		return true;
	} else {
		// we couldn't find the object, so we can't change its visibility
		return false;
	}
}

function Menu() {
	this.items = 0;                // initial number of items in List
	this.Add = Add;                // Add is a Menu method e.g. Menu.Add()
	this.Elements = new Object();     // adds an empty built-in JavaScript Object
}

function Add(obj) {
	this.Elements[this.items++] = obj;
}


// all happends here - by Mudri
	var lock=0;

	function getDropName(menuNumber){
		var ret = 'drop' + (menuNumber);
		return ret;
	}

	function f7_showdrop(menuNumber) {
		if (startPositionSet) {
			var menu = new Menu();
			menu.Add(getDropName(menuNumber));
	
			hideall(menu);
			lock=1;
			var menuId = getDropName(menuNumber);
			if(changeObjectVisibility(menuId, 'visible')) {
				return true;
			} else {
				return false;
			}
		} else {
			return false;
		}
	}

	function f7_showdrops(menu1, menu2) {
		var menu = new Menu();
		menu.Add(getDropName(menu1));
		menu.Add(getDropName(menu2));

		hideall(menu);
		lock=1;
		var result = true;
		for(var i=0; i< menu.items; i++) {
			if(!changeObjectVisibility(menu.Elements[i], 'visible')) {
				result = false;
			}
		}
		return result;
	}

	function f7_hidedrop() {
		lock=0;
		setTimeout('hideall(new Menu())',500);
	}

	function hideall(obj){
		for(counter = 0; counter < numOfDrops; counter++) {
			var name = getDropName(counter);
			if(doHide(name, obj)){
				changeObjectVisibility (name, 'hidden');
				lock=0;
			}
		}
	}

	function doHide(current,obj){
		for(var i=0; i< obj.items; i++) {
			if (obj.Elements[i] == current) {
				return false;
			}
		}
		if(ns4){
			return f7_checkmousepos(current);
		}else if(!lock){
			return true;
		}
		return false;
	}

//deal with cursor over layer for ns
if(ns4){
	document.onmousemove = f7_getmousepos
	document.captureEvents(Event.MOUSEMOVE)
}

function f7_getmousepos(e){
	if(ns4){f7_mousex=e.pageX; f7_mousey=e.pageY}
}

function f7_checkmousepos(name){
	if(ns4){
		f7_x_min=eval('document.'+name+'.left');
		f7_x_max=f7_x_min+eval('document.'+name+'.clip.width');
		f7_y_min=eval('document.'+name+'.top');
		f7_y_max=f7_y_min+eval('document.'+name+'.clip.height')
		if (f7_mousex>=f7_x_min && f7_mousex<=f7_x_max && f7_mousey>=f7_y_min && f7_mousey<=f7_y_max){
			return false;
		}else if(lock){
			return false;
		}
	}
	return true;
}
