//////////////////////////////////////////////////
// Contact Us functions
//////////////////////////////////////////////////

function generateHTMLContact(form) {
        var html = '';

        html += '<h3>Contact Us Form</h3>\n';

        html += '<table cellpadding="2" cellspacing="0" border="0" width="600">\n';

        html += '<tr><td>Firstname:</td><td>'+form.FormInput_FirstName.value+'</td></tr>\n';
        html += '<tr><td>Surname:</td><td>'+form.FormInput_LastName.value+'</td></tr>\n';

        if (form.FormInput_CompanyName.value != '') {
                html += '<tr><td>Company:</td><td>'+form.FormInput_CompanyName.value+'</td></tr>\n';
        }

        html += '<tr><td>Email:</td><td>'+form.FormInput_EmailAddress.value+'</td></tr>\n';

        html += '<tr><td>Phone:</td><td>'+form.FormInput_PhoneNumber.value+'</td></tr>\n';

        //
        if (form.FormInput_Address.value != '') {
                html += '<tr><td valign="top">Address:</td>';
                html += '<td><pre>'+form.FormInput_Address.value+'</pre></td></tr>\n';
        }

        if (form.FormInput_City.value != '') {
                html += '<tr><td>City:</td><td>'+form.FormInput_City.value+'</td></tr>\n';
        }

        if (form.FormInput_State.value != '') {
                html += '<tr><td>State:</td><td>'+form.FormInput_State.value+'</td></tr>\n';
        }

        if (form.FormInput_Postcode.value != '') {
                html += '<tr><td>Postcode:</td><td>'+form.FormInput_Postcode.value+'</td></tr>\n';
        }

        if (form.FormInput_Country.value != '') {
                html += '<tr><td>Country:</td><td>'+form.FormInput_Country.value+'</td></tr>\n';
        }
        //

        // How can we help you?
        //var YourOption0 = form.FormInput_Option0.checked;
        //var YourOption1 = form.FormInput_Option1.checked;
        //var YourOption2 = form.FormInput_Option2.checked;
        //var YourOption3 = form.FormInput_Option3.checked;
        //var YourOption4 = form.FormInput_Option4.checked;

        if (form.FormInput_Option0.checked ||
            form.FormInput_Option1.checked ||
            form.FormInput_Option2.checked ||
            form.FormInput_Option3.checked ||
            form.FormInput_Option4.checked) {
                html += '<tr><td colspan="2">I need to:<td><tr>';

		if (form.FormInput_Option0.checked ||
		    form.FormInput_Option1.checked ||
		    form.FormInput_Option2.checked ||
		    form.FormInput_Option3.checked) {
			html += '<tr><td colspan="2"><pre>';
			if (form.FormInput_Option0.checked) {
				html += ' - redesign my site to improve usability and attract more people to my site.<br />';
			}
			if (form.FormInput_Option1.checked) {
				html += ' - manage, control access to and approve the publishing of content on my website or intranet.<br />';
			}
			if (form.FormInput_Option2.checked) {
				html += ' - integrate to an existing system and provide online access to it.<br />';
			}
			if (form.FormInput_Option3.checked) {
				html += ' - provide online ordering and payment functionality.<br />';
			}

			html += '</pre></td></tr>\n';
                }

                //  Other Solutions
                if (form.FormInput_Option4.checked) {
                        html += '<tr><td colspan="2">&nbsp;&nbsp;- Other Solutions:<td><tr>';
                        html += '<tr><td colspan="2"><pre>';
                        html += '   - I have additional needs beyond those listed above.<br />';
                        html += '</pre></td></tr>\n';
                }
                //
        }
        //


        html += '<tr><td valign="top">Comments:</td>';
        html += '<td><pre>'+form.FormInput_Comments.value+'</pre></td></tr>\n';

        html += '</table>\n';

        return html;
}

function checkContactForm(form) {
        var errors = '';
        var numErrors = 0;

        var YourFirstname = form.FormInput_FirstName.value;
        var YourSurname   = form.FormInput_LastName.value;
        var YourEmail     = form.FormInput_EmailAddress.value;
        var YourPhone     = form.FormInput_PhoneNumber.value;

        if (YourFirstname == '') {
                errors += '- You did not enter Your First Name.\n';
                numErrors++;
        }
        if (YourSurname == '') {
                errors += '- You did not enter Your Last Name.\n';
                numErrors++;
        }
        if (YourEmail == '') {
                errors += '- You did not enter Your Email Address.\n';
                numErrors++;
        } else if (!isValidEmailStrict(YourEmail)) {
                errors += '- Your Email Address does not look correct.\n';
                numErrors++;
        }
        if (YourPhone == '') {
                errors += '- You did not enter Your Phone Number.\n';
                numErrors++;
        }

        if (numErrors) {
                errors = 'The form was not submitted due to the following problem' + ((numErrors > 1) ? 's' : '') + ':\n\n' + errors + '\nPlease fix ' + ((numErrors > 1) ? 'these' : 'this') + ' problem' + ((numErrors > 1) ? 's' : '') + ' and resubmit the form.';
                alert(errors);
                return false;
        }

	form._HTMLContent.value = generateHTMLContact(form);

        return true;
}

//////////////////////////////////////////////////
// Feedback functions
//////////////////////////////////////////////////

function generateHTMLFeedback(form) {
        var html = '';

        html += '<h3>Feedback Form</h3>\n';

        html += '<table cellpadding="2" cellspacing="0" border="0" width="600">\n';

        html += '<tr><td>Firstname:</td><td>'+form.FormInput_FirstName.value+'</td></tr>\n';
        html += '<tr><td>Surname:</td><td>'+form.FormInput_LastName.value+'</td></tr>\n';

        if (form.FormInput_CompanyName.value != '') {
                html += '<tr><td>Company:</td><td>'+form.FormInput_CompanyName.value+'</td></tr>\n';
        }

        html += '<tr><td>Email:</td><td>'+form.FormInput_EmailAddress.value+'</td></tr>\n';

        html += '<tr><td>Phone:</td><td>'+form.FormInput_PhoneNumber.value+'</td></tr>\n';

        //
        if (form.FormInput_Address.value != '') {
                html += '<tr><td valign="top">Address:</td>';
                html += '<td><pre>'+form.FormInput_Address.value+'</pre></td></tr>\n';
        }

        if (form.FormInput_City.value != '') {
                html += '<tr><td>City:</td><td>'+form.FormInput_City.value+'</td></tr>\n';
        }

        if (form.FormInput_State.value != '') {
                html += '<tr><td>State:</td><td>'+form.FormInput_State.value+'</td></tr>\n';
        }

        if (form.FormInput_Postcode.value != '') {
                html += '<tr><td>Postcode:</td><td>'+form.FormInput_Postcode.value+'</td></tr>\n';
        }

        if (form.FormInput_Country.value != '') {
                html += '<tr><td>Country:</td><td>'+form.FormInput_Country.value+'</td></tr>\n';
        }
        //

        html += '<tr><td valign="top">Comments:</td>';
        html += '<td><pre>'+form.FormInput_Comments.value+'</pre></td></tr>\n';

        html += '</table>\n';

        return html;
}

function checkFeedbackForm(form) {
        var errors = '';
        var numErrors = 0;

        var YourFirstname = form.FormInput_FirstName.value;
        var YourSurname   = form.FormInput_LastName.value;
        var YourEmail     = form.FormInput_EmailAddress.value;
        var YourPhone     = form.FormInput_PhoneNumber.value;

        if (YourFirstname == '') {
                errors += '- You did not enter Your First Name.\n';
                numErrors++;
        }
        if (YourSurname == '') {
                errors += '- You did not enter Your Last Name.\n';
                numErrors++;
        }
        if (YourEmail == '') {
                errors += '- You did not enter Your Email Address.\n';
                numErrors++;
        } else if (!isValidEmailStrict(YourEmail)) {
                errors += '- Your Email Address does not look correct.\n';
                numErrors++;
        }
        if (YourPhone == '') {
                errors += '- You did not enter Your Phone Number.\n';
                numErrors++;
        }

        if (numErrors) {
                errors = 'The form was not submitted due to the following problem' + ((numErrors > 1) ? 's' : '') + ':\n\n' + errors + '\nPlease fix ' + ((numErrors > 1) ? 'these' : 'this') + ' problem' + ((numErrors > 1) ? 's' : '') + ' and resubmit the form.';
                alert(errors);
                return false;
        }

	form._HTMLContent.value = generateHTMLFeedback(form);

        return true;
}


///// Helper Functions

function isValidEmail(address) {
        if (address.indexOf('@') < 3) return false;
        var name = address.substring(0, address.indexOf('@'));
        var domain = address.substring(address.indexOf('@') + 1);
        if (name.indexOf('(') != -1 || name.indexOf(')') != -1 || name.indexOf('<') != -1 || name.indexOf('>') != -1 || name.indexOf(',') != -1 || name.indexOf(';') != -1 || name.indexOf(':') != -1 || name.indexOf('\\') != -1 || name.indexOf('"') != -1 || name.indexOf('[') != -1 || name.indexOf(']') != -1 || name.indexOf(' ') != -1) return false;
        if (domain.indexOf('(') != -1 || domain.indexOf(')') != -1 || domain.indexOf('<') != -1 || domain.indexOf('>') != -1 || domain.indexOf(',') != -1 || domain.indexOf(';') != -1 || domain.indexOf(':') != -1 || domain.indexOf('\\') != -1 || domain.indexOf('"') != -1 || domain.indexOf('[') != -1 || domain.indexOf(']') != -1 || domain.indexOf(' ') != -1) return false;
        return true;
}

function isValidEmailStrict(address) {
        if (isValidEmail(address) == false) return false;
        var domain = address.substring(address.indexOf('@') + 1);
        if (domain.indexOf('.') == -1) return false;
        if (domain.indexOf('.') == 0 || domain.indexOf('.') == domain.length - 1) return false;
        return true;
}
