Array.prototype.unique =
  function() {
    var a = [];
    var l = this.length;
    for(var i=0; i<l; i++) {
      for(var j=i+1; j<l; j++) {
        // If this[i] is found later in the array
        if (this[i] === this[j])
          j = ++i;
      }
      a.push(this[i]);
    }
    return a;
  };
  
function str_replace(haystack, needle, replacement) {
	var temp = haystack.split(needle);
	return temp.join(replacement);
}

function isPrereqPassed(prereq,pole,hlaska)
{
  if (document.getElementById(prereq).value==-1 && document.getElementById(pole).value!=-1) {alert(hlaska); return false;}
  return true;
}

function isUnique(pole,pocet)
{
    var a_unique = new Array();
    a_unique=pole.unique();
    if (a_unique.length!=pocet) {alert("Select only differnt languages, please."); return false;}
    return true;
}


function isValidRok(field)
{
    val=document.getElementById(field).value;
    reg = new RegExp("^[0-9]*$");
        if ( !reg.test(val) || val.length!=4 ) {
            alert("Birthday year must have XXXX-form, where X is number.");
            return false;
        }
        else return true;
}

function isRovnake(pole1,pole2,hlaska)
{
    val1=document.getElementById(pole1).value;
    val2=document.getElementById(pole2).value;
    if (val1!=val2)
    {
        alert(hlaska);
        return false;
    }
    else return true;
}

function isValidNumberNepovinne(field,dlzka,nazovPola)
{
    
    val=document.getElementById(field).value;
    if (val.length>0)
    {
        reg = new RegExp("^[0-9]*$");
            if ( !reg.test(val) || val.length!=dlzka ) {
                alert(nazovPola+" must have "+dlzka+" digits.");
                return false;
            }
            else return true;
    }
    else
    {
        return true;
    }
}

function isValidNumber(field,dlzka,hlaska)
{
    
    val=document.getElementById(field).value;
    reg = new RegExp("^[0-9]*$");
    if ( !reg.test(val) || val.length>dlzka ) {
	alert(hlaska);
	return false;
    }
    else return true;

}

function isValidNumberVelkost(field,dlzka,cislo,hlaska)
{
    
    val=document.getElementById(field).value;
    reg = new RegExp("^[0-9]*$");
    if ( !reg.test(val) || val.length>dlzka || val>cislo) {
	alert(hlaska);
	return false;
    }
    else return true;
}

function isValidFloatVelkost(field,cislo,hlaska)
{
    
    val=document.getElementById(field).value;
    val=str_replace(val,",",".")
    if ( val>cislo) {
	alert(hlaska);
	return false;
    }
    else return true;
}

function isValidMinNumber(field,cislo,hlaska)
{
    
    val=document.getElementById(field).value;
    val=str_replace(val,",",".")
    if ( val<cislo) {
	alert(hlaska);
	return false;
    }
    else return true;
}


function isValidPlatenie()
{
    retval=true;
    if (document.getElementById("id_zona").value!="-1" && document.getElementById("id_zona").value!="z_0")
    {
        if (!isNotEmptyDll("id_platenie")) retval=false;
    }
    return retval;
}

function isValidRokNarodenia(field)
{
    var date=new Date();
    rok_field=document.getElementById(field).value;
    rok_dnes=date.getFullYear();
    
    if ((rok_field<1900) || (rok_field>rok_dnes-3)) {alert("Bad birthday year, please check it out."); return false;}
    else return true;
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function isNotEmpty(field)
{
    val=document.getElementById(field).value;
    val=trim(val);
    if (val!="")
    {
        return true;
    }
    else
    {
        alert("Prosím vyplňte všetky povinné polia.");
        return false;
    }
}

function isNotEmpty_hlaska(field,text)
{
    val=document.getElementById(field).value;
    val=trim(val);
    if (val!="")
    {
        return true;
    }
    else
    {
        alert(text);
        return false;
    }
}

function isNotEmptyDll(field)
{
    val=document.getElementById(field).value;
    val=trim(val);
    if (val!="-1")
    {
        return true;
    }
    else
    {
        alert("Please, fill all required fields marked by !-attribute.");
        return false;
    }
}

function isNotEmptyDll_hlaska(field,hlaska)
{
    val=document.getElementById(field).value;
    val=trim(val);
    if (val!="-1")
    {
        return true;
    }
    else
    {
        alert(hlaska);
        return false;
    }
}

function isChecked(checkbox)
{
    if (document.getElementById(checkbox).checked)
    {
        return true;
    }
    else
    {
        alert("Check all checkboxs, please.");
        return false;
    }
}

function isCheckedOne(form,hlaska)
{
  var pocitadlo=0;
  var i=0;
  for (i = 0; i < document.getElementById(form).elements.length; i++)
  {
    if (document.getElementById(form).elements[i].checked == true) pocitadlo++;
  }

    if (pocitadlo>0)
    {
        return true;
    }
    else
    {
        alert(hlaska);
        return false;
    }
}
function isCheckedOneCheckbox(form,hlaska)
{
  var pocitadlo=0;
  var i=0;
  
  chk=document.getElementsByName(form);  
  
  for (i = 0; i < chk.length; i++)
  {
    if (chk[i].checked == true ) pocitadlo++;
  }

    if (pocitadlo>0)
    {
        return true;
    }
    else
    {
        alert(hlaska);
        return false;
    }
}

function isLoginPassOk(login,pass)
{
    val_login=document.getElementById(login).value;
    val_pass=document.getElementById(pass).value;
    if (val_login=="admin")
    {
        alert("Wrong login format!");
        return false;
    }
    else
    {
        if (val_login==val_pass)
        {
            alert("Login and password can not be the same!");
            return false;
        }
        else
        {
            return true;
        }
    }
}

function isValidEmail(field)
{
    email=document.getElementById(field).value;
   /* reg = new RegExp("^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$");
    if (!reg.test(val)) {
    alert("Email - in not correct format!");
    return false;
            }
    else return true;*/

    if (! allValidChars(email)) {  // check to make sure all characters are valid
        alert("Email je v nesprávnom formáte!");
        return false;
    }
    if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
        alert("Email je v nesprávnom formáte!");
        return false;
    } else if (email.lastIndexOf(".") <= email.indexOf("@")) {  // last dot must be after the @
        alert("Email je v nesprávnom formáte!");
        return false;
    } else if (countInstances(email,"@") != 1) {  // only one @
        alert("Email je v nesprávnom formáte!");
        return false;
    } else if (email.indexOf("@") == email.length) {  // @ must not be the last character
        alert("Email je v nesprávnom formáte!");
        return false;
    } else if (email.indexOf("..") >=0) { // two periods in a row is not valid
        alert("Email je v nesprávnom formáte!");
	return false;
    } else if (email.indexOf(".") == email.length) {  // . must not be the last character
        alert("Email je v nesprávnom formáte!");
	return false;
    } else if (email.indexOf(".") == 0) {  // . must not be the first character
        alert("Email je v nesprávnom formáte!");
	return false;
    }
    return true;
}

function allValidChars(email) {
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  for (var i=0; i < email.length; i++) {
    var letter = email.charAt(i).toLowerCase();
    if (validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break;
  }
  return parsed;
}

function countInstances(string, character) {
    count=0;
    for (p=1;p<string.length;p++)
    {
       if (string.charAt(p)== character) count++;
    }
  return count;
}

function isValidLogin(field)
{
    val=document.getElementById(field).value;
    reg = new RegExp("^[\\w-_.]*$");
    if (!reg.test(val) || val.length<4) {
    alert("Wrong login format! (min. 4 chars, allowed chars: a-Z,0-9,_,.,-)");
    return false;
    }
    else return true;
}

function isValidPass(field)
{
    val=document.getElementById(field).value;
    reg = new RegExp("^[\\w-_]*$");
    if (!reg.test(val) || val.length<4) {
    alert("Wrong password format! (min. 4 chars, allowed chars: a-Z,0-9,_,-");
    return false;
    }
    else return true;
}

/*
function validDatumOdDo(field1,field2)
{
    var date_from=new Date();
    var date_to=new Date();
    rok=document.getElementById(field1).value.substring(6,10);
    mesiac=document.getElementById(field1).value.substring(3,5);
    den=document.getElementById(field1).value.substring(0,2);
    mesiac=mesiac-1;
    date_from.setFullYear(rok,mesiac,den);
    rok=document.getElementById(field2).value.substring(6,10);
    mesiac=document.getElementById(field2).value.substring(3,5);
    den=document.getElementById(field2).value.substring(0,2);
    mesiac=mesiac-1;
    date_to.setFullYear(rok,mesiac,den);
    if (date_from<=date_to)
    return true;
    else
    {
        alert("Dodržte prosím náväznosť dátumov. Môžu sa maximálne rovnať.");
        return false;
    }
}

function overenieRokuAKalendara(rok_field,field1,field2)
{
    rok1=document.getElementById(field1).value.substring(6,10);
    rok2=document.getElementById(field2).value.substring(6,10);
    rok=document.getElementById(rok_field).value;
    
    if (rok!=rok1 && rok!=rok2)
    {
        alert("Skontrolujte si prosím rok. Musí súhlasiť s dátumom.");
        return false;
    }
    else
    {
            return true;
    }
    
}

function validIsHttp(field)
{
    val=document.getElementById(field).value;
    if (val.indexOf('http://')!=-1)
    {
        alert('Webovú adresu zadajte prosím bez "http://".');
        return false;
    }
    else
    return true;

}*/
