
var name = document.getElementById('name');
var info = document.getElementById('info');


function createXMLHttpRequest() {
  var types = [
    'Microsoft.XMLHTTP',
    'MSXML2.XMLHTTP.5.0',
    'MSXML2.XMLHTTP.4.0',
    'MSXML2.XMLHTTP.3.0',
    'MSXML2.XMLHTTP'
   ];

  for (var i = 0; i < types.length; i++) {
    try {
      return new ActiveXObject(types[i]);
    } catch(e) {}
  }

  try {
    return new XMLHttpRequest();
  } catch(e) {}

  return false; // XMLHttpRequest not supported
}


name.onblur = function() {
  var req = createXMLHttpRequest();
  req.onreadystatechange = function() {
    if (req.readyState == 4) {
      if (req.status == 200) {
        if (req.responseText.length > 0) {
          info.innerHTML   = req.responseText;
          info.style.color = '#f00';
        } else {
          info.innerHTML   = 'OK';
          info.style.color = '#000';
        }
      }
    }
  };
  req.open('GET', 'validate.php?name=' + escape(name.value), true);
  req.send('');
}

function detectcaps(e, span) {
  var key, shift;

  var caps = document.getElementById(span);

  if (typeof e == 'undefined') {
    e = window.event;

    if (typeof e == 'undefined') {
      return;
    }
  }  
  
  if (e.which) { // netscape, firefox
    key = e.which;
  } else if (e.keyCode) { // IE
    key = e.keyCode;
  } else {
    return;
  }
  
  if (typeof e.shiftKey != 'undefined') { // IE, firefox
    shift = e.shiftKey;
  } else if (e.modifiers) { // netscape
    shift = (e.modifiers & 4); // 3e bit is shift
  } else {
    return;
  }
  
  if ((key > 64) &&
      (key < 91)) {
    if (shift == false) {
      caps.innerHTML = 'caps-lock is on!';
    } else {
      caps.innerHTML = '';
    }
  } else if ((key > 96) && 
             (key < 123)) {
    if (shift == true) {
      caps.innerHTML = 'caps-lock is on!';
    } else {
      caps.innerHTML = '';
    }
  }
}

