// general purpose validation function
function foc(field)
{
	//if (str>"") alert(str);
	field.select();
	field.focus();
}

function ck_num(field)
{
	val = parseInt(field.value);
	if (isNaN(val)) 
	{
		foc(field, "Invalid number format !");
		return false;
	}
	
	return true;
}

function ck_pos_num(field)
{
	val = parseInt(field.value);
	if (isNaN(val)) {
		foc(field,"Invalid number format !");
		return false;
	}

	
	if (val>0) return true; 
		else 
	{	
		foc(field,"Invalid number format !");
		return false;
	}
}

function ck_float_pos_num(field)
{
	if (!Number(field.value)) {
		foc(field);
		return false;
	}
	val = parseFloat(field.value);	
	if (val>0) return true; 
		else 
	{	
		foc(field);
		return false;
	}
}

function ck_text(field, zval, str)
{
	if (field.value == zval) 
	{
		if (str!="")
		{
			foc(field);
			//msg="Please fill the "+field+" field!";
			alert(str);
		}
		return false;
	} else 
		return true;
}
	
function ck_select(field, zval, zindex, str)
{
	if (field.options[field.selectedIndex].value==zval||field.selectedIndex==zindex)
	{
		if (str!="")
		{
			foc(field, str);
		}
		return false;
	}
	else
		return true;
}
	

function ck_radio(field, str)
{
	for (i=0;i<field.length;i++)
		if (field[i].checked) return i+1;
		
	if (str!="")
	{
		alert(str);
		foc(field[0]);		
	}
	return false;
}
	
function validate_email(field, alert_str)
{
	var str = field.value;
//	alert(str);
	if (window.RegExp) {
		var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
		var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
		var reg1 = new RegExp(reg1str);
		var reg2 = new RegExp(reg2str);
		if (!reg1.test(str) && reg2.test(str)) {
			return true;
		}
		alert(alert_str);
		field.select();
		return false;
	} else {
		if(str.indexOf("@") >= 0)
		{
			return true;
		}
		alert(alert_str);
		field.select();
		return false;
	}
}
// auto fill form with supplied values
function set_form(f, names, values)
{
	var i;

	for (i=0; i<names.length; i++)
	{
		if (e = f.elements[names[i]]) 
		{
	//		alert(i + " " + e.name +" "+ e.type+" "+ values[i]);
			switch(e.type) {
			case "hidden" :
			case "text" :
			case "textarea" : e.value = values[i]; break;
			case "select-one" : set_select(e, values[i]); break;
			case "checkbox" : set_checkbox(e, values[i]); break;	
			}

			if (e.length>0&&e[0].type=="radio") 
				set_radio(e, values[i]);
		}
	}
}

// functions used by set_form

function set_text(field, val)
{
	field.value = val;
	return true;
}

function set_select(field, val)
{
	var i;
	for (i=0;i<field.options.length;i++)
		if (field.options[i].value == val) 
		{
			field.selectedIndex = i;
			return true;
		}
	return false;
}

function set_checkbox(field, val)
{
	if (field.value != val) return false;
	field.checked = true;
	return true;
}

function set_radio(field, val)
{
	var i;
	var ok;
	ok = false;
	for (i=0; i<field.length;i++)
	{
//	alert(field[i].value);
		if (field[i].value == val)
		{
	//		alert("Found i = "+i);
			field[i].checked = true;
			ok = true;
		}
		else field[i].checked = false;
	}
	return ok;
}


function isEmpty(obj)
{
	obj_type = obj.type;	
	if (obj_type == "text" || obj_type == "password" || obj_type == "textarea" || obj_type == "file")	{
		var objValue;
		
		objValue = obj.value.replace(/\s+$/,"");
		
		if (objValue.length == 0) {
			obj.focus();
			return true;
		} else {
			return false;
		}
	} else if (obj_type == "select") {
		for (i=0; i < obj.length; i++) {
			if (obj.options[i].selected) {
				if(obj.options[i].value == "") {
					obj.focus();
					return true;
				} else {
					return false;
				}
			}
			
		}
		return true;	
	} else if (obj_type == "radio" || obj_type == "checkbox") {
		if (!obj[0] && obj) {
			if (obj.checked) {
				return false;
			} else {
				obj.focus();
				return true;	
			}
		} else {
			for (i=0; i < obj.length; i++) {
				if (obj[i].checked) {
					return false;
				}
			}
			obj[0].focus();
			return true;
		}
	} else {
		return false;
	}
}

function ck_date_format(year, month, day)	//checks the date
{

	if(year==-1 && month==-1 && day==-1) 
		return true;

	if(year==-1 || month==-1 || day==-1) 
		return false;

	start_date = new Date(year, month-1, day);
	date_year=start_date.getYear();

	if(date_year<2000) date_year=date_year + 1900;

	//alert("Start_date:"+start_date.toString());
	
	if((start_date.getMonth() != month-1) || (start_date.getDate() != day)  || (date_year != year))
		return false;
	else
		return true;
}