/*
lTrim(val) - left trim
rTrim(val) - right trim
allTrim(val) - trim

checkEmpty(val) - check for empty value (returns true for empty)
checkEmptyGroup(arrID, msg) - calls checkEmpty for arrID array of object IDs, msg - empty alert
checkEmptyGroupORLogic(arrID, msg) - true if all is empty ONLY

checkInt(val) - check int val
checkPosInt(val) - check positive int
checkIntRange(val, minVal, maxVal) - check integer range from minVal to maxVal including both of htem

checkEmail(val) - check email
checkAlphaNum(val) - checks alphas, digits and underscore

checkDate(val, lang) - check date for language
checkTime(val, lang) - check time for language
*/

function lTrim(val)
{
  while (val.length > 0 && val.indexOf(' ') == 0)
  {
  	val = val.substring(1, val.length);
  }
  return val;
}

function rTrim(val)
{
  while (val.substring(val.length-1, val.length) == ' ')
  {
  	val = val.substring(0, val.length-1);
  }
  return val;
}

function allTrim(val)
{
  return rTrim(lTrim(val));
}


function checkEmpty(val)
{
  return (allTrim(val) == '');
}

function checkEmptyGroup(arrID, msg)
{
  var obj;
  var i;
  for (i = 0; i < arrID.length; i++)
  {               
  	obj = document.getElementById(arrID[i]);
  	if (obj && checkEmpty(obj.value))
  	{
  		alert(msg);
  		obj.focus();
  		return false;
  	}
  }
  return true;
}

function checkEmptyGroupORLogic(arrID, msg)
{
  var obj;
  var i;
  for (i = 0; i < arrID.length; i++)
  {
  	obj = document.getElementById(arrID[i]);
  	if (obj && !checkEmpty(obj.value))
  	{
  		return true;
  	}
  }
	alert(msg);
  return false;
}

function noOneChecked(arrID)
{
  var obj;
  var i;
  for (i = 0; i < arrID.length; i++)
  {
  	obj = document.getElementById(arrID[i]);
  	if (obj && obj.checked)
  	{
  		return false;
  	}
  }
  return true;
}

function checkInt(val)
{
  val = allTrim(val);
  while (val.length > 0 && val != '0' && val.indexOf('0') == 0)
  {
  	val = val.substring(1, val.length);
  }

  var intVal = parseInt(val, 10);
  return (val == intVal.toString(10));
}

function checkPosInt(val)
{
  val = allTrim(val);
  return (checkInt(val) && val.search("[^0-9]") == -1);
}

function checkIntRange(val, minVal, maxVal)
{
  if (!checkInt(val)) return false;
  var intVal = parseInt(allTrim(val), 10);
  return (intVal >= minVal && intVal <= maxVal);
}

function checkEmail(val)
{
  //var reEmail = new RegExp("^[A-Za-z0-9\.\-_]+@.+\.[A-Za-z]{2,4}$");
  //var reEmail = new RegExp("^.+@.+\.[a-z]{2,6}$", "i");
  var reEmail = new RegExp("^[\_a-z0-9-]+(\.[\_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z]{2,6}$", "i");
  return reEmail.test(allTrim(val));
}

function checkAlphaNum(val)
{
  var reEmail = new RegExp("^[A-Za-z0-9_]+$");
  return reEmail.test(allTrim(val));
}

function checkDate(val, lang)
{
  val = allTrim(val);
  var day, month, year, maxDay;

  if (val.length != 10) return false;

  switch (lang)
  {
  	case "en":
   	  day = val.substring(3, 5);
  	  month = val.substring(0, 2);
      year = val.substring(6, 10);
  	break;
    // ru, ua
  	default:
  	  day = val.substring(0, 2);
      month = val.substring(3, 5);
      year = val.substring(6, 10);
    break;
  }
  if (!checkPosInt(day) || !checkPosInt(month) || !checkPosInt(year)) return false;
  if (!checkIntRange(day, 1, 31) || !checkIntRange(month, 1, 12) || !checkIntRange(year, 1900, 9999)) return false;

  day = parseInt(day, 10);
  month = parseInt(month, 10);
  year = parseInt(year, 10);
  //31,28,31,30,31,30,31,31,30,31,30,31
  if (month == 4 || month == 6 || month == 9 || month == 11)
  	maxDay = 30;
  else
  	if (month == 2)
      if (year % 4 == 0)
      	maxDay = 29;
      else
        maxDay = 28;
  	else
      maxDay = 31;
  if (!checkIntRange(day.toString(10), 1, maxDay)) return false;

  return true;
}

function checkTime(val, lang)
{
  val = allTrim(val);
  var arrParts, hour, minute, second;
  var maxHour;

  if (val.length < 3) return false;

  switch (lang)
  {
  	case 'ru':
  	  maxHour = 23;
  	break;
  	default:
      maxHour = 12;
    break;
  }

  arrParts = val.split(':');
  if (arrParts.length < 2) return false;
  hour = arrParts[0];
  minute = arrParts[1];
  second = arrParts[2];

  if ((hour == null) || (minute == null)) return false;

  if (!checkIntRange(hour, 0, maxHour) || !checkIntRange(minute, 0, 59) ||
    (second != null && !checkIntRange(second, 0, 59))) return false;

  return true;
}

// ********************************************************************

// check group 2 - with labels support
function elementCheck(en)
{
  var isOK = true;
  en.each(function(e) {
    if ($(e))
    {
      if (checkEmpty($(e).value))
      {
        elementAddError([e]);
        isOK = false;
      }
      else
        elementRemoveError([e]);
    }
  });
  return isOK;
}

function elementAddError(en)
{
  var labelID;
  en.each(function(e) {
    labelID = 'label-' + e;
    if ($(labelID))
      $(labelID).addClassName('error');
  });
}

function elementRemoveError(en)
{
  var labelID;
  en.each(function(e) {
    labelID = 'label-' + e;
    if ($(labelID))
      $(labelID).removeClassName('error');
  });
}




// ********************************************************************
// extends FormCheck.js

var reMoney = /^(\+|-)?(\d+(\.\d{1,2})?|(\.\d{1,2}))$/
function isMoney(s)
{
  if (isEmpty(s))
    if (isMoney.arguments.length == 1) return defaultEmptyOK;
    else return (isMoney.arguments[1] == true);
  return reMoney.test(s)
}

var rePositiveMoney = /^(\d+(\.\d{1,2})?|(\.\d{1,2}))$/
function isPositiveMoney(s)
{
  if (isEmpty(s))
    if (isPositiveMoney.arguments.length == 1) return defaultEmptyOK;
    else return (isPositiveMoney.arguments[1] == true);
  return (rePositiveMoney.test(s) && (parseFloat(s) > 0));
}


var rePhone = /^\+?[ \(\)\-0-9\.]+$/
var rePhoneNonDigit = /(\+|\(|\)| |\-|\.)/g
function isPhone(s) {
  if (isEmpty(s))
    if (isPhone.arguments.length == 1) return defaultEmptyOK;
    else return (isPhone.arguments[1] == true);
  var digits = s.replace(rePhoneNonDigit, '');
  return (rePhone.test(s) && isPositiveInteger(digits) && digits.length >= 7);
}




function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		   
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		   
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		   
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		   
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		   
		    return false
		 }

 		 return true					
	}


	









