
/*
 * Functions for the Qoben web site.
 *
 * Copyright 2006-2008 by Ben Siemerink.
 * http://www.qoben.com/
 */

function submitForm(formid)
{
  /* Remove all paragraphs of class error */
  paragraphs=document.getElementsByTagName('p');
  for (i in paragraphs)
  {
    e=paragraphs[i];
    if (e && e.className && e.className=='error') e.parentNode.removeChild(e);
  }

  form=document.getElementById(formid);
  form.submit();
  form.innerHTML='<p class="submitted">Your request is being processed. <img width="42px" height="42px" src="/img/wait.gif"></p>';
  return true;
}


function paytobusinessChanged()
// Turns the business and personal fields on and off
{
  e=document.getElementById('paytobusiness');
  if (!e) return;

  businessfields=['businessname', 'businessnumber', 'businessfiscalid', 'businessvar'];
  personalfields=['passportnumber', 'fiscalid'];
  if (e.value=='True')
  {
    enablefields=businessfields;
    disablefields=personalfields;
  }
  else
  {
    enablefields=personalfields;
    disablefields=businessfields;
  }
  for (field in disablefields)
  {
    e=document.getElementById(disablefields[field]);
    if (e)
    {
      e.disabled=true;
      e.className='disabled';
    }
  }
  for (field in enablefields)
  {
    e=document.getElementById(enablefields[field]);
    if (e)
    {
      e.disabled=false;
      e.className='';
    }
  }

  return;
}


function focusFirstField()
{
  elist=document.getElementsByTagName('input');
  for (i in elist) if (elist[i].type=="text" || elist[i].type=="password")
  {
    elist[i].focus();
    break;
  }
}


function showHelp(id, text)
{
  e=document.getElementById(id+'_help');
  if (!e) return;
  e.innerHTML='<span class="formhelp"><br>&raquo;&nbsp;'+text+'</span>';
}


function showUpload(id, size)
{
  e=document.getElementById(id+'_file');
  if (!e) return;
  e.innerHTML='<input type="file" id="'+id+'" name="'+id+'" size="'+size+'">';
}


function editString(ref)
{
  e=document.getElementById(ref);
  if (e)
  {
    e.innerHTML='<form id="form_'+ref+'" method="post" accept-charset="UTF-8"><p><a class="button" href="javascript:submitForm(\'form_'+ref+'\');">Update</a></p><input type="hidden" name="ref" value="'+ref+'"><textarea name="text" cols="30" rows="15">'+e.childNodes[0].innerHTML+'</textarea></form>';
  }
}


function changedomain(level, id)
{
  e=document.getElementById('div_'+level)
  if (!e) return;

  html='<table>';
  for (i in subs[id])
  {
    html+='<tr><th><input type="radio" class="nb" id="'+i+'" name="'+level+'" value="'+i+'"';
    if (level=='subcategory')
    {
      html+=' onchange="changedomain(\'domain\', '+i+');"';
      html+=' onclick="changedomain(\'domain\', '+i+');"';
    }
    html+='></input></th><td>'+subs[id][i]+'</td></tr>';
  }
  e.innerHTML=html+'</table>';

  if (level=='subcategory') 
  {
    e=document.getElementById('div_domain')
    if (e) e.innerHTML='';
  }

  /* IE6 hack: without this two click are needed to select. */
  document.getElementById(i).focus();
  document.getElementById(id).focus();
}


function setToday(id)
{
  // Verify form elements
  d=document.getElementById(id);
  m=document.getElementById(id+'__month');
  y=document.getElementById(id+'__year');
  if (!d || !m || !y) return;

  // Set to today
  now=new Date();
  d.value=now.getDate();
  m.value=now.getMonth()+1;
  y.value=now.getFullYear();
}


function humansonly(id, text, link)
{
  element=document.getElementById(id);
  if (element==undefined) return;

  if (text!=null)
  {
    t='';
    for (i in text) t+=String.fromCharCode(152-text[i]);
    element.innerHTML=t;
  }

  if (link!=null && element.href)
  {
    l='';
    for (i in link) l+=String.fromCharCode(152-link[i]);
    element.href=l;
  }
}


function maxlen(textarea, maxlength)
{
  text_id=document.getElementById(textarea);
  if (text_id==undefined) return;

  curlength=document.getElementById(textarea).value.length;
  if (curlength==undefined) return;

  hint_id=document.getElementById(textarea+'_hint');
  if (hint_id==undefined) return;

  if (curlength<=maxlength)
  {
    hint_id.innerHTML='<br>&raquo;&nbsp;Maximum '+maxlength+' characters; '+(maxlength-curlength)+' left.';
    hint_id.className='hint_ok';
  }
  else
  {
    hint_id.innerHTML='<br>&raquo;&nbsp;Maximum '+maxlength+' characters; '+(curlength-maxlength)+' will be truncated.';
    hint_id.className='hint_truncate';
  }
}

