function elem(x, y)
{
  this._x = x;
  this._y = y;
}

elem.prototype._x;
elem.prototype._y;
var myElem = null;

var capslock = {
  init: function() {
    if (!document.getElementsByTagName) {
      return;
    }
    // Find all password fields in the page, and set a keypress event on them
    var inps = document.getElementsByTagName("input");
    for (var i=0, l=inps.length; i<l; i++) {
      if (inps[i].type == "password") {
        capslock.addEvent(inps[i], "keypress", capslock.keypress);
      }
    }
  },
  addEvent: function(obj,evt,fn) {
    if (document.addEventListener) {
      capslock.addEvent = function (obj,evt,fn) {
        obj.addEventListener(evt,fn,false);
      };
      capslock.addEvent(obj,evt,fn);
    } else if (document.attachEvent) {
      capslock.addEvent = function (obj,evt,fn) {
        obj.attachEvent('on'+evt,fn);
      };
      capslock.addEvent(obj,evt,fn);
    } else {
      // no support for addEventListener *or* attachEvent, so quietly exit
    }
  },
  keypress: function(e) {
    var ev = e ? e : window.event;
    if (!ev) {
      return;
    }
    var targ = ev.target ? ev.target : ev.srcElement;
    if (myElem == null)
    {
        //debugger;
        if (navigator.appVersion.indexOf("MSIE") > -1)
        {
           myElem = new elem(targ.offsetLeft, targ.offsetTop);
           myElem = capslock.calculate_position(targ);
        }
        else
        {
           myElem = new elem(targ.offsetLeft, targ.offsetTop);
        }
    }
    // get key pressed
    var which = -1;
    if (ev.which) {
      which = ev.which;
    } else if (ev.keyCode) {
      which = ev.keyCode;
    }
    // get shift status
    var shift_status = false;
    if (ev.shiftKey) {
      shift_status = ev.shiftKey;
    } else if (ev.modifiers) {
      shift_status = !!(ev.modifiers & 4);
    }
    if (((which >= 65 && which <=  90) && !shift_status) ||
        ((which >= 97 && which <= 122) && shift_status)) {
      // uppercase, no shift key
      capslock.show_warning(targ);
    } else {
      capslock.hide_warning(targ);
    }
  },

  show_warning: function(targ) {
    if (!targ.warning) {
      targ.warning = document.createElement('img');
      //targ.warning = document.createElement('div');
      //targ.warning.innerHTML = capslockText;
      //targ.warning.className = "capslockDiv";
      targ.warning.src = "/images/boxes/CAPSLOCK2.gif";
      targ.warning.style.position = "absolute";
      targ.warning.style.zIndex = "999";
      targ.warning.style.top = (myElem._y + 28) + "px";
      targ.warning.style.left = (myElem._x + 5) + "px";
      targ.warning.setAttribute("alt", "Warning: Caps Lock is on");
      /*if (targ.warning.runtimeStyle) {
        // PNG transparency for IE
        targ.warning.runtimeStyle.filter += "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/boxes/CAPSLOCK2.gif',sizingMethod='scale')";
      }*/
      document.body.appendChild(targ.warning);
      //targ.parentNode.appendChild(targ.warning);
    }
  },
  hide_warning: function(targ) {
    if (targ.warning) {
      targ.warning.parentNode.removeChild(targ.warning);
      targ.warning = null;
    }
  },
  calculate_position: function(elem1) {
    //debugger;
    if (elem1.parentNode != null && elem1.offsetParent != null
           && elem1 != elem1.ownerDocument.body)
    {
        elem1 = elem1.parentNode;
        myElem._x += elem1.offsetLeft;
        myElem._y += elem1.offsetTop;
        capslock.calculate_position(elem1);
    }
    return myElem;
  }
};

(function(i) {var u =navigator.userAgent;var e=/*@cc_on!@*/false; var st =
setTimeout;if(/webkit/i.test(u)){st(function(){var dr=document.readyState;
if(dr=="loaded"||dr=="complete"){i()}else{st(arguments.callee,10);}},10);}
else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){
document.addEventListener("DOMContentLoaded",i,false); } else if(e){     (
function(){var t=document.createElement('doc:rdy');try{t.doScroll('left');
i();t=null;}catch(e){st(arguments.callee,0);}})();}else{window.onload=i;}})(capslock.init);


