﻿
var reg2InvalidationPath = "";
var reg2Xml;
var reg2UseCaptcha = false;

function reg2IsEmail(bitWise) {
    return ((bitWise & 1) == 1);
}

function reg2IsName_SplitBox(bitWise) {
    return ((bitWise & 2) == 2);
}

function reg2IsName_OneBox(bitWise) {
    return ((bitWise & 4) == 4);
}

function reg2IsPassword(bitWise) {
    return ((bitWise & 8) == 8);
}

function reg2IsAddress_Full(bitWise) {
    return ((bitWise & 16) == 16);
}

function reg2IsAddress_PostcodeOnly(bitWise) {
    return ((bitWise & 32) == 32);
}

function reg2IsPhone_All(bitWise) {
    return ((bitWise & 64) == 64);
}

function reg2IsPhone_Day(bitWise) {
    return ((bitWise & 128) == 128);
}

function reg2IsPhone_Evening(bitWise) {
    return ((bitWise & 256) == 256);
}

function reg2IsPhone_Mobile(bitWise) {
    return ((bitWise & 512) == 512);
}

function reg2IsPhone_SingleSpecial(bitWise) {
    return ((bitWise & 1024) == 1024);
}

function reg2IsMessage(bitWise) {
    return ((bitWise & 2048) == 2048);
}

function reg2IsDOB(bitWise) {
    return ((bitWise & 4096) == 4096);
}

function reg2IsBudgetMin(bitWise) {
    return ((bitWise & 8192) == 8192);
}

function reg2IsBudgetMax(bitWise) {
    return ((bitWise & 16384) == 16384);
}

var RegHasBack = false;
var RegQuestions = [];
var RegIsOnBackForm = false;



function reg2ValidateWholePage(bitWise,title,message) {
    var RegIsValid = true;
    var err = "";
    var errbool;

    if (RegQuestions) {
        if (RegQuestions.length > 0) {
            for (var num = 0; num < RegQuestions.length; num++) {
                err = reg2ValidateQuestion(RegQuestions[num]);
                if (err.length > 0) {
                    RegIsValid = false;
                    alert('regquestions invalid!');
                }
            }
        }
    }

    if (reg2UseCaptcha) {
        reg2ValidateCaptcha(bitWise,title,message,RegIsValid,err,errbool);
    }else{
        reg2ValidateWholePagePart2(bitWise,title,message,RegIsValid,err,errbool);
    }
    
    
    
    

    

    //return RegIsValid;//not really needed any more
}

function reg2ValidateWholePagePart2(bitWise, title, message, RegIsValid, err, errbool) {


    if(reg2UseCaptcha){
        if(reg2ValidateCaptchaErr.length>0){
            RegIsValid = false;
        }
    }

    errbool = reg2ValidateLine(bitWise);

    if (!errbool) {
        RegIsValid = false;
    }

    if (!RegIsValid) {
        reg2NotifyInvalidation();
        MsgBox(title, "There are errors and/or missing items on the form. Please identify and correct these before clicking on \'Submit\'", MsgBoxOK(), null);
    } else if (RegIsValid) {
        if (RegHasBack && !RegIsOnBackForm) {
            MsgBox(title, message, MsgBoxYes() + MsgBoxNo(), reg2ShowBackForm)
        } else if (!RegHasBack && !RegIsOnBackForm) {
            reg2ShowBackForm(MsgBoxNo());
        } else if (RegIsOnBackForm) {
            reg2ShowBackForm(MsgBoxYes);
        }
    }
}

function reg2ValidateQuestion(questionName) {

    var field = document.getElementById(questionName);
    var required = false;
    var err = "";

    if (!field) {
        required = true;
        field = document.getElementById(questionName + 'r');
    }

    if (!field) {
        err = "";

    } else if (!required) {
        err = "";

    } else if (field.type == "checkbox") {
        err = "";

    } else {
        switch (field.tagName.toLowerCase()) {
            case 'input':
                switch (field.type.toLowerCase()) {
                    case 'checkbox':
                        err = "";
                        break;
                    case 'text':
                        if (trim(field.value).length == 0)
                            err = "This field is required";
                        break;
                    case 'hidden':
                        err = "";
                        break;
                }
                break;
            case 'textarea':
                if (trim(field.value).length == 0)
                    err = "This field is required";
                break;
            case 'select':
                if(trim(field.value).length==0 || trim(field.value)=="14")
                err = "This field is required"; //csv, hopefully
                break;
        }
    }

    if (trim(err).length == 0) {
        reg2FlagLineValid(new Array(questionName));
    } else {
        reg2FlagLineInvalid(err,new Array(questionName));
    }

    return err;
}

var reg2ValidateCaptchaErr = "";
function reg2ValidateCaptcha(bitWise,title,message,RegIsValid,errr,errbool) {
    
    //var err = "";

    //err = 'The letters do not match, please try again';

    var entered = document.getElementById("captchaentered");

    var key = document.getElementById("captchakey");

    if (!entered || !key) {//something went wrong, so validate server-side
        reg2ValidateCaptchaErr = "";
        reg2ValidateWholePagePart2(bitWise, title, message, RegIsValid, errr, errbool);
        return
    }

    var url = "/xmldata/captchacheck.aspx?captchaentered=" + urlencode(entered.value) + "&captchakey=" + key.value;

    var g = new XmlGetter(url, function(getter) { ref2ValidateCaptchaPended(getter, bitWise, title, message, RegIsValid, errr, errbool); });

    
}



function urlencode(str) {
    return escape(str).replace('+', '%2B').replace('%20', '+').replace('*', '%2A').replace('/', '%2F').replace('@', '%40');
}

function ref2ValidateCaptchaPended(getter, bitWise, title, message, RegIsValid, errr, errbool) {



    //code here to capture new values presented by xmlgetter


    var err = getter.getKey('captcha/error');

    var key = getter.getKey('captcha/key');
    var img = getter.getKey('captcha/image');

    var ctlentered = document.getElementById("captchaentered");
    var ctlkey = document.getElementById("captchakey");
    var ctlimg = document.getElementById("captchaimage");

    if (!ctlentered || !ctlkey || !ctlimg) {
        reg2ValidateCaptchaErr = '';
        reg2ValidateWholePagePart2(bitWise, title, message, RegIsValid, errr, errbool);
        return;
    }
    

    //code here if err!="", to change the captcha image, hidden key and blank the input box


    reg2ValidateCaptchaErr = err;

    if (trim(err).length == 0) {
        reg2FlagLineValid(new Array('reg2Captcha'));
    } else {
        ctlentered.value = '';
        ctlkey.value = key;
        ctlimg.src = img;

        reg2FlagLineInvalid(err, new Array('reg2Captcha'));
    }

    reg2ValidateWholePagePart2(bitWise, title, message, RegIsValid, errr, errbool);
}

function reg2ValidateLine(bitWise) {

    var err = "";
    var valid = true

    if (reg2IsEmail(bitWise)) {
        err = reg2EmailIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('email'));
        } else {
            reg2FlagLineInvalid(err, new Array('email'));
            valid = false;
        }
    }

    if (reg2IsName_SplitBox(bitWise)) {
        err = reg2Name_SplitBoxIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('Name_SplitBox'));
        } else {
            reg2FlagLineInvalid(err, new Array('Name_SplitBox'));
            valid = false;
        }
    }

    if (reg2IsName_OneBox(bitWise)) {
        err = reg2Name_OneBoxIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('Name_OneBox'));
        } else {
            reg2FlagLineInvalid(err, new Array('Name_OneBox'));
            valid = false;
        }
    }

    if (reg2IsPassword(bitWise)) {
        err = reg2PasswordIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('Password1'));
        } else {
            reg2FlagLineInvalid(err, new Array('Password1'));
            valid = false;
        }
    }

    if (reg2IsAddress_Full(bitWise)) {
        err = reg2Address_FullIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('Address_Full'));
        } else {
            reg2FlagLineInvalid(err, new Array('Address_Full'));
            valid = false;
        }
    }

    if (reg2IsAddress_PostcodeOnly(bitWise)) {
        err = reg2Address_PostcodeOnlyIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('postcode'));
        } else {
            reg2FlagLineInvalid(err, new Array('postcode'));
            valid = false;
        }
    }

    if (reg2IsPhone_All(bitWise)) {
        err = reg2Phone_AllIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('Phone_All'));
        } else {
            reg2FlagLineInvalid(err, new Array('Phone_All'));
            valid = false;
        }
    }

    if (reg2IsPhone_Day(bitWise)) {
        err = reg2Phone_DayIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('dayphone'));
        } else {
            reg2FlagLineInvalid(err, new Array('dayphone'));
            valid = false;
        }
    }

    if (reg2IsPhone_Evening(bitWise)) {
        err = reg2Phone_EveningIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('eveningphone'));
        } else {
            reg2FlagLineInvalid(err, new Array('eveningphone'));
            valid = false;
        }
    }

    if (reg2IsPhone_Mobile(bitWise)) {
        err = reg2Phone_MobileIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('mobilephone'));
        } else {
            reg2FlagLineInvalid(err, new Array('mobilephone'));
            valid = false;
        }
    }

    if (reg2IsPhone_SingleSpecial(bitWise)) {
        err = reg2Phone_SingleSpecialIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('specialphone'));
        } else {
            reg2FlagLineInvalid(err, new Array('specialphone'));
            valid = false;
        }
    }

    if (reg2IsMessage(bitWise)) {
        err = reg2MessageIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('message'));
        } else {
            reg2FlagLineInvalid(err, new Array('message'));
            valid = false;
        }
    }

    if (reg2IsDOB(bitWise)) {
        err = reg2DOBIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('DOB'));
        } else {
            reg2FlagLineInvalid(err, new Array('DOB'));
            valid = false;
        }
    }

    if (reg2IsBudgetMin(bitWise)) {
        err = reg2BudgetMinIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('budgetmin'));
        } else {
            reg2FlagLineInvalid(err, new Array('budgetmin'));
            valid = false;
        }
    }

    if (reg2IsBudgetMax(bitWise)) {
        err = reg2BudgetMaxIsValid();
        if (err.length == 0) {
            reg2FlagLineValid(new Array('budgetmax'));
        } else {
            reg2FlagLineInvalid(err, new Array('budgetmax'));
            valid = false;
        }
    }

    return valid;
}

function reg2DOBIsValid() {
    var required = false;

    var dobDay = document.getElementById("dob_day");
    if (!dobDay) {
        required = true;
        dobDay = document.getElementById("dob_dayr");
    }

    var dobMonth = document.getElementById("dob_month");
    if (!dobMonth) {
        required = true;
        dobMonth = document.getElementById("dob_monthr");
    }

    var dobYear = document.getElementById("dob_year");
    if (!dobYear) {
        required = true;
        dobYear = document.getElementById("dob_yearr");
    }


    if (required) {
        if (dobDay.value == "0" || dobMonth.value == "0" || dobYear.value == "0")
            return "Date of birth is required";
    }

    if (dobDay.value == "0" && dobMonth.value == "0" && dobYear.value == "0")
        return "";

    switch ("0") {
        case dobDay.value:
            return "Day of month cannot be left blank";
            break;
        case dobMonth.value:
            return "Month is a required field";
            break;
        case dobYear.value:
            return "Year is a required field";
            break;
    }

    if (!isDate(dobMonth.value + '/' + dobDay.value + '/' + dobYear.value))
        return "Invalid date entered";


    return "";
}

function reg2BudgetMinIsValid() {
    var required = false;

    var field = document.getElementById("budgetmin");
    if (!field) {
        required = true;
        field = document.getElementById("budgetminr");
    }

    if (required) {
        if (trim(field.value).length == 0) {
            return "Minimum budget is a required field";
        }
    }


    if (trim(field.value).length == 0)
        return "";

    if (!reg2IsNumeric(trim(field.value)))
        return "Invalid budget entered - please enter a numeric value";

    if (trim(field.value).length > 8)
        return "Invalid budget entered - please enter a feasible amount!"
    
    return "";

}

function reg2BudgetMaxIsValid() {
    var required = false;

    var field = document.getElementById("budgetmax");
    if (!field) {
        required = true;
        field = document.getElementById("budgetmaxr");
    }

    if (required) {
        if (trim(field.value).length == 0) {
            return "Minimum budget is a required field";
        }
    }


    if (trim(field.value).length == 0)
        return "";

    if (!reg2IsNumeric(trim(field.value)))
        return "Invalid budget entered - please enter a numeric value";
        
    if (trim(field.value).length > 8)
        return "Invalid budget entered - please enter a feasible amount!"

    return "";
}

function reg2EmailIsValid() {
    var required = false;

    var field = document.getElementById("email1");
    if (!field) {
        required = true;
        field = document.getElementById("email1r");
    }

    var field2 = document.getElementById("email2");
    if (!field2) {
        field2 = document.getElementById("email2r");
    }

    if (field == document.activeElement) {
        //alert(1);
        return "";
    }

    if (field2 == document.activeElement) {
        //alert(2);
        return "";
    }
    //both emails match
    if (trim(field.value) != trim(field2.value))
        return "Email addresses do not match";

    if (required) {
        //field is filled in
        if (trim(field.value).length == 0)
            return "Email address is a required field";
    }

    if (trim(field.value).length == 0)
        return "Email address cannot be left blank";

    //email is in correct format
    //var re = new RegExp("^[\w\.\-_]+@[\w\.\-_]+(\.{1}[\w\-_]+)*\.{1}[\w]{2,5}$");
    var re = new RegExp("^[\\w\\.\\-_]+@[\\w\\.\\-_]+(\\.{1}[\\w\-_]+)*\\.{1}[\\w]{2,5}$");
    var match = re.exec(trim(field.value));

    if (!match)
        return "Email address is not in a valid format";

    //valid!
    return "";
}

function reg2Name_OneBoxIsValid() {
    var required = false;

    var field = document.getElementById("Name_OneBox");
    if (!field) {
        required = true;
        field = document.getElementById("Name_OneBoxr");
    }

    if (required) {
        if (trim(field.value).length == 0)
            return "Name is a required field";
    }
        

    if (trim(field.value).length == 0)
        return "Name cannot be left blank";//I guess some things are ALWAYS required...

    return "";
}

function reg2Phone_DayIsValid() {
    reg2Phone_DayIsValid(true);
}

function reg2Phone_DayIsValid(considerRequired) {
    if (considerRequired == null)
        considerRequired = true;
    var required = false;

    var field = document.getElementById("dayphone");
    if (!field) {
        required = true;
        field = document.getElementById("dayphoner");
    }

    if (!considerRequired)
        required = false;
        
        
    if (trim(field.value).length > 0) {
        if (!IsValidTelNo(field.value)) {
            return "Daytime Phone number is in an invalid format, please use only numerics,<br /><br /> or starting with '+' if including a country code";
        } else if (!TelNoIsLongEnough(field.value)) {
            return "Daytime Phone number isn't long enough";
       }
    }

    if (required) {
        if (trim(field.value).length == 0)
            return "Daytime Phone is a required field";
    }

    return "";
}

function IsValidTelNo(telno) {
            if (trim(telno).length == 0 )
                return true;//zero-length validated above this function

            //remove all whitespaces
            telno = telno.replace("\n", "").replace("\r", "").replace("\t", "").replace(" ", "");

            telno = trim(telno);

            if (telno.length == 0) 
                return true;

            //check for acceptable first character
            var alpha = "+0123456789";

            if (alpha.indexOf(telno.substr(0, 1),0) < 0)
                return false;

            alpha = "0123456789";

            if (telno.length > 1) {
                for(var num=1;num<telno.length;num++){
                    if (alpha.indexOf(telno.substr(num, 1), 0) < 0) 
                        return false;
                }
            }

            return true;
}

function TelNoIsLongEnough(telno) {
            if (trim(telno).length == 0 )
                return true;//zero-length validated above this function

            //remove all whitespaces
            telno = telno.replace("\n", "").replace("\r", "").replace("\t", "").replace(" ", "");

            telno = trim(telno);

            if (telno.length == 0) 
                return true;

            if (telno.length>=1){
                if (telno.substr(0, 1) == "+")
                    return telno.length >= 13;
                if (telno.substr(0, 1) == "0")
                    return telno.length >= 11;
            }
            if(telno.length>=2){
                if (telno.substr(0, 2) == "44")
                    return telno.length >= 12;
            }

            return telno.Length >= 11;
}

function reg2Phone_MobileIsValid() {
    reg2Phone_MobileIsValid(true);
}

function reg2Phone_MobileIsValid(considerRequired) {
    if (considerRequired == null)
        considerRequired = true;
    var required = false;

    var field = document.getElementById("mobilephone");
    if (!field) {
        required = true;
        field = document.getElementById("mobilephoner");
    }
    
    if (!considerRequired)
        required = false;


    //correct format
    if (trim(field.value).length > 0) {
        if (!IsValidTelNo(field.value)) {
            return "Mobile Phone number is in an invalid format, please use only numerics,<br /> or starting with '+' if including a country code";
        } else if (!TelNoIsLongEnough(field.value)) {
            return "Mobile Phone number isn't long enough";
        }
    }

    if (required) {
        if (trim(field.value).length == 0)
            return "Mobile Phone is a required field";
    }

    return "";
}




function reg2IsNumeric(sText) {
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;


    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;

}


function reg2IsMobileNumber(sMobileNumber) {

    sMobileNumber = trim(sMobileNumber);

    if (sMobileNumber.length == 0 || sMobileNumber.length < 10) {
        return false;
    }

    for (var num = 1; num < sMobileNumber.length; num++) {

        switch (sMobileNumber.substr(num, 1)) {
            case "0":
            case "1":
            case "2":
            case "3":
            case "4":
            case "5":
            case "6":
            case "7":
            case "8":
            case "9":
                break;
            default:
                return false;
                break;
        }
    }

    if (sMobileNumber.Length == 11) { //07976831386
        if (sMobileNumber.substr(0, 1) != "0") {
            return false;
        }
    } else if (sMobileNumber.Length == 12) { //447976831386
        if (!reg2IsNumeric(sMobileNumber.substr(0, 1))) {
            return false;
        }
    } else if (sMobileNumber.Length == 13) { //+447976831386
        if (sMobileNumber.substr(0, 1) != "+") {
            return false;
        }
    }

    return true;
}

function reg2MessageIsValid() {
    var required = false;

    var field = document.getElementById("message");
    if (!field) {
        required = true;
        field = document.getElementById("messager");
    }

    if (required) {
        if (trim(field.value).length == 0)
            return "Message is a required field";
    }
    
    return "";
}

function reg2Phone_AllIsValid() {
    var required = false;

    var dayphone = document.getElementById("dayphone");
    if (!dayphone) {
        required = true;
        dayphone = document.getElementById("dayphoner");
    }

    var eveningphone = document.getElementById("eveningphone");
    if (!eveningphone) {
        required = true;
        eveningphone = document.getElementById("eveningphoner");
    }

    var mobilephone = document.getElementById("mobilephone");
    if (!mobilephone) {
        required = true;
        mobilephone = document.getElementById("mobilephoner");
    }


    if (required) {
        if (trim(dayphone.value).length == 0 &&
            trim(eveningphone.value).length == 0 &&
            trim(mobilephone.value).length == 0)
            return "At least one phone number is required";
    }

    var dayErr = reg2Phone_DayIsValid(false);
    var eveningErr = reg2Phone_EveningIsValid(false);
    var mobileErr = reg2Phone_MobileIsValid(false);

    if (dayErr.length > 0)
        return dayErr;
    if (eveningErr.length > 0)
        return eveningErr;
    if (mobileErr.length > 0)
        return mobileErr;

    return "";
}

function reg2Phone_EveningIsValid() {
    reg2Phone_EveningIsValid(true);
}

function reg2Phone_EveningIsValid(considerRequired) {
    if (considerRequired == null)
        considerRequired = true;
    var required = false;

    var field = document.getElementById("eveningphone");
    if (!field) {
        required = true;
        field = document.getElementById("eveningphoner");
    }

    if (!considerRequired)
        required = false;


    if (trim(field.value).length > 0) {
        if (!IsValidTelNo(field.value)) {
            return "Evening Phone number is in an invalid format, please use only numerics,<br /> or starting with '+' if including a country code";
        } else if (!TelNoIsLongEnough(field.value)) {
            return "Evening Phone number isn't long enough";
        }
    }

    if (required) {
        if (trim(field.value).length == 0)
            return "Evening Phone is a required field";
    }

    return "";
}

function reg2Phone_SingleSpecialIsValid() {
    var required = false;

    var field = document.getElementById("specialphone");
    if (!field) {
        required = true;
        field = document.getElementById("specialphoner");
    }


    if (trim(field.value).length > 0) {
        if (!IsValidTelNo(field.value)) {
            return "Telephone number is in an invalid format, please use only numerics,<br /> or starting with '+' if including a country code";
        } else if (!TelNoIsLongEnough(field.value)) {
        return "Telephone number isn't long enough";
        }
    }

    if (required) {
        if (trim(field.value).length == 0)
            return "Telephone is a required field";
    }

    return "";
}

function reg2PasswordIsValid() {
    var required = false;

    var field = document.getElementById("Password1");
    if (!field) {
        required = true;
        field = document.getElementById("Password1r");
    }

    var field2 = document.getElementById("Password2");
    if (!field2) {
        field2 = document.getElementById("Password2r");
    }

    if (field == document.activeElement || field2 == document.activeElement) {
        return "";
    }

    //both passwords match
    if (field.value != field2.value)
        return "Passwords do not match";

    //password is at least 6 chars long
    if (field.value.length < 6 && field.value.length > 0)
        return "Password must be at least 6 characters long";

    if (required) {



        //field is filled in
        if (field.value.length == 0)
            return "Password is a required field";
    }

    return "";
}
function reg2Name_SplitBoxIsValid() {

    var required = false;

    var title = document.getElementById("Name_SplitBox_Title");
    if (!title) {
        required = true;
        title = document.getElementById("Name_SplitBox_Titler");
    }

    var first = document.getElementById("Name_SplitBox_FirstName");
    if (!first) {
        required = true;
        first = document.getElementById("Name_SplitBox_FirstNamer");
    }

    var last = document.getElementById("Name_SplitBox_LastName");
    if (!last) {
        required = true;
        last = document.getElementById("Name_SplitBox_LastNamer");
    }

    if (title == document.activeElement || first == document.activeElement || last == document.activeElement ) {
        //alert(1);
        return "";
    }

    

    if (required) {
        if (trim(title.value).length == 0 &&
        trim(first.value).length == 0 &&
        trim(last.value).length == 0)
            return "Name is required";
    }

     if (title.value == "") return "Title cannot be left blank";
     if (trim(first.value).length == 0)  return "You must enter your forename";
     if (trim(last.value).length == 0)   return "You must enter your surname";

    return "";
}


function reg2Address_FullIsValid() {

    var required = false;

    var postcode = document.getElementById("postcode");
    if (!postcode) {
        required = true;
        postcode = document.getElementById("postcoder");
    }

    var housenum = document.getElementById("housenum");
    if (!housenum) {
        required = true;
        housenum = document.getElementById("housenumr");
    }

    var street = document.getElementById("street");
    if (!street) {
        required = true;
        street = document.getElementById("streetr");
    }

    var locality = document.getElementById("locality");
    if (!locality) {
        required = true;
        locality = document.getElementById("localityr");
    }

    var towncity = document.getElementById("towncity");
    if (!towncity) {
        required = true;
        towncity = document.getElementById("towncityr");
    }

    var county = document.getElementById("county");
    if (!county) {
        required = true;
        county = document.getElementById("countyr");
    }

    var country = document.getElementById("country");
    if (!country) {
        required = true;
        country = document.getElementById("countryr");
    }


    if (trim(postcode.value).length == 0 &&
        trim(housenum.value).length == 0 &&
        trim(street.value).length == 0 &&
        trim(locality.value).length == 0 &&
        trim(towncity.value).length == 0 &&
        trim(county.value).length == 0 &&
        trim(country.value).length == 0) {
        if (required) {
            return "Address is required";
        } else {
            return "";
        }
    }
      

    //minimum to fill in is house name/num,street, and either postcode or county
   
    
    if (trim(postcode.value).length == 0 && trim(county.value).length == 0)
        return "Postcode cannot be left blank";

    //if (trim(housenum.value).length == 0)
        //return "House Name/Number cannot be left blank";

//    if (trim(street.value).length == 0)
//        return "Street name cannot be left blank";


    return "";
}

function reg2Address_PostcodeOnlyIsValid() {

    var required = false;

    var postcode = document.getElementById("postcode");
    if (!postcode) {
        required = true;
        postcode = document.getElementById("postcoder");
    }

    if (required) {
        if (trim(postcode.value).length == 0 )
            return "Postcode is required";
    }

    return "";
}




function reg2FlagLineInvalid(errorText, controlName) {

    for (var num = 0; num < controlName.length; num++) {

        var tickCross = document.getElementById(controlName[num] + 'TickCross');

        if (tickCross)
            tickCross.className = "Cross";

        var errorLabel = document.getElementById(controlName[num] + 'ErrorLabel');
        //alert('"' + controlName[num] + 'ErrorLabel' + '"');

        if (errorLabel) {
            errorLabel.innerHTML = errorText;
            errorLabel.className = "Shown";
        }

        var spanReq = document.getElementById(controlName[num] + 'Req');

        if (spanReq) {
            spanReq.className = "UnShown";
        }

        //alert("invalid");
    }
}



function reg2FlagLineValid(controlName) {

    for (var num = 0; num < controlName.length; num++) {




        var tickCross = document.getElementById(controlName[num] + 'TickCross');

        if (tickCross)
            tickCross.className = "Tick";

        var errorLabel = document.getElementById(controlName[num] + 'ErrorLabel');

        if (errorLabel) {
            errorLabel.innerHTML = '';
            errorLabel.className = "UnShown";
        }

        var spanReq = document.getElementById(controlName[num] + 'Req');

        if (spanReq) {
            spanReq.className = "UnShown";
        }

    }

}

function reg2ShowBackForm(msgBoxNum) {

    var showBack = document.getElementById("ShowBackInput");

    switch (msgBoxNum) {
        case MsgBoxYes():
            showBack.value = "true";
            break;
        default:
            showBack.value = "false";
            break;
    }
    
    var frm = document.getElementById("Reg2Form");
    frm.submit();

}

//sends a notification to the server when a validation fails
function reg2NotifyInvalidation() {
    if (!reg2InvalidationPath || reg2InvalidationPath.length == 0)
        return;

    if (!reg2Xml) {
        if (window.XMLHttpRequest) {
            reg2Xml = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
        reg2Xml = new ActiveXObject("Microsoft.XMLHTTP");
        }
    } else {
        reg2Xml.abort();
    }

    reg2Xml.open("GET", reg2InvalidationPath, true); //
    //reg2Xml.onreadystatechange = processMapXml;
    reg2Xml.send(null);
}
