function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}

function getRequestBody(form) {
  var aParams = new Array();
  for (var i = 0; i < form.elements.length; i++) {
    var sParam = encodeURIComponent(form.elements[i].name);
    sParam += "=";
    sParam += encodeURIComponent(form.elements[i].value);
    aParams.push(sParam);
  }
  return aParams.join("&");
}

function tellAFriendHide() {
  var popup = document.getElementById("popup_tell_a_friend");
  popup.style.display = "none";
}

function tellAFriendPopup(event) {
  var e = event || window.event;
  var popup = document.getElementById("popup_tell_a_friend");
  if (popup == null) {
    return false;
  }
  var status = document.getElementById("status_tell_a_friend");
  if (status != null && window.tellAFriendOriginalStatus != null) {
    status.innerHTML = window.tellAFriendOriginalStatus;
  }
  if (e.pageX == null && e.clientX != null ) {
    var html = document.documentElement;
	var body = document.body;
	e.pageX = 200;
	e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
  }
  popup.style.left = "540px";
  popup.style.top = "288px";
  popup.style.display = "";
  return false;
}

function tellAFriendSubmit() {
  var form = document.forms["fm_popup_tell_a_friend"];
  if (form == null) {
	alert("No fm_popup_tell_a_friend form!");
	return false;
  }
  var sBody = getRequestBody(form);
  var request = getXmlHttp();
  tellAFriendShowStatus("Sending message...");
  request.open("POST", form.action, true);
  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      if (request.status == 200) {
          tellAFriendComplete(request.responseText, false);
        } else {
          tellAFriendComplete("Error " + request.status + ": " + request.statusText, true);
        }
      }
    };    
  request.send(sBody);	
  return false;
}

function tellAFriendComplete(message, error) {
  tellAFriendShowStatus(message);
  if (!error) {
    setTimeout("tellAFriendHide()", 2000);
  }
}

function tellAFriendShowStatus(message) {
  var status = document.getElementById("status_tell_a_friend");
  if (status != null) {
    if (window.tellAFriendOriginalStatus == null) {
      window.tellAFriendOriginalStatus = status.innerHTML;
    }
  status.innerHTML = message;
  }
}

function initializeTellAFriendLinks() {
  var elements = document.getElementsByTagName("a");
  for (var k = 0; k < elements.length; k++) {
    var element = elements[k];
    if (element.className.toLowerCase().indexOf("tell_a_friend_popup") == 0) {
      element.onclick = tellAFriendPopup;
    }
  }
}

window.onload = initializeTellAFriendLinks;
