function show_props(obj, obj_name) {
	var result = "";
	for (var i in obj)
	{
		result += obj_name + "." + i + " = " + obj[i] + "<br>\n";
	}
	document.write (result);
}

function is_valid_email(str)
{
	// are regular expressions supported?
	var supported = 0;
	if (window.RegExp)
	{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported)
	{
		// if no supported, do not test.
		return true;
	}
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	return (!r1.test(str) && r2.test(str));
}

function trim(inputString)
{
	// Removes leading and trailing spaces from the passed string. Also removes
	// consecutive spaces and replaces it with one space. If something besides
	// a string is passed in (null, custom object, etc.) then return the input.

	if (typeof inputString != "string") return inputString;
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	while (ch == " ")
	{
		// Check for spaces at the beginning of the string
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}
	ch = retValue.substring(retValue.length-1, retValue.length);
	while (ch == " ")
	{
		// Check for spaces at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}
	while (retValue.indexOf(" ") != -1)
	{
		// Note that there are two spaces in the string - look for multiple spaces within the string
		retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ")+1, retValue.length); // Again, there are two spaces in each of the strings
	}
	return retValue; // Return the trimmed string back to the user
}

function isNull(str) 
{ 
	if (str==null)
		return true;

	for (var intLoop = 0; intLoop < str.length; intLoop++)
		if (" " != str.charAt(intLoop))
			return false;            
	return true; 
}
function is_valid_date(d,m,a)
{	
	if (d == "" || m == "" || a == "") return false;
	if  (((isNull(d)) || (isNull(m)) || (isNull(a))) && ((!isNull(d)) && (!isNull(m)) && (!isNull(a)))) return false; 
	if ( (isNaN(d) && d != '') || (isNaN(m) && m != '') || (isNaN(a) && a != '') ) return false;
	if ( (m<1 || m >12) && (m != '') ) return false;
	if ( (d<1 || d >31) && (d != '') ) return false;
	if ( (a<1900 || a>2078) && (a !='') ) return false;
	if (d == 31)
	if( (m == 2) || (m == 4) || (m == 6) || (m == 9) || (m == 11)) return false;
	if (m ==2)
	if( (parseInt(a)%4 != 0 && d ==29) || (d == 30) )return false;
	return true;
}

function shDetails(object_name, display)
{
	changeDisplay('details_'+object_name, display);
	changeDisplay('minus_'+object_name);
	changeDisplay('plus_'+object_name);
}

function validate_form(form)
{
	if(form.f_submit_button != undefined) form.f_submit_button.disabled = true;
	ret = eval(form.name+'_validate_form(form)');
	if(form.f_submit_button != undefined) form.f_submit_button.disabled = false;
	return ret;
}

function validate_form_ontype(field)
{
	eval(field.form.name+'_validate_form_ontype(field)');
}

function mark_as_invalid(field)
{
	field.style.color='#ff4500';
	field.style.borderColor='#ff4500';
}
function mark_as_valid(field)
{
	field.style.color='#000000';
	field.style.borderColor='#c0c0c0';
}


function is_field_empty(field)
{
	return trim(field.value) == '';
}
function is_select_empty(field)
{
	return field.options[field.selectedIndex].value == '';
}
function is_radio_empty(field)
{
	for (var i=0;i<field.length;i++) {
		if (field[i].checked) {
				return false;
		}
	}
	return true;
}
function is_field_length_minor(field,size)
{
	if(isNaN(size)) return -1;
	return trim(field.value).length < size;
}
function is_field_length_minor_or_equal(field,size)
{
	if(isNaN(size)) return -1;
	return trim(field.value).length <= size;
}
function is_field_length_greater(field,size)
{
	if(isNaN(size)) return -1;
	return trim(field.value).length > size;
}
function is_field_length_greater_or_equal(field,size)
{
	if(isNaN(size)) return -1;
	return trim(field.value).length >= size;
}
function is_field_length_equal(field,size)
{
	if(isNaN(size)) return -1;
	return trim(field.value).length == size;
}

function is_field_invalid_email(field)
{
	return !is_valid_email(field.value);
}

function is_field_invalid_date(field_d,field_m,field_y)
{
	var d = field_d.value;
    var m = field_m.value;
    var y = field_y.value;

	return !is_valid_date(d,m,y)
}

	