
var Fields = new Array( "Firstname",
                        "Infix"    ,
                        "Surname"  ,
                        "Email",
                        "Email2",
                        "Mailing",
                        "City",
                        "Country",
                        "Account",
                        "PayTime" ,
                        "PayWay",
                        "Actie" ,
                        "AllOkay",
                        "SubscribeBtn" );
var Incasso;

function Subscribe()
{
  if(CheckBtn('SubscribeBtn'))
  {
    var i, id, el;
    var exp='Submit=NewRequest', error=false;

         if(!CheckNaam())       error = 'Please check your name';
    else if(!CheckCountry())    error = 'Please select your country';
    else if(!CheckEmail(1))     error = 'Please check your email address';
    else if(!ValidateEmail(1))  error = 'The email addresses are not the same';
    else if(!SelAccount())      error = 'Please check the account option';

    if(!error)
    {
      el = document.getElementById('AllOkay');
      if(el && !el.checked)
      {
        error = 'Please agree to the general terms';
        //el.focus(); // Crashes IE7!!!
      }
    }
    if(!error)
    {
      for(i in Fields)
      {
        id = Fields[i];
        el = document.getElementById(id);
        if(!el)
        {
          alert('Please update your browser '+id);
          return;
        }
        switch(el.type)
        {
          case 'radio':
          case 'checkbox':
            exp += URLval(id, el.checked ? '1':'0');
            break;
          default:
            exp += URLval(id, el.value);
            break;
        }
      }
      if(!error)
      {
        if(typeof(UserID) != 'undefined') exp += URLval('UserID', UserID);
        SubmitAll(exp);
      }
    }
    else
    {
      alert(error);
    }
  }
}

function CheckNaam()
{
  var vn = document.getElementById('Firstname');
  if(vn.value=='firstname') vn.value='';

  var ts = document.getElementById('Infix');
  if(ts.value=='infix') ts.value='';

  var an = document.getElementById('Surname');
  if(an.value=='surname') an.value='';

  vn.value = vn.value.trim();
  ts.value = ts.value.trim();
  an.value = an.value.trim();

  var reg = new RegExp("^[A-Za-z0-9 '()&`_.-]*$");

       if((vn.value == '')      || !reg.test(vn.value)) vn.focus();
  else if((an.value.length < 2) || !reg.test(an.value)) an.focus();
  else return true;

  return false;
}

function CheckCountry()
{
  var el = document.getElementById('Country');
  return el.value.trim().length > 2;
}

function CheckEmail(foc)
{
  var el=document.getElementById('Email');
  if(el)
  {
    var i = el.value.indexOf('@');
    var j = el.value.lastIndexOf('.');

    if(j > i)
    {
      var reg = new RegExp('^[a-z0-9_\.\-]+@[a-z0-9\-]+\.[a-z0-9\.\-]+$','i');
      if(!reg.test(el.value))
      {
        el.style.border = 'solid 2px #F00';
        el.focus();
      }
      else
      {
        el.style.border = 'solid 1px #7f9db9';
        return true;
      }
    }
    else
    {
      if(foc) el.focus();
    }
  }
  return false;
}

function ValidateEmail(foc)
{
  var el1=document.getElementById('Email');
  var el2=document.getElementById('Email2');

  if(el1 && el2)
  {
    var border = (el1.value == el2.value) ? 'solid 1px #7f9db9' : 'solid 2px #F00'
    el1.style.border = border;
    el2.style.border = border;

    if(foc) if(el1.value != el2.value)  el2.focus();
    return (el1.value == el2.value);
  }
  return false;
}

function CheckActie()
{
  var el = document.getElementById('Actie');
  if(el)
  {
    NewActie = el.value;
  }
  return(el && el.value != '@');
}


function CheckBankAcc(Type)
{
  var el = document.getElementById('PayWay');
  if(Incasso || (el && (el.value == 'i')))
  {
    var bnk1 = document.getElementById('Postbank');
    var bnk2 = document.getElementById('OtherBank');
    var num = document.getElementById('BankAccount');
    var name = document.getElementById('BankAccName');
    var okay = document.getElementById('OkayIncasso');

    if(bnk1.checked || bnk2.checked)
    {
      num.value  = num.value.trim();
      name.value = name.value.trim();
      if(bnk1.checked)
      {
        // Postbank
        if((num.value.length <= 5) || (num.value.length >= 8) ||
           (name.value.length < 3))
        {
          num.focus();
          return false;
        }
      }
      else
      {
        // Bank
        if(num.value.length != 9) return false;
      }
      return (Type == 0) ? true : okay.checked;
    }
    return false;
  }
  return true;
}

function AccountInfo()
{
  var Page=111;
  if(Accounts.CurAcc)
  {
    switch(Accounts.CurAcc.ID)
    {
      case 50012: Page= 111; break;
      case 50024: Page= 135; break;
      case 50050: Page= 118; break;
      case 60005:
      case 60010:
      case 60020:
      case 60050:
      case 60100:
      case 60250:
      case 60500: Page= 125; break;
    }
  }
  return Target('/index.php?h=1&p='+Page, 'that');
}

function SelAccount()
{
  return Accounts.SelAccount();
}

function SelPayTime()
{
  Accounts.SelAccount();
}

function SelPayWay()
{
  var i = 0;
  var el = document.getElementById('PayWay');
  if(el)
  {
    var bShow = el.value == 'i';
    do {
      el = document.getElementById('incasso'+i);
      if(el) el.style.display=bShow ? '' : 'none';
      i++;
    } while(el);
    CheckBank(bShow);
    if(window.AnimPanel) AnimPanel();
  }
  Accounts.SelAccount();
}

function SelActie()
{
  Accounts.SelAccount();
}

function CheckBank(bShow)
{
  var el=document.getElementById('Postbank');
  if(el)
  {
    var bank = el.checked;

    var el=document.getElementById('holdertr');
    el.style.display = bShow && bank ? "" : "none";
    if(window.AnimPanel) AnimPanel();
  }
}

//---------------------------------------------------------------------------
var PostAll = null;
var SubmitType = 'SubscribeBtn';
var tmSubmitAll = null;

function SubmitAll(data)
{
  if(PostAll)  PostAll.abort();

  PostAll = xmlHTTPRequestObject();
  if(data)
  {
    if(PostAll)
    {
      HideBtn(SubmitType);
      tmSubmitAll = setTimeout('SubmitTimeOut()', 120000);

      PostAll.open('POST', 'php/SubmitAll.php?a=b', true);
      PostAll.onreadystatechange = function () {if(PostAll.readyState==4) Submitted(PostAll.status, PostAll.responseText);};
      PostAll.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      PostAll.setRequestHeader('Content-length', data.length);
      PostAll.setRequestHeader('Connection', 'close');
      PostAll.send(data);
    } else {
      alert('HttpRequestObject is not available, please update your browser');
    }
  }
}

function SubmitTimeOut()
{
  if(PostAll)  PostAll.abort();
  tmSubmitAll = null;
}

function Submitted(status, response)
{
  var i,j;
  clearTimeout(tmSubmitAll);

  if(status == 200)
  {
    if(response.indexOf('<okay/>') != -1)
    {
      i = response.indexOf('<page>');
      if(i != -1)
      {
        j = response.indexOf('</page>');
        location.href = response.substring(i+6, j);
      }
      i = response.indexOf('<alert>');
      if(i != -1)
      {
        j = response.indexOf('</alert>');
        alert(response.substring(i+7, j));

        i = response.indexOf('<script>');
        if(i != -1)
        {
          j = response.indexOf('</script>');
          eval(response.substring(i+8, j));
        }
      }
    }
    else
    {
      i = response.indexOf('<error>');
      if(i != -1)
      {
        j = response.indexOf('</error>');
        alert(response.substring(i+7, j));
      }
      else
      {
        alert(response);
      }
    }
  }
  else if(status == 0)
  {
    alert('The server connection has been interrupted, please try again');
  }
  else
  {
    alert('An error occured during the sending, please try again\nWhen repeating, please contact our helpdesk and send us this code: '+status);
  }
  ShowBtn(SubmitType);
}
