//<script language="JavaScript1.2">
<!--
// General validation functions

var digits = "0123456789";
var letters = "abcdefghijklmnopqrstuvwxyz";
var capitalletters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var space = " ";
var dash = "-";
var underline = "_";
var dot = ".";
var whitespace = " \t\n\r";
var brackets = "()";
var comma = ",";
var qw = "\"";
var colon = ":";
var slash = "/";
var plus = "+";
var atSymbol = "@";
var phoneNumberDelimiters = "()- ";
var validPhoneChars = digits + phoneNumberDelimiters;
var validEmail = digits+letters+capitalletters+underline+atSymbol+dot+dash;
var allowedNameChars = "-!@#$%^&()_+=.,;~`'\"";
var validName = digits+letters+capitalletters+space+allowedNameChars;

// Returns true if single character c (actually a string)
// is contained within string s.
function charInString (c, s)
{
	var i;
	for (i = 0; i < s.length; i++)
	{
		if (s.charAt(i) == c) return true;
	}
	return false;
}

//Left Trim
function LTrim (s)
{
	var i = 0;
	while ((i < s.length) && charInString(s.charAt(i), whitespace))
	{
		i++;
	}
	return s.substring (i, s.length);
}

//Right Trim
function RTrim (s)
{
	var i = s.length - 1;
	while ((i >= 0) && charInString(s.charAt(i), whitespace))
	{
		i--;
	}
	return s.substring(0, i+1);
}

//Trim left and right
function Trim (s)
{
	return RTrim (LTrim(s));
}


// Returns true if string s is empty
function isEmpty (s)
{
	return ((s == null) || (s.length == 0));
}

// Returns true if string s1 equal string s2
function isEqual (s1, s2)
{
	if (s1 == s2) return true;
	else return false;
}

// Returns true if character c is a digit
function isDigit (c)
{
	return ((c >= "0") && (c <= "9"));
}

// Returns true if character c is a letter
function isAlpha (c)
{
	return ( ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')) );
}

//Returns true if string s is a positive integer value
function isInteger (s)
{
	s = Trim(s);
	
	if (isEmpty(s)) return false;
	isDashed = s.charAt(0) == dash;
	isPlused = !isDashed;
	for (var i = 0; i < s.length; i++)
	{
		var c = s.charAt(i) // Check that current character is number
		if (!isDigit(c) && !((isPlused || isDashed) && i == 0)) return false;
	}
	// All characters are numbers.
	return true;
}

//Returns true if string s is a positive integer value
function isPositiveInteger (s)
{
	return isInteger(s) && s >= 0;
}

//Returns true if string s is a negative integer value
function isNegativeInteger (s)
{
	return isInteger(s) && s < 0;
	
}


// Returns true if string s is a positive float value
function isPositiveFloat (s)
{
	if (isEmpty(s)) return false;
	var bDotPassed = false;
	s = s.replace(',','.');
	for (var i=0; i<s.length; i++)
	{
		if (!isDigit(s.charAt(i)))
		{
			if (s.charAt(i) == '.' && !bDotPassed) bDotPassed = true;
			else return false;
		}
	}
	return true;
}

// Returns true if string s is an float value
function isFloat (s)
{
	if (isEmpty(s)) return false;
	var bDotPassed = false;
	for (var i=0; i<s.length; i++)
	{
		if (!(i==0 && s.charAt(i) == '-'))
		if (!isDigit(s.charAt(i)))
		{
			if (s.charAt(i) == '.' && !bDotPassed) bDotPassed = true;
			else return false;
		}
	}
	return true;
}

function isWhitespace (s)
{
	if (isEmpty(s)) return true;
	return CharsInBag(s,whitespace);
}

// Returns true if all chars of string s belong to string bag
function CharsInBag (s, bag)
{
	for (i = 0; i < s.length; i++)
	{
		if (bag.indexOf(s.charAt(i)) == -1) return false;
	}
	return true;
}

// Returns true if string s is a valid phone number
function isPhoneNumber (s)
{
	var validChars = digits+dash+space+brackets+plus;
	return CharsInBag(s, validChars);
	//return CharsInBag(s,validPhoneChars)
}

// Returns true if string s is a valid email address
function isEmail (s)
{
    reEmail = /^.+\@.+\..+$/;
	if (!reEmail.test(s)) return false;
	return true;
}

// Returns true if string s is a valid WWW URL
function isWWWurl (s)
{
	reWWW = /^http:\/\/.+\..+$/;
	if (!reWWW.test(s)) return false;
	return true;
}

// Returns true if file upload control contains valid image filename
function isImage (fc)
{
	if (emptyInput(fc))
		return false;
	f = fc.value;
	ext = f.slice(f.lastIndexOf(".")).toLowerCase();
	if (ext != ".gif" && ext != ".jpg" && ext != ".png") {
		return false;
	}
	return true;
}

// Returns true if there is selected option in the specified selectbox
// You can use also EmptyInput for this purpose
function isSelected(sel) {
	return (sel.selectedIndex != -1);
}

// Form specific validation functions

function emptyInput (input)
{
	switch (input.type)
	{
		case "hidden":
		case "password":
		case "text": return isWhitespace (input.value); break;
		case "textarea": return isWhitespace (input.value); break;
		case "file": return isWhitespace (input.value); break;
		case "select": return (input.selectedIndex == -1);	break;
		default:
			if ((input[0].type == "radio") || (input[0].type == "checkbox"))
			{
				for (var i=0; i<input.length; i++)
					if (input[i].checked) return false;
			}
			return true;
	}
}

function alertInput (input, message)
{
	if (typeof(auto_logout)=='undefined' || !auto_logout)
		alert (message);
	try{
	input.focus ();
	if ((input.type == "text") || (input.type == "file") || (input.type == "password"))
		input.select ();
	}catch(exception){}
	return false;
}

function checkRequiredFields (form, fields, messages)
{
	for (var i=0; i<fields.length; i++)
	{
		if (emptyInput (form.elements [fields [i]]))
		{
			alertInput (form.elements [fields [i]], messages [i]);
			return false;
		}
	}
	return true;
}

function checkRequiredFieldsLn (form, fields, messages, flengths)
{
	for (var i=0; i<fields.length; i++)
	{
		if (IsShorter (form.elements[fields [i]], flengths[i]))
		{
			alertInput (form.elements [fields [i]], messages [i]);
			return false;
		}
	}
	return true;
}

function IsShorter (element, len)
{
	if (element.value.length < len)
	{
		return true;
	}
	return false;
}

function isCreditCard (ccnumber)
{
	var doubledigit = ccnumber.length % 2 == 1 ? false : true;
	var checkdigit = 0;
	var tempdigit;

	for (var i = 0; i < ccnumber.length; i++)
	{
		tempdigit = eval(ccnumber.charAt(i))

		if (doubledigit)
		{
			tempdigit *= 2;
			checkdigit += (tempdigit % 10);

			if ((tempdigit / 10) >= 1.0)
			{
				checkdigit++;
			}

			doubledigit = false;
		}
		else
		{
			checkdigit += tempdigit;
			doubledigit = true;
		}
	}
	return (checkdigit % 10) == 0 ? true : false;
}

function isNumber(value)
{
	if (isEmpty(value))
		return false;

	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;

	check_char = start_format.indexOf(value.charAt(0));

	if (check_char == 1)
		decimal = true;
	else if (check_char < 1)
		return false;

	for (var i = 1; i < value.length; i++)
	{
		check_char = number_format.indexOf(value.charAt(i));
		if (check_char < 0)
			return false;
		else if (check_char == 1)
		{
			if (decimal)
				return false;
			else
				decimal = true;
		}
		else if (check_char == 0)
		{
			if (decimal || digits)	
				trailing_blank = true;
		}
		else if (trailing_blank)
			return false;
		else
			digits = true;
	}	

	return true
}

function checkNumberRange(value, min_value, max_value)
{
	if (!isEmpty(min_value))
	{
		if (value < min_value)
			return false;
	}

	if (!isEmpty(max_value))
	{
		if (value > max_value)
			return false;
	}
	
	return true;
}


function checkRange(value, min_value, max_value)
{
	if (isEmpty(value.length))
		return false;

	if (!isNumber(value))
		return false;
	else
		return (checkNumberRange((eval(value)), min_value, max_value));

	return true;
}


function isTime(value)
{
	if (isEmpty(value))
		return false;

	isplit = value.indexOf(':');

	if (isplit == -1 || isplit == value.length)
		return false;

	sHour = value.substring(0, isplit);
	iminute = value.indexOf(':', isplit + 1);

	if (iminute == -1 || iminute == value.length)
		sMin = value.substring((sHour.length + 1));
	else
		sMin = value.substring((sHour.length + 1), iminute);

	if (!isPositiveInteger(sHour))
		return false;
	else if (!checkRange(sHour, 0, 23))
		return false;

	if (!isPositiveInteger(sMin))
		return false;
	else
	if (!checkRange(sMin, 0, 59))
		return false;

	if (iminute != -1)
	{
		sSec = value.substring(iminute + 1);

		if (!isPositiveInteger(sSec))
			return false;
		else if (!checkRange(sSec, 0, 59))
			return false;	
	}

	return true;
}

function isZip(value)
{
	if (isEmpty(value))
		return false;

	if (value.length != 5 && value.length != 10)
		return false;

	if (value.charAt(0) == "-" || value.charAt(0) == "+")
		return false;

	if (!isPositiveInteger(value.substring(0,5)))
		return false;

	if (value.length == 5)
		return true;

	if (value.charAt(5) != "-" && value.charAt(5) != " ")
		return false;

	if (value.charAt(6) == "-" || value.charAt(6) == "+")
		return false;

	return (isPositiveInteger(value.substring(6,10)));
}
function isAllDot(s)
{
	for (i = 0; i < s.length; i++)
	{
		if (s.charAt(i) != dot && s.charAt(i) != space) return false;
	}
	return true;

}

function CheckInt(controlname, mess)
{
  var reInteger = /^\d+$/;
  if (!mess)
	  mess = 'Please input a valid value.';
  cntrl = document.mainform.elements[controlname];
  if (cntrl && !isEmpty(cntrl.value) && (!reInteger.test(cntrl.value) || (cntrl.value < 0)) )
  {
	if (!auto_logout)
	   alertInput(cntrl, mess);
    return false;
  }
  return true;
}	

function CheckFloat(controlname, mess)
{
  var reFloat = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
  if (!mess)
	  mess = 'Please input a valid value.';
  cntrl = document.mainform.elements[controlname];
  if (cntrl && !isEmpty(cntrl.value) && (!reFloat.test(cntrl.value) || (cntrl.value < 0)) )
  {
	if (!auto_logout)
	    alertInput(cntrl, mess);
    return false;
  }
  return true;
}	

//-->
//</script>


