function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function checkFieldLength(str) {
		if(str) {
			if(str.length==0) { return false; }
			else { return true; }
		} else { return false; }
}

function trim(str) {
	var pattern = /^\s/;
	whitespace = 0;
	do { 
		whitespace = pattern.test(str);
		if(whitespace) { str = str.substring(1); }
		}
	while (whitespace==true);
	return str;
}

function checkValidEmail(str) {
		result = /(\S+)@{1}/.test(str);
		return result;
}

function validateForm(objForm) {
	validationMessage = "";
	elementArr = objForm.elements;
	elementCount=0;
	elementName="";
	for(i=0;i<elementArr.length;i++) {
		elementType=elementArr[i].type;
		if(elementType=="text") {
			elementName=elementArr[i].name;
			//check for required
			validationName = elementName + "_required";
			if(elementArr[validationName]) { 
				if(!checkFieldLength(elementArr[elementName].value)) {
					if(validationMessage.length==0) {
							validationMessage="Your form could not be submitted for the following reasons:\n";
							elementArr[elementName].focus();
						}
					validationMessage = validationMessage + "\n - " + elementArr[validationName].value;
					highlightField(elementArr[elementName],true,highlightColor='#E7C9C9');
				}
			}
		}
		if(elementType=="radio") {
			if(elementName==elementArr[i].name) {
				elementCount=elementCount + 1;
			} else { elementCount=1; }
			elementName=elementArr[i].name;
			validationName = elementName + "_required";
			if(elementArr[validationName]) { 
				if(elementCount==1) {
					radioAnswered=false;
					radiogroup = elementArr[elementName];
					numradios = radiogroup.length;
					for(var t=0;t < numradios;t++) {
						if(radiogroup[t].checked) { radioAnswered = true; }
					}
					if(radioAnswered == false) {
						if(validationMessage.length==0) {
								validationMessage="Your form could not be submitted for the following reasons:\n";
							}
						validationMessage = validationMessage + "\n - " + elementArr[validationName].value;
					}
				}
			}
		}
		
		//check for valid Email
		validationName = elementName + "_validEmail";
		if(elementArr[validationName]) { 
			if(checkFieldLength(elementArr[elementName].value)) {
				if(!checkValidEmail(elementArr[elementName].value)) {
					if(validationMessage.length==0) {
							validationMessage="Your form could not be submitted for the following reasons:\n";
							elementArr[elementName].focus();
						}
					validationMessage = validationMessage + "\n - " + elementArr[validationName].value;
					highlightField(elementArr[elementName],true,highlightColor='#E7C9C9');
				}
			}
		}
	}
	if(validationMessage.length>0) { 
		alert(validationMessage);
		return false; 
	}
	else { 	return true; }
	
}

function highlightField(fieldName,bln) { //changes the background color of a field onfocus and onblur
	obj = MM_findObj(fieldName.name);
	if(obj) {
		if(bln) { obj.style.backgroundColor="#FEF5DA"; obj.style.borderStyle='solid';}
		else { obj.style.backgroundColor="#ffffff" }
	}
	
} //highlightField(obj,bln)

function focusFirst() {
	if(document.forms[0]) { document.forms[0].elements[0].focus(); }
}

function highlightRequired(fieldname) {
	var reqObj = new Object();
	reqObj=MM_findObj(fieldname);
	reqObj.style.backgroundColor="#E7C9C9";
}

function getFriendlyMessage(fieldname) { //Script to return formatted name to macromedia's form validation function
	var fieldObj = new Object();var valfieldname;valfieldname = "valmessage" + fieldname
	fieldObj=MM_findObj(valfieldname);
	if(fieldObj) { return fieldObj.value; }
	else { return fieldname; }
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,focusField,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+getFriendlyMessage(nm)+' should be an e-mail address.\n';highlightRequired(nm);
      } else if (test!='R') {
        if (isNaN(val)) errors+='- '+getFriendlyMessage(nm)+' should be a number.\n';highlightRequired(nm);
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (val<min || max<val) errors+='- '+getFriendlyMessage(nm)+' should be a number between '+min+' and '+max+'.\n';highlightRequired(nm);
    } } } else if (test.charAt(0) == 'R') errors += '- '+getFriendlyMessage(nm)+' needs to be filled in.\n';highlightRequired(nm); }
  } if (errors) {alert('There are the following problems with your form:\n'+errors);window.scrollTo(0,0);}
  document.MM_returnValue = (errors == '');
}

function SetStatus(message) {
	if(IE4) { window.setTimeout("window.status='"+message+"'",1); }
	else { window.status=message; }
}

/* Phone Reformat Functions */
function stripCharsNotInBag (s, bag)
{ 
	var i;var returnString = "";
    for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (bag.indexOf(c) != -1) returnString += c; }
    return returnString;
}

function reformat (s)
{   
	var arg;var sPos = 0;var resultString = "";
    for (var i = 1; i < reformat.arguments.length; i++) {
       arg = reformat.arguments[i];
       if (i % 2 == 1) resultString += arg;
       else {
           resultString += s.substring(sPos, sPos + arg);
           sPos += arg;
       }
    } 
    return resultString;
}

function ReformatUSPhone(USPhone)
{   
	if (USPhone.length < 10) { return ""; }
	USPhone = stripCharsNotInBag (USPhone, "1234567890");
	return (reformat (USPhone, "(", 3, ") ", 3, "-", 4));
}

//set default status to blank
defaultStatus = '';

//hide javascript messages from the user
function hide_error(msg, url, line) { return true; }
//window.onerror = hide_error;