/* register.asp */
function validateRegistrationForm() {
    //TODO validate postcodes

    var errStr = '';
    rdCompanyChoice = document.account_register.rdCompanyChoice;
    for (var i=0; i < rdCompanyChoice.length; i++) {
        if (rdCompanyChoice[i].checked) {
            var rad_val = rdCompanyChoice[i].value;
        }
    }
    if (rad_val == null) {
        errStr = "\n - You need to select a company type!";
    } else {
        switch(rad_val) {
            //1. Ltd Company
            case 'Company_Ltd':
                strDateOfInc = document.getElementById("txtCompany_Ltd_DateofIncorporation").value;
                strRegNo = document.getElementById("txtCompany_Ltd_RegisteredNumber").value;

                if (strDateOfInc.length == 0) {
                    errStr = errStr + '\n - You need to enter a Date of Incorporation!';
                }
                if (strRegNo.length == 0) {
                    errStr = errStr + '\n - You need to enter a Company Registration Number!';
                }
                strTradingAddressLine1 = document.getElementById("txtCompany_Ltd_TradingAdd_AddressLine1").value;
                strTradingCity = document.getElementById("txtCompany_Ltd_TradingAdd_City").value;
                strTradingPostcode = document.getElementById("txtCompany_Ltd_TradingAdd_Postcode").value;
                if (strTradingAddressLine1.length == 0) {
                    errStr = errStr + '\n - You need to enter a Trading AddressLine1!';
                }
                if (strTradingCity.length == 0) {
                    errStr = errStr + '\n - You need to enter a Trading City!';
                }
                if ((strTradingPostcode.length == 0) || (checkPostCode(strTradingPostcode) == false)) {
                    errStr = errStr + '\n - You need to enter a valid Trading Postcode!';
                }

                rdDiffRegisteredOff = document.account_register.rdCompany_Ltd_RegisteredOff;
                for (var i=0; i < rdDiffRegisteredOff.length; i++) {
                    if (rdDiffRegisteredOff[i].checked) {
                        var rad_val3 = rdDiffRegisteredOff[i].value;
                    }
                }
                if (rad_val3 == "N") {
                    strRegOfficeAddressLine1 = document.getElementById("txtCompany_Ltd_RegisteredOff_AddressLine1").value;
                    strRegOfficeCity = document.getElementById("txtCompany_Ltd_RegisteredOff_City").value;
                    strRegOfficePostcode = document.getElementById("txtCompany_Ltd_RegisteredOff_Postcode").value;
                    if (strRegOfficeAddressLine1.length == 0) {
                        errStr = errStr + '\n - You need to enter a Registered Office AddressLine1!';
                    }
                    if (strRegOfficeCity.length == 0) {
                        errStr = errStr + '\n - You need to enter a Registered Office City!';
                    }
                    if ((strRegOfficePostcode.length == 0) || (checkPostCode(strRegOfficePostcode) == false)) {
                        errStr = errStr + '\n - You need to enter a valid Registered Office Postcode!';
                    }
                }

                rdParentCompany = document.account_register.rdCompany_Ltd_ParentCompany;
                for (var i=0; i < rdParentCompany.length; i++) {
                    if (rdParentCompany[i].checked) {
                        var rad_val4 = rdParentCompany[i].value;
                    }
                }
                if (rad_val4 == "Y") {
                    strParentCompanyAddressLine1 = document.getElementById("txtCompany_Ltd_ParentCompany_AddressLine1").value;
                    strParentCompanyCity = document.getElementById("txtCompany_Ltd_ParentCompany_City").value;
                    strParentCompanyPostcode = document.getElementById("txtCompany_Ltd_ParentCompany_Postcode").value;
                    if (strParentCompanyAddressLine1.length == 0) {
                        errStr = errStr + '\n - You need to enter a Parent Company AddressLine1!';
                    }
                    if (strParentCompanyCity.length == 0) {
                        errStr = errStr + '\n - You need to enter a Parent Company City!';
                    }
                    if ((strParentCompanyPostcode.length == 0) || (checkPostCode(strRegOfficePostcode) == false)) {
                        errStr = errStr + '\n - You need to enter a valid Parent Company Postcode!';
                    }
                }
                break;
            //2. Sole Trader
            case 'Company_ST':
                strCurrBusTitle = document.getElementById("txtCompany_ST_BusinessTitle").value;
                strDateOfForm = document.getElementById("txtCompany_ST_DateofForm").value;
                strPropName = document.getElementById("txtCompany_ST_PropName").value;
                strPropDOB = document.getElementById("txtCompany_ST_Prop_DOB").value;

                if (strCurrBusTitle.length == 0) {
                    errStr = errStr + '\n - You need to enter a Business Title!';
                }
                if (strDateOfForm.length == 0) {
                    errStr = errStr + '\n - You need to enter a Date of Formation!';
                }
                if (strPropName.length == 0) {
                    errStr = errStr + '\n - You need to enter a Proprieter Name!';
                }
                if (strPropDOB.length == 0) {
                    errStr = errStr + '\n - You need to enter a Date of Birth!';
                }

                strTradingAddressLine1 = document.getElementById("txtCompany_ST_TradingAddress_AddressLine1").value;
                strTradingCity = document.getElementById("txtCompany_ST_TradingAddress_City").value;
                strTradingPostcode = document.getElementById("txtCompany_ST_TradingAddress_Postcode").value;
                if (strTradingAddressLine1.length == 0) {
                    errStr = errStr + '\n - You need to enter a Trading AddressLine1!';
                }
                if (strTradingCity.length == 0) {
                    errStr = errStr + '\n - You need to enter a Trading City!';
                }
                if ((strTradingPostcode.length == 0) || (checkPostCode(strTradingPostcode) == false)) {
                    errStr = errStr + '\n - You need to enter a Trading Postcode!';
                }

                strHomeAddAddressLine1 = document.getElementById("txtCompany_ST_HomeAddress_AddressLine1").value;
                strHomeAddCity = document.getElementById("txtCompany_ST_HomeAddress_City").value;
                strHomeAddPostcode = document.getElementById("txtCompany_ST_HomeAddress_Postcode").value;
                if (strHomeAddAddressLine1.length == 0) {
                    errStr = errStr + '\n - You need to enter a Home AddressLine1!';
                }
                if (strHomeAddCity.length == 0) {
                    errStr = errStr + '\n - You need to enter a Home City!';
                }
                if ((strHomeAddPostcode.length == 0) || (checkPostCode(strHomeAddPostcode) == false)) {
                    errStr = errStr + '\n - You need to enter a valid Home Postcode!';
                }
                
                rdPrevCompany = document.account_register.rdLessThanThreeYears;
                for (var i=0; i < rdPrevCompany.length; i++) {
                    if (rdPrevCompany[i].checked) {
                        var rad_val5 = rdPrevCompany[i].value;
                    }
                }
                if (rad_val5 == "Y") {
                    strPrevAddAddressLine1 = document.getElementById("txtCompany_ST_PrevAddress1_AddressLine1").value;
                    strPrevAddCity = document.getElementById("txtCompany_ST_PrevAddress1_City").value;
                    strPrevAddPostcode = document.getElementById("txtCompany_ST_PrevAddress1_Postcode").value;
                    if (strPrevAddddressLine1.length == 0) {
                        errStr = errStr + '\n - You need to enter a Previous AddressLine1!';
                    }
                    if (strPrevAddCity.length == 0) {
                        errStr = errStr + '\n - You need to enter a Previous Address City!';
                    }
                    if ((strPrevAddPostcode.length == 0) || (checkPostCode(strPrevAddPostcode) == false)) {
                        errStr = errStr + '\n - You need to enter a valid Previous Address Postcode!';
                    }
                }

                break;
            // there is no default condition
            default:
        }
        //3. Other Information
        strEmailAddress = document.getElementById("txtOtherInf_EmailAddress").value;
        strTelNo = document.getElementById("txtOtherInf_TelNo").value;
        strPrinBusActivity = document.getElementById("txtOtherInf_PrinBusActivity").value;
        strBankRef = document.getElementById("txtOtherInf_Bank_Ref").value;
        strBankAccNo = document.getElementById("txtOtherInf_Bank_AccNo").value;
        strBankName = document.getElementById("txtOtherInf_Bank_Name").value;
        strBankAddressLine1 = document.getElementById("txtOtherInf_Bank_AddressLine1").value;
        strBankCity = document.getElementById("txtOtherInf_Bank_City").value;
        strBankPostcode = document.getElementById("txtOtherInf_Bank_Postcode").value;

        if ((strEmailAddress.length == 0) || (checkEmail(strEmailAddress) == false)) {
            errStr = errStr + '\n - You need to enter a valid Email Address!';
        }
        if (strTelNo.length == 0) {
            errStr = errStr + '\n - You need to enter a Telephone Number!';
        }
        if (strPrinBusActivity.length == 0) {
            errStr = errStr + '\n - You need to enter a Principal Business Activity!';
        }
        if (strBankRef.length == 0) {
            errStr = errStr + '\n - You need to enter a Bank Reference!';
        }
        if (strBankAccNo.length == 0) {
            errStr = errStr + '\n - You need to enter a Bank Account Number!';
        }
        if (strBankName.length == 0) {
            errStr = errStr + '\n - You need to enter a Bank Name!';
        }
        if (strBankAddressLine1.length == 0) {
            errStr = errStr + '\n - You need to enter a Bank AddressLine1!';
        }
        if (strBankCity.length == 0) {
            errStr = errStr + '\n - You need to enter a Bank City!';
        }
        if ((strBankPostcode.length == 0) || (checkPostCode(strBankPostcode) == false)) {
            errStr = errStr + '\n - You need to enter a valid Bank Postcode!';
        }
        
        rdDiffInvoicingAddress = document.account_register.rdDiffInvoicingAddress;
        for (var i=0; i < rdDiffInvoicingAddress.length; i++) {
            if (rdDiffInvoicingAddress[i].checked) {
                var rad_val2 = rdDiffInvoicingAddress[i].value;
            }
        }
        if (rad_val2 == "Y") {
            strInvoiceAddressLine1 = document.getElementById("txtOtherInf_Invoice_AddressLine1").value;
            strInvoiceCity = document.getElementById("txtOtherInf_Invoice_City").value;
            strInvoicePostcode = document.getElementById("txtOtherInf_Invoice_Postcode").value;
            if (strInvoiceAddressLine1.length == 0) {
                errStr = errStr + '\n - You need to enter an Invoice AddressLine1!';
            }
            if (strInvoiceCity.length == 0) {
                errStr = errStr + '\n - You need to enter an Invoice City!';
            }
            if ((strInvoicePostcode.length == 0) || (checkPostCode(strInvoicePostcode) == false)) {
                errStr = errStr + '\n - You need to enter a valid Invoice Postcode!';
            }
        }
        
        strRef1AddressLine1 = document.getElementById("txtOtherInf_Ref1_AddressLine1").value;
        strRef1City = document.getElementById("txtOtherInf_Ref1_City").value;
        strRef1Postcode = document.getElementById("txtOtherInf_Ref1_Postcode").value;
        if (strRef1AddressLine1.length == 0) {
            errStr = errStr + '\n - You need to enter an AddressLine1 for Reference1!';
        }
        if (strRef1City.length == 0) {
            errStr = errStr + '\n - You need to enter a City for Reference1!';
        }
        if ((strRef1Postcode.length == 0) || (checkPostCode(strRef1Postcode) == false)) {
            errStr = errStr + '\n - You need to enter a valid Postcode for Reference1!';
        }

        strRef2AddressLine1 = document.getElementById("txtOtherInf_Ref2_AddressLine1").value;
        strRef2City = document.getElementById("txtOtherInf_Ref2_City").value;
        strRef2Postcode = document.getElementById("txtOtherInf_Ref2_Postcode").value;
        if (strRef2AddressLine1.length == 0) {
            errStr = errStr + '\n - You need to enter an AddressLine1 for Reference2!';
        }
        if (strRef2City.length == 0) {
            errStr = errStr + '\n - You need to enter a City for Reference2!';
        }
        if ((strRef2Postcode.length == 0) || (checkPostCode(strRef2Postcode) == false)) {
            errStr = errStr + '\n - You need to enter a valid Postcode for Reference2!';
        }

        rdBuyingGroup = document.account_register.rdBuyingGroup;
        for (var i=0; i < rdBuyingGroup.length; i++) {
            if (rdBuyingGroup[i].checked) {
                var rad_val6 = rdBuyingGroup[i].value;
            }
        }
        if (rad_val6 == "Y") {
            strBGName = document.getElementById("txtOtherInf_NameOfGroup").value;
            strBGMembershipNo = document.getElementById("txtOtherInf_MembershipNo").value;
            if (strBGName.length == 0) {
                errStr = errStr + '\n - You need to enter a Buying Group Name!';
            }
            if (strBGMembershipNo.length == 0) {
                errStr = errStr + '\n - You need to enter a Membership No!';
            }
        }
    }

    if (errStr.length == 0) {
        return true;
        } else {
            errStr = 'ERROR! You need to correct the following problems:' + errStr;
            alert(errStr);
            return false;
        }
    return false;
}

/* show / hide content */
function CompanyChoice(strCompanyChoice) {
    switch(strCompanyChoice) {
        //Main company choice option
        case 'company_ltd':
            document.getElementById('Company_Ltd_Container').style.display = "block";
            document.getElementById('Company_ST_Container').style.display = "none";
            document.getElementById('OtherInf_Container').style.display = "block";
            break;    
        case 'company_st':
            document.getElementById('Company_Ltd_Container').style.display = "none";
            document.getElementById('Company_ST_Container').style.display = "block";
            document.getElementById('OtherInf_Container').style.display = "block";
            break;
        default:
    }
}

function ShowHideAddresses(addressID,methodType) {
    switch(methodType) {
        //Main company choice option
        case 'show':
            document.getElementById('fldset'+addressID).style.display = "block";
            break;    
        case 'hide':
            document.getElementById('fldset'+addressID).style.display = "none";

            break;
        default:
    }
}

function ShowHideContent(divID,methodType) {
    switch(methodType) {
        //Main company choice option
        case 'show':
            document.getElementById(divID).style.display = "block";
            break;    
        case 'hide':
            document.getElementById(divID).style.display = "none";
            break;
        default:
    }
}


function HideContent(d) {
if(d.length < 1) { return; }
document.getElementById(d).style.display = "none";
}
function ShowContent(d) {
if(d.length < 1) { return; }
document.getElementById(d).style.display = "block";
}
function ReverseContentDisplay(d) {
if(d.length < 1) { return; }
if(document.getElementById(d).style.display == "none") { document.getElementById(d).style.display = "block"; }
else { document.getElementById(d).style.display = "none"; }
}

/* addresses.asp */
function confirmDeleteAddress(dID) {
    if (confirm("Are you sure that you want to delete this address?")) { 
        return true;
        //window.location='addresses_confirm.asp?dID=' + dID;
        } else { return false; }
}

/* addresses_select.asp */
function validatePostCodeSearch() {
    var strPC = '';
    strPC = document.getElementById("txtPostCode").value
    if ((strPC.length == 0) || (checkPostCode(strPC) == false)) {
        alert("You need to enter a valid postcode to search!")
        return false;
        } else {
            return true;}
}

/* addresses_confirm.asp */
function validateAddressForm() {
    var errStr = '';
    //strFirstName = document.getElementById("txtFirstName").value;
    //strLastName = document.getElementById("txtLastName").value;
    //strDescription = document.getElementById("txtAddressName").value;
    strAddressLine1 = document.getElementById("txtAddressLine1").value;
    strCity = document.getElementById("txtCity").value;
    strPostcode = document.getElementById("txtPostcode").value;
    
    //if (strFirstName.length == 0) {
    //    errStr = errStr + '\n - You need to enter a First Name!';
    //}
    //if (strLastName.length == 0) {
    //    errStr = errStr + '\n - You need to enter a Last Name!';
    //}
    //if (strDescription.length == 0) {
    //    errStr = errStr + '\n - You need to give your address a description!';
    //}
    if (strAddressLine1.length == 0) {
        errStr = errStr + '\n - You need to enter something in Address Line 1!';
    }
    if (strCity.length == 0) {
        errStr = errStr + '\n - You need to enter a city!';
    }
    if ((strPostcode.length == 0) || (checkPostCode(strPostcode) == false)) {
        errStr = errStr + '\n - You need to enter a valid Postcode!';
    }
    
    if (errStr.length == 0) {
        return true;
        } else {
            errStr = 'ERROR! You need to correct the following problems:' + errStr;
            alert(errStr);
            return false;
        }
}

/*password_change.asp */
function validatePasswordChange() {
    var errStr = '';
    var strCurrentPassword = document.getElementById("txtCurrentPassword").value;
    var strNewPassword = document.getElementById("txtNewPassword").value;
    var strNewPassword2 = document.getElementById("txtNewPassword2").value;
    if ((strCurrentPassword.length == 0) || (strNewPassword.length == 0) || (strNewPassword2.length == 0)) {
        errStr = errStr + '\n - You need to enter something in each password box!';
    }
    if (!(strNewPassword == strNewPassword2)) {
        errStr = errStr + '\n - Your new passwords do not match!';
    }
    if (errStr.length == 0) {
        return true;
        } else {
            errStr = 'ERROR! You need to correct the following problems:' + errStr;
            alert(errStr);
            return false;
        }
}

/* Generic Functions */
function checkPostCode (toCheck) {
  var alpha1 = "[abcdefghijklmnoprstuwyz]";
  var alpha2 = "[abcdefghklmnopqrstuvwxy]";
  var alpha3 = "[abcdefghjkstuw]";
  var alpha4 = "[abehmnprvwxy]";
  var alpha5 = "[abdefghjlnpqrstuwxyz]";
  var pcexp = new Array ();
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  pcexp.push (/^(GIR)(\s*)(0AA)$/i);
  pcexp.push (/^(bfpo)(\s*)([0-9]{1,4})$/i);
  pcexp.push (/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i);
  pcexp.push (/^([A-Z]{4})(\s*)(1ZZ)$/i);
  var postCode = toCheck;
  var valid = false;
  for ( var i=0; i<pcexp.length; i++) {
    if (pcexp[i].test(postCode)) {
      pcexp[i].exec(postCode);
      postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
      postCode = postCode.replace (/C\/O\s*/,"c/o ");
      valid = true;
      break;
    }
  }
  if (valid) {return postCode;} else return false;
}

function checkEmail(toCheck) {
        var i;
		i = toCheck.search("@");
        if (i<1) {
            return false 
            } else {
                return true
                } 
}
