var defaultEmptyOK = false;
var digits = "0123456789";
var others = "_-";
var chars = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
var whitespace = " \t\n\r";

function isLogin(s)
{
  var i = 0;
  var sLength = s.length;
  while (i < sLength)
    { 
	   var c = s.charAt(i);
	   if (chars.indexOf(c) == -1 && digits.indexOf(c) == -1 ) return false;
	   i++
    }
   return true;	
}


function isURL(s)
{
  var i = 0;
  var sLength = s.length;
  while (i < sLength)
    { 
	   var c = s.charAt(i);
	   if (chars.indexOf(c) == -1 && digits.indexOf(c) == -1 && others.indexOf(c) == -1) return false;
	   i++
    }
   return true;	
}

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isWhitespace (s)
{   var i;
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++)
    {   var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
}

function isDigit (c)
{
//return (((c >= "0") && (c <= "9")) || (c =="-" ))
return (((c >= "0") && (c <= "9")) )
}

function isDouble(NumberString)
{
    var count = 0;
	var bRes = (NumberString.length > 0);
	for (var i=0; i < NumberString.length; i++)
	{
	  
		ch = NumberString.charAt(i);
		//if ( ch == '<% =GetSeparator()%>' )
		//if ( ch == ',')
		if ( ch == '.')
		{
		  count++;
		  if ( count > 1 ) 
		  {
		     bRes=false;
			break; 
		  }
		}  
		else
		{
		  if (!isDigit(ch)) 
		  {
		    bRes=false;
			break;
		  }
		}
    }		
	return bRes;
}

function isInteger (s)
{   var i;
    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);
    for (i = 0; i < s.length; i++)
    {   var c = s.charAt(i);
        if (!isDigit(c)) return false;
    }
    return true;
}

function intCheckDate(sDate)
{
  if (isWhitespace(sDate)) lang['Validate_empty'];
  var iTerms = 0, iSeps = 0, sTerm, pos, new_pos, mm, dd, yy;
  for (pos = 0; (pos < sDate.length) && (iTerms < 4); iTerms++)
  {
    new_pos = sDate.indexOf('/', pos);
    if( new_pos == -1 )
        new_pos = sDate.length;
    else
        iSeps++;
    sTerm = sDate.substring(pos, new_pos);
    if (isInteger(sTerm))
    {
        if (iTerms == 0)
		     dd = parseInt(sTerm,10);
		else if (iTerms == 1)
              mm = parseInt(sTerm,10);
        else if (iTerms == 2)
            yy = parseInt(sTerm,10);
    }
    else
        break;
    pos = new_pos + 1;
  }
  return ((iSeps == 2) && (iTerms == 3) && (mm > 0) && (mm < 13) && (dd > 0) && (dd < 32) && (yy > 1))?
    "":
    " " + lang['Validate_date'];
};

function isEmail (s) {  
	if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
    if (isWhitespace(s)) return false;
    var i = 1;
    var sLength = s.length;
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}



function CheckWhitespace (Field, Name)
{
	if (isWhitespace(Field.value))
	{	alert(lang['Field'] + Name + lang['Validate_empty']);
		Field.focus();
		return false;
	}
	return true;
}

function CheckInteger (Field, Name)
{
	if (!Field.value) return true;
	if (!isInteger(Field.value)) {
		alert (lang['Field'] + Name + ' ' +lang['Validate_integer']);
		Field.focus();
		return false;
	}
    return true;
}

function CheckEmail (s)
{
	if (!s.value) return true;
	if (!isEmail(s.value)) {
		alert (lang['Validate_email']);
		s.focus();
		return false;
	}
    return true;
}


function CheckDate(DateField, Name)
{
	if (!DateField.value) return true;
	var s = intCheckDate(DateField.value)
	if (s != "")
	{
		alert(Name + s);
		DateField.focus();
		return false;
	}
	return true;
}

function CheckFloat(Field, Name )
{
	if (!Field.value) return true;
	if (!isDouble(Field.value)) {
		alert (lang['Field'] + Name + ' ' + lang['Validate_decimal']);
		Field.focus();
		return false;
	}
    return true;
}
function CheckPassword(p1, p2)
{
	if (!p1.value && p2.value) return true;
   if( p1.value!=p2.value )
   {
      alert(lang['Validate_password']);
	  p1.focus();
	  return false;
   }
   return true;
}

function CheckLogin (s)
{
	if (!s.value) return true;
	if (!isLogin(s.value)) {
		alert (lang['Validate_login']);
		s.focus();
		return false;
	}
    return true;
}

function CheckURL (s)
{
	if (!s.value) return true;
	if (!isURL(s.value)) {
		alert (lang['Validate_page_url']);
		s.focus();
		return false;
	}
    return true;
}
