var REGEX_EMAIL = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
var REGEX_DIGITS = /^([0-9]+)$/;
var REGEX_FLOAT = /\d*\.\d+/;

function isValidEmail(value)
{
	return REGEX_EMAIL.test(value);
}

function isNumeric(value)
{
	return REGEX_DIGITS.test(value);
}

function isFloat(value)
{
	return REGEX_FLOAT.test(value);
}

function floatPrecision(value, nums)
{
	var parts_arr = new String(value).split('.');

	var resultStr = value;
	if (parts_arr.length == 2)
	{
		resultStr = parts_arr[0] + "." + parts_arr[1].substr(0, nums);
	}

	return parseFloat(resultStr);
}

function isOneWord(value)
{
	var arr = value.toString().split(" ");
	return (arr.length == 1);
}

function isValidZipCode(value)
{
	if (!isNumeric(value) || value.length != 5)
	{
		return false;
	}
	return true;
}

function isValidRefNum(value)
{
	if (!isNumeric(value) || value.length != 6)
	{
		return false;
	}
	return true;
}

function ask(question, url)
{
	if (confirm(question + "\t"))
	{
		document.location.assign(url);
	}
}

function addQueryParam(name, value, queryString)
{
	queryString += "&" + name + "=" + value;
	return queryString;
}

function openWindow(url, w, h)
{
	window.open(url, "", "menubar=1,resizable=1,scrollbars=1,width=" + w + ",height=" + h);
}

function getRadioGroupSelectedValue(elm_name)
{
	var elmentsArr = document.getElementsByTagName("input");
	for (var i = 0; i < elmentsArr.length; i++)
	{
		if ((elmentsArr[i].type == "radio") && (elmentsArr[i].name == elm_name) && elmentsArr[i].checked)
		{
			return elmentsArr[i].value;
		}
	}
	return null;
}

function ifNullReturnEmptyString(value)
{
	return ((value == null) ? "" : value);
}

function getCheckboxListSelectionsAsCSV(elms_name_prefix)
{
	var resultCSV = "";

	var elmArr = document.getElementsByTagName("input");
	for (var i =0; i < elmArr.length; i++)
	{
		if ((elmArr[i].type == "checkbox") && elmArr[i].checked)
		{
			if (elmArr[i].name.substr(0, (elms_name_prefix.length + 1)) == (elms_name_prefix + "_"))
			{
				resultCSV = (resultCSV == "") ? resultCSV : (resultCSV + ",");
				resultCSV += elmArr[i].value;
			}
		}
	}

	return resultCSV;
}

function getMultiSelectAsCsv(source_id)
{
	var csv = "";
	var sel_obj = document.getElementById(source_id);
	for (var i = 0; i < sel_obj.options.length; i++)
	{
		if (sel_obj.options[i].selected && (sel_obj.options[i].value != ""))
		{
			csv = (csv == "") ? csv : (csv + ",");
			csv += sel_obj.options[i].value;
		}
	}

	return csv;
}

function changeDivVisibility(div_id, is_visible)
{
	var display_type = (is_visible) ? "block" : "none";
	document.getElementById(div_id).style.display = display_type;
}

function downloadDoc(doc_id)
{
	var url = "download_doc.php?doc_id=" + doc_id;
	openWindow(url, 250, 250);
}

function downloadFloorPlans(prop_id)
{
	var url = "download_floor_plans.php?prop_id=" + prop_id;
	openWindow(url, 250, 250);
}

function is_in_array_numeric(arr, val)
{
	for (var i = 0; i < arr.length; i++)
	{
		if (parseInt(arr[i], 10) == parseInt(val, 10))
		{
			return true;
		}
	}
	return false;
}

function getFileExt(filePath)
{
	var filePathStr = new String(filePath);
	var filePathLength = filePathStr.length;
	var fileExt = filePathStr.substr((filePathLength - 4), 4);
	return fileExt.toLowerCase();
}


function multiSelectToCsv(source_id, target_id)
{
	var csv = "";
	var sel_obj = document.getElementById(source_id);
	for (var i = 0; i < sel_obj.options.length; i++)
	{
		if (sel_obj.options[i].selected && (sel_obj.options[i].value != ""))
		{
			csv = (csv == "") ? csv : (csv + ",");
			csv += sel_obj.options[i].value;
		}
	}

	document.getElementById(target_id).value = csv;
}

function recPerPageChanged(rec_per_page, query_string)
{
	var url = query_string + "&records=" + rec_per_page;
	document.location.assign(url);
}
