var currentFocusEl=null;
var currentHoverEl=null;
var oldFocusClass;
var oldHoverClass;

// mark the current row as focused (typically used to match what is displayed in another frame)
function gridfocus_focusRow(id) {
    if(currentFocusEl!=null) {
        currentFocusEl.className=currentFocusEl.className.replace(/tablefocusrow/gi,oldFocusClass);
    }
	var elem=document.getElementById("tr"+id);
	if(elem!=null) {
	    if(elem.className.indexOf("tablehoverrow"!=-1)) {
            oldFocusClass=oldHoverClass;
	    }
        else {
            oldFocusClass=elem.className.indexOf("tableevenrow")==-1?"tableoddrow":"tableevenrow";
        }
	    elem.className=elem.className.replace(/tableevenrow/gi,"tablefocusrow");
	    elem.className=elem.className.replace(/tableoddrow/gi,"tablefocusrow");
	    elem.className=elem.className.replace(/tablehoverrow/gi,"tablefocusrow");
	}
    currentFocusEl=elem;
}

// mark the current row as highlighted or not (ex. unread email/read email)
function gridfocus_highlightRow(id,highlight) {
	var elem=document.getElementById("tr"+id);
	if(elem!=null) {
        if(highlight) {
          elem.className=elem.className.replace(/tableunhighlight/gi,"tablehighlight");
        }
        else {
          elem.className=elem.className.replace(/tablehighlight/gi,"tableunhighlight");
        }
	}
}

var grid_mouseOutEventHandler;
var grid_mouseOverEventHandler;
function gf_mi(e) {
    if(!e) e=window.event;
    var oelem=getEventTarget(e);
    var elem=oelem;
    while(isDefined(elem) && elem.tagName!="TR") {
      elem=elem.parentNode;
    }

    oldHoverClass=elem.className.indexOf("tableevenrow")!=-1?"tableevenrow":"tableoddrow";
    elem.className=elem.className.replace(/tableevenrow/gi,"tablehoverrow");
    elem.className=elem.className.replace(/tableoddrow/gi,"tablehoverrow");
    currentHoverEl=elem;
    if(grid_mouseOverEventHandler && !isDefined(oelem.noNotification)) {
       grid_mouseOverEventHandler(e,elem);
    }
}

function gf_mo(e) {
    var oelem=getEventTarget(e);
    var elem=oelem;
    while(isDefined(elem) && elem.tagName!="TR") {
      elem=elem.parentNode;
    }

    elem.className=elem.className.replace(/tablehoverrow/gi,oldHoverClass);
    if(grid_mouseOutEventHandler && !isDefined(oelem.noNotification)) {
       grid_mouseOutEventHandler(e,elem);
    }
}