
/*
 * Functions for the HIP Europe web site.
 *
 * Copyright 2006, 2007 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', 'selfbilling'];
  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.style.display='block';
  e.innerHTML='&raquo;&nbsp;'+text;

}


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


function proj_deletefile(projectid, fileid, size)
{
  e=document.getElementById('row_'+fileid);
  if (e)
  {
    url='proj.cgi?id='+projectid;
    td=e.childNodes[e.childNodes.length-1];
    td.innerHTML='<form id="form_'+fileid+'" method="post" accept-charset="UTF-8" action="proj.cgi" ><input type="hidden" name="action" value="delete"><input type="hidden" name="form_id" value="form_misc_'+fileid+'"><input type="hidden" id="id" name="id" value="'+projectid+'"><input type="hidden" id="fileid" name="fileid" value="'+fileid+'"><input class="button" type="button" value="Confirm file deletion" onclick="submitForm(\'form_'+fileid+'\');">&nbsp;<input class="button" type="button" onclick="javascript:document.location=url;" value="Cancel"></form>';
  }
}


function proj_replacefile(projectid, fileid, size)
{
  e=document.getElementById('row_'+fileid);
  if (e)
  {
    numcols=e.childNodes.length;
    url='proj.cgi?id='+projectid;
    // Remove all but two cells from this row
    while (e.childNodes.length>2) { e.removeChild(e.childNodes[1]); }
    td=e.childNodes[1];
    td.colSpan=numcols; // Make it span the whole row
    td.innerHTML='<form id="form_'+fileid+'" method="post" enctype="multipart/form-data" accept-charset="UTF-8" action="proj.cgi"><input type="hidden" name="form_id" value="form_misc_'+fileid+'"><input type="hidden" name="action" value="replace"><input type="hidden" id="id" name="id" value="'+projectid+'"><input type="hidden" id="fileid" name="fileid" value="'+fileid+'"><input type="file" class="file" id="filename" name="filename" size="'+size+'">&nbsp;<input class="button" type="button" value="Replace" onclick="submitForm(\'form_'+fileid+'\');">&nbsp;<input class="button" type="button" onclick="javascript:document.location=url;" value="Cancel"></form>';
  }
}


function editString(ref)
{
  e=document.getElementById(ref);
  if (e)
  {
    e.innerHTML='<form id="form_misc_'+ref+'" method="post" accept-charset="UTF-8"><p><input class="button" type="button" onclick="submitForm(\'form_misc_'+ref+'\');" value="Update"> <input class="button" type="button" onclick="document.location=\'stringlist.cgi\';" value="Cancel"></p><input type="hidden" name="form_id" value="form_misc_'+ref+'"><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(150-text[i]);
    element.innerHTML=t;
  }

  if (link!=null && element.href)
  {
    l='';
    for (i in link) l+=String.fromCharCode(150-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='&raquo;&nbsp;Maximum '+maxlength+' characters; '+(maxlength-curlength)+' left.';
    hint_id.className='hint_ok';
  }
  else
  {
    hint_id.innerHTML='&raquo;&nbsp;Maximum '+maxlength+' characters; '+(curlength-maxlength)+' will be truncated.';
    hint_id.className='hint_truncate';
  }
}


/* Prefetch some pictures */
var prefetchlist=new Array();
function prefetch(imagelist)
{
  for (i=0; i<imagelist.length; i++)
  {
    prefetchlist[i]=new Image();
    prefetchlist[i].src=imagelist[i];
  }
}


/* Hides the division and shows the edit form */
function EnableForm(id) {
    d=document.getElementById('text_'+id);
    f=document.getElementById('form_'+id);
    if (!d || !f) return;

    // Turn off all other buttons
    buttonlist=document.getElementsByTagName('input');
    for (i in buttonlist) {
	e=buttonlist[i];
	if (e.className=='action') {
	    e.disabled=true;
	    e.className='noaction';
	}
    }

    winh=window.innerHeight;
    t=f.getElementsByTagName('textarea')[0];
    if (t) t.style.height=(winh/2)+'px';
    d.style.display='none';
    f.style.display='block';
    f.lastChild.focus();
    f.firstChild.focus();
}


/* Shows the division and hides the edit form */
function CancelForm(id) {
    d=document.getElementById('text_'+id);
    f=document.getElementById('form_'+id);
    if (!d || !f) return;

    // Turn on all buttons
    buttonlist=document.getElementsByTagName('input');
    for (i in buttonlist) {
	e=buttonlist[i];
	if (e.className=='noaction') {
	    e.disabled=false;
	    e.className='action';
	}
    }

    d.style.display='block';
    f.style.display='none';
}

/* Shows an element by setting its display option. If it exists, it hides the
 * element id_hide. */
function SetDisplay(id, display) {
	d=document.getElementById(id);
	if (!d) return;
	d.style.display=display;

	d=document.getElementById(id+'_hide');
	if (!d) return;
	d.style.display='none';
}


