
//sets a value in a form field, if it exists, that checks if we are actually in a browser
function setOriginValue()
{
  if(document.getElementById('originCheck'))
    document.getElementById('originCheck').value = originCheckValue;
  if(document.getElementById('originCheck_user'))
    document.getElementById('originCheck_user').value = originCheckValue;
}


function checkForm(form){
  var str = '';
  var warnedels = [];
  var send = true;
  var lang = form.getAttribute('lang');
  var langs = {
    nl:['Let op!\n','Je bent de volgende velden vergeten in te vullen:\n\n',' is een verplicht veld.','De opgegeven nieuwe wachtwoorden komen niet overeen\n'," is reeds in gebruik.\n"," is geen valide email adres.\n"],
    en:['Attention!\n','You have forgotten to fill in the following fields:\n\n',' is a required field.','The provided new passwords are not the same.\n'," is already in use.\n"," is not a valid email address.\n"]
  }
    
  str += langs[lang][0];
  str += langs[lang][1];
  oristr = str;
  for (var i=0; i<form.elements.length; i++) {
    var el = form.elements[i]; 
    var elName = el.getAttribute("name");
    if(el.getAttribute('check')){
      el.className = el.className.replace("warnedinput","");
      if(document.getElementById("formmessage_"+elName).innerHTML.indexOf("already in use") == -1)
        document.getElementById("formmessage_"+elName).innerHTML = "";   

      document.getElementById("formmessage_"+elName).className = "formmessage";      
      switch(el.nodeName.toLowerCase()){
        case 'input':
        case 'textarea':
          if(el.getAttribute("id") != "vatField")
          {
            if((el.value == '' || el.value == el.getAttribute("default") || el.value.replace(/ /g,'') == '') && el.getAttribute('name') != 'licenseagreementbox' && el.getAttribute('name') != 'disclaimerbox' && el.getAttribute('name') != 'txt_password_new')
            {
              var message = document.getElementById("formmessage_"+elName);
              message.innerHTML = el.getAttribute('check') +langs[lang][2];

              el.className += " warnedinput";
              warnedels[warnedels.length] = el;
            }
          }
          //specials!
          //check if the value isn't indicated as unavailable
          if((el.getAttribute('id') == 'username' || el.getAttribute('id') == 'emailaddress' )&& (document.getElementById('formmessage_'+elName).innerHTML != '' && document.getElementById('formmessage_'+elName).innerHTML != el.getAttribute('check') +langs[lang][2]))
          {
            var message = document.getElementById("formmessage_"+elName);
            message.innerHTML = el.getAttribute('check') +langs[lang][4];

            el.className += " warnedinput";
            warnedels[warnedels.length] = el;
          }
          
          if(el.getAttribute("name") == "email_address" || el.getAttribute("name") == "txt_email" || el.getAttribute("name") == "login_email")
          {
            var value = el.value;
            
            //new client of reseller
            if(document.getElementById('resellerClients') && document.getElementById('resellerClients').value == '0')
            {
              if(document.getElementById("formmessage_"+elName).innerHTML.indexOf("already in use") != -1)
              {
                warnedels[warnedels.length] = el;
                el.className += " warnedinput";
              }
            }
            
            if(!isValidEmailAddress(value))
            {
              var message = document.getElementById("formmessage_"+elName);
              message.innerHTML = el.getAttribute('check') + langs[lang][5];
              el.className += " warnedinput";
              warnedels[warnedels.length] = el;
            }
          }
          
          if(el.getAttribute("id") == "vatField" && el.value != "")
          {
            var validVat = checkVATNumber(document.getElementById("vatField").value);
            if(!validVat)
            {
              var message = document.getElementById("formmessage_"+elName);
              message.innerHTML = "This "+ el.getAttribute('check') +" is not valid";
              el.className += " warnedinput";
              warnedels[warnedels.length] = el;
            }
          }
              
          //check if the html doesn't actually contain html... we're postponing that feature
          if(el.getAttribute('name') == 'disclaimerbox' || el.getAttribute('name') == 'licenseagreementbox')
          {
            if(!el.checked)
            {
              var message = document.getElementById("formmessage_"+elName);
              message.innerHTML = el.getAttribute('check') +langs[lang][2];
              el.className += " warnedinput";
              warnedels[warnedels.length] = el;
            }
          }
          
          //cleanup the html
          if(el.getAttribute('name') == 'html')
          {
            var val = el.value;            
            document.getElementById('post_html').value = cleanUpMessage(val);
          } 
          
          //check if a password (possibly) matches a confirm of that passord
          if(el.getAttribute('name') == 'txt_password_new' && document.getElementById("password_confirm"))
          { 
            if(el.value != '' && el.value != document.getElementById('password_confirm').value)
            {
              var message = document.getElementById("formmessage_"+elName);
              message.innerHTML = langs[lang][3];

            el.className += " warnedinput";
              warnedels[warnedels.length] = el;
            }
          }  
        break;
        case 'select':
          if(el.value == el.getAttribute("default") && el.getAttribute("default"))  
          {
            var message = document.getElementById("formmessage_"+elName);
            message.innerHTML = el.getAttribute('check') +langs[lang][2];

            el.className += " warnedinput";
            warnedels[warnedels.length] = el;
          }          
        break;
      }
      if (document.getElementById("formmessage_"+elName).innerHTML == "")
        document.getElementById("formmessage_"+elName).className="hide";
    }    
  }    
  send = (warnedels.length == 0)?true:false;
  if(!send){
    if(warnedels.length != 0)
    {
      try
      {
        warnedels[0].focus();
      }
      catch(e){}
    }
    str += langs[lang][2];
    //alert(str)
  }    
  //if(send && document.getElementById('htmlsubmit')) 
  //  document.getElementById('htmlsubmit').disabled = true;
      
  return send;
}

function isValidEmailAddress(value)
{
  //[A-Za-z0-9._%-@]/,
  //alernatief...
  //  var re = new RegExp(/^\w(([\w\d_.\-+](\w|\d))|(\w|\d)*)\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)
  var re = new RegExp(/^([a-zA-Z0-9_\.\-+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)
  return re.test(value);
}            


function cleanUpMessage(val)
{
  val = val.replace(/&/g,"&amp;");
  val = val.replace(/\</g,"&lt;");
  val = val.replace(/\>/g,"&gt;");
  
  val = val.replace(/&amp;/g,"&amp;<wbr/>");
  
  val = val.replace(/https?:\/\/[^\s<'")(]+/g, function(url) { return "<a href='" + url.replace(/\n/g,"") + "'>" + url.replace(/\//g,"/<wbr/>") + "</a>";});
  //val = val.replace(/(^|\s)[^@\s]+@[^@\s]+/g, function(email) { return "<a href='mailto:" + email.replace(/\n/g,"") + "'>" + email.replace(/\//g,"/<wbr/>") + "</a>";});

  //val = val.replace(/>([^<]+)</,function(str) { return str.replace(/\n/g,"<br/>")});
  val = val.replace(/\n/g,"<br/>");
  //a little help;
  
  return val;
}

/*
  //split the string to look for certain things...
  var valstrings = val.split(" ");
  
  for (var j=0; j<valstrings.length; j++) 
  {
    var str = valstrings[j];
    if(str.substring(0,6) == "http:/")
    {
      str = str.replace(/,|;|/g,"")
      valstrings[j] = "<a href='"+str+"'>"+str+"</a>";
    }  
    if(str.indexOf(".") != -1 && str.indexOf("@") != -1 && str.substring(0,1) != "@")
    {
     valstrings[j] = "<a href='mailto:"+str+"'>"+str+"</a>";
    }  
  }
  var ret = valstrings.join(" ");
*/

function previewPost(form)
{
  document.getElementById("rewrite_button").style.display = 'inline';
  document.getElementById("preview_button").style.display = 'none';
  var post_text = document.getElementById('post_text');
  post_text.style.display = 'none';
  document.getElementById('preview_post').style.display = 'block';
  var val = post_text.value;
  val = cleanUpMessage(val);
  document.getElementById('preview_post').innerHTML = val;
}

function writePost(form)
{
  document.getElementById("rewrite_button").style.display = 'none';
  document.getElementById("preview_button").style.display = 'inline';
  document.getElementById('post_text').style.display = 'inline';
  document.getElementById('preview_post').style.display = 'none';
}

function checkContents(textarea)
{
  document.getElementById('preview_button').disabled = (textarea.value == "");
}


function checkKey(e)
{
  if(!e) e = event;
  
  var key = e.keyCode;
  if(key==0) key = (e.keyCode)? e.keyCode: ((e.charCode)? e.charCode: e.which);

  var val = false;
  
      /* 
       alert("Key: "+key+
        "\n!ctrlKey:"+ !e.ctrlKey +
        "\n65-90"+ (key > 64 && key < 91) +
        "\n97-122"+ (key > 96 && key < 123) +
        "\n!shiftKey"+ !e.shiftKey +
        "\n48-57"+ (key > 47 && key < 58) +
        "\n37-40"+ (key > 36 && key < 41) +
        "\n95/45"+ (key == 95 || key == 45) +
        "\n8"+ (key == 8) +
        "\n46"+  (key == 46) +
        "\n9"+  (key == 9) 
       )
     */

  if( (!e.ctrlKey && ((key > 64 && key < 91) || (key > 96 && key < 123))) || //just letters, 
      (!e.shiftKey && key > 47 && key < 58) || //numbers,  
      (key > 36 && key < 41) || //arrow keys to move about
       key == 95 || key == 45 || // underscores,
       key == 8 || // backspace to remove things
       key == 46 || // delete
       key == 9 // tab to jump to other fields
     )
  {
    val = true;
  }
  //window.status = key+" "+val;
  return val;
}

var elName = null;
function checkValue(el,hnd)
{ 
  if(!hnd) hnd=reportCheckValue;
  
  var name = el.value;
  name = name.replace(/ /g,'');
  var id = el.getAttribute('userid');
  
  elName = el.getAttribute("name");
  var searchName = elName;
  if(name == '')
  { 
    document.getElementById('formmessage_'+elName).innerHTML = '';
    return;
  }
  if(elName == "email_address" || elName == "txt_email" || elName == "login_email")
    if(!isValidEmailAddress(name)) return;
  //document.getElementById('formmessage').innerHTML = 'Checking name...';
  
  if(elName == "email_address") searchName = "txt_email";
  
  var href = "/user/checkvalue?"+searchName+"="+name+"&id="+id;
  loadRequest(href,hnd);  
}

function checkButton()
{
  if (xmlhttp.readyState==4) //loaded
  {
    if (xmlhttp.status==200) //ok
    {
      var response =xmlhttp.responseText;
      document.getElementById('button_'+elName).disabled = !(response=='');
    }
    else
      window.status = "Something went wrong with XMLHTTP:"+xmlhttp.responseText;
  }
}

function reportCheckValue()
{
  if (xmlhttp.readyState==4) //loaded
  {
    if (xmlhttp.status==200) //ok
    {
      var response =xmlhttp.responseText;
            if(!document.getElementById("formmessage_"+elName))   
            {
                alert(elName);
            }
      document.getElementById('formmessage_'+elName).innerHTML = response;
    }
    else
      window.status = "Something went wrong with XMLHTTP:"+xmlhttp.responseText;
  }
}


function submitForm(form,hnd)
{
  var url = form.getAttribute("action")+"?";
  for (var i=0; i<form.elements.length; i++) 
  {
    var field = form.elements[i];
    if(field.tagName.toLowerCase() != "button")
    {
      var name = field.getAttribute("name");
      var value = field.value;
      url += name+"="+value
      if(i != form.elements.length-1)
        url+= "&";
    }
  }
  //alert(url)
  loadRequest(url,hnd)
}

function controlPageMove()
{
  if (xmlhttp.readyState==4) //loaded
  {
    if (xmlhttp.status==200) //ok
    {
      var response =xmlhttp.responseText;
      
      document.getElementById('parentid').setAttribute("current",response);
      document.getElementById('parentbutton').disabled = true;
    }
    else
      window.status = "Something went worng with XMLHTTP:"+xmlhttp.responseText;
  }
  
}


var xmlhttp = null;

function loadRequest(url,hnd)
{
  if (window.XMLHttpRequest) // Mozilla, etc.
    xmlhttp=new XMLHttpRequest()
  else if (window.ActiveXObject) // IE
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
  
  if (xmlhttp!=null)
  {
    xmlhttp.open("GET",url,true)
    xmlhttp.onreadystatechange=hnd
    xmlhttp.send(null)
  }
  else
    window.status = "Your browser does not support XMLHTTP.";
}


function checkDefault(el)
{
  if(el.getAttribute("default") == el.value)
    el.value = '';
  else if(el.value == '')
    el.value = el.getAttribute("default");
}

var oldvalue = '';
function setNumber(number)
{
    var el = document.getElementById("telephonenumber");
    var value = "+"+number.replace("-"," ");
    value = (value=="+")?"":value;
    if(el.value == oldvalue)
        el.value = value;
    oldvalue = value;
}

