﻿ function submitRequest(reqType){
        
    //debugger;
    
    if ((reqType == null) || ((reqType != "add") && (reqType != "remove")))
    {
        setMessage("Invalid operation detected. Please make sure " + 
                            "you have filled out the right fields and clicked " + 
                            "one of the action buttons.", true);
        return;
    }
    
    var paramString;
    var eleAddName;
    var eleAddEmail;
    var eleRemoveEmail;
    var strName;
    var strAddEmail;
    var strRemoveEmail;
                
    eleAddName = Ext.get("txtName");
    eleAddEmail = Ext.get("txtEmailAddress");
    eleRemoveEmail = Ext.get("txtEmailToRemove");
    strAddEmail = eleAddEmail.getValue();
    strName = eleAddName.getValue();
    strRemoveEmail = eleRemoveEmail.getValue();
    
    paramString = "op=";
    
    if (reqType == "add") {
        if (validLength(strName,3,128) == false) {
            setMessage("Please enter a name between 3 and 128 characters in length.", true);
            return;
        }
        if (validLength(strAddEmail,8,128) == false) {
            setMessage("Please enter an email between 8 and 128 characters in length.", true);
            return;
        }     
        
        if (isEmailAddressValid(strAddEmail) == false) {
            setMessage("Please enter an email address in a legal format.", true);
            return;
        }
        paramString = paramString + "add&name=" + encodeURI(strName) + "&email=" + encodeURI(strAddEmail);
    }
    if (reqType == "remove") {
        if (validLength(strRemoveEmail,8,128) == false) {
            setMessage("Please enter an email between 8 and 128 characters in length.", true);
            return;
        }   
        
        if (isEmailAddressValid(strRemoveEmail) == false) {
            setMessage("Please enter an email address in a legal format.", true);
            return;
        }
        
        paramString = paramString + "remove&email=" + encodeURI(strRemoveEmail);
    }
    
                
    var conn = new Ext.data.Connection();
    conn.request({
        url: './MailingListHandler.ashx',
        method: 'GET',
        params: paramString,
        success: successfulResponse,
        failure: failedResponse
    });                               
        
} //function submitRequest(reqType){

function successfulResponse(response, options) {
    setMessage(response.responseText, false);

} //function successfulResponse(response, options) {

function failedResponse(response, options) {
    setMessage(response.responseText, true);
}//function failedResponse(response, options) {

//tests a value to make sure that its not null and within the bounds passed in.
function validLength(valueToTest, minLength, maxLength) {

    if (valueToTest ==null) {
        return false;
    }
    
    if (valueToTest.length > maxLength) {
        return false;
    }

    if (valueToTest.length < minLength) {
        return false;
    }

    return true;
}//function validLength(valueToTest, minLength, maxLength) {


function setMessage(msgText, isError) {
    var eleMsg;
    eleMsg = Ext.get("divReturnMessage");
    eleMsg.dom.innerText = msgText;
    if (isError) {
        eleMsg.dom.className = "divErrorMessage";
    }
    else {
        eleMsg.dom.className = "divOKMessage";
    }
    
    eleMsg = null;
    return;
}// function setMessage(msgText) 

function isEmailAddressValid(emailAddress) {
    var returnValue;
    var regexMatch = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (regexMatch.test(emailAddress)) {
        returnValue = true;
    } 
    else {
        returnValue = false;
    }
    regexMatch = null;
    return returnValue;
}