function buildPrompt(caller,promptText,position) {     // ERROR PROMPT CREATION AND DISPLAY WHEN AN ERROR OCCURS
  var divFormError = document.createElement('div');
  var formErrorContent = document.createElement('div');
  var arrow = document.createElement('div');

  $(divFormError).addClass("formError");
  $(divFormError).addClass($(caller).attr("name"));
  $(formErrorContent).addClass("formErrorContent");
  $(arrow).addClass("formErrorArrow");

  $(position).append(divFormError);
  $(divFormError).append(arrow);
  $(divFormError).append(formErrorContent);
  $(arrow).html('<div class="line10"></div><div class="line9"></div><div class="line8"></div><div class="line7"></div><div class="line6"></div><div class="line5"></div><div class="line4"></div><div class="line3"></div><div class="line2"></div><div class="line1"></div>');
  $(formErrorContent).html(promptText);

  callerTopPosition = $(caller).offset().top;
  callerleftPosition = $(caller).offset().left;
  callerWidth =  $(caller).width();
  callerHeight =  $(caller).height();
  inputHeight = $(divFormError).height();

  callerleftPosition = callerleftPosition + callerWidth -30;
  callerTopPosition = callerTopPosition - inputHeight -10;
  
  $(divFormError).css({
    top:callerTopPosition,
    left:callerleftPosition,
    opacity:0
  });
  $(divFormError).fadeTo("fast",0.8);
}

function updatePromptText(caller,promptText) {  // UPDATE TEXT ERROR IF AN ERROR IS ALREADY DISPLAYED
  updateThisPrompt =  $(caller).attr("name")
  $("."+updateThisPrompt).find(".formErrorContent").html(promptText)

  callerTopPosition  = $(caller).offset().top;
  inputHeight = $("."+updateThisPrompt).height()

  callerTopPosition = callerTopPosition - inputHeight - 10
  $("."+updateThisPrompt).animate({
    top:callerTopPosition
  });
}

function openPrompt(caller, errorlist, position) {
  prompt = $(caller).attr("name")
  
  var i=0;
  errors = "";
  while (i<=errorlist.length-1) {
    if (errorlist[i][0] != '*') {
      errors += "* ";
    }
    errors += errorlist[i] + "<br />";

    i++;
  }  
  if ($("."+prompt).size() == 0) {
    buildPrompt(caller, errors, position);
  }
  else {
    updatePromptText(caller, errors);
  }
}

function closePrompt(caller) {  // CLOSE PROMPT WHEN ERROR CORRECTED
  closingPrompt = $(caller).attr("name")

  $("."+closingPrompt).fadeTo("fast",0,function(){
    $("."+closingPrompt).remove()
  });
}

function flashPrompt(caller, errorlist, time, position) {
  openPrompt(caller, errorlist, position);
  if (time > 0) {
    var cmd = "closePrompt('"+caller+"');";
    setTimeout(cmd, time * 1000);
  }
}
