/**
 * @author Marcin Batkowski <arseniew@gmail.com>
 */

/**
 * 2: wrong format
 * 3: incorrect hour value
 * 4: incorrect minute value
 * @param {time in HH:mm format} time
 * @return true or one of error codes
 */

function validateTime(time) {
	if (time.length==0) return 2;
	if (time.indexOf(':')<1) return 2;
	var timeArray = time.split(":");
	if (timeArray.length!=2) return 2;
	if (timeArray[0].length>2 || timeArray[0].length<1) return 3;
	if (timeArray[1].length>2 || timeArray[1].length<1) return 4;
	if (!isInteger(timeArray[0])) return 3;
	if (!isInteger(timeArray[1])) return 4;
	
	var hours = parseInt(timeArray[0],10);
	var minutes = parseInt(timeArray[1],10);
	
	if (hours>23) return 2;
	if (minutes>59) return 3;
	
	return true;	
}

function validateNip(nip) {

  var weights = new Array(6, 5, 7, 2, 3, 4, 5, 6, 7);
  var result = 0;
  nip = strReplace(nip, "-", "");
  nip = strReplace(nip, " ", "");

  if (nip.length!=10) return false;
  
  for (var i=0; i<9; i++) {
    result += weights[i] * parseInt(nip.charAt(i));
  }
    result %= 11;
    if (result == 10) result = 0;
    return (result == parseInt(nip.charAt(9)))?true:false;
  
}

/**
 * based on http://www.pbdr.com/vbtips/asp/JavaNumberValid.htm
 */
function isInteger(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }
   
function nl2br (str, is_xhtml) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Philip Peterson
    // +   improved by: Onno Marsman
    // +   improved by: Atli Þór
    // +   bugfixed by: Onno Marsman
    // +      input by: Brett Zamir (http://brettz9.blogspot.com)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: nl2br('Kevin\nvan\nZonneveld');
    // *     returns 1: 'Kevin<br />\nvan<br />\nZonneveld'
    // *     example 2: nl2br("\nOne\nTwo\n\nThree\n", false);
    // *     returns 2: '<br>\nOne<br>\nTwo<br>\n<br>\nThree<br>\n'
    // *     example 3: nl2br("\nOne\nTwo\n\nThree\n", true);
    // *     returns 3: '<br />\nOne<br />\nTwo<br />\n<br />\nThree<br />\n'
 
    var breakTag = '';
 
    breakTag = '<br />';
    if (typeof is_xhtml != 'undefined' && !is_xhtml) {
        breakTag = '<br>';
    }
 
    return (str + '').replace(/([^>]?)\n/g, '$1'+ breakTag +'\n');
}

function strReplace(haystack, needle, replacement) {
	var temp = haystack.split(needle);
	return temp.join(replacement);
}

// http://www.programowaniepc.pl/walidacja_danych_java_script.php

function validatePostalCodePl(src) {
  src = trim(src);
  var regex = /^[0-9]{2}\-[0-9]{3}$/;
  return regex.test(src);
}

function validatePhoneNumber(number) {
  var regex = /^\s*\+?[0-9\s-\(\)]{0,}$/
  return regex.test(number);
}

// http://www.programowaniepc.pl/walidacja_danych_java_script.php

function validateEmail(src) {
  var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  return regex.test(src);
}

// steste@http://snippets.dzone.com/posts/show/701 

function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// steste@http://snippets.dzone.com/posts/show/701
 
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// steste@http://snippets.dzone.com/posts/show/701
 
function trim( value ) {
	
	return LTrim(RTrim(value));
	
}



