
function address_FormatCity(s)
{
    s = address_ProperCaseParagraph(s);
    s = s.replace(/^apo/i, "APO");    
    s = s.replace(/^fpo/i, "FPO");
    return s;
}

function address_FormatCityByID(id)
{
    var control = document.getElementById(id);
    control.value = address_FormatCity(control.value);
}

function address_ltrim(s)
{
    while (s.substring(0, 1) == ' ') 
        s = s.substring(1, s.length);
    return s;
}

function address_rtrim(s)
{
    while (s.substring(s.length - 1, s.length) == ' ')
    s = s.substring(0, s.length - 1);
    return s;
}

function address_trim(s) 
{
  return address_ltrim(address_rtrim(s));
}

//trim and propercase a word passed in as parameter (string)
function address_ProperCaseWord(s)
{
    s = address_trim(s);
    if (s.length > 0)
        s = s.substring(0, 1).toUpperCase() + s.substring(1, s.length).toLowerCase();
    return s;
}

//replace multiple adjacent spaces with a single space
function address_RemoveExtraWhiteSpace(s)
{
    var p;
    do
    {
        p = s;
        s = s.replace("  ", " ");
    } while (p != s)

    return s;
}

function address_ProperCaseParagraph(s)
{
    s = address_trim(s);
    s = " " + address_RemoveExtraWhiteSpace(s);
    i = s.indexOf(' ');
    while (i >= 0)
    {
        s = s.substring(0, i + 1) + address_ProperCaseWord(s.substring(i + 1, s.length));
        i = s.indexOf(' ', i + 1);
    }
    return s.substring(1, s.length);
}

function address_FormatName(s)
{
    s = address_ProperCaseParagraph(s);
    s = s.replace(/ dds$/i, " DDS");
    s = s.replace(/ md$/i, " MD");
    s = s.replace(/ phd$/i, " PhD");
    s = s.replace(/ ii$/i, " II");
    s = s.replace(/ iii$/i, " III");
    s = s.replace(/ iv$/i, " IV");
    s = s.replace(/ v$/i, " V");
    return s;
}

function address_FormatAddress(s)
{
    s = address_ProperCaseParagraph(s);
    s = s.replace(/^po /i, "P.O. ");
    s = s.replace(/^p\.o\./i, "P.O.");
    return s;
}

function address_FormatNameByID(id)
{
    var control = document.getElementById(id);
    control.value = address_FormatName(control.value);
}

function address_FormatAddressByID(id)
{
    var control = document.getElementById(id);
    control.value = address_FormatAddress(control.value);
}

function address_ProperCaseParagraphByID(id)
{
    var control = document.getElementById(id);
    control.value = address_ProperCaseParagraph(control.value);
}

function address_CustomValidatorLastName(sender, args)
{
    //note: args.Value will be value of LastName since ControlToValidate was specified as TextBoxLastName field.
    if (sender.Company == null)
    {
        args.IsValid = address_trim(args.Value) != "";
    }
    else
    {
        var company = document.getElementById(sender.Company);
        args.IsValid = address_trim(args.Value) != "" || address_trim(company.value) != "";
    }
}
