var NEWSLETTER_SIGNUP_URL = '/newsletter-signup';

function ValidateNewsletterSignupData() {
    var isValid = true;
    

    var problemMessage = 'The name and email-address fields are required to sign up for the newsletter.';

    if ('' == document.getElementById('newsletter-signup-name').value) {
        isValid = false;
    }
    if ('' == document.getElementById('newsletter-signup-email').value) {
        isValid = false;
    }

    if (false == isValid) {
        alert(problemMessage);
    }

    return isValid;
}

function NewsletterSignupRequest() {

    var isValid = ValidateNewsletterSignupData();
    var params = '';

    if (true == isValid) {
        // get new request
        var xmlRequest = GetNewsletterXmlRequest();
        var requestUrl = NEWSLETTER_SIGNUP_URL;

        // query the server
        params += 'newsletter-signup-name=' + escape(document.getElementById('newsletter-signup-name').value);
        params += '&newsletter-signup-email=' + escape(document.getElementById('newsletter-signup-email').value);

        xmlRequest.open('POST', requestUrl, false );
        xmlRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xmlRequest.setRequestHeader('Content-length', params.length);
        xmlRequest.setRequestHeader('Connection', 'close');
        xmlRequest.send(params); 
        // get document element
        if (null != xmlRequest.responseXML) {
            response = xmlRequest.responseXML.documentElement;

            // process the response
            if (null != response.getElementsByTagName('message')) {
                if ('success' == response.getElementsByTagName('message')[0].getAttribute('type')) {
                    alert("Thank you for signing up for the newsletter!");
                } else {
                    if ('existing email' == response.getElementsByTagName('error')[0].getAttribute('type')) {
                    alert("This email address is already signed up for the newsletter.");
                    } else {
                        alert("Sorry your newsletter signup request was not successful. Please try again.");
                    }
                }
            }
        }
    }

    return;
}


// returns an XMLHttpRequest object
function GetNewsletterXmlRequest() {

	var obj_xml_request = null;
	// firefox, Opera, Safari
	try {
		obj_xml_request = new XMLHttpRequest();
	}
	catch (e) {

		// Internet Explorer
		try {
			obj_xml_request = new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch (e) {

			// Internet Explorer (alternative)
			try {
				obj_xml_request = new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch (e) {
				alert('Sorry, your browser does not support AJAX.');
			}
		}
	}

	return obj_xml_request;
}
