function urlencode(str)
{
  return escape(encodeURI(str));
}

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}

function mailcheck(addr)
{
  if(addr.indexOf('@') == -1 || addr.indexOf('@') == 0 || addr.indexOf('@') == addr.length) return false;
  else if(addr.indexOf('.') == -1 || addr.indexOf('.') == 0 || addr.indexOf('.') == addr.length) return false;
 	else return true;					
}

function saveMessage(lang)
{
  var xmlhttp = createXmlhttp();
  
  var data = 'lang=' + lang + '&js=on&name=' + urlencode(getValue('name')) + '&mail=' + urlencode(getValue('mail')) + '&web=' + urlencode(getValue('web')) + '&text=' + urlencode(getValue('text')) + '&spam=' + urlencode(getValue('spam')) + '&check=' + urlencode(getValue('check'));
  
  if(!checkMessage(lang)) return true;
  switchMessage();
  
  if(sendXmlhttp(xmlhttp,data,lang)) return true;
  return false;
}

function checkMessage(lang)
{
  if(lang == 'cz')
  {
    if(trim(getValue('name')).length < 3) return myAlert('Zadané jméno je příliš krátké.','name');
    if(!mailcheck(trim(getValue('mail')))) return myAlert('E-mailová adresa není v korektním tvaru.','mail');
    if(trim(getValue('text')).length < 4) return myAlert('Zadaný text zprávy je příliš krátký.','text');
  }
  else
  {
    if(trim(getValue('name')).length < 3) return myAlert('Name filled in is too short.','name');
    if(!mailcheck(trim(getValue('mail')))) return myAlert('E-mail address is not valid.','mail');
    if(trim(getValue('text')).length < 4) return myAlert('Message filled in is too short.','text');
  }
  return true;
}

function myAlert(str,id)
{
  document.getElementById(id).focus();
  alert(str);
  return false;
}

function switchMessage(vyprazdnit)
{
  if(document.getElementById('formulary').style.display == 'none')
  {
    hide('response');
    if(vyprazdnit) resetMessage();
    come('formulary',1);
  }
  else
  {
    hide('formulary');
    come('response',1);
  }
  return true;
}

function resetMessage()
{
  document.getElementById('name').value = '';
  document.getElementById('mail').value = '@';
  document.getElementById('web').value = 'http://';
  document.getElementById('text').value = '';
  document.getElementById('spam').value = '';
  return true;
}

function createXmlhttp()
{
  var xmlhttp;
  try
  {
    xmlhttp = new XMLHttpRequest();
  }
  catch(e)
  {
    try
    {
      xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }
    catch(e){}
  }
  if(!xmlhttp) return false;
  else return xmlhttp;
}

function sendXmlhttp(xmlhttp,content,lang)
{
  //if(!xmlhttp && lang == 'cz') return !show('Nelze vytvořit HttpRequest.<br />Zkuste stránku aktualizovat.');
  //else if(!xmlhttp) return !show('Unable to create HttpRequest.<br />Try refreshing the page.');
  if(!xmlhttp) return !problemFound(lang,false);
  else try
  {
  	xmlhttp.open('POST','/message.php',true);
  	xmlhttp.onreadystatechange = function () { handleXmlhttp(xmlhttp,lang); };
  	xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
  	xmlhttp.send(content);
  }
  catch(e)
  {
    return false;
  }
  return true;
}

function handleXmlhttp(xmlhttp,lang)
{
  var result = '';
  if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
  {
    try
    {
      var arr = xmlhttp.responseText.split('~');
      if(arr.length != 4) return problemFound(lang,true);
      
      changeSpamCheck(arr[1],arr[2]);
      
      if(arr[0] == 'SUC' && lang == 'cz') result = arr[3] + '<br /><br /><input class="submit" type="button" onclick="switchMessage(true)" value="Poslat další zprávu" />';
      else if(arr[0] == 'SUC') result = arr[3] + '<br /><br /><input class="submit" type="button" onclick="switchMessage(true)" value="Send another message" />';
      else if(lang == 'cz') result = arr[3] + '<br /><br /><input class="submit" type="button" onclick="switchMessage(false)" value="Zkusit poslat znovu" />';
      else result = arr[3] + '<br /><br /><input class="submit" type="button" onclick="switchMessage(false)" value="Try sending again" />';
    }
    catch(e)
    {
      return problemFound(lang,false);
    }
  }
  else result = '<img src="/image/functional/load.gif" alt="Image loading" />';
  
  return show(result);
}

function show(text)
{
  document.getElementById('response').innerHTML = '<table cellspacing="8" cellpadding="0"><tr><th>' + text + '</th></tr></table>';
  return true;
}

function problemFound(lang,again)
{
  if(again && lang == 'cz') return show('Nastal problém s odesláním zprávy. Zkuste prosím znova.<br /><br /><input class="submit" type="button" onclick="switchMessage(false)" value="Zkusit poslat znovu" />');
  else if(again) return show('There was an error while sending. Try again.<br /><br /><input class="submit" type="button" onclick="switchMessage(false)" value="Try sending again" />');
  else if(lang == 'cz') return show('Nastal problém s odesláním zprávy. Zkuste stránku aktualizovat.');
  return show('There was an error while sending. Try refreshing the page.');
}

function changeSpamCheck(task,check)
{
  document.getElementById('task').innerHTML = task;
  document.getElementById('check').value = check;
  return true;
}

function getValue(id)
{
  return document.getElementById(id).value;
}


