var requiredFields = new Array("vardas", "pavarde", "birth", 
    "kompAdr", "telefonas", "mobilus", "email",
    "papInfo", "veikla", "darbSk", "metu", "pavaldiniu", "suzinojo", "security_code"
);	// "pajamos"

var integerFields = new Array("darbSk", "metu", "pavaldiniu");

var fieldDescription = new Array();
fieldDescription['vardas'] = 'vardas';
fieldDescription['pavarde'] = 'pavarde';
fieldDescription['birth'] = 'gimimo data';
fieldDescription['kompAdr'] = 'darbovietės adresas';
fieldDescription['telefonas'] = 'tiesioginis telefonas';
fieldDescription['mobilus'] = 'mobilus';
fieldDescription['email'] = 'email';
fieldDescription['papInfo'] = 'kita informacija';
fieldDescription['veikla'] = 'įmonės veikla';
fieldDescription['darbSk'] = 'darbuotojų skaičius';
fieldDescription['metu'] = 'metų vadovaujamose pozicijose';
fieldDescription['pavaldiniu'] = 'pavaldinių skaičius';
fieldDescription['suzinojo'] = 'iš kur apie mus sužinojote';

// ar elementas priklauso masyvui
function inArray(el, arr) 
{
  for (var i = 0; i < arr.length; i++)
    if (arr[i] == el) return true;
  
  return false;
}

function validate(form) 
{
  var requiredOK = true;
  var mokymasOK = false;
  var karjeraOK = false;

  for (var i = 0; i < form.elements.length; i++) {
    var field = form.elements[i];

    // patikrinam requiredFields
    if (field.name == "pajamos")
    {
      form.elements[i].value.replace(/,/, ".");
      var tmp = form.elements[i].value.replace(/\./, "");
      tmp = tmp.replace(/,/, "");

      if (tmp.match(/\D/))
      {
        alert("Prie pajamų įrašo negali būti jokios papildomos informacijos tik skaičiai ir kablelis.");
        field.style.backgroundColor = "#FFDDDD";
        return false; 
      } else
        field.style.backgroundColor = "#FFFFFF";
    } else
      if (field.name == "birth")
      {
        var gimExp = /[0-9]{4}-[0-9]{2}-[0-9]{2}/;

        if (field.value && (!gimExp.exec(field.value) || (field.value == "0000-00-00")))
        {
          alert("Neteisingai įvesta gimimo data. Formatas turėtų būti toks: `yyyy-mm-dd`. Pvz.: `1950-01-01`");
          field.style.backgroundColor = "#FFDDDD";
          return false;
        } else
          field.style.backgroundColor = "#FFFFFF";
      } else
      if ((field.name == "metai[]") || (field.name == "nuo[]") || (field.name == "iki[]"))
        if (!checkYear(field.value))
        {
          field.style.backgroundColor = "#FFDDDD";
          return false;
        } else
          field.style.backgroundColor = "#FFFFFF";

    if (inArray(field.name, integerFields) && field.value.match(/\D/))
    {
      alert('Laukas `' + fieldDescription[field.name] + '` privalo būti skaičius.');
      return false;
    }

    if (inArray(field.name, requiredFields)) {
      if (field.value == "") {
        field.style.backgroundColor = "#FFDDDD";
        if (field.name == 'security_code')
        {
          alert('Prašome įvesti apsaugos kodą.');
          return false;
        }
        requiredOK = false;
      } else {
        field.style.backgroundColor = "#FFFFFF";
      }
    }

    // atskirai patikrinam mokymo istaigas ir karjera
    // (abiejuose sarasuose turi buti uzpildytas bent vienas laukas)
    else if (inArray(field.name, ["metai[]", "istaiga[]", "spec[]"]) && field.value != "") mokymasOK = true;
    else if (inArray(field.name, ["cmetai[]", "cmetai2[]", "pareig[]", "imone[]"]) && field.value != "") karjeraOK = true;
  }

  document.getElementById("mokymas").style.backgroundColor = mokymasOK ? "#E3E3E3" : "#FFBBBB";
  document.getElementById("karjera").style.backgroundColor = karjeraOK ? "#E3E3E3" : "#FFBBBB";

  if (!requiredOK) errorStr = "Būtina užpildyti visus laukus išskyrus paskutinę anketos dalį (\"Papildoma informacija\").";
  else if (!mokymasOK) errorStr = "\"Mokymo įstaigų\" skiltyje būtina palikti bent vieną įrašą.";
  else if (!karjeraOK) errorStr = "\"Karjeros vystymosi\" skiltyje būtina palikti bent vieną įrašą.";

  var viskasOK = (requiredOK && mokymasOK && karjeraOK);
  if (!viskasOK) alert(errorStr + "\n" + "Prašom užpildyti rausva spalva pažymėtus laukus.");

  /*alert('All ok.')
  return false;*/
  return viskasOK;
}

function checkYear(year)
{
  var reg = /[0-9]{4}/;

  if ((year) && (!reg.exec(year) || (year.length != 4)))
  {
    alert("Blogai įvesti metai. Formatas turėtų būti toks: `yyyy` (pvz.: `1960`)!");
    return false;
  } else
    return true;
}
