var registering = false;
var handleProblem = true;
var xOffset = 0;
var yOffset = 0;

function registrationGetMessagePayloadForTag(theResponse, theTag) {
  return theResponse.substring(theResponse.indexOf("<" + theTag + ">") + theTag.length + 2, theResponse.indexOf("</" + theTag + ">"));
}


function postAlertWindowRegistrationPage(theMessage, theTitle) {
  var obj = document.getElementById("alertWindowContentRegistrationPage");
  obj.innerHTML = theMessage;

  obj = document.getElementById("alertWindowTitleRegistrationPage");
  obj.innerHTML = theTitle;

  obj = document.getElementById("alertWindowRegistrationPage");
  obj.style.left = xOffset;
  obj.style.top = yOffset + 150;

  obj.style.visibility="visible";
}


function closeAlertWindowRegistrationPage() {
  var obj = document.getElementById("alertWindowRegistrationPage");
  obj.style.visibility="hidden";
}


function register(dest) {

  if (registering == false) {

    registering = true;

    var theHandle = document.getElementById("newHandle").value;
    var theEmail = document.getElementById("email").value;

    if ((theHandle == null) || (theHandle.length == 0)) {
      postAlertWindowRegistrationPage("You must enter something for a Member Name.", "Member Name is Required");
      registering = false;
      return;
    }

    checkDupes();
    if (handleProblem == true) {
      registering = false;
      return;
    }

    if ((theEmail == null) || (theEmail.length == 0)) {
      postAlertWindowRegistrationPage("You must enter something for an email address.", "Email Address is Required");
      registering = false;
      return;
    }

    emailCheck = validateEmail(theEmail);
    if (emailCheck == false) {
      postAlertWindowRegistrationPage("The email address you entered is not valid.  Please check it carefully, and try again.", "Email Address is Invalid");
      registering = false;
      return;
    }

    var theTerms = document.getElementById("terms");
    if (theTerms.checked == false) {
      postAlertWindowRegistrationPage("Please check the Terms & Conditions box.", "Terms & Conditions Agreement is Required");
      registering = false;
      return;
    }

    document.getElementById("hiddenHandle").value = theHandle;
    document.getElementById("hiddenEmail").value = theEmail;

    var obj = document.getElementById("heardOfUsVia");
    if (obj != null) document.getElementById("hiddenHeardOfUsVia").value = obj.value;

    obj = document.getElementById("other");
    if (obj != null) document.getElementById("hiddenOther").value = obj.value;
  
    var obj = document.getElementById("theContent");
    var loadingContentVar = document.getElementById("loadingContent");
    if (loadingContentVar != null) obj.innerHTML = loadingContentVar.innerHTML;
    else obj.innerHTML = "<table width='100%'><tr><td align=center valign=center width='100%'><b>Recording your new registration...</b><p>&nbsp;<p><img src='graphics/loading/loading522961-FFFFFF.gif'></td></tr></table>";
  
    var url = "R" + "egi" + "ster";
    url += "N" + "ew" + "U" + "ser";

    if (dest == 'default') submitData("POST", "newUser", url, registerResults, true);
    else submitData("POST", "newUser", url + "?dest=" + dest, registerResults, true);

  }

}

function registerResults(response) {
  var message = registrationGetMessagePayloadForTag(response, "message");

  if (message == "badParms") {
    registering = false;
    handleProblem = true;
    postAlertWindowRegistrationPage("You must enter a name and a valid email address.", "Name and Email Required");
    return;
  }

  if (message.indexOf("|") != -1) {
    registering = false;
    handleProblem = true;
    postAlertWindowRegistrationPage("Your member name cannot contain the | character.  Please remove it and try again.", "Member Name");
    return;
  }

  if (message.indexOf("already in use") != -1) {
    registering = false;
    handleProblem = true;
    postAlertWindowRegistrationPage("This member name is already in use.  Please choose a different one.", "Member Name");
    return;
  }

  window.location = message;
}


function checkDupes() {
  if (registering == false) {
    registering = true;

    var theHandle = document.getElementById("newHandle").value;
    if ((theHandle == null) || (theHandle == "") || (theHandle.length == 0)) {
      registering = false;
      handleProblem = true;
      return;
    }
    var url = "RegisterCheckHandle?handle=" + theHandle;
    submitData("GET", null, url, dupesResponse, true);
  }
}

function dupesResponse(response) {
  registering = false;

  if (response.indexOf("pipeFound") != -1) {
    postAlertWindowRegistrationPage("Your user member name cannot contain the | character.  Please remove it and try again.", "Member Name");
    handleProblem = true;
    return;
  }

  if (response.indexOf("dupeFound") != -1) {
    postAlertWindowRegistrationPage("This member name is already in use.  Please choose a different one.", "Member Name");
    handleProblem = true;
    return;
  }

  handleProblem = false;
}

function validateEmail(str) {
  var at="@";
  var dot = ".";
  var lat = str.indexOf(at);
  var lstr = str.length - 1;
  var ldot = str.indexOf(dot);

  if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) {
    return false;
  }

  if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) {
    return false;
  }

  if (str.indexOf(at, (lat+1)) != -1) {
    return false;
  }

  if (str.substring(lat-1, lat) == dot || str.substring(lat+1, lat+2) == dot) {
    return false;
  }

  if (str.indexOf(dot, (lat+2)) == -1) {
    return false;
  }
		
  if (str.indexOf(" ") != -1) {
    return false;
  }

   return true;				
}


function moveGraphicsRegistrationPage() {
  var getStarted = document.getElementById("gettingStarted");
  if (getStarted == null) {
    setTimeout('moveGraphicsRegistrationPage()', 300);
    return;
  }

  var rNewJsp = document.getElementById("registrationNew.jsp");
  if (rNewJsp == null) {
    xOffset = $('#gettingStarted').position().left + 50;
    yOffset = $('#gettingStarted').position().top - 120;
  } else {
    xOffset = $('#outerWrapper').position().left;
    yOffset = $('#outerWrapper').position().top;
    var browser = navigator.appName;
    if (browser.substring(0, 9) == "Microsoft") yOffset -= 12;
    else yOffset -= 460;

    getStarted.style.top = yOffset + 167;
    getStarted.style.left = xOffset + 40;
    getStarted.style.visibility = "visible";
  }
}

$(window).resize(function () {moveGraphicsRegistrationPage();});
$(window).load(function () {moveGraphicsRegistrationPage();});

