function regionValidate(countryEdit, args)
{
    var country = findControl(countryEdit).value;
    var countryHasRegions = (country >= 1) && (country <= 2); // U.S. or Canada
    var regionIsSelected = (args.Value != "0");
    args.IsValid = countryHasRegions ? regionIsSelected : !regionIsSelected;
}

function countryValidate(args)
{
    args.IsValid = (args.Value != "0");
}

function regionChange(region, country)
{
    var regionDDL = findControl(region);
    var countryDDL = findControl(country);
    var regionIsSelected = (regionDDL.selectedIndex > 0);
    countryDDL.disabled = regionIsSelected;
    if (!regionIsSelected)
    {
        countryDDL.selectedIndex = 0;
    }
    else
    {
        var regionInfo = regionDDL.options[regionDDL.selectedIndex].value.split("/");
        var countryId = regionInfo[0];
        var foundCountry = false;
        for (var i = 0; !foundCountry && (i < countryDDL.options.length); i++)
        {
            var curCountryId = countryDDL.options[i].value;
            foundCountry = (curCountryId == countryId);
            if (foundCountry)
            {
                countryDDL.selectedIndex = i;
            }
        }
    }
}

function countryChange(region, country)
{
    var regionDDL = findControl(region);
    var countryDDL = findControl(country);
    var countryId = countryDDL.options[countryDDL.selectedIndex].value;
    var countryHasRegions = false;
    for (var i = 0; !countryHasRegions && (i < regionDDL.options.length); i++)
    {
        var curRegionInfo = regionDDL.options[i].value.split("/");
        var curCountryId = curRegionInfo[0];
        countryHasRegions = (curCountryId == countryId);
    }
    regionDDL.disabled = !countryHasRegions;
    if (!countryHasRegions)
    {
        regionDDL.selectedIndex = 0;
    }
}

function findControl(ctrlId)
{
    var ctrl = null;
    var ctrls = document.forms[0].elements;
    for (var i = 0; (ctrl == null) && (i < ctrls.length); i++)
    {
        if (ctrls[i].id.lastIndexOf(ctrlId) > 0)
        {
            ctrl = ctrls[i];
        }
    }
    return ctrl;
}

function cvRegion_ClientValidate(sender, args)
{
    regionValidate("ddlCountry", args);
}

function cvRegionEdit_ClientValidate(sender, args)
{
    regionValidate("ddlCountryEdit", args);
}

function cvCountry_ClientValidate(sender, args)
{
    countryValidate(args);
}

function cvCountryEdit_ClientValidate(sender, args)
{
    countryValidate(args);
}

function ddlCountry_Change()
{
    countryChange("ddlRegion", "ddlCountry");
}

function ddlRegion_Change()
{
    regionChange("ddlRegion", "ddlCountry");
}

function ddlCountryEdit_Change()
{
    countryChange("ddlRegionEdit", "ddlCountryEdit");
}

function ddlRegionEdit_Change()
{
    regionChange("ddlRegionEdit", "ddlCountryEdit");
}

if(typeof(Sys) !== "undefined")
{
    Sys.Application.notifyScriptLoaded();
}

