var navsectionaboutstatus = 0;
var navsectionservicesstatus = 0;
var navsectionportfoliostatus = 0;
var navsectiontechnicalstatus = 0;
var navsectionnewsstatus = 0;
var navsectioncontactstatus = 0;
var tmpCursor;
var menuSections = 'navsectionabout,navsectionservices,navsectionportfolio,navsectiontechnical,navsectionnews,navsectioncontact';

function fn_logmousepos(e){
  tmpCursor = getCursorPosition(e);
}

function fn_log(str) {
  //outputDiv = document.getElementById("output");
  //outputDiv.innerHTML = outputDiv.innerHTML +  '[' + str + ']';
}
  
function findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
	curleft = obj.offsetLeft
	curtop = obj.offsetTop
	while (obj = obj.offsetParent) {
		curleft += obj.offsetLeft
		curtop += obj.offsetTop
	}
  }
  return [curleft,curtop];
}
  
function getCursorPosition(e) {
    if (!e) {
	if (!window.event) {
	    return;
	}
	e = window.event;
    }
  var cursor = {};
  cursor.x = 0;
  cursor.y = 0;
  if (e.pageX || e.pageY) {
	cursor.x = e.pageX;
	cursor.y = e.pageY;
  } 
  else if (e.clientX && e.clientY) {
      var de = document.documentElement;
      var b = document.body;
      cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
      cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
  }
  else {
      return;
  }
  return cursor;
}

function fn_cursor_in_range(sectionX, sectionY, sectionWidth, sectionHeight) {
  currentPos = tmpCursor;
  //tmp_str = currentPos.x + ',' + currentPos.y + ',' + sectionX + ',' + sectionY + ',' + sectionWidth + ',' + sectionHeight;
  //fn_log(tmp_str); 
  if ((currentPos.x >= sectionX) && (currentPos.x <= (sectionX + sectionWidth)) && (currentPos.y >=sectionY) && (currentPos.y <=(sectionY + sectionHeight))){
    return true;
  }
  
}


function fn_check_mouseover(section){
         //alert('mouseover');
	 //fn_log('in range');
	 if(fn_get_status(section) == 0){
	    fn_do_transition(section);
	 }
}

function fn_check_mouseout(section) {
  setTimeout('fn_check_mouseout_delayed("' + section + '")',200);
}

function fn_check_mouseout_delayed(section){
  //var currentPos = getCursorPosition(event);
  var sectionStatus = fn_get_status(section);
  if (sectionStatus == 1) {
    var sectionObj = document.getElementById(section);
    var sectionX = findPos(sectionObj)[0];
    var sectionY = findPos(sectionObj)[1];
    var sectionWidth = sectionObj.offsetWidth;
    var sectionHeight = sectionObj.offsetHeight;
    if (fn_cursor_in_range(sectionX, sectionY, sectionWidth, sectionHeight)){
      //fn_log('in range');
    }else{
  	  //fn_log('out of range');
	  fn_do_transition(section);
    }
  }

}

function fn_update_status(section,val){
	eval(section + 'status = ' + val);
}

function fn_do_transition(section){
	//fn_log('transition:' + section);
	var state=0;
	eval('state=' + section+'status');
	if(state==1){
	  fn_log('fadeout<br />');
	  //do transition then update status;
          //alert('fadeout');
	  new Effect.Opacity((section+'ul'), {duration:0.5, from:1.0, to:0.7})
	  fn_update_status(section, 0);
	}
	if(state==0){
	  fn_log('fadein<br />');
	  //do transition then update status;
          //alert('fadein');
	  new Effect.Opacity((section+'ul'), {duration:0.5, from:0.7, to:1.0})
	  fn_update_status(section, 1);
	}
}

function fn_get_status(section){
  var sectionStatus;
  eval('sectionStatus = ' + section + 'status;');
  return sectionStatus; 
}

function fn_init_menus(){
  if(document.getElementById){
          //alert('init menus');
      document.onmousemove = fn_logmousepos;
      arrSections = menuSections.split(',');
      for(var i=0; i < arrSections.length; i++){
	  new Effect.Opacity((arrSections[i]+'ul'), {duration:0.5, from:1.0, to:0.7});
	  eval("document.getElementById(arrSections[i]).onmouseover = function() {fn_check_mouseover('" + arrSections[i] + "')}");
	  eval("document.getElementById(arrSections[i]).onmouseout = function() {fn_check_mouseout('" + arrSections[i] + "')}")
	      }
  }
}

//window.onload=function(){fn_init_menus()}