var arrOriginalInputValues;
var mandatoryInput = new Array("GBNewName", "GBNewEmail");

function InitNewsletterForm()
{
  var formName = "GBNewForm";
  var oForm = document.getElementById(formName);
  var inpFields = oForm.getElementsByTagName("input");
  arrOriginalInputValues = new Array();

  InitContactFormInputFields(inpFields);
  CheckIfMailHasBeenSendSuccessfully();
}

function CheckIfMailHasBeenSendSuccessfully()
{
  if(document.URL.indexOf("?emailSendStatus=")>-1)
  {
    var msg = "<br>";
    if(document.URL.indexOf("?emailSendStatus=ok")>-1)
    {
      msg += "<span style=\"color:white;font-size:1.1em;text-align:center;\">Der Newsletter wurde abonniert. Ihnen wurde eine Email gesendet. Bitte klicken Sie den darin enthaltenen Aktivierungslink. Erst danach k&ouml;nnen wir Ihnen den Newsletter zusenden.</span>";
    }
    else
    {
      msg += "<span style=\"color:white;font-size:1.1em;text-align:center;\">Es ist ein Fehler beim Abonnieren des Newsletters aufgetreten! Bitte kontaktieren Sie uns direkt &uuml;ber die angegebene Kontaktadresse.</span>";
    }
    var oDiv = document.getElementById("GBDivNewEntry");
    //alert(msg);
    oDiv.innerHTML = msg;
  }
  else if(document.URL.indexOf("?emailCommitted=")>-1)
  {
    var msg = "<br>";
    if(document.URL.indexOf("?emailCommitted=ok")>-1)
    {
      msg += "<span style=\"color:white;font-size:1.1em;text-align:center;\">Der Newsletter wurde erfolgreich aktiviert. Sie erhalten nun den regelm&auml;&szlig;ig erscheinenden Newsletter von Mit lille Danmark.</span>";
    }
    else
    {
      msg += "<span style=\"color:white;font-size:1.1em;text-align:center;\">Es ist ein Fehler beim Aktivieren des Newsletters aufgetreten! Bitte kontaktieren Sie uns direkt &uuml;ber die angegebene Kontaktadresse.</span>";
    }
    var oDiv = document.getElementById("GBDivNewEntry");
    //alert(msg);
    oDiv.innerHTML = msg;
  }
}

function CheckIfUnsubscribeMailHasBeenSendSuccessfully()
{
if(document.URL.indexOf("?emailSendStatus=")>-1)
  {
    var msg = "<br>";
    if(document.URL.indexOf("?emailSendStatus=ok")>-1)
    {
      msg += "<span style=\"font-size:1.1em;text-align:center;padding:8px;\">Der automatischen Newsletterversand wurde erfolgreich abgemeldet.<br>Sie erhalten in K&uuml;rze eine Email-Best&auml;tigung.</span>";
    }
    else
    {
      msg += "<span style=\"font-size:1.1em;\">Es ist ein Fehler beim Abmelden des Newsletters aufgetreten!<br>Bitte kontaktieren Sie uns &uuml;ber die angegebene Kontaktadresse.</span>";
    }
    var oDiv = document.getElementById("UnsubscribeMessage");
    //alert(msg);
    oDiv.innerHTML = msg;
  }
}

function InitContactFormInputFields(inpFields)
{
  for(var i=0; i<inpFields.length; i++)
  {
    var inpField = inpFields[i];

    if(inpField.type.toLowerCase()==="text")
    {
      arrOriginalInputValues[inpField.id] = inpField.value;
      inpField.onfocus = function() {Input_OnFocus(this);};
      inpField.onblur = function() {Input_OnBlur(this);};
    }
    else if(inpField.type.toLowerCase()==="button" && inpField.id==="GBNewSubmit")
    {
      inpField.onclick = function() {Input_OnClickSubmit();};
    }
  }
}

function Input_OnFocus(obj)
{
  if(!InputHasNewValue(obj))
  {
    obj.value = "";
  }
}
function Input_OnBlur(obj)
{
  if(!InputHasNewValue(obj))
  {
    obj.value = arrOriginalInputValues[obj.id];
  }
}

function Input_OnClickSubmit()
{
  InitHelpInfo();

  //check if all mandatory fields do have new values
  var mandInputFieldsOk = true;
  for(var i=0; i<mandatoryInput.length; i++)
  {
    var objMandInput = document.getElementById(mandatoryInput[i]);
    var hasNewValue = InputHasNewValue(objMandInput);
    if(hasNewValue)
    {
      if("GBNewName"==mandatoryInput[i])
      {
        hasNewValue = objMandInput.value.length>3;
        if(!hasNewValue)
          SetHelpInfo(document.getElementById("GBSpnNewNameHelp"), "Name ist zu kurz!");
      }
      //now check email
      if(InputHasNewValue(document.getElementById("GBNewEmail")))
      {
        var regEmail = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
        if(!regEmail.test(document.getElementById("GBNewEmail").value))
        {
          SetHelpInfo(document.getElementById("GBSpnNewEmailHelp"), "E-Mail-Adresse ist falsch!");
          return false;
        }
      }
      //now check for malicious code
      if(objMandInput.value.indexOf("<")>-1)
      {
        alert("Sie haben unerwartete Zeichen im Formular benutzt.\n\nBitte berichtigen Sie Ihre Eingabe oder kontaktieren Sie den Mit lille Danmark direkt (webmaster@mit-lille-danmark.com)!");
        return false;
      }
    }
    objMandInput.style.backgroundColor = hasNewValue?"":"#FEE871";
    if(!hasNewValue) mandInputFieldsOk = false;
  }

  ////now check for malicious code - not optional input-fields
  if(document.getElementById("GBNewLocation").value.indexOf("<")>-1)
  {
    alert("Sie haben unerwartete Zeichen im Formular benutzt.\n\nBitte berichtigen Sie Ihre Eingabe oder kontaktieren Sie den Mit lille Danmark direkt (webmaster@mit-lille-danmark.com)!");
    return false;
  }

  if(!mandInputFieldsOk)
    return;

  var msg = BuildGBMessage();
  //alert(msg);

  var oEmail = document.getElementById("GBNewEmail");
  if(oEmail.value=="Email...")
    oEmail.value = "";
  var oForm = document.getElementById("GBNewForm");
  oForm.action = "/Newsletter/AddSubmitNewsletter.php";
  oForm.submit();
}

function InitHelpInfo()
{
  SetHelpInfo(document.getElementById("GBSpnNewNameHelp"), "")
  SetHelpInfo(document.getElementById("GBSpnNewLocationHelp"), "")
  SetHelpInfo(document.getElementById("GBSpnNewEmailHelp"), "")
}

function SetHelpInfo(obj, strHelpInfo)
{
  obj.innerHTML = strHelpInfo;
  obj.style.visibility = "visible";
  //alert(obj.id+" "+obj.innerHTML);
}

function InputHasNewValue(obj)
{
  return (obj && obj.id && obj.value && arrOriginalInputValues[obj.id] && obj.value.length>0 &&
    obj.value!=arrOriginalInputValues[obj.id]);
}

function BuildGBMessage()
{
  var msg = "";

  msg+=GetInputValue("GBNewName", "Name");
  msg+=GetInputValue("GBNewLocation", "Location");
  msg+=GetInputValue("GBNewEmail", "Email");

  return msg;
}

function GetInputValue(id, strKey)
{
  var tmp = document.getElementById(id);
  if(!IdIsMandatory(id) && !InputHasNewValue(tmp))
    return "";
  return strKey+": "+tmp.value+"\n";
}

function IdIsMandatory(id)
{
  for(var i=0; i<mandatoryInput.length; i++)
  {
    if(mandatoryInput[i]===id)
      return true;
  }
  return false;
}