function MM_swapImgRestore() {
  var i,x,a=document.MM_sr; 
  for(i=0; a && i<a.length && (x=a[i]) && x.oSrc;i++) {
    x.src=x.oSrc;
  }
}

function MM_preloadImages() {
  var d=document;
  
  if(d.images){
    if(!d.MM_p) {
      d.MM_p=new Array();
    }
    
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
    for(i=0; i<a.length; i++) {
      if (a[i].indexOf("#")!=0 && a[i].length != 0) {
        d.MM_p[j]=new Image;
        d.MM_p[j++].src=a[i];
      }
    }
  } 
}


function MM_findObj(n, d) {
  var p,i,x;
  
  if(!d) {
    d=document;
  }
  
  if((p=n.indexOf("?")) > 0 && parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document;
    n=n.substring(0,p);
  }

  if(d.getElementById) {
    x=d.getElementById(n);
  }
    
  if(!x && !(x=d[n]) && d.all) {
    x=d.all[n];
  }
  
  for(i=0;!x && i<d.forms.length;i++) {
    x=d.forms[i][n];
  }
  
  for(i=0;!x && d.layers && i<d.layers.length;i++) {
    x=MM_findObj(n,d.layers[i].document);
  }
  
  return x;
}

function MM_swapImage() {
  var i,j=0,x,a=MM_swapImage.arguments;
  document.MM_sr=new Array;
  for(i=0;i < (a.length-2);i+=3) {
    if (typeof a[i] == "object") {
    	x=a[i];
    } else {
    	x=MM_findObj(a[i]);
    }

    if (x!=null){
      document.MM_sr[j++]=x;
      if(!x.oSrc) {
        x.oSrc=x.src;
      }
      x.src=a[i+2];
    }
  }
}

function MM_isWhiteSpace(value) {
  var isWhiteSpace = true;

  if(value == null || value.length == 0){
    return isWhiteSpace;
  }

  var len = value.length;
  var i = 0;

  while(i < len){
    if (value.charCodeAt(i) > 32) {
      isWhiteSpace = false;
      break;
    }
    i = i + 1;
  }

  return isWhiteSpace;
}

var rc2corp_hidePortletComment='<!-- [com.rc2corp.portal.hidePortlet] -->';


function MM_hasVisibleContent(contentElement){
    var elems = contentElement.childNodes;
    var hasVisibleContent = false;
    for (var i = 0; (!hasVisibleContent) && i < elems.length; i++) {
        switch(elems[i].nodeType) {
            case 3:
                hasVisibleContent = !MM_isWhiteSpace(elems[i].nodeValue);
                break;
            case 1:
                if ("SCRIPT" != elems[i].tagName) {
                    if ("IMG" == elems[i].tagName) {
                        hasVisibleContent = true;
                    } else {
                        for (var j = 0; j < elems[i].childNodes.length; j++) {
                            hasVisibleContent |= MM_hasVisibleContent(elems[i].childNodes[j]);
                        }
                    }
                }
                break;
            default:
                break;
        }
    }
    return hasVisibleContent; 
}

function MM_shouldHidePortlet(contentElement)
{
    return MM_isWhiteSpace(contentElement.innerHTML) || (contentElement.innerHTML.indexOf(rc2corp_hidePortletComment) != -1);
}

function MM_hideNoContentPortletDeferred(contentElementID, portletElementID) {
  var content = MM_findObj(contentElementID, document);
  if (MM_shouldHidePortlet(content)) {
    var portlet = MM_findObj(portletElementID, document);
    portlet.style.display = "none";
  }
}

function MM_hideNoContentPortlet(contentElementID, portletElementID) {
    MM_addLoadEvent(new Function("MM_hideNoContentPortletDeferred('" + contentElementID + "', '" + portletElementID + "')"));
}


// returns the absolute left x coordinate of an object by id
function MM_getAbsoluteLeft(objID) {
    var obj = MM_findObj(objID, document);
    return MM_getObjectAbsoluteLeft(obj);
}

// returns the absolute left x coordinate of an object
function MM_getObjectAbsoluteLeft(obj) {
    var left = obj.offsetLeft;
    
    if (obj.offsetParent) {
        var tmp = MM_getObjectAbsoluteLeft(obj.offsetParent);
        left += tmp;
    }
    return left;
}

// returns the absolute top y coordinate of an object by id
function MM_getAbsoluteTop(objID) {
    var obj = MM_findObj(objID, document);
    return MM_getObjectAbsoluteTop(obj);
}

// returns the absolute top y coordinate of an object
function MM_getObjectAbsoluteTop(obj) {
    var top = obj.offsetTop;
    if (obj.offsetParent) {
        var tmp = MM_getObjectAbsoluteTop(obj.offsetParent);
        top += tmp;
    }
    return top;
}

// adds the given function to the window.onLoad event
function MM_addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

// adds the given function to the window.onscroll event
function MM_addOnScrollEvent(func) {
  var oldonscroll = window.onscroll;
  if (typeof window.onscroll != 'function') {
    window.onscroll = func;
  } else {
    window.onscroll = function() {
      if (oldonscroll) {
          oldonscroll();
      }
      func();
    }
  }
}

// adds the given function to the window.onresize event
function MM_addOnResizeEvent(func) {
  var oldonresize = window.onresize;
  if (typeof window.onresize != 'function') {
    window.onresize = func;
  } else {
    window.onresize = function() {
      if (oldonresize) {
          oldonresize();
      }
      func();
    }
  }
}
// adds the given function to events that change abs positioning
function MM_onAddAbsPosContextChange(func) {
    MM_addLoadEvent(func);
    MM_addOnScrollEvent(func);
    MM_addOnResizeEvent(func);
}


// overlays one object (objID) onto another (ontoObjID)
// align = left (default), center or right
// valign = top (default), middle or bottom
function MM_overlay(objID, ontoObjID, offsetLeft, offsetTop, align, valign) {
    var obj = MM_findObj(objID, document);
    var ontoObj = MM_findObj(ontoObjID, document);
    
    var x, y;

    if (align == "center") {
        x = MM_getObjectAbsoluteLeft(ontoObj) + (ontoObj.offsetWidth/2) - (obj.offsetWidth/2);
    } else if (align == "right") {
        x = MM_getObjectAbsoluteLeft(ontoObj) + ontoObj.offsetWidth - obj.offsetWidth;
    } else {
        x = MM_getObjectAbsoluteLeft(ontoObj);
    }

    if (valign == "middle") {
        y = MM_getObjectAbsoluteTop(ontoObj) + (ontoObj.offsetHeight/2) - (obj.offsetHeight/2);
    } else if (valign == "bottom") {
        y = MM_getObjectAbsoluteTop(ontoObj) + ontoObj.offsetHeight - obj.offsetHeight;
    } else {
        y = MM_getObjectAbsoluteTop(ontoObj);
    }
    
    if (typeof(offsetLeft) == "number") {
        x += offsetLeft;
    }

    if (typeof(offsetTop) == "number") {
        y += offsetTop;
    }

    obj.style.position = "absolute";
    obj.style.visibility = "visible";
    obj.style.left = x;
    obj.style.top = y;
    
    if (typeof(ontoObj.style.zIndex) == "number") {
        obj.style.zIndex = ontoObj.style.zIndex + 1;
    } else {
        obj.style.zIndex = 1;
    }
}