/*
' PESGB Javascript functions and validations used
' Parameters:
' Copyright 2008 John Wiley and Sons Ltd
'###############################################################################
' Change log
' 20/03/2009 RPO, SCS WSS-SG020,WSS-SG021, created separate setion for validate managemembers
' 27/03/2009 ASC, SCS WO087PESGB.WSS-SG030 - Removed alphanumeric validation on firstname and surname
' 20/04/2009 MST, NCS WO087PESGB. - Admin add functionality validation function included.
' 04/05/2009 MST, NCS WO087PESGB - Update Valition for administrtor 
' 12-05-2009 ASC, NCS WO087PESGB Updated error messages for edit pages.
' 18/05/2009 MST, NCS Change the minimum value contant for  Title
' 02/06/2009 	ASC, NCS 	WO087PESGB.Phase2 - Removed alphanumeric validation for bio details
' 19/01/2010 TSL, NCS IM005262 - Make postal code field non-mandatory on PESGB
'###############################################################################
*/

var postalcode_minlength = 6;
var address_minlength = 4;
var town_minlength = 4;
var name_minlength = 2;
var telephone_minlength = 6;

var custnum_minlength = 4;
var username_minlength = 8;
var password_minlength = 8;
var admin_firstname_maxlength = 250;
var admin_surname_maxlength = 250;
var admin_username_minlength = 6;
var admin_password_minlength = 6;
var pwdreminder_minlength = 4;
var urlprefix = "http://";

var title_minlength = 3;
var introtext_minlength = 10;
var bodytext_minlength = 10;
var pagetitletext_minlength = 10;

/*
'PESG JAVSCRIPT VALIDATION FUNCTION FOR MODIFY Home PAGES
' 14/04/2009 MST, NCS
*/
function isValidHomepage() {
    var ErrMsg = "";
    var Pagetitle, strContents
    var header = document.getElementById('titleheader');
    var Content = document.getElementById('Content');
    Pagetitle = TrimAll(document.getElementById('pageheader').value);
    strContents = TrimAll(document.getElementById('bodytext').value);

    if (Pagetitle == "" && strContents == "") {
        ErrMsg += "Please complete all fields marked with *";
    }
    else {
        // 12-05-2009 ASC, NCS WO087PESGB Updated error messages for edit pages.
        if (Pagetitle == "") {
            ErrMsg += "* Page Title : field Required.<br />";
            header.innerHTML = "<font color=#d30d0d>Title of the page *</font>";
        } else {
            if (Pagetitle.length < title_minlength) {
                ErrMsg += "* Page Title : minimum " + title_minlength + " characters required.<br />";
                header.innerHTML = "<font color=#d30d0d>Title of the page *</font>";
            }
        }

        if (strContents == "") {
            ErrMsg += "* Main Content: field Required.<br />";
            Content.innerHTML = "<font color=#d30d0d>Main Content *</font>";
        } else {
            if (strContents.length < bodytext_minlength) {
                ErrMsg += "* Main Content: minimum " + bodytext_minlength + " characters required.<br />";
                Content.innerHTML = "<font color=#d30d0d>Main Content *</font>";
            }
        }
    }
    return ErrMsg;
}

/*
'PESG JAVSCRIPT VALIDATION FUNCTION FOR MODIFY Inner PAGES
' 14/04/2009 MST, NCS
*/
function isValidInnerpage() {
    var ErrMsg = "";
    var PageTitle, strContents
    var Titlelabel = document.getElementById('labeltitle');
    var Content = document.getElementById('labelcontent');
    PageTitle = TrimAll(document.getElementById('PageTitle').value);
    strContents = TrimAll(document.getElementById('bodytext').value);

    if (PageTitle == "" && strContents == "") {
        ErrMsg += "Please complete all fields marked with *";
    }
    else {
        if (PageTitle == "") {
            ErrMsg += "* Title : field Required.<br />";

            Titlelabel.innerHTML = "<font color=#d30d0d>Title *</font>";
        } else {
            if (PageTitle.length <= pagetitletext_minlength) {
                ErrMsg += "* Title : minimum " + pagetitletext_minlength + " characters required.<br />";
                Titlelabel.innerHTML = "<font color=#d30d0d>Title *</font>";
            }
        }

        if (strContents == "") {
            ErrMsg += "* Main Content: field Required.<br />";
            Content.innerHTML = "<font color=#d30d0d>Main Content *</font>";
        } else {
            if (strContents.length <= bodytext_minlength) {
                ErrMsg += "* Main Content: minimum " + bodytext_minlength + " characters required.<br />";
                Content.innerHTML = "<font color=#d30d0d>Main Content *</font>";
            }
        }
    }
    return ErrMsg;
}



function ValidateForm(formname) {
    var errmsg = "";
    var postalcode_minlength = 6;
    var address_minlength = 4;
    var town_minlength = 4;
    var name_minlength = 2;
    var telephone_minlength = 6;

    var custnum_minlength = 4;
    var username_minlength = 8;
    var password_minlength = 8;
    var pwdreminder_minlength = 4;

    var urlprefix = "http://";

    switch (formname) {
        /* start: validation for Search Members form */ 
        case "search member":
            var firstname, surname, department, institution, postcode, country

            firstname = TrimAll(document.getElementById('firstname').value);
            surname = TrimAll(document.getElementById('surname').value);
            department = TrimAll(document.getElementById('department').value);
            institution = TrimAll(document.getElementById('institution').value);
            postcode = TrimAll(document.getElementById('postcode').value);
            country = TrimAll(document.getElementById('country').value);

            if (firstname == "" && surname == "" && department == "" && institution == "" && postcode == "" && (country == "" || country == "0")) {
                errmsg += "* Please enter the search criteria before proceeding with the search.";
            }
            //window.alert('err' + errmsg);
            break;
        default:
            break;
    }

    var x = document.getElementById('warning');
    x.innerHTML = errmsg;

    if (errmsg != "") {
        return false;
    }
    else {
        return true;
    }
}

function isValidMembership_PersonalDetails() {
    var errmsg = "";
    var title, firstname, surname, address, town, county, postalcode, country, telephone, fax, email, chkdeliveryadd, chkdeliveryaddstring
    var deliveryadd, deliverycity, deliverycounty, deliverypostalcode, deliverycountry

    title = TrimAll(document.getElementById('fldtitle').value);
    firstname = TrimAll(document.getElementById('fldfirstname').value);
    surname = TrimAll(document.getElementById('fldsurname').value);
    address = TrimAll(document.getElementById('fldaddress').value);
    town = TrimAll(document.getElementById('fldtown').value);
    county = TrimAll(document.getElementById('fldcounty').value);
    postalcode = TrimAll(document.getElementById('fldpostalcode').value);
    country = TrimAll(document.getElementById('fldcountry').value);
    telephone = TrimAll(document.getElementById('fldtelephone').value);
    fax = TrimAll(document.getElementById('fldfax').value);
    email = TrimAll(document.getElementById('fldemail').value);

    if (!document.getElementById('fldchkdeliveryadd').checked) {
        deliveryaddress = TrimAll(document.getElementById('flddeliveryadd').value);
        deliverycity = TrimAll(document.getElementById('flddeliverycity').value);
        deliverycounty = TrimAll(document.getElementById('flddeliverycounty').value);
        deliverycity = TrimAll(document.getElementById('flddeliverycity').value);
        deliverypostalcode = TrimAll(document.getElementById('flddeliverypostalcode').value);
        deliverycountry = document.getElementById('flddeliverycountry').value;
    }

    if (title == "") {
        errmsg = "* Title: field Required.<br />";
    }

    if (firstname == "") {
        errmsg += "* First Name: field Required.<br />";
    } else {
        // 27/03/2009 ASC, SCS WO087PESGB.WSS-SG030 - Removed alphanumeric validation on firstname and surname
        /*if (!isAlphaNumeric(firstname)) {
        errmsg += "* First Name: Special characters are not allowed.<br />";
        }*/
        if (firstname.length < name_minlength) {
            errmsg += "* First Name: minimum two characters required.<br />";
        }
    }

    if (surname == "") {
        errmsg += "* Surname: field Required.<br />";
    } else {
        // 27/03/2009 ASC, SCS WO087PESGB.WSS-SG030 - Removed alphanumeric validation on firstname and surname
        /*if (!isAlphaNumeric(surname)) {
        errmsg += "* Surname: Special characters are not allowed.<br />";
        }*/
        if (surname.length < name_minlength) {
            errmsg += "* Surname: minimum " + name_minlength + " characters required.<br />";
        }
    }

    if (address == "") {
        errmsg += "* Address: field Required.<br />";
    } else {
        if (!isAlphaNumeric(address)) {
            errmsg += "* Address: Special characters are not allowed.<br />";
        }
        if (address.length < address_minlength) {
            errmsg += "* Address: minimum " + address_minlength + " characters required.<br />";
        }
    }

    if (town == "") {
        errmsg += "* Town: field Required.<br />";
    } else {
        if (!isAlphaNumeric(town)) {
            errmsg += "* Town: Special characters are not allowed.<br />";
        }
        if (town.length < town_minlength) {
            errmsg += "* Town: minimum " + town_minlength + " characters required.<br />";
        }
    }

    if (county != "") {
        if (!isAlphaNumeric(county)) {
            errmsg += "* County: Special characters are not allowed.<br />";
        }
    }

    if (postalcode == "") {
        // 19/01/2010 TSL, NCS IM005262 - Make postal code field non-mandatory on PESGB
        //errmsg += "* Postal Code: field Required.<br />";
    } else {
        if (!isAlphaNumeric(postalcode)) {
            errmsg += "* Postal Code: Special characters are not allowed.<br />";
        }
        if (postalcode.length < postalcode_minlength) {
            errmsg += "* Postal Code: minimum " + postalcode_minlength + " characters required.<br />";
        }
    }

    if (country == "" || country == "0") {
        errmsg += "* Country: field Required.<br />";
    }

    if (telephone == "") {
        errmsg += "* Telephone: field Required.<br />";
    } else {
        if (!isInteger(telephone)) {
            errmsg += "* Telephone: only numeric are allowed.<br />";
        } else {
            if (telephone.length < telephone_minlength) {
                errmsg += "* Telephone: minimum " + telephone_minlength + " characters are required.<br />";
            }
        }
    }

    if (fax != "") {
        if (!isInteger(fax)) {
            errmsg += "* Fax: only numeric are allowed.<br />";
        }
        if (fax.length < telephone_minlength) {
            errmsg += "* Fax: minimum " + telephone_minlength + " characters are required.<br />";
        }
    }

    if (email == "") {
        errmsg += "* Email: field Required.<br />";
    } else {
        if (!isValidEmail(email) != "") {
            errmsg += "* Email: invalid email format.<br />";
        }
    }


    /* start: validate delivery address */
    if (!document.getElementById('fldchkdeliveryadd').checked) {

        if (deliveryaddress == "") {
            errmsg += "* Delivery Address: tick on Delivery Address if the same as above.<br />";
        } else {
            if (!isAlphaNumeric(deliveryaddress)) {
                errmsg += "* Delivery Address: Special characters are not allowed.<br />";
            }
            if (deliveryaddress.length < address_minlength) {
                errmsg += "* Delivery Address: minimum " + address_minlength + " characters required.<br />";
            }
        }

        if (deliverycity == "") {
            errmsg += "* Delivery City: tick on Delivery Address if the same as above.<br />";
        } else {
            if (!isAlphaNumeric(deliverycity)) {
                errmsg += "* Delivery City: Special characters are not allowed.<br />";
            }
            if (deliveryaddress.length < address_minlength) {
                errmsg += "* Delivery City: minimum " + city_minlength + " characters required.<br />";
            }
        }

        if (deliverypostalcode == "") {
            // 19/01/2010 TSL, NCS IM005262 - Make postal code field non-mandatory on PESGB
            //errmsg += "* Delivery Postal Code: tick on Delivery Address if the same as above.<br />";
        } else {
            if (!isAlphaNumeric(deliverypostalcode)) {
                errmsg += "* Delivery Postal Code: Special characters are not allowed.<br />";
            } else {
                if (deliverypostalcode.length < postalcode_minlength) {
                    errmsg += "* Delivery Postal Code: minimum " + postalcode_minlength + " characters required.<br />";
                }
            }
        }

        if (deliverycountry == "") {
            errmsg += "* Delivery Country: tick on Delivery Address if the same as above.<br />";
        }
    }

    return errmsg;
}

function isValidMembership_ProfessionalDetails() {
    var errmsg = "";
    var academic, currenttitle, institution, dateofappointment, nameofprofessor, emailofprofessor

    academic = TrimAll(document.getElementById('fldacademic').value);
    currenttitle = TrimAll(document.getElementById('fldcurrenttitle').value);
    institution = TrimAll(document.getElementById('fldinstitution').value);
    dateofappointment = TrimAll(document.getElementById('flddateappointment').value);
    nameofprofessor = TrimAll(document.getElementById('fldnameprof').value);
    emailofprofessor = TrimAll(document.getElementById('fldemailprof').value);

    if (academic != "") {
        if (!isAlphaNumeric(academic)) {
            errmsg = "* Academic Qualifications: Special characters are not allowed.<br />";
        }
    }

    if (currenttitle != "") {
        if (!isAlphaNumeric(currenttitle)) {
            errmsg += "* Current Title: Special characters are not allowed.<br />";
        }
    }

    if (institution != "") {
        if (!isAlphaNumeric(institution)) {
            errmsg += "* Name of Institution: Special characters are not allowed.<br />";
        }
    }

    if (dateofappointment != "" && dateofappointment != "dd/mm/yyyy") {
        if (!isDate(dateofappointment)) {
            errmsg += "* Date of Appointment: invalid date format.<br />";
        }
    }

    if (nameofprofessor != "") {
        if (!isAlphaNumeric(nameofprofessor)) {
            errmsg += "* Name of Professor: Special characters are not allowed.<br />";
        }
    }

    if (emailofprofessor != "") {
        if (!isValidEmail(emailofprofessor)) {
            errmsg += "* Email of Professor: invalid email format.<br />";
        }
    }

    return errmsg;
}


function isValidMembership_PaymentDetails() {
    var errmsg = "";
    var newmembership, renewmembership, renewstring, membershiptype, typeofcard, creditcardnum, expirydatemonth, expirydateyear, expirydate, nameofcardholder
    var billingadd, billingtown, billingcounty, billingpostalcode, billingcountry
    var CCVNumber


    if (document.getElementById('fldrenewmember') != null || document.getElementById('fldrenewmember') != undefined) {
        renewmembership = document.getElementById('fldrenewmember').checked;
    }

    if (document.getElementById('fldnewmember') != null || document.getElementById('fldnewmember') != undefined) {
        newmembership = document.getElementById('fldnewmember').checked;
    }

    membershiptype = document.getElementById('fldmembershiptype').value;

    /* start: payment details */
    typeofcard = document.getElementById('fldtypeofcard').value;
    creditcardnum = document.getElementById('fldcreditcardnum').value;
    expirydatemonth = document.getElementById('fldexpirydatemonth').value;
    expirydateyear = document.getElementById('fldexpirydateyear').value;
    nameofcardholder = TrimAll(document.getElementById('fldnameofcardholder').value);
    billingadd = TrimAll(document.getElementById('fldbillingadd').value);
    billingtown = TrimAll(document.getElementById('fldbillingtown').value);
    billingcounty = TrimAll(document.getElementById('fldbillingcounty').value);
    billingpostalcode = TrimAll(document.getElementById('fldbillingpostalcode').value);
    billingcountry = document.getElementById('fldbillingcountry').value;
    CCVNumber = document.getElementById('fldCCV').value;

    if ((!newmembership) && (!renewmembership)) {
        errmsg += "* Membership: select if New or Renew Membership.<br />";
    }

    if (membershiptype == "" || membershiptype == "0") {
        errmsg += "* Membership Type: field Required.<br />";
    }

    if (typeofcard == "" || typeofcard == "0") {
        errmsg += "* Type of Card: field Required.<br />";
    }

    /* validate credit card number */
    if (creditcardnum == "") {
        errmsg += "* Credit Card Number: field Required.<br />";
    } else {
        if (!isAlphaNumeric(creditcardnum)) {
            errmsg += "* Credit Card Number: Special characters are not allowed.<br />";
        }
        if (!isValidCreditCard(creditcardnum)) {
            errmsg += "* Credit Card Number: invalid format.<br />";
        }
    }


    //Added 11/June/2009 S.Lane - CCV Number.
    if (CCVNumber == "") {
        errmsg += "* Security code (CCV): field Required.<br />";
    }
    else {
        if (isNaN(CCVNumber)) {
            errmsg += "* Security code (CCV): Numeric Digits only.<br />";
        }
        else {
            if (CCVNumber.length < 3) {
                errmsg += "* Security code (CCV): Invalid length.<br />";
            }
            else {
                if (typeofcard == "3")  //amex
                {
                    if (CCVNumber.length != 4) {
                        errmsg += "* Security code (CCV): 'American Express' CCV must be 4 digits.<br />";
                    }
                }
                if (typeofcard == "1" || typeofcard == "2") {
                    if (CCVNumber.length != 3) {
                        errmsg += "* Security code (CCV): 'Visa' and 'Mastercard' CCV must be 3 digits.<br />";
                    }
                }
            }
        }
    }



    /* validate card expiry date */
    if (expirydatemonth != "0" && expirydateyear != "0") {
        var dtCurrent = new Date();
        if (FormatToDate("1/" + expirydatemonth + "/" + expirydateyear) < dtCurrent) {
            errmsg += "* Expiry Date : should not be equal or earlier than current date.<br />";
        }
    } else {
        errmsg += "* Expiry Date : field Required.<br />";
    }

    if (nameofcardholder == "") {
        errmsg += "* Name of Card Holder: field Required.<br />";
    } else {
        if (!isAlphaNumeric(nameofcardholder)) {
            errmsg += "* Name of Card Holder: Special characters are not allowed.<br />";
        }
        if (nameofcardholder.length < name_minlength) {
            errmsg += "* Name of Card Holder: minimum " + name_minlength + " charcters required.<br />";
        }
    }

    /* start: validate billing address if different from personal address */
    if (!document.getElementById('fldchkbillingadd').checked) {

        if (billingadd == "") {
            errmsg += "* Billing Address: field required if not the same as home address.<br />";
        } else {
            if (!isAlphaNumeric(billingadd)) {
                errmsg += "* Billing Address: Special characters are not allowed.<br />";
            }
            if (billingadd.length < address_minlength) {
                errmsg += "* Billing Address: minimum " + address_minlength + " characters required.<br />";
            }
        }

        if (billingtown == "") {
            errmsg += "* Billing Town: field required if not the same as home address.<br />";
        } else {
            if (!isAlphaNumeric(billingtown)) {
                errmsg += "* Billing Town: Special characters are not allowed.<br />";
            }
            if (billingtown.length < town_minlength) {
                errmsg += "* Billing Town: minimum " + town_minlength + " characters required.<br />";
            }
        }

        if (billingcounty != "") {
            if (!isAlphaNumeric(billingcounty)) {
                errmsg += "* Billing County: Special characters are not allowed.<br />";
            }
        }

        if (billingpostalcode == "") {
            // 19/01/2010 TSL, NCS IM005262 - Make postal code field non-mandatory on PESGB
            //errmsg += "* Billing Postal Code: field required if not the same as home address.<br />";
        } else {
            if (!isAlphaNumeric(billingpostalcode)) {
                errmsg += "* Billing Postal Code: Special characters are not allowed.<br />";
            }
            if (billingpostalcode.length < postalcode_minlength) {
                errmsg += "* Billing Postal Code: minimum " + postalcode_minlength + " characters required.<br />";
            }
        }

        if (billingcountry == "" || billingcountry == "0") {
            errmsg += "* Billing Country: field required if not the same as home address.<br />";
        }
    }

    return errmsg;
}


function isValidMembership_LoginDetails() {
    var errmsg = "";
    var fldcustnumb, fldusername, fldpassword, fldconfpassword, fldreminder
    var fldemail, fldmembdir, fldmembdir, fldmembdiryes, fldmembdirno
    var includeValidateIsOnline = false;

    if (document.getElementById('fldcustnumb') != null || document.getElementById('fldcustnumb') != undefined) {
        fldcustnumb = TrimAll(document.getElementById('fldcustnumb').value);
    }

    fldusername = TrimAll(document.getElementById('fldusername').value);
    fldpassword = TrimAll(document.getElementById('fldpassword').value);
    fldconfpassword = TrimAll(document.getElementById('fldconfpassword').value);
    fldreminder = TrimAll(document.getElementById('fldreminder').value);
    fldemail = TrimAll(document.getElementById('fldloginemail').value);

    if (document.getElementById('fldmembdiryes') != null && document.getElementById('fldmembdiryes') != undefined) {
        fldmembdiryes = document.getElementById('fldmembdiryes').checked;
        includeValidateIsOnline = true;
    }
    if (document.getElementById('fldmembdirno') != null && document.getElementById('fldmembdirno') != undefined) {
        fldmembdirno = document.getElementById('fldmembdirno').checked;
        includeValidateIsOnline = true;
    }

    if (document.getElementById('fldcustnumb') != null || document.getElementById('fldcustnumb') != undefined) {
        if (fldcustnumb == "") {
            errmsg = "* Ref/ Customer Number: field Required.<br />";
        } else {
            if (!isAlphaNumeric(fldcustnumb)) {
                errmsg = "* Ref/ Customer Number: Special characters are not allowed.<br />";
            }
            if (fldcustnumb.length < custnum_minlength) {
                errmsg += "* Ref/ Customer Number: minimum " + custnum_minlength + " characters required.<br />";
            }
        }
    }

    if (fldusername == "") {
        errmsg += "* Username: field Required.<br />";
    } else {
        if (!isAlphaNumeric(fldusername)) {
            /* check if username is email */
            if (!isValidEmail(fldusername)) {
                errmsg += "* Username: not a valid username.<br />";
            } else {
                if (fldusername.length < username_minlength) {
                    errmsg += "* Username: Sorry, but your username must be at least " + username_minlength + " characters long.<br />";
                }
            }
        } else {
            if (fldusername.length < username_minlength) {
                errmsg += "* Username: Sorry, but your username must be at least " + username_minlength + " characters long.<br />";
            }
        }
    }

    if (fldpassword == "") {
        errmsg += "* Password: field Required.<br />";
    } else {
        if (!isAlphaNumeric(fldpassword)) {
            errmsg += "* Password: Special characters are not allowed.<br />";
        }
        if (fldpassword.length < password_minlength) {
            errmsg += "* Password: Sorry, but your password must be at least " + password_minlength + " characters long.<br />";
        }
    }

    if (fldconfpassword == "") {
        errmsg += "* Confirm Password: field Required.<br />";
    } else {
        if (!isAlphaNumeric(fldconfpassword)) {
            errmsg += "* Confirm Password: Special characters are not allowed.<br />";
        }
        if (fldconfpassword.length < password_minlength) {
            errmsg += "* Confirm Password: Sorry, but your password must be at least " + password_minlength + " characters long.<br />";
        }
    }

    if (fldconfpassword != "" && fldconfpassword != "") {
        if (fldpassword.length >= password_minlength && fldconfpassword.length >= password_minlength) {
            if (fldpassword != fldconfpassword) {
                errmsg += "* Password: Sorry, but your passwords do not match. Please try again.<br />";
            }
        }
    }

    if (fldreminder == "") {
        errmsg += "* Password Reminder: field Required.<br />";
    } else {
        if (!isAlphaNumeric(fldreminder)) {
            errmsg += "* Confirm Password: Special characters are not allowed.<br />";
        }
        if (fldreminder.length < pwdreminder_minlength) {
            errmsg += "* Password Reminder: Sorry, but your password reminder must be at least " + pwdreminder_minlength + " characters long.<br />";
        }
    }

    if (fldemail == "") {
        errmsg += "* Email Address: field Required.<br />";
    } else {
        if (!isValidEmail(fldemail) != "") {
            errmsg += "* Email Address: Sorry, but there seems to be an error in your email address. Please check to ensure it is correct.<br />";

        }
    }

    if (includeValidateIsOnline) {
        if ((!fldmembdiryes) && (!fldmembdirno)) {
            errmsg += "* Personal Details to shown in Membership Directory: field Required.<br />";
        }
    }

    return errmsg;

}


function isValidMembership_OtherDetails() {
    var errmsg = ""
    var biographicaldetails, blogaddress, externalprofile, latestpublications, locationinuk, specialistsubject, availabilityinukstart
    var availabilityinukend, fldmembdir, fldmembdiryes, fldmembdirno, branchsecretary, executivemember

    biographicaldetails = TrimAll(document.getElementById('fldbiographicaldetails').value);
    blogaddress = TrimAll(document.getElementById('fldblogaddress').value);
    externalprofile = TrimAll(document.getElementById('fldexternalprofile').value);
    latestpublications = TrimAll(document.getElementById('fldlatestpublications').value);
    locationinuk = TrimAll(document.getElementById('fldlocationinuk').value);
    specialistsubject = TrimAll(document.getElementById('fldspecialistsubject').value);
    availabilityinukstart = TrimAll(document.getElementById('fldavailabilityinukstart').value);
    availabilityinukend = TrimAll(document.getElementById('fldavailabilityinukend').value);

    fldmembdiryes = document.getElementById('fldmembdiryes').checked;
    fldmembdirno = document.getElementById('fldmembdirno').checked;

    branchsecretary = ""
    executivemember = ""

    /* 02/06/2009 	ASC, NCS 	WO087PESGB.Phase2 - Removed alphanumeric validation for bio details
    if (biographicaldetails != "") {
    if (!isAlphaNumeric(biographicaldetails)) {
    errmsg += "* Biographical Details: Special characters are not allowed.<br />";
    }
    }
    */
    if (blogaddress != "" && blogaddress != urlprefix) {
        if (!isValidURL(blogaddress)) {
            errmsg += "* Blog Address: not a valid URL format.<br />";
        }
    }

    if (externalprofile != "" && externalprofile != urlprefix) {
        if (!isValidURL(externalprofile)) {
            errmsg += "* External Profile: not a valid URL format.<br />";
        }
    }

    if (latestpublications != "") {
        if (!isAlphaNumeric(latestpublications)) {
            errmsg += "* Latest Publications: Special characters are not allowed.<br />";
        }
    }

    if (locationinuk != "") {
        if (!isAlphaNumeric(locationinuk)) {
            errmsg += "* Main Locaion in UK: Special characters are not allowed.<br />";
        }
    }

    if (specialistsubject != "") {
        if (!isAlphaNumeric(specialistsubject)) {
            errmsg += "* Special Subject: Special characters are not allowed.<br />";
        }
    }

    if (availabilityinukstart != "" && availabilityinukstart != "dd/mm/yyyy") {
        if (!isDate(availabilityinukstart)) {
            errmsg += "* Availability to present papers in the UK (From): not a valid date format.<br />";
        }
    }

    if (availabilityinukend != "" && availabilityinukend != "dd/mm/yyyy") {
        if (!isDate(availabilityinukend)) {
            errmsg += "* Availability to present papers in the UK (To): not a valid date format.<br />";
        }
    }

    // check date range
    if (isDate(availabilityinukstart) && isDate(availabilityinukend)) {
        if (FormatToDate(availabilityinukstart) > FormatToDate(availabilityinukend)) {
            errmsg += "* Availability to present papers in the UK: Start date should be earlier than To date.<br />";
        }
    }

    if ((!fldmembdiryes) && (!fldmembdirno)) {
        errmsg += "* Personal Details to shown in Membership Directory: field Required.<br />";
    }

    return errmsg;
}

function ValidateMembershipForm(formname) {
    var errmsg = "";

    var valid_page = true;

    switch (formname) {

        /* start: validation for Membership form */ 
        case "membershipform":

            /* start: validate personal details */
            errmsg = isValidMembership_PersonalDetails();

            if (errmsg != "") {
                var x = document.getElementById('warning_personaldetails');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning_personaldetails');
                x.innerHTML = ""
            }
            errmsg = "";
            /* end: validate personal details */

            /* start: validate professional details */
            errmsg = isValidMembership_ProfessionalDetails();

            if (errmsg != "") {
                var x = document.getElementById('warning_professionaldetails');
                x.innerHTML = errmsg;
                valid_page = false;
                document.getElementById("extrasummary2").style.display = 'inline';
            } else {
                var x = document.getElementById('warning_professionaldetails');
                x.innerHTML = ""
            }

            errmsg = "";
            /* end: validate professional details */

            /* start: validate payment details */
            errmsg = isValidMembership_PaymentDetails();
            if (errmsg != "") {
                var x = document.getElementById('warning_paymentdetails');
                x.innerHTML = errmsg;
                valid_page = false;
                document.getElementById("extrasummary3").style.display = 'inline';
            } else {
                var x = document.getElementById('warning_paymentdetails');
                x.innerHTML = ""
            }
            /* end: validate payment details */

            break;

        /* start: validation for Registration */ 
        case "memberregistration":

            errmsg = isValidMembership_LoginDetails();
            if (errmsg != "") {
                var x = document.getElementById('warning');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning');
                x.innerHTML = ""
            }

            break;
        /* end: validation for Registration */ 

        case "amendprofile":
            /* start: validate personal details */
            errmsg = isValidMembership_PersonalDetails();

            if (errmsg != "") {
                var x = document.getElementById('warning_personaldetails');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning_personaldetails');
                x.innerHTML = ""
            }
            errmsg = "";
            /* end: validate personal details */

            /* start: validate professional details */
            errmsg = isValidMembership_ProfessionalDetails();
            if (errmsg != "") {
                var x = document.getElementById('warning_professionaldetails');
                x.innerHTML = errmsg;
                valid_page = false;
                document.getElementById("extrasummary2").style.display = 'inline';
            } else {
                var x = document.getElementById('warning_professionaldetails');
                x.innerHTML = ""
            }

            errmsg = "";
            /* end: validate professional details */

            /* start: validate login details */
            errmsg = isValidMembership_LoginDetails();
            if (errmsg != "") {
                var x = document.getElementById('warning_login');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning_login');
                x.innerHTML = ""
            }
            /* start: validate login details */

            /* start: validate other details  */
            errmsg = isValidMembership_OtherDetails();
            if (errmsg != "") {
                var x = document.getElementById('warning_otherdetails');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning_otherdetails');
                x.innerHTML = ""
            }
            /* end: validate other details  */

            break;

        case "managemember":
            /* start: validate personal details */
            errmsg = isValidMembership_PersonalDetails();

            if (errmsg != "") {
                var x = document.getElementById('warning_personaldetails');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning_personaldetails');
                x.innerHTML = ""
            }
            errmsg = "";
            /* end: validate personal details */

            /* start: validate professional details */
            errmsg = isValidMembership_ProfessionalDetails();
            if (errmsg != "") {
                var x = document.getElementById('warning_professionaldetails');
                x.innerHTML = errmsg;
                valid_page = false;
                document.getElementById("extrasummary2").style.display = 'inline';
            } else {
                var x = document.getElementById('warning_professionaldetails');
                x.innerHTML = ""
            }

            errmsg = "";
            /* end: validate professional details */

            /* start: validate login details */
            errmsg = isValidMembership_LoginDetails();
            if (errmsg != "") {
                var x = document.getElementById('warning_login');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning_login');
                x.innerHTML = ""
            }
            /* end: validate login details */

            /* start: validate other details */
            errmsg = "";
            errmsg = isValidMembership_OtherDetails();
            if (errmsg != "") {
                var x = document.getElementById('warning_otherdetails');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning_otherdetails');
                x.innerHTML = ""
            }
            /* end: validate other details */
            break;
        /*MST 14/04/2009 for validation for modify home page start*/ 
        case "modifyhomepage":

            errmsg = isValidHomepage();
            if (errmsg != "") {
                var x = document.getElementById('warning');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning');
                x.innerHTML = ""
            }

            break;
        /*MST 14/04/2009 for validation for modify home page end*/ 
        /*MST 14/04/2009 for validation for modify inner page start*/ 
        case "modifyinnerpage":

            errmsg = isValidInnerpage();
            if (errmsg != "") {
                var x = document.getElementById('warning');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning');
                x.innerHTML = ""
            }

            break;
        /*MST 14/04/2009 for validation for modify inner page end*/ 
        /*MST 14/04/2009 for validation for modify inner page start*/ 
        case "manageadmin":

            errmsg = isValid_Admindetails();
            if (errmsg != "") {
                var x = document.getElementById('warning');
                x.innerHTML = errmsg;
                valid_page = false;
            } else {
                var x = document.getElementById('warning');
                x.innerHTML = ""
            }

            break;
        /*MST 14/04/2009 for validation for modify inner page end*/ 

        default:
            break;
    }

    return valid_page;
}

/* ----------------- */

/*--------------------------------------*/
/*
'PESG JAVSCRIPT VALIDATION FUNCTION FOR Add Administrator 
' 16/04/2009 MST, NCS
*/
function isValid_Admindetails() {
    var ErrMsg = "";
    var strFirstname, strSurname, strEmail, strUsername, strPassword
    var fname = document.getElementById('fname');
    var sname = document.getElementById('sname');
    var email = document.getElementById('email');
    var uname = document.getElementById('uname');
    var pword = document.getElementById('pword');

    strFirstname = TrimAll(document.getElementById('fldfirstname').value);
    strSurname = TrimAll(document.getElementById('fldsurname').value);
    strEmail = TrimAll(document.getElementById('fldemail').value);
    strUsername = TrimAll(document.getElementById('fldusername').value);
    strPassword = TrimAll(document.getElementById('fldpassword').value);

    if (strFirstname == "" && strSurname == "" && strEmail == "" && strUsername == "" && strPassword == "") {
        ErrMsg += "Please complete all fields marked with *";
        fname.innerHTML = "<font color=#d30d0d>Firstname *</font>";
        sname.innerHTML = "<font color=#d30d0d>Surname *</font>";
        email.innerHTML = "<font color=#d30d0d>Email *</font>";
        uname.innerHTML = "<font color=#d30d0d>Username *</font>";
        pword.innerHTML = "<font color=#d30d0d>Password *</font>";

    }
    else {
        if (strFirstname == "") {
            ErrMsg += "* Firstname : field Required.<br />";
            fname.innerHTML = "<font color=#d30d0d>Firstname *</font>";
        }
        else {
            if (strFirstname.length > admin_firstname_maxlength) {
                ErrMsg += "* Firstname : maximum " + admin_firstname_maxlength + " characters allowed.<br />";
                fname.innerHTML = "<font color=#d30d0d>Firstname *</font>";
            }
            else {
                fname.innerHTML = "Firstname *";
            }
        }

        if (strSurname == "") {
            ErrMsg += "* Surname : field Required.<br />";
            sname.innerHTML = "<font color=#d30d0d>Surname *</font>";
        }
        else {
            if (strSurname.length > admin_surname_maxlength) {
                ErrMsg += "* Surname : maximum " + admin_surname_maxlength + " characters allowed.<br />";
                sname.innerHTML = "<font color=#d30d0d>Surname *</font>";
            }
            else {
                sname.innerHTML = "Surname *";
            }

        }

        if (strEmail == "") {
            ErrMsg += "* Email : field Required.<br />";
            email.innerHTML = "<font color=#d30d0d>Email *</font>";
        } else {
            if (!isValidEmail(strEmail) != "") {
                ErrMsg += "* Email: invalid email format.<br />";
                email.innerHTML = "<font color=#d30d0d>Email *</font>";
            }
            else {
                email.innerHTML = "Email *";
            }

        }

        if (strUsername == "") {
            ErrMsg += "* Username : field Required.<br />";
            uname.innerHTML = "<font color=#d30d0d>Username *</font>";
        } else {
            if (strUsername.length < admin_username_minlength) {
                ErrMsg += "* Username : minimum " + admin_username_minlength + " characters required.<br />";
                uname.innerHTML = "<font color=#d30d0d>Username *</font>";
            }
            else {
                uname.innerHTML = "Username *";
            }

        }

        if (strPassword == "") {
            ErrMsg += "* Password : field Required.<br />";
            pword.innerHTML = "<font color=#d30d0d>Password *</font>";
        } else {
            if (strPassword.length < admin_password_minlength) {
                ErrMsg += "* Password : minimum " + admin_password_minlength + " characters required.<br />";
                pword.innerHTML = "<font color=#d30d0d>Password *</font>";
            }
            else {
                pword.innerHTML = "Password *";
            }

        }

    }
    return ErrMsg;
}
/*--------------------------------------*/

/**
* DHTML date validation script for dd/mm/yyyy. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
*/
// Declaring valid date character, minimum year and maximum year
var dtCh = "/";
var minYear = 1900;
var maxYear = 2100;

function isInteger(s) {
    var i;
    for (i = 0; i < s.length; i++) {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

/* 	format to date
parameter: dd/mm/yyyy
output: date object
*/
function FormatToDate(dtStr) {
    var daysInMonth = DaysArray(12)
    var pos1 = dtStr.indexOf(dtCh)
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
    var strDay = dtStr.substring(0, pos1)
    var strMonth = dtStr.substring(pos1 + 1, pos2)
    var strYear = dtStr.substring(pos2 + 1)

    strYr = strYear

    if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
    if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)
    }

    month = parseInt(strMonth) - 1 /**/
    day = parseInt(strDay)
    year = parseInt(strYr)

    var myDate = new Date();
    myDate.setFullYear(year, month, day);
    return myDate;
}

function stripCharsInBag(s, bag) {
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}


function validateInteger(strValue) {
    var objRegExp = /(^-?\d\d*$)/;

    //check for integer characters
    return objRegExp.test(strValue);
}


function daysInFebruary(year) {
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function DaysArray(n) {
    for (var i = 1; i <= n; i++) {
        this[i] = 31
        if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
        if (i == 2) { this[i] = 29 }
    }
    return this
}
function isDate(dtStr) {
    var daysInMonth = DaysArray(12)
    var pos1 = dtStr.indexOf(dtCh)
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
    var strDay = dtStr.substring(0, pos1)
    var strMonth = dtStr.substring(pos1 + 1, pos2)
    var strYear = dtStr.substring(pos2 + 1)
    strYr = strYear
    if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
    if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)
    }
    month = parseInt(strMonth)
    day = parseInt(strDay)
    year = parseInt(strYr)

    if (pos1 == -1 || pos2 == -1) {
        return false
    }
    if (strMonth.length < 1 || month < 1 || month > 12) {
        return false
    }
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
        return false
    }
    if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
        return false
    }
    if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
        return false
    }
    return true
}
function TrimAll(sString) {
    while (sString.substring(0, 1) == ' ') {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length - 1, sString.length) == ' ') {
        sString = sString.substring(0, sString.length - 1);
    }
    return sString;
}

function ValidateEmailAddress(strEmail) {
    var error = "";
    if (strEmail == "") {
        error = "You didn't enter an email address.\n";
    }

    var emailFilter = /^.+@.+\..{2,3}$/;
    if (!(emailFilter.test(strEmail))) {
        error = "Please enter a valid email address.\n";
    }
    else {
        //test email for illegal characters
        var illegalChars = /[\(\)\<\>\,\;\:\\\"\[\]]/
        if (strEmail.match(illegalChars)) {
            error = "The email address contains illegal characters.\n";
        }
    }
    return error;
}

function isValidCreditCard(strnumber) {
    var pattern = /^((4\d{3})|(5[1-5]\d{2})|(6011)|(3[68]\d{2})|(30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$/;
    return pattern.test(strnumber);
}

function isAlphaNumeric(str) {
    var pattern = /^([a-zA-Z0-9_\s-]+)$/;
    return pattern.test(str);
}

function isValidEmail(txt_email) {
    var emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return emailFilter.test(txt_email);
}

function isValidURL(txt_url) {
    var urlFilter = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
    return urlFilter.test(txt_url);
}


function setDeliveryAddress() {
    if (document.getElementById('fldchkdeliveryadd').checked) {
        document.getElementById('flddeliveryadd').disabled = true;
        document.getElementById('flddeliverycity').disabled = true;
        document.getElementById('flddeliverycounty').disabled = true;
        document.getElementById('flddeliverypostalcode').disabled = true;
        document.getElementById('flddeliverycountry').disabled = true;

        document.getElementById('flddeliveryadd').value = document.getElementById('fldaddress').value;
        document.getElementById('flddeliverycity').value = document.getElementById('fldtown').value;
        document.getElementById('flddeliverycounty').value = document.getElementById('fldcounty').value;
        document.getElementById('flddeliverypostalcode').value = document.getElementById('fldpostalcode').value;
        document.getElementById('flddeliverycountry').value = document.getElementById('fldcountry').value;

    } else {
        document.getElementById('flddeliveryadd').disabled = false;
        document.getElementById('flddeliverycity').disabled = false;
        document.getElementById('flddeliverycounty').disabled = false;
        document.getElementById('flddeliverypostalcode').disabled = false;
        document.getElementById('flddeliverycountry').disabled = false;
    }
}

function setBillingAddress() {
    if (document.getElementById('fldchkbillingadd').checked) {
        document.getElementById('fldbillingadd').disabled = true;
        document.getElementById('fldbillingtown').disabled = true;
        document.getElementById('fldbillingcounty').disabled = true;
        document.getElementById('fldbillingpostalcode').disabled = true;
        document.getElementById('fldbillingcountry').disabled = true;

        document.getElementById('fldbillingadd').value = document.getElementById('fldaddress').value;
        document.getElementById('fldbillingtown').value = document.getElementById('fldtown').value;
        document.getElementById('fldbillingcounty').value = document.getElementById('fldcounty').value;
        document.getElementById('fldbillingpostalcode').value = document.getElementById('fldpostalcode').value;
        document.getElementById('fldbillingcountry').value = document.getElementById('fldcountry').value;

    } else {
        document.getElementById('fldbillingadd').disabled = false;
        document.getElementById('fldbillingtown').disabled = false;
        document.getElementById('fldbillingcounty').disabled = false;
        document.getElementById('fldbillingpostalcode').disabled = false;
        document.getElementById('fldbillingcountry').disabled = false;
    }
}

