var loccount = 0;
var anothcount = 0;

function disenableTable(id, radobj, tabobj) {
    var tabloc = document.getElementById(tabobj);
    var radios = document.getElementById(radobj);
    if (radios) {
        var inputs = radios.getElementsByTagName ('input');
        if (inputs) {
            for (var i = 0; i < inputs.length; ++i) {
                if (inputs[i].checked) {
                    if (inputs[i].value =='Yes') {
                        tabloc.style.fontStyle = "normal";
                        var allFields = document.getElementById(id);
                        var inputF = allFields.getElementsByTagName ('input');
                        for (var j=0; j<inputF.length; j++) {
                            inputF[j].disabled = false;
                        }
                    }
                    else {
                        tabloc.style.fontStyle = "italic";
                        var allFields = document.getElementById(id);
                        var inputF = allFields.getElementsByTagName ('input');
                        for (var i=0; i<inputF.length; i++) {
                            inputF[i].disabled = true;
                        }
                    }
                }
            }
        }
    }
}

/**
 * Limit to 5 rows.
 * @param id
 */
function addLocRow(id){
    var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
    loccount++;
    //****Row 1*****
    var row = document.createElement("TR");
    row.setAttribute("id", "locrowid_" + loccount);
    //Cell 1
    var td1 = document.createElement("TD");
    var cityTdInput = document.createElement("input");
    cityTdInput.setAttribute("name", "city_" + loccount);
    cityTdInput.setAttribute("type", "text");
    cityTdInput.setAttribute("size", "8");
    td1.setAttribute("width", "7");
    td1.appendChild(cityTdInput);

    //Cell 2
    var td2 = document.createElement("TD");
    var stateTdInput = document.createElement("input");
    stateTdInput.setAttribute("name", "state_" + loccount);
    stateTdInput.setAttribute("type", "text");
    stateTdInput.setAttribute("size", "6");
    td2.setAttribute("width", "7");
    td2.appendChild(stateTdInput);

    //Cell 3
    var td3 = document.createElement("TD");
    var yearsTdInput = document.createElement("input");
    yearsTdInput.setAttribute("name", "years_" + loccount);
    yearsTdInput.setAttribute("type", "text");
    yearsTdInput.setAttribute("size", "8");
    td3.setAttribute("width", "7");
    td3.appendChild(yearsTdInput);


    row.appendChild(td1);
    row.appendChild(td2);
    row.appendChild(td3);

    tbody.appendChild(row);

}

function addAnothRow(id) {
    var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
    anothcount++;
    //****Row 1*****
    var row = document.createElement("TR");
    row.setAttribute("id", "anothrowid_" + anothcount);


    //Cell 1
    var td1 = document.createElement("TD");
    var clubTdInput = document.createElement("input");
    clubTdInput.setAttribute("name", "club_" + anothcount);
    clubTdInput.setAttribute("type", "text");
    clubTdInput.setAttribute("size", "14");
    td1.setAttribute("width", "14");
    td1.appendChild(clubTdInput);

    //Cell 2
    var td2 = document.createElement("TD");
    var clubyearsTdInput = document.createElement("input");
    clubyearsTdInput.setAttribute("name", "clubyears_" + anothcount);
    clubyearsTdInput.setAttribute("type", "text");
    clubyearsTdInput.setAttribute("size", "9");
    td2.setAttribute("width", "7");
    td2.appendChild(clubyearsTdInput);
    
    row.appendChild(td1);
    row.appendChild(td2);

    tbody.appendChild(row);

}

function clearLocRow(id, fieldobj, rowid) {
    var stuff = document.getElementById(fieldobj);
    var inputs = stuff.getElementsByTagName ('input');

    if (inputs) {
        for (var i = 0; i < inputs.length; ++i) {
            if (inputs[i].type == "text") {
                inputs[i].value = "";
            }
        }
    }

    if (rowid == "locrow") {
        for (var k=loccount; k >= 1; k--) {
            var rowloc = document.getElementById("locrowid_" + k);
            var tbodyloc = document.getElementById(id).getElementsByTagName("TBODY")[0];
            tbodyloc.removeChild(rowloc);
        }

        loccount = 0;
    }

    if (rowid == "anothrow") {
        for (var m=anothcount; m >= 1; m--) {
            var rowanoth = document.getElementById("anothrowid_" + m);
            var tbodyanoth = document.getElementById(id).getElementsByTagName("TBODY")[0];
            tbodyanoth.removeChild(rowanoth);
        }

        anothcount = 0;

    }

}

function validateData() {

    var valid = true;
    var regex = /^[\w ',-.]+$/;
    var xmlString = "";

    try {
    //First Name
    var firstname = document.frmprospect.firstName;
    var firstnameVal = trimAll(firstname.value);
    if(!regex.test(firstnameVal)||(firstnameVal.length > 20||firstnameVal.length < 3)) {
        alert("Firstname can only contain alphanumeric characters \nand be no longer than 20 characters.  " +
              "It is \nalso a required field.");
        valid = false;
    }
    else {
        xmlString = xmlString + "<Member><FirstName>" + firstnameVal + "</FirstName>";
    }

    //Last Name
    var lastname = document.frmprospect.lastName;
    var lastnameVal = trimAll(lastname.value);
    if(!regex.test(lastnameVal)||(lastnameVal.length > 30||lastnameVal.length < 3)) {
        alert("Last name can only contain alphanumeric characters \nand be no longer than 30 characters.  " +
              "It is \nalso a required field.");
        valid = false;
    }
    else {
        xmlString = xmlString + "<LastName>" + lastnameVal + "</LastName>";
    }

    //Name of Organization
    var organization = document.frmprospect.nameOfOrg;
    var organVal = trimAll(organization.value);
    if (organVal.length > 0) {
        if(!regex.test(organVal)||organVal.length > 60) {
            alert("Name of Organization can only contain alphanumeric characters \nand be no longer than 60 characters.");
            valid = false;
        }
        else {
            xmlString = xmlString + "<Organization>" + organVal + "</Organization>";
        }
    }

    // Position in Organization
    var position = document.frmprospect.positionOrg;
    var positionVal = trimAll(position.value);
    if (positionVal.length > 0) {
        if(!regex.test(positionVal)||positionVal.length > 50) {
            alert("Position in Organization can only contain alphanumeric characters \nand be no longer than 50 characters.");
            valid = false;
        }
        else {
            xmlString = xmlString + "<Position>" + positionVal + "</Position>";
        }
    }

    //Business Phone Number
    var phone = document.frmprospect.phoneNum;
    var phoneVal = trimAll(phone.value);
    if (phoneVal.length > 0) {
        if(!validateUSPhone(phoneVal)) {
            alert("Phone Number must be in this format Ex. 999-999-9999");
            valid = false;
        }
        else {
            xmlString = xmlString + "<Phone>" + phoneVal + "</Phone>";
        }
    }
    //Business Phone Number Ext
    var phoneext = document.frmprospect.phoneExt;
    var phoneExtVal = trimAll(phoneext.value);
    if (phoneExtVal.length > 0) {
        if(!regex.test(phoneExtVal)||phoneExtVal.length > 8) {
            alert("Phone Number extension must be alphanumeric and less than 8 characters in length.");
            valid = false;
        }
        else {
            xmlString = xmlString + "<PhoneExt>" + phoneExtVal + "</PhoneExt>";
        }
    }

    //Email address.
    var emailf = document.frmprospect.email;
    var emailVal = trimAll(emailf.value);
    if (emailVal.length > 0) {
        if(emailVal.indexOf("@") == -1) {
            alert("Not a valid Email address.");
            valid = false;
        }
        else {
            xmlString = xmlString + "<Email>" + emailVal + "</Email>";
        }
    }

    //Meet Criteria
    var criteriaf = document.frmprospect.criteria;
    var critval = "";
    for (var icrit=0; icrit < criteriaf.length; icrit++) {
        if (criteriaf[icrit].checked) {
            critval = criteriaf[icrit].value;
        }
    }
    xmlString = xmlString + "<Criteria>" + critval + "</Criteria>";


    //Previously been a Rotary member?
    var previouslyf = document.frmprospect.previously;
    var prevVal = "";
    for (var iprev=0; iprev < previouslyf.length; iprev++) {
        if (previouslyf[iprev].checked) {
            prevVal = previouslyf[iprev].value;
        }
    }
  
    if (prevVal == "Yes") {
        xmlString = xmlString + "<PreviousMember value='Yes'>";

        var allFields = document.getElementById("locFieldset");
        var inputF = allFields.getElementsByTagName ('input');
        for (var j=0; j<inputF.length; j++) {

            if (inputF[j].name.indexOf("city") >= 0) {
                var cityname = inputF[j].name;
                var cityval = trimAll(inputF[j].value);
                if (cityval.length > 0) {
                    if(!regex.test(cityval)||cityval.length > 30) {
                        alert("City can only contain alphanumeric characters \nand be no longer than 30 characters.");
                        valid = false;
                    }
                    else {
                        xmlString = xmlString + "<" + cityname + ">" + cityval + "</" + cityname + ">";
                    }
                }
            }
            if (inputF[j].name.indexOf("state") >= 0) {
                var statename = inputF[j].name;
                var stateval = trimAll(inputF[j].value);
                if (stateval.length > 0) {
                    if(!regex.test(stateval)||stateval.length > 30) {
                        alert("State can only contain alphanumeric characters \nand be no longer than 30 characters.");
                        valid = false;
                    }
                    else {
                        xmlString = xmlString + "<" + statename + ">" + stateval + "</" + statename + ">";
                    }
                }

            }
            if (inputF[j].name.indexOf("years") >= 0) {
                var yearsname = inputF[j].name;
                var yearsval = trimAll(inputF[j].value);
                if (yearsval.length > 0) {
                    if(!regex.test(yearsval)||yearsval.length > 30) {
                        alert("Years can only contain alphanumeric characters \nand be no longer than 30 characters.");
                        valid = false;
                    }
                    else {
                        xmlString = xmlString + "<" + yearsname + ">" + yearsval + "</" + yearsname + ">";
                    }
                }
            }

        }

        

        xmlString = xmlString + "</PreviousMember>";
    }

    //Another Club.
    var anotherf = document.frmprospect.another;
    var anothVal = "";
    for (var ianoth=0; ianoth < anotherf.length; ianoth++) {
        if (anotherf[ianoth].checked) {
            anothVal = anotherf[ianoth].value;
        }
    }

    if (anothVal == "Yes") {
        xmlString = xmlString + "<AnotherClub value='Yes'>";

        var anothFields = document.getElementById("anothFieldset");
        var inputA = anothFields.getElementsByTagName ('input');
        for (var n=0; n<inputA.length; n++) {

            if (inputA[n].name.indexOf("club_") >= 0) {
                var clubname = inputA[n].name;
                var clubval = trimAll(inputA[n].value);
                if (clubval.length > 0) {
                    if(!regex.test(clubval)||clubval.length > 30) {
                        alert("Club Name can only contain alphanumeric characters \nand be no longer than 30 characters.");
                        valid = false;
                    }
                    else {
                        xmlString = xmlString + "<" + clubname + ">" + clubval + "</" + clubname + ">";
                    }
                }
            }

            if (inputA[n].name.indexOf("clubyears") >= 0) {
                var clubyearsname = inputA[n].name;
                var clubyearsval = trimAll(inputA[n].value);
                if (clubyearsval.length > 0) {
                    if(!regex.test(clubyearsval)||clubyearsval.length > 20) {
                        alert("Club Years can only contain alphanumeric characters \nand be no longer than 20 characters.");
                        valid = false;
                    }
                    else {
                        xmlString = xmlString + "<" + clubyearsname + ">" + clubyearsval + "</" + clubyearsname + ">";
                    }
                }
            }

        }

        xmlString = xmlString + "</AnotherClub>";

    }

    //Know any other Rotarians.
    var knowany = document.frmprospect.knowanytxt;
    var knowanyVal = trimAll(knowany.value);
    if (knowanyVal.length > 0) {
        if(!regex.test(knowanyVal)||knowanyVal.length > 200) {
            alert("Other Rotarians can only contain alphanumeric characters \nand be no longer than 200 characters.");
            valid = false;
        }
        else {
            xmlString = xmlString + "<OtherRotarians>" + knowanyVal + "</OtherRotarians>";
        }
    }

    //Hear about Rotary
    var hearabout = document.frmprospect.heartxt;
    var hearaboutVal = trimAll(hearabout.value);
    if (hearaboutVal.length > 0) {
        if(!regex.test(hearaboutVal)||hearaboutVal.length > 250) {
            alert("The Hear about Rotary field can only contain alphanumeric characters \nand be no longer than 250 characters.");
            valid = false;
        }
        else {
            xmlString = xmlString + "<HearAbout>" + hearaboutVal + "</HearAbout>";
        }
    }



    }
    catch (err) {
        valid = false;
    }
    
    if (!valid) {
        xmlString = "";
    }
    else {
        xmlString = xmlString + "</Member>";
        document.frmprospect.rotarydata.value = xmlString;
    }

    return valid;
}

function trimAll( strValue ) {
 var objRegExp = /^(\s*)$/;

    //check for all spaces
    if(objRegExp.test(strValue)) {
       strValue = strValue.replace(objRegExp, '');
       if( strValue.length == 0)
          return strValue;
    }

   //check for leading & trailing spaces
   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(strValue)) {
       //remove leading and trailing whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}

function validateUSPhone( strValue ) {
    var re = /\(?\d{3}\)?([-\/\.])\d{3}\1\d{4}/;

  //check for valid us phone with or without space between
  //area code
  return re.test(strValue);
}

function checkEmail(inputvalue){
    var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;

     return pattern.test(inputvalue);
}
