// formcheck.js
// Author: Nokhrin Corp., www.nokhrin.com

String.prototype.titleCase	= titleCase;
String.prototype.trim 		= trim_spaces;
String.prototype.left		= extract_left;
String.prototype.right		= extract_right;

function titleCase()
{
	var temp_string = this.toLowerCase();
	var left_string;
	var right_string;
	var new_letter;
		
	var first_char = temp_string.left(1).toUpperCase();
	temp_string = first_char + temp_string.substring(1);
		
	var space_loc = temp_string.indexOf(" ");
	while (space_loc != -1)
	{
		left_string = temp_string.left(space_loc+1);
		new_letter = temp_string.charAt(space_loc+1).toUpperCase();
		right_string = temp_string.right(temp_string.length - space_loc - 2);
		temp_string = left_string + new_letter + right_string;
		space_loc = temp_string.indexOf(" ",space_loc+1);
	}
	return temp_string;
}

function trim_spaces(from_where)
{
	var temp_string = this;
	
	if (arguments.length == 0)
		from_where = "BOTH";
		
	if (from_where.toUpperCase() == "LEFT" || from_where.toUpperCase() == "BOTH")
		while (temp_string.left(1) == " " || temp_string.left(1) == "\r" || temp_string.left(1) == "\r\n" || temp_string.left(1) == "\n")
			temp_string = temp_string.substring(1);
	
	if (from_where.toUpperCase() == "RIGHT" || from_where.toUpperCase() == "BOTH")
		while (temp_string.right(1) == " " || temp_string.right(1) == "\r" || temp_string.right(1) == "\r\n" || temp_string.right(1) == "\n")
			temp_string = temp_string.substring(0, temp_string.length - 1 );
	
	return temp_string;
}
function extract_left(total_chars)
{
	return this.substring(0,total_chars);
}
function extract_right(total_chars)
{
	return this.substring(this.length - total_chars);
}

function isEmpty(field) // returns true if empty, false is not
{
	if (field == "" || field == null)
		return true;
	else
		return false;
}


// Validate the email address using regular expressions
function checkEmailAddress(email)
{
	var reg_exp = /^([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))$/i;
	if (!isEmpty(email)) {
		if (email.match(reg_exp)) {
			return true;
		} else {
			return false;
		}
	} 
	// otherwise, always return false
	return false;
}

function isNumber(field)
{
	var reg_exp = /[0-9]/;
	if( reg_exp.test(field) )
		return true;
	else
		return false;	
}

function checkPhoneNumber(phone)
{
	var num_numbers = 0;
	var num_len = phone.length;
	
	// make sure phone number is at least 10 characters!
	if (num_len < 10)
		return false;
	
	// check how many numbers (0-9) there are
	for (var i=0; i<num_len; i++)
		if ( isNumber(phone.charAt(i)) )
			num_numbers++;
	// make sure phone number contains 10 numbers!
	if (num_numbers < 10)
		return false;
		
	return true;
}

function formatPhoneNumber(number)
{
	var unf_number = ""; // unformatted number: 5555551234
	var new_number = "";
	var num_numbers = 0;
	var num_len = number.length;

	for (var i=0; i<num_len; i++)
	{
		if ( isNumber(number.charAt(i)) )
		{
			num_numbers++;
			unf_number += number.charAt(i);
		}
	}
	
	// assemble number in the following format : {x}-555-555-1234

	if (unf_number.length >= 4)
		new_number = unf_number.substring((unf_number.length-4),(unf_number.length));
	if (unf_number.length >= 7)
		new_number = unf_number.substring((unf_number.length-7),(unf_number.length-4)) + "-" + new_number;
	if (unf_number.length >= 10)
		new_number = unf_number.substring((unf_number.length-10),(unf_number.length-7)) + "-" + new_number;
	if (unf_number.length >= 11)
		new_number = unf_number.substring(0,(unf_number.length-10)) + "-" + new_number;
	
	return new_number;
}

function trimFieldValues(form)
{
	for(var i=0; i<form.elements.length; i++)
	{
		if (form.elements[i].type == "text")
		{
			form.elements[i].value = form.elements[i].value.trim();
		}
	}
}
function titleCaseFieldValues(form)
{
	for(var i=0; i<form.elements.length; i++)
	{
		if (form.elements[i].type == "text")
		{
			if (form.elements[i].name == "postal_code" || form.elements[i].name == "zip")
			{
				form.elements[i].value = form.elements[i].value.toUpperCase();
			}
			else if (form.elements[i].name != "email")
			{
				form.elements[i].value = form.elements[i].value.titleCase();
			}
		}
	}
}

function singleSelectValue(field)
{
	var value = field.options[field.selectedIndex].value;
	return value;
}

function radioValue(radio_group)
{
	for (var i=0; i<radio_group.length; i++)
	{
		if (radio_group[i].checked)
		{
			return radio_group[i].value;
		}
	}
	return null;
}

function removeNonDigits(old_value)
{
	var reg_exp = /\D/g;
	var new_value = old_value.replace(reg_exp,"");
	return new_value;
}

function printErrors(errors,error_msg_head,error_msg_foot)
{
	var alertmsg = "";
	if (errors.length > 0)
	{
		alertmsg += error_msg_head + "\n\n\n";
		alertmsg += "-------------------------------------\n";
		
		for (var i=0; i<errors.length; i++)
		{
			alertmsg += " - " + errors[i] + "\n";
		}
		
		alertmsg += "-------------------------------------\n\n\n";
		alertmsg += error_msg_foot;
		
		alert (alertmsg);
		return false;
	}
	else
	{
		// no errors, submit the form
		return true;
	}
}
