var tt;
var widget_tooltip_alpha = 0;
//var widget_tooltip_interval_id = undefined;


function
widget_tooltip_pos (event, e)
{
  var pos = event_getmouse (event);
  e.style.left = (pos[0] + 32) + 'px';
  e.style.top = (pos[1] + 32) + 'px';
}


function
misc_set_opacity (e, opacity)
{
  opacity = (opacity == 100) ? 99.999 : opacity;

  // IE
  e.style.filter = 'alpha(opacity:'+opacity+')';

  // safari <1.2, konqueror
  e.style.KHTMLOpacity = opacity * .01;

  // older mozilla and firefox
  e.style.MozOpacity = opacity * .01;

  // safari 1.2, newer firefox and mozilla, CSS3
  e.style.opacity = opacity * .01;
}


function
widget_tooltip_opacity (opacity)
{
//  tt.style.opacity = opacity * .01;
  misc_set_opacity (tt, opacity);
}


function
widget_tooltip_fade_func (f, min, max, delta)
{
  var a = widget_tooltip_alpha;
//  var a = tt.filters.alpha.opacity;
  // DEBUG
//document.write (a);
  if ((f == 'in' &&  a >= max) ||
      (f == 'out' && a <= min))
    {
      if (typeof widget_tooltip_interval_id != 'undefined')
        clearInterval (widget_tooltip_interval_id);
      if (f == 'out')
        tt.style.display = 'none';
      return;
    }

  if (f == 'in')
    a += delta 
  else // if (f == 'out')
    a -= delta;
  widget_tooltip_alpha = Math.min (Math.max (a, min), max);
  widget_tooltip_opacity (Math.sin ((widget_tooltip_alpha - 50) * .0314) * 100);
}


function
widget_tooltip_fade (f, min, max, delta, delay)
{
  if (typeof widget_tooltip_interval_id != 'undefined')
    clearInterval (widget_tooltip_interval_id);
  widget_tooltip_interval_id =
    setInterval ('widget_tooltip_fade_func(\''+f+'\', '+min+', '+max+', '+delta+')', delay);
}


function
widget_tooltip (e)
{
  var fps = 30;
  var delay = Math.floor (100/fps);
  var min = 0;
  var max = 100;
  var delta = 2;

  if (tt == null)
    {
      tt = document.createElement ('span');
      tt.setAttribute ('id', 'widget_tooltip');
      widget_tooltip_opacity (0);
      document.body.appendChild (tt);
//      tt.style.display = 'block';

      misc_add_event_listener (window, 'mousemove', function(event){widget_tooltip_pos(event, tt)});
      misc_add_event_listener (window, 'mouseout', function(){widget_tooltip_fade('out', min, max, delta, delay)});
    }

  if (e.hasAttribute ('tooltip'))
    {
    }
  else if (e.hasAttribute ('title'))
    {
      e.setAttribute ('tooltip', e.getAttribute ('title'));
      e.setAttribute ('title', '');  
    }
  else if (e.hasAttribute ('alt'))
    {
      e.setAttribute ('tooltip', e.getAttribute ('alt'));
    }
  else
    return;

  tt.innerHTML = e.getAttribute ('tooltip');
  tt.style.display = 'block';

  widget_tooltip_fade ('in', min, max, delta, delay);
}


/*
function resizeMe ()
{
//Standard height, for which the body font size is correct
var preferredHeight = 768;
//var fontsize = $("body").css("font-size");
var fontsize = 32;
var displayHeight = $(window).height();
var percentage = displayHeight / preferredHeight;
var newFontSize = Math.floor(fontsize * percentage) - 1;
$("body").css("font-size", newFontSize);
}
*/

function
widget_resize_font ()
{
// resize
//   use percent for font-size: 100%;
//  element_id = '*';
  font_percent = 0.015;
  w = misc_getwh ();
  var font_size = Math.round (w[0] * font_percent + 85);
  s = document.styleSheets[0];
/*
  rules = s.cssRules ? s.cssRules : s.rules;
  for (i = 0; i < rules.length; i++)
    if (rules[i].selectorText.toLowerCase() == '*')
      {
        rules[i].cssText = '* {font-size:'+font_size+'%;}';
        break;
      }
*/
  if (navigator.appName.indexOf ('Microsoft') != -1)
    {
      s.removeRule (0);
      s.addRule ('*', 'font-size:'+font_size+'%;', 0);
      return;
    }
  s.deleteRule (0);
  s.insertRule ('* {font-size:'+font_size+'%;}', 0);
}


function
widget_lights_off (e)
{
//  misc_add_event_listener (window, 'mousemove', function(e){widget_lights_off(e);});
  if (!e)
    e = window.event;

  if (typeof e.keyCode == 'undefined')
    {
      var xy = event_getmouse (e);
      var w = misc_getwh ();
      
      var factor = 1;
      // align:right
      xy[0] = w[0] - xy[0];

      document.body.style.backgroundColor = (xy[0] < (w[0] * .02)) ?                           '#000' : '#fff';
      document.body.style.opacity =         ((xy[0] + 1) < (w[0] * .1)) ? ((xy[0] + 1) / (w[0] * .1)) :      1;
    }
}

