/*******************************************************************
 * input Utils for javascript
 * Copyright E.Novation B.V.
 *******************************************************************/
var topBorder = "69";
var bottomBorder = "39";

//USAGE: onkeypress="return checkOnlyNumbers(event)" onchange="checkWholeNumberString(this)"
function checkOnlyNumbers(e) {
   var key, keychar;
   if (window.event){
      key = window.event.keyCode;
   }else if (e) {
      key = e.which;
   }else{
      return true;
   }

   keychar = String.fromCharCode(key);
   if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ){
      return true;
   }else if (checkCharNumber(keychar)){
      return true;
   }else {
      return false;
   }
// onkeypress="return checkNumbersSeperator(event)"
}

function checkNumbersSeperator(e, seperator) {
  if(typeof(seperator) == "undefined") {
    seperator = "-";
  }
   var key, keychar;
   if (window.event){
      key = window.event.keyCode;
   }else if (e) {
      key = e.which;
   }else{
      return true;
   }

   keychar = String.fromCharCode(key);
   if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ){
      return true;
   }else if (checkCharNumber(keychar)){
      return true;
   }else if (checkCharSeperator(keychar,seperator)){
      return true;
   }else {
      return false;
   }
}

function checkDecimalNumbers(e) {
   var key, keychar;
   if (window.event){
      key = window.event.keyCode;
   }else if (e) {
      key = e.which;
   }else{
      return true;
   }

   keychar = String.fromCharCode(key);
   if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ){
      return true;
   }else if (checkCharNumber(keychar)){
      return true;
   }else if (checkCharSeperator(keychar,",")){
      return true;
   }else if (checkCharSeperator(keychar,".")){
      return true;
   }else {
      return false;
   }
}


function checkCharNumber(charVal, checkNegative) {
	var charString = "0123456789";
	if(typeof(checkNegative) == undefined || checkNegative == false) {
		charString = charString+"-";
	}
   if (((charString).indexOf(charVal) > -1)){
      return true;
   }else {
      return false;
   }
}

function checkCharSeperator(charVal, seperator) {
   if (seperator.indexOf(charVal) > -1){
      return true;
   }else {
      return false;
   }
}


function checkWholeNumberString(obj) {
   var val = obj.value;
   var newVal = "";
   for(var i=0;i<val.length;i++) {
	if(i==0) {
      if(checkCharNumber(val.charAt(i))) {
         newVal +=val.charAt(i);
      }
	}else{
      if(checkCharNumber(val.charAt(i),false)) {
         newVal +=val.charAt(i);
      }
    }
   }
   obj.value = newVal;
}

function checkDate(val) {

}

// USAGE: onchange="reformatDate(this)"
function reformatDate(obj, completeMethod) {
  var val = obj.value;
  var foundVal;
  var setValue =  val;
  var returnVal = true;
  var sixNumbers = /^(\d{1,2})-?(\d{1,2})-?(\d{2})$/;
  var eightNumbers = /^(\d{1,2})-(\d{1,2})-(\d{4})$/;
  var validDate;
  var separator = "-";
  
  //replace user defined seperator with the - date seperator to be able to check using regular expressions
  if(DATE_SEPERATOR) {
	var temp = String(val);
  	val = temp.replace(DATE_SEPERATOR_REGEXP,"-");
	separator = DATE_SEPERATOR;
  }
  
  
  if (COUNTRY == "en") {
	validDate = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
  } else {
  	validDate = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
  }
  
  var seperatorCheck = /^(\d{1,2})-(\d{1,2})-(\d{4})$/;

  if(completeMethod <0 || completeMethod > 2 ) {
   completeMethod = 0;
  }

  if (foundVal = val.match(sixNumbers)){
    var year = foundVal[3];
    var date = new Date();
    var nowDatetwoDigit = date.getFullYear().toString().substring(2,4);
    var setPast = false;

    if(completeMethod == 0) {
      if(foundVal[3] >= nowDatetwoDigit) {
         setPast = true;
      }else {
         setPast = false;
      }
    }else if(completeMethod == 1) {
      if(foundVal[3] > topBorder) {
         setPast = true;
      }else {
         setPast = false;
      }
    }else if(completeMethod == 2) {
      if(foundVal[3] > bottomBorder) {
         setPast = true;
      }else {
         setPast = false;
      }
   }

    if(setPast) {
      year = "19"+foundVal[3];
    }else {
      year = "20"+foundVal[3];
    }

	//FIX day and month with leading zero
	if(foundVal[1].length < 2)
		foundVal[1] = "0" + parseInt(foundVal[1],10);
	if(foundVal[2].length < 2)
		foundVal[2] = "0" + parseInt(foundVal[2],10);
		
    setValue = foundVal[1]+"-"+foundVal[2]+"-"+year;
  }else if (foundVal = val.match(eightNumbers)){
  //FIX day and month with leading zero
	if(foundVal[1].length < 2)
		foundVal[1] = "0" + parseInt(foundVal[1],10);
	if(foundVal[2].length < 2)
		foundVal[2] = "0" + parseInt(foundVal[2],10);
    setValue = foundVal[1]+"-"+foundVal[2]+"-"+foundVal[3];
  }
  if(((!setValue.match(seperatorCheck)) || (!setValue.match(validDate))) && setValue != "" ) {
    if(INVALID_DATE) {
      alert(INVALID_DATE + '(' + setValue + ')');
    }else{
      alert("De ingevoerde datum is niet valide. \nDe datum moet het formaat dd-mm-jjjj (14-12-2004) hebben.");
    }
    returnVal =false;
    setValue = "";
    obj.focus();
  }
  
  //replace the - date seperator with the user defined seperator 
  if(DATE_SEPERATOR) {
	var temp = String(setValue);
  	setValue = temp.replace(/\-/gi,DATE_SEPERATOR);
  }
  obj.value = setValue;

  return returnVal;
}

function checkEmail(email){
// te zwaar
//  var regEx = /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/;
  var regEx = "/^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/"

  var message;
  if(INVALID_EMAIL) {
    message = INVALID_EMAIL;
  }else{
    message = "Het email adres is niet valide.";
  }
  if(email != null && email!="" && email.match(regEx)){
    return true;
  }else {
    alert(message);
    return false;
  }
}



