// create object
function formValidator(){

  // set up object methods
  this.isEmpty = isEmpty; 
  this.isNumber = isNumber; 
  this.isAlphabetic = isAlphabetic; 
  this.isAlphaNumeric = isAlphaNumeric; 
  this.isWithinRange = isWithinRange; 
  this.isEmailAddress = isEmailAddress; 
  this.isChecked = isChecked; 

  this.isSiteAddress = isSiteAddress;
  this.isPlaceName = isPlaceName;
  this.isDesc = isDesc;
  this.isCoord = isCoord;
}

function isEmpty(elem){
   if (elem.value.match(/^\s+$/) || elem.value == ""){
     return true;
   }else{
     return false;
   }
}

function isNumber(elem){
  if (isNaN(elem.value)){
    return false;
  }else{
    return true;
  }
}

function isAlphabetic(elem){
  if (elem.value.match(/^[a-zA-Z]+$/)){
    return true;
  }else{
    return false;
  } 
}

function isAlphaNumeric(elem){
  if (elem.value.match(/^[\w]+$/)){
    return true;
  }else{
    return false;
  } 
}

function isWithinRange(elem, min, max){
  if (elem.value >= min && elem.value <= max){
    return true;
  }else{
    return false;
  } 
}

function isEmailAddress(elem){
  var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,6}$/;
//   var emailExp = /^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/;
  if (elem.value.match(emailExp)){
    return true;
  }else{
    return false;
  } 
}


function isSiteAddress(elem){
  var urlExp = /^(http:\/\/)?[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,6}$/;
  if (elem.value.match(urlExp)){
    return true;
  }else{
    return false;
  }
}


function isPlaceName(elem){
  if (elem.value.match(/^[^\t^\n^\r]{3,}$/)){
    return true;
  }else{
    return false;
  } 
}

function isDesc(elem){
  if (elem.value.match(/^[^\t]{3,}$/)){
    return true;
  }else{
    return false;
  }
}

function isCoord(elem){
// 49.181703,6.37207,14
  var coordExp = /^[-]?[0-9]{1,3}\.?[0-9]{0,8},[-]?[0-9]{1,3}\.?[0-9]{0,8},[0-9]{1,2}$/;
  if (elem.value.match(coordExp)){
    return true;
  }else{
    return false;
  }
}


// check to see if form value is checked
function isChecked(obj){
  if (obj.checked){
    return true;
  }else{
    return false;
  } 
}




// end object

// check form values
function checkForm(){

  var why = "";

        var npName = document.getElementById('npName'); //required
        var npEmail = document.getElementById('npEmail');
        var npWebsite = document.getElementById('npWebsite');
        var npCoord = document.getElementById('npCoord'); //required
        var npPlaceName = document.getElementById('npPlaceName'); //required
        var npDesc = document.getElementById('npDesc'); //required

  // instantiate object
  fv = new formValidator();


  if (fv.isEmpty(npName))
    why += "Proszę wpisać nick lub imię\n";

  //jesli podano maila - sprawdzam skladnie adresu
  if (!fv.isEmpty(npEmail) && !fv.isEmailAddress(npEmail))
    why += "Proszę wpisać poprawny adres e-mail\n";

  //jesli podano adres www - sprawdzam skladnie adresu www
  if (!fv.isEmpty(npWebsite) && !fv.isSiteAddress(npWebsite))
    why += "Proszę wpisać poprawny adres www\n";


  if (fv.isEmpty(npCoord) || !fv.isCoord(npCoord))
    why += "BŁĄD FORMULARZA - NIE ZOSTAŁY POBRANE WSPÓŁRZĘDNE - lub podbrane współrzędne są nieprawidłowe (proszę spróbować ponownie za jakiś czas)\n";

//   if (fv.isEmpty(npPlaceName) || !fv.isPlaceName(npPlaceName))
  if (fv.isEmpty(npPlaceName) || !fv.isPlaceName(npPlaceName))
    why += "Proszę wpisać nazwę miejsca\n";

  if (fv.isEmpty(npDesc) || !fv.isDesc(npDesc))
    why += "Proszę wpisać opis miejsca lub link do opisu w Wikipedii\n";

// npPlaceName

  if (why != "") {
    alert(why);
    return false;
  }else{
    return true;
  }
}
