
String.prototype.trim = function () {
    return this.replace(/^\s*/, '').replace(/\s*$/, '');
}

function doSubmit(form_name) {
    formObj = document.getElementById(form_name);
    formObj.action = ( formObj.title === '' ?
		       'http://getinshapeforwomen.com/cgi-bin/' + form_name + '-repost.pl' :
		       formObj.title);
    formObj.submit();
}

function submitLeadForm(form_name) {
    var failed = false;
    var nameRE = /^[A-Za-z][\-.\' A-Za-z]+$/;
    var emailRE = /^[A-Za-z0-9_\-.]+@[A-Za-z0-9_\-.]+$/;
    var zipRE = /^\d\d\d\d\d(|-\d\d\d\d)$/;
    var phoneRE = /^\D*\d\d\d\D*\d\d\d\D*\d\d\d\d\D*$/;
    var anyRE = /^.*$/;
    var fileRE = /^.*\.(doc|docx|pdf|html|txt|rtf)$/i;

    var vfields = new Array (
	{re: nameRE, formID: 'FirstName', display: 'First name'},
	{re: nameRE, formID: 'LastName', display: 'Last name'},
	{re: emailRE, formID: 'Email', display: 'E-mail address'},
	{re: anyRE, formID: 'StreetAddress1', display: 'Street address'},
	{re: nameRE, formID: 'City', display: 'City'},
	{re: nameRE, formID: 'State', display: 'State'},
	{re: zipRE, formID: 'ZipFour1', display: 'Zip Code'},
	{re: phoneRE, formID: 'Phone1', display: 'Daytime phone'},
	{re: phoneRE, formID: 'Phone2', display: 'Cell/Evening phone'},
	{re: fileRE, formID: '_Resume', display: 'Resume'},
	{re: fileRE, formID: '_CoverLetter', display: 'Cover Letter'},
	{re: anyRE, formID: '_BusinessLocation', display: 'Franchise location'},
	{re: anyRE, formID: '_Availableinvestment', display: 'Available Investment'},
	{re: anyRE, formID: '_Goals', display: 'Goals'},
	{re: nameRE, formID: '_Occupation', display: 'Occupation'}
    );

    // XXX these arrays should be re-done with a Hash for clarity & all false's can be excluded
    switch ( form_name ) {
    case 'career_form_idonly':
	// internal use only, redo if/when needed
	break;
    case 'career_form': 
	reqs = new Array(true,  true,  true,  false, false, false, false, true,  false, 
			 true,  true,  true,  false, false, false, false);
	break;
    case 'free_week_trial_form':
	reqs = new Array(true,  true,  true,  false, false, false, false, true,  false, 
			 false, false, true,  false, false, false, false);
	break;
    case 'career_fair_form':
	reqs = new Array(true,  true,  true,  true,  true,  true,  true,  true,  false, 
			 false, false, true,  true,  true,  false, false);
	vfields[11].display = 'Franchise Fair location';
	vfields[13].display = 'territory'; // not goals
	vfields[13].re = nameRE;
	break;
    default:
	alert('Internal Error! Unknown form. Please notify: webmaster@getinshapeforwomen.com');
	break;
    }

    error_msg = "";
    for ( vf = 0; vf < vfields.length; vf++ ) {
	if ( (el = document.getElementsByName('Contact0' + vfields[vf].formID)[0]) === undefined &&
	     (el = document.getElementsByName('inf_field_' + vfields[vf].formID)[0]) === undefined &&
	     (el = document.getElementsByName('inf_custom' + vfields[vf].formID)[0]) === undefined ) {
	    continue;
	}
	formVal = el.value.trim();
	if ( formVal === '' ) {
	    if ( reqs[vf] ) {
		error_msg += '\n' + 'The ' + vfields[vf].display + ' is required.';
	    }
	    continue;
	}
	if ( !vfields[vf].re.test(formVal) ) {
	    if ( vfields[vf].display == 'Resume' || vfields[vf].display == 'Cover Letter' ) {
		error_msg += "\nFor the Resume and Cover Letter, only the following document types are allowed:\n"
		    + ".doc (Word 97-2003),\n.docx (Word 2007-2010),\n.pdf (Adobe Portable Document Format),\n"
		    + ".html (Web page),\n.rtf (Rich Text / Wordpad),\nor .txt (Plain Text / Notepad)\n";
	    }
	    else {
		error_msg += "\nThe '" + vfields[vf].display 
		    + '\' field looks invalid. Check for punctuation or numbers'
		    + ' that don\'t belong in names, a missing @ sign in e-mails,'
		    + ' or insufficient digits in numeric fields.';
	    }
	}
    }
    if ( error_msg != "" ) {
	alert(error_msg + "\nPlease correct these problems and re-submit.");
	return;
    }

    document.getElementById('submitnow')['disabled'] = 'yes';
    document.getElementById('confirmation_message').innerHTML
	= '<strong>Thank you for the submission.'
	+ ' Please wait, submitting...</strong>';
    doSubmit(form_name);
}

