
function changeColor(e)
{
	var obj_desc;
	var obj;

	if(e)
	{
	// Netscape
		obj_desc = getElement(e.target.id + "_t");
		obj = e.target;
	}
	else if(event.srcElement)
	{
	// IE, Safari, most others
		obj_desc = getElement(event.srcElement.id + "_t");
		obj = event.srcElement;
	}
		
	switch(obj.type)
	{
	case "text":
	if(obj_desc)
	  {
		if(obj.value != "")
			obj_desc.className = "black";
		else
			obj_desc.className = "red";
	  }
	 break;
	case "select-one":
	  if(obj_desc)
	  {
		if(obj.selectedIndex != 0)
			obj_desc.className = "black";
		else
			obj_desc.className = "red";
	  }
	 break;
	case "textarea":
	if(obj_desc)
	  {
		if(obj.value != "")
			obj_desc.className = "black";
		else
			obj_desc.className = "red";
	  }
	 break;

	}
}

function validate()
{
var doSubmit = false;
var requiredFields = new Array(5);

requiredFields = getElement('required').value.split(",");
resetElements();

var obj = null;
var obj_desc = null;
var s_missing = "";

for(i=0; i < requiredFields.length; i++)
{
  obj = getElement(requiredFields[i]);
  obj_desc = getElement(requiredFields[i] + "_t");
  
  switch(obj.type)
  {
  case "text":
		if(obj.value == "")
		{
		  s_missing += "   " + obj.tabIndex + ". " + requiredFields[i].replace(/_/g," ") + "\n";
          obj.onkeyup = changeColor;
		  if(obj_desc)
		    obj_desc.className = "red";
		} else {
		  if(obj_desc)
		    obj_desc.className = "black";
		}
   break;
  case "select-one":
		if(obj.selectedIndex == 0)
		{
		  s_missing += "   " + obj.tabIndex + ". " + requiredFields[i].replace("_"," ") + "\n";
          obj.onchange = changeColor;
 		  if(obj_desc)
		    obj_desc.className = "red";
		} else {
		  if(obj_desc)
		    obj_desc.className = "black";
		}
   break;
  case "textarea":
		if(obj.value == "")
		{
		  s_missing += "   " + obj.tabIndex + ". " + requiredFields[i].replace(/_/g," ") + "\n";
          obj.onkeyup = changeColor;
		  if(obj_desc)
		    obj_desc.className = "red";
		} else {
		  if(obj_desc)
		    obj_desc.className = "black";
		}
   break;

  }
}

s_missing = s_missing.substring(0, s_missing.length - 1);
if(s_missing.length != 0)
{
  alert("The following fields must be completed before submitting.\n" + s_missing);
  s_missing = "";
  doSubmit = false;
}
else
{
  doSubmit = true;
}

return doSubmit;
}

function getElement(id)
{
  if(document.getElementById)
  {
	return document.getElementById(id);
  }
  else if(document.all)
  {
	return document.all[id];
  }
  else if(document.layers)
  {
    return document.layers[id];
  }
}

function resetElements()
{
var obj = null;
var obj_desc = null;
for(i=0; i < document.forms[0].elements.length; i++)
{
	obj_desc = getElement(document.forms[0].elements[i].id + "_t")
	if(obj_desc)
	{
		obj_desc.className = "black";
		obj_desc.onkeyup = null;
	}
}
}

function isEmail(obj) {
    if (obj.value.length > 0)
    {
		if (obj.value.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) == -1)
		{
			alert('This is not a valid Email Address.  Please try again.');
			obj.focus();
			obj.select();
		}
	}
}

function isPhone(obj) {
    if (obj.value.length > 0)
    {
		if (obj.value.search(/^((\(\d{3}\) ?)|(\d{3}-?)){1}\d{3}-?\d{4}$/) == -1)
		{
			if(obj.value.search(/^\d{3}-?\d{4}$/) == -1)
				alert('This is not a valid US phone number.  Please try again.');
			else
				alert('You must include the area code.  Please try again.');
				obj.focus();
				obj.select();
			
		}
		else
		{
			//Auto Format
			obj.value=obj.value.replace(/(\(?)(\d{3})(\) ?|-)?(\d{3})(-?)/,'('+'$2'+')'+'$4'+'-');
		}

	}
}

function isSSN(obj) {
    if (obj.value.length > 0)
    {
		if (obj.value.search(/^\d{3}-?\d{2}-?\d{4}$/) == -1)
		{
			alert('This is not a valid US Social Security Number.  Please try again');
			obj.focus();
			obj.select();
		}
		else
		{
			//Auto Format
			obj.value = obj.value.replace(/(\d{3})-?(\d{2})-?/,'$1'+'-'+'$2'+'-');
		}
	}
}

function isPercent(obj) {
    if (obj.value.length > 0)
    {
		if ((obj.value.search(/^(\d+)(\.\d+)?%?$/) == -1) || (RegExp.$1 > 100))
		{
			alert('This is not a valid percentage.  Please try again');
			obj.focus();
			obj.select();
		}
		else
		{
			//Auto Format
			obj.value = obj.value.replace(/^(\d+)(\.\d+)?%?$/, '$1'+ RegExp.$2.substring(0,3)+'%');
		}
	}
}

function isZipCode(obj) {
    if (obj.value.length > 0)
    {
		if (obj.value.search(/^\d{5}(-\d{4})?$/) == -1)
		{
			alert('This is not a valid US zipcode.  Please try again.');
			obj.focus();
			obj.select();
		}
	}
}

function isDigits(obj) {
    if (obj.value.length > 0)
		{
		if (obj.value.search(/^\d+$/) == -1)
		{
			alert('This is not a valid number.  Please try again.');
			obj.focus();
			obj.select();
		}
	}
}

function isMoney(obj) {
    if (obj.value.length > 0)
		{
		if (obj.value.search(/^\$?\d+((,\d{3})+)?(\.\d+)?$/) == -1)
		{
			alert('This is not a valid number.  Please try again.');
			obj.focus();
			obj.select();
		}
		else
		{
			//Auto Format
			if(obj.value.charAt(0) != '$')
				obj.value = '$' + obj.value;
			var startIndex = obj.value.indexOf('.');
			if (startIndex == -1)
			{
				startIndex = obj.value.length;
				obj.value += '.00';
			}
			else
			{
				// Truncate decimals to 2 places
				if (obj.value.length - startIndex > 2)
				{
					obj.value = obj.value.substring(0, startIndex + 3);
				}
			}
			while (startIndex > 4)
			{		
				startIndex -= 3;
				if(obj.value.charAt(startIndex - 1) != ',')
				{
					obj.value = obj.value.substring(0, startIndex) + ',' + obj.value.substring(startIndex, obj.value.length);
				}
				else
				{
					startIndex -= 1;
				}
			}
			

		}
	}
}

function isDate(obj) {
    if (obj.value.length > 0)
		{
		if (obj.value.search(/^\d{1,2}(-|\\|-|\/|\.)?\d{1,2}(-|\\|-|\/|\.)?(\d{2}|\d{4})$/) == -1 &&
			obj.value.search(/^(\d{2}|\d{4})(-|\\|-|\/|\.)?\d{1,2}(-|\\|-|\/|\.)?\d{1,2}$/) == -1)
		{
			alert('This is not a valid date.  Please try again.');
			obj.focus();
			obj.select();
		}
		else
		{
			//Auto Format
			if(obj.value.search(/^\d{1,2}(-|\\|-|\/|\.)?\d{1,2}(-|\\|-|\/|\.)?(\d{2}|\d{4})$/) != -1)
			{
				var p=/(\d{1,2})(-|\\|-|\/|\.)?(\d{1,2})(-|\\|-|\/|\.)?(\d{2,4})/.exec(obj.value);
				obj.value = '';
				if(p[5].length == 2)
				{
				  var today = new Date();

					//if the year entered is more than 50 years in the future, assume it
					//is the previous century
				  if(p[5] <= (today.getYear() + 50).toString().substring(2,4))
					obj.value += '20';
				  else
					obj.value += '19';
				}
				obj.value += p[5] + '-';			

				if(p[1].length == 1)
					obj.value += '0';
				obj.value += p[1] + '-';

				if(p[3].length == 1)
					obj.value += '0';
				obj.value += p[3];
			}
			else if(obj.value.search(/^(\d{2}|\d{4})(-|\\|-|\/|\.)?\d{1,2}(-|\\|-|\/|\.)?\d{1,2}$/) != -1)
			{
				var p=/(\d{2,4})(-|\\|-|\/|\.)?(\d{1,2})(-|\\|-|\/|\.)?(\d{1,2})/.exec(obj.value);			
				obj.value = '';
				if(p[1].length == 2)
				{
				  var today = new Date();

					//if the year entered is more than 50 years in the future, assume it
					//is the previous century
				  if(p[1] <= (today.getYear() + 50).toString().substring(2,4))
					obj.value += '20';
				  else
					obj.value += '19';
				}
				obj.value += p[1] + '-';			

				if(p[3].length == 1)
					obj.value += '0';
				obj.value += p[3] + '-';

				if(p[5].length == 1)
					obj.value += '0';
				obj.value += p[5];
			}
			


			
		}
	}
}

function do_submit(f) 
{
	if(validate())
	{
		Element.show('floorplan_indicator');
		var options = {
		method : 'post',
		asynchronous:true,
		parameters : Form.serialize(f),
		    onSuccess: do_submit_success,
		    // Handle 404
		    on404: function(t) {
		        alert('Error 404: location "' + t.statusText + '" was not found.');
		    },
		    // Handle other errors
		    onFailure: function(t) {
		        alert('Error ' + t.status + ' -- ' + t.statusText);
		    }
		};

		new Ajax.Request('http://www.haedwards.com/cgi-bin/haemailer_ajax.pl', options);		

	}
	return false;
}

function do_submit_success(t)
{
	
	Element.hide('floorplan_indicator');
	if(t.responseText == "SUCCESS")
	{
		document.getElementById('contact_message').innerHTML = "Thank you, we will get back to you shortly";
		new Effect.BlindUp('contact_form_div');
	}
	else
	{
		document.getElementById('contact_message').innerHTML = t.responseText;
	}
	Element.show('contact_message');
	new Effect.Pulsate('contact_message', {duration :2, pulses :2 });
	
}

function standard()
{
	document.getElementById('phone').value = '2053108082';
	document.getElementById('email').value = 'montanajob@hotmail.com';
	document.getElementById('realname').value = 'Joby';
	document.getElementById('street').value = '301 Royal Oaks Blvd';
	document.getElementById('city').value = 'franklin';	
	document.getElementById('state').value = 'tn';
	document.getElementById('zip').value = '37067';
	document.getElementById('comment').value = 'This is my comment';
	
}