function isChecked(inputName, minV, maxV, oItem)
{
	// checkbox
	if(minV==null && maxV==null)
		if(document.getElementById(inputName).checked)
		{
			return true;
			unsetHighlight(inputName);
		}else return false;
	// checkbox in checkbox group
	arrCheckboxes = document.getElementsByName(inputName);
	tmpCntChecked = 0;
	for(i=0; i<arrCheckboxes.length; i++)
		if(arrCheckboxes[i].checked)tmpCntChecked++;
	// check required minimum of checked checkboxes
	if(minV != null && minV>tmpCntChecked){return false;}
	// check required maximum of checked checkboxes
	if(maxV != null && maxV<tmpCntChecked)
	{
		if(maxV==1 && oItem.checked)
		{
			uncheckGroup(inputName);
			oItem.checked = true;
		}// end of if
		else oItem.checked = false;
		return false;
	}
	unsetHighlight(inputName)
	return true;
}// function isChecked()

function uncheckGroup(inputName)
{
	arrCheckboxes = document.getElementsByName(inputName);
	for(i=0; i<arrCheckboxes.length; i++)
		arrCheckboxes[i].checked=false;
}// end of function uncheckGroup(inputName)

function isEmail(inputName)
{
	oTextBox = document.getElementById(inputName);
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if(filter.test(oTextBox.value))
	{
		unsetHighlight(inputName);
		return true;
	}else return false;
}// function isEmail()

function isSelected(inputName, minV, maxV)
{
	cntSelected = 0;
	oSelect = document.getElementById(inputName);
	for(i=0;i<oSelect.options.length;i++)
	{
		if(oSelect.options[i].selected && oSelect.options[i].value!="")cntSelected++;
	}// end fo for
	if(minV!=null && minV>cntSelected)return false;
	if(maxV!=null && maxV<cntSelected)return false;
	unsetHighlight(inputName);
	return true;
}

function isFilled(inputName, minV, maxV)
{
	if(tmpNumber = document.getElementById(inputName).value.length)
	{
		if(minV!=null && minV>tmpNumber)return false;
		if(maxV!=null && maxV<tmpNumber)return false;
		unsetHighlight(inputName);
		return true;
	}else if(parseInt(document.getElementById(inputName).value)==0)
	{
		if(minV!=null && minV>tmpNumber)return false;
		unsetHighlight(inputName);
		return true;
	}
	return false;
}

function isNumber(inputName, minV, maxV)
{
	if(tmpNumber = parseInt(document.getElementById(inputName).value))
	{
		if(minV!=null && minV>tmpNumber)return false;
		if(maxV!=null && maxV<tmpNumber)return false;
		unsetHighlight(inputName);
		return true;
	}else if(parseInt(document.getElementById(inputName).value)==0)
	{
		if(minV!=null && minV>tmpNumber)return false;
		unsetHighlight(inputName);
		return true;
	}
	else document.getElementById(inputName).value = 0;
	return false;
}

function isFileAppendix(inputName, strAppendix)
{
	oFileName = document.getElementById(inputName).value;
	if(oFileName!="")
	{
		strFileAppendix = oFileName.substr(oFileName.indexOf(".")+1, oFileName.length-oFileName.indexOf("."));
		arrAppendix = strAppendix.split(",");
		for(i=0; i<arrAppendix.length; i++)if(strFileAppendix==arrAppendix[i])
		{
			unsetHighlight(inputName);
			return true;
		}
		document.getElementById(inputName).value = "";
		return false;
	}
}// function isFileAppendix()

function setHighlight(inputName){document.getElementById(inputName).className = "formBadValue";}
function unsetHighlight(inputName){document.getElementById(inputName).className = "";}

function setNoHighlight(oForm)
{	
	arrInputs = oForm.getElementsByTagName("input");
	for(i=0; i<arrInputs.length;i++)arrInputs[i].className = "";
	arrInputs = oForm.getElementsByTagName("select");
	for(i=0; i<arrInputs.length;i++)arrInputs[i].className = "";
}

function isDate(inputName, minV, maxV)
{
	oTextBox = document.getElementById(inputName);
	var filter  = new RegExp("^([0-3]?)([0-9])\.([0-1]?)([0-9])\.([0-9]{4})$");
	var today = new Date();
	if(arrInputDate = filter.exec(oTextBox.value))
	{	
		// check 0x numbers
			//day
			if(arrInputDate[1]>0)arrInputDate[2] = ""+arrInputDate[1]+arrInputDate[2];
			// month
			if(arrInputDate[3]>0)arrInputDate[4] = ""+arrInputDate[3]+arrInputDate[4];
			
		var testedDate=new Date(arrInputDate[5], arrInputDate[4]-1, arrInputDate[2]);
		switch(true)
		{
			case minV == null:
				break;
			case minV == "yesterday":
				var referenceDateMin = new Date(today.getFullYear(), today.getMonth(), today.getDate()-1);
				if(referenceDateMin>testedDate)return false;
				break;
			case minV == "today":
				var referenceDateMin = new Date(today.getFullYear(), today.getMonth(), today.getDate());
				if(referenceDateMin>testedDate)return false;
				break;
			case minV == "tomorrow":
				var referenceDateMin = new Date(today.getFullYear(), today.getMonth(), today.getDate()+1);
				if(referenceDateMin>testedDate)return false;
				break;
			case filter.test(minV):
				arrMinDate = filter.exec(minV);
				// check 0x numbers
					//day
					if(arrMinDate[1]>0)arrMinDate[2] = ""+arrMinDate[1]+arrMinDate[2];
					// month
					if(arrMinDate[3]>0)arrMinDate[4] = ""+arrMinDate[3]+arrMinDate[4];
				var referenceDateMin = new Date(arrMinDate[3],arrMinDate[2]-1,arrMinDate[1]);
				if(referenceDateMin>testedDate)return false;
				break;
		}// end of switch
		
		switch(true)
		{
			case maxV == null:
				break;
			case maxV == "yesterday":
				var referenceDateMax = new Date(today.getFullYear(), today.getMonth(), today.getDate()-1);
				if(referenceDateMax<testedDate)return false;
				break;
			case maxV == "today":
				var referenceDateMax = new Date(today.getFullYear(), today.getMonth(), today.getDate()-1);
				if(referenceDateMax<testedDate)return false;
				break;
			case maxV == "tomorrow":
				var referenceDateMax = new Date(today.getFullYear(), today.getMonth(), today.getDate()+1);
				if(referenceDateMax<testedDate)return false;
				break;
			case filter.test(maxV):
				arrMaxDate = filter.exec(maxV);
				// check 0x numbers
					//day
					if(arrMaxDate[1]>0)arrMaxDate[2] = ""+arrMaxDate[1]+arrMaxDate[2];
					// month
					if(arrMaxDate[3]>0)arrMaxDate[4] = ""+arrMaxDate[3]+arrMaxDate[4];
				var referenceDateMax = new Date(arrMaxDate[3],arrMaxDate[2]-1,arrMaxDate[1]);
				if(referenceDateMax<testedDate)return false;
				break;
		}// end of switch
		unsetHighlight(inputName);
		return true;
	}else return false;
}// function isDate()
