// Check length of the string

function CheckLength(fname, obj, limit)
{
	if (obj.value.length < limit)
	{
		if (limit == 1)
		{
			alert('Field "' + fname + '" cannot be empty !');
		}
		else alert('"' + fname + '" must be longer than ' + (limit - 1) + ' characters !');
		obj.focus();
		obj.select();
		return false;
	}
	return true;
}

// Is the value numeric

function CheckNumeric(fname, obj)
{
	if (isNaN(obj.value))
	{
		alert('"' + fname + '" must be numeric !');
		obj.focus();
		obj.select();
		return false;
	}
	return true;
}

// Check item selection in listbox & the value > 0

function CheckSelect(fname, obj)
{
	if (obj.selectedIndex < 1)
	{
		alert('Select item from "' + fname + '" listbox, please !');
		obj.focus();
		obj.select();
		return false;
	}
	return true;
}


// Check year

function CheckYear(obj)
{
	s = obj.value;
	ls = s.length;
	flag = true;
	y = "";

	if (ls < 1 || ls > 4) flag = false;

	i = 0;

	while (i < ls && s.charAt(i) >= '0' && s.charAt(i) <= '9') i++;

	if (i < ls) flag = false;

//	if (y.length <= 2) y = 2000 + parseInt(y);

//	if (y < 1900 || y > 9999) flag = false;

	if (!flag)
	{
		alert('Entered year is incorrect !');
		obj.focus();
		obj.select();
	}
	return flag;
}

// Increment or decrement the value of year

function YearOper(obj, op)
{
	if (CheckYear(obj))
	{
		if (op == "+") obj.value = parseInt(obj.value) + 1; 
		if (op == "-") obj.value = parseInt(obj.value) - 1;
	}	
}

// Check date in format 
// 1) dd.mm.yy(yy) if type = 0
// 2) mm.dd.yy(yy) if type = 1

function CheckDate(obj, type, check_empty)
{
	s = obj.value;
	ls = s.length;
	flag = true;
	d = m = y = "";

	if (check_empty && (s == "" || s == " ")) return flag;
	
	if (ls < 1 || ls > 10) flag = false;

	i = sp = 0;

	while (i < ls && ((s.charAt(i) >= '0' && s.charAt(i) <= '9') || 
		s.charAt(i) == "/" || s.charAt(i) == "." || s.charAt(i) == "-"))
	{
		if (s.charAt(i) == "/" || s.charAt(i) == "." || s.charAt(i) == "-")
		{
		  if (d.length == 0) { d = s.substring(sp, i); sp = i + 1; }
		  else if (m.length == 0) { m = s.substring(sp, i); sp = i + 1; }
		  else { flag = false; break; }

		}
		i++;
	}

    if (type == 1) { buf = d; d = m; m = buf; }

	y = s.substring(sp, ls);
	if (y.length <= 2) y = 2000 + parseInt(y);


	if (i == ls && d >= 1 && d <= 31 && m >= 1 && m <= 12 && y >= 1900 && y <= 9999)
	{ 
		if (m == 2) md = ((0 == y % 4) && (0 != (y % 100))) || (0 == y % 400) ? 29 : 28;
		else md = (m == 4 || m == 6 || m == 9 || m == 11) ? 30 : 31; 
		if (d > md) flag = false;
	}
	else flag = false;

	if (!flag)
	{
		alert('Entered date is incorrect !');
		obj.focus();
		obj.select();
	}
	return flag;
}


//	Transform date 
//	ds - string with source date
//	sep - separator of one char (for ex. ".")
// 1) dd.mm.yy(yy) if type = 0
// 2) mm.dd.yy(yy) if type = 1

function transDate(ds, type, sep)
{
	if (String(ds) != "null")
	{
		var ds = new String(ds);
		ps = 0; pe = 0;
		while (ds.charAt(pe) != "/" && ds.charAt(pe) != "." && ds.charAt(pe) != "-") pe++;
		p1 = ds.substring(ps, pe);
		pe++; ps = pe; 
		while (ds.charAt(pe) != "/" && ds.charAt(pe) != "." && ds.charAt(pe) != "-") pe++;
		p2 = ds.substring(ps, pe);
		pe++;
		p3 = ds.substring(pe, ds.length);

		if (type) return p1 + sep + p2 + sep + p3;
		else return p2 + sep + p1 + sep + p3;
	}
	else return "";
}

// Compare two dates
// 1) dd.mm.yy(yy) if type = 0
// 2) mm.dd.yy(yy) if type = 1

function cmpDate(date1, date2, isEqual, dtype)
{
	if ((date1 == '') || (date2 == '')) return false;

	date1 = transDate(date1, dtype, "/");
	date2 = transDate(date2, dtype, "/");	

	var d1 = new Date(date1);
	var d2 = new Date(date2);
	if (isEqual) 
	{
		if (d2 > d1) return false; else return true;
	}
	else
	{
		if (d2>=d1) return false; else return true;
	}
}
