/*
 +-------------------------------------------------------------------+
 |                      J S - M E M O   (v1.4)                       |
 |                                                                   |
 | Copyright Gerd Tentler                www.gerd-tentler.de/tools   |
 | Created: Jan. 26, 2002                Last modified: Dec. 7, 2006 |
 +-------------------------------------------------------------------+
 | This program may be used and hosted free of charge by anyone for  |
 | personal purpose as long as this copyright notice remains intact. |
 |                                                                   |
 | Obtain permission before selling the code for this program or     |
 | hosting this software on a commercial website or redistributing   |
 | this software over the Internet or in any other medium. In all    |
 | cases copyright must remain intact.                               |
 +-------------------------------------------------------------------+

*/
// -------------------------------------------------------------------------------------------------------
// Configuration
// -------------------------------------------------------------------------------------------------------

var titleFont = "Verdana,Arial,Helvetica";  // title font family
var titleSize = 12;                         // title font size (pixels)
var titleColor = "#FFFFFF";                 // title color
var textFont = "Verdana,Arial,Helvetica";   // text font family
var textSize = 10;                          // text font size (pixels)
var textColor = "#000000";                  // text color
var bgColor = "#FFFFFF";                    // background color
var borderColor = "#66872B";                // border color
var btnRaisedColor = "#006633";             // raised button color
var btnPressedColor = "#006633";            // pressed button color
var fadeSpeed = 15;                         // fade speed (0 - 30; 0 = no fading)*

// * Fading was successfully tested only on Windows XP with IE 6, NN 7 and Firefox 1. It seems that
//   other browsers and systems do not support this feature.

// -------------------------------------------------------------------------------------------------------
// Get browser information
// -------------------------------------------------------------------------------------------------------

var OP = (navigator.userAgent.indexOf('Opera') != -1) ? true : false;
var IE = (navigator.userAgent.indexOf('MSIE') != -1 && !OP) ? true : false;
var GK = (navigator.userAgent.indexOf('Gecko') != -1) ? true : false;
var NN4 = document.layers;
var DOM = document.getElementById;

// -------------------------------------------------------------------------------------------------------
// Set styles
// -------------------------------------------------------------------------------------------------------

document.write('<style> .cssMemoText { ' +
               'font-family: ' + textFont + '; ' +
               'font-size: ' + textSize + 'px; ' +
               'color: ' + textColor + '; ' +
               '} .cssMemoTitle { ' +
               'font-family: ' + titleFont + '; ' +
               'font-size: ' + titleSize + 'px; ' +
               'font-weight: bold; ' +
               'color: ' + titleColor + '; ' +
               'padding: 2px; ' +
               'padding-left: 4px; ' +
               '} .cssMemoBtnRaised { ' +
               'font-family: Verdana,Arial,Helvetica; ' +
               'font-size: ' + titleSize + 'px; ' +
               'font-weight: bold; ' +
               'color: #FFFFFF; ' +
               'background-color: ' + btnRaisedColor + '; ' +
               'border: 1px outset #FFFFFF; ' +
               'cursor: default; ' +
               'width: 16px; ' +
               'height: 16px; ' +
               'padding: 2px; ' +
               'text-align: center; ' +
               '} .cssMemoBtnPressed { ' +
               'font-family: Verdana,Arial,Helvetica; ' +
               'font-size: ' + titleSize + 'px; ' +
               'font-weight: bold; ' +
               'color: #FFFFFF; ' +
               'background-color: ' + btnPressedColor + '; ' +
               'border: 1px inset #FFFFFF; ' +
               'cursor: default; ' +
               'width: 16px; ' +
               'height: 16px; ' +
               'padding-left: 3px; ' +
               'padding-top: 3px; ' +
               'padding-bottom: 1px; ' +
               'padding-right: 1px; ' +
               'text-align: center; ' +
               '} </style>');

// -------------------------------------------------------------------------------------------------------
// Set memo-box layer
// -------------------------------------------------------------------------------------------------------

document.write('<div id="divMemo" style="position:absolute; z-index:69; visibility:hidden"></div>');

if(DOM) {
  var obj = document.getElementById('divMemo');
  var sobj = obj.style;
}
else if(IE) {
  var obj = document.all.divMemo;
  var sobj = obj.style;
}
else if(NN4) {
  var obj = document.divMemo;
  var sobj = obj;
}

// -------------------------------------------------------------------------------------------------------
// Get mouse position, window height and scroll top
// -------------------------------------------------------------------------------------------------------

var mouseX = mouseY = winY = scrTop = 0;

if(NN4) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = getMouseXY;

function getMouseXY(e) {
  if(IE) {
    mouseX = event.clientX + document.body.scrollLeft;
    mouseY = event.clientY + document.body.scrollTop;
  }
  else {
    mouseX = e.pageX;
    mouseY = e.pageY;
  }
  if(mouseX < 0) mouseX = 0;
  if(mouseY < 0) mouseY = 0;
}

function getWindowHeight() {
  if(GK || NN4) winY = window.innerHeight;
  else if(DOM) winY = document.body.offsetHeight;
  else winY = screen.height;
  if(document.body && document.body.scrollTop >= 0) scrTop = document.body.scrollTop;
  else if(window.pageYOffset >= 0) scrTop = window.pageYOffset;
}

// -------------------------------------------------------------------------------------------------------
// Set opacity, fade-in/out
// -------------------------------------------------------------------------------------------------------

var timer = opacity = 0;

function setOpacity(opacity) {
  if(obj && !NN4) {
    obj.style.filter = 'alpha(opacity=' + opacity + ')';
    obj.style.mozOpacity = '.1';
    if(obj.filters) obj.filters.alpha.opacity = opacity;
    if(!IE && obj.style.setProperty) obj.style.setProperty('-moz-opacity', opacity / 100, '');
  }
}

function fadeIn() {
  if(sobj) {
    sobj.visibility = 'visible';
    if(fadeSpeed && opacity < 100) {
      opacity += fadeSpeed;
      if(opacity > 100) opacity = 100;
      setOpacity(opacity);
      if(timer) clearTimeout(timer);
      timer = setTimeout('fadeIn()', 1);
    }
    else {
      opacity = 100;
      setOpacity(100);
    }
  }
}

function fadeOut() {
  if(sobj) {
    if(fadeSpeed && opacity > 0) {
      opacity -= fadeSpeed;
      if(opacity < 0) opacity = 0;
      setOpacity(opacity);
      if(timer) clearTimeout(timer);
      timer = setTimeout('fadeOut()', 1);
    }
    else {
      opacity = 0;
      setOpacity(0);
      sobj.visibility = 'hidden';
    }
  }
}

// -------------------------------------------------------------------------------------------------------
// Create the memo-box and view it
// -------------------------------------------------------------------------------------------------------

function memo(text, width, title) {
  if(width == null || width == 0) width = 200;
  if(title == null) title = '';

  var left = mouseX - width;
  if(left < 0) left = 0;

  var t = '<table border="0" cellspacing="0" cellpadding="1"><tr bgcolor="' + borderColor + '">' +
          '<td class="cssMemoTitle" style="width:' + (width - 16) + 'px">' + title + '</td>' +
          '<td class="cssMemoBtnRaised" align="right" onClick="fadeOut()" onMouseDown="this.className=\'cssMemoBtnPressed\'" ' +
          'onMouseUp="this.className=\'cssMemoBtnRaised\'" onMouseOut="this.className=\'cssMemoBtnRaised\'">&times;</td>' +
          '</tr><tr><td bgcolor="' + borderColor + '" colspan="2">' +
          '<table border="0" cellspacing="0" cellpadding="4" width="' + width + '" bgcolor="' + bgColor + '"><tr>' +
          '<td><table border="0" cellspacing="0" cellpadding="0" align="center"><tr>' +
          '<td class="cssMemoText">' + text + '</td></tr></table></td></tr></table></td></tr></table>';

  if(DOM || IE) {
    sobj.width = width;
    obj.innerHTML = t;
  }
  else if(NN4) {
    obj.document.write(t);
    obj.document.close();
  }

  var hght = 0;
  var top = mouseY;

  if(DOM) hght = obj.offsetHeight;
  else if(IE) hght = sobj.pixelHeight;
  else if(NN4) hght = sobj.clip.bottom;

  getWindowHeight();
  if(top + hght - scrTop > winY) {
    if(hght > top) top = 0;
    else top -= hght;
  }

  sobj.left = left;
  sobj.top = top;
  fadeIn();
}

// -------------------------------------------------------------------------------------------------------
