﻿var maxRegionStackSize = 20;
var maxLicenseUseNumber = 12;
var maxMatrixIDCodeLength = 8;
var currentUseNumber = -1;

function categorySelected()
{
    if (document.getElementById("lstCategory").value == "")
    {
        resetControls(0);
        return;
    }

    resetControls(1);

    var typeList = getHttpResponse("../Postback/RetrieveType.aspx?categoryTerm=" + encodeURIComponent(trim(document.getElementById("lstCategory").value)));

    if (!typeList || trim(typeList) == "")
    {
        raiseError("No proper media types were found. Cannot generate media license.");
        return;
    }

    clearSelect("lstType");

    var typeArr = typeList.split("|");

    if (typeArr.length == 1)
    {
        document.getElementById("lstType").options[0] = new Option(typeArr[0], typeArr[0]);
        document.getElementById("lstType").selectedIndex = 0;

        typeSelected();
    }
    else
    {
        document.getElementById("lstType").options[0] = new Option("-- Select a specific usage --", "");

        for (var i=0; i < typeArr.length; i++)
	        document.getElementById("lstType").options[i+1] = new Option(typeArr[i], typeArr[i]);
    }

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstCategory").style.backgroundColor = "#ffffff";

    document.getElementById("trType").style.display = "";
}

function typeSelected()
{
    if (document.getElementById("lstType").value == "")
    {
        resetControls(1);
        return;
    }

    resetControls(2);

    var detailList = getHttpResponse("../Postback/RetrieveDetail.aspx?categoryTerm=" + encodeURIComponent(trim(document.getElementById("lstCategory").value)) + "&typeTerm=" + encodeURIComponent(trim(document.getElementById("lstType").value)));

    if (!detailList || trim(detailList) == "")
    {
        raiseError("No proper media types were found. Cannot generate media license.");
        return;
    }

    clearSelect("lstDetail");

    var detailArr = detailList.split("|");

    if (detailArr.length == 1)
    {
        document.getElementById("lstDetail").options[0] = new Option(detailArr[0], detailArr[0]);
        document.getElementById("lstDetail").selectedIndex = 0;

        detailSelected();
    }
    else
    {
        document.getElementById("lstDetail").options[0] = new Option("-- Select the details of your usage --", "");

        for (var i=0; i < detailArr.length; i++)
	        document.getElementById("lstDetail").options[i+1] = new Option(detailArr[i], detailArr[i]);
    }

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstType").style.backgroundColor = "#ffffff";

    document.getElementById("trDetail").style.display = "";
    
    selectAllTypes();
}

function detailSelected()
{
    if (document.getElementById("lstDetail").value == "")
    {
        resetControls(2);
        return;
    }

    resetControls(3);

    var distributionList = getHttpResponse("../Postback/RetrieveDistribution.aspx?categoryTerm=" + encodeURIComponent(trim(document.getElementById("lstCategory").value)) + "&typeTerm=" + encodeURIComponent(trim(document.getElementById("lstType").value)) + "&detailTerm=" + encodeURIComponent(trim(document.getElementById("lstDetail").value)));

    clearSelect("lstDistribution");

    var distributionArr = distributionList.split("|");

    if (distributionArr.length == 1)
    {
        document.getElementById("lstDistribution").options[0] = new Option(distributionArr[0], distributionArr[0]);
        document.getElementById("lstDistribution").selectedIndex = 0;

        distributionSelected();
    }
    else
    {
        document.getElementById("lstDistribution").options[0] = new Option("-- In what format will the image be distributed or delivered? --", "");

        for (var i=0; i < distributionArr.length; i++)
            document.getElementById("lstDistribution").options[i+1] = new Option(distributionArr[i], distributionArr[i]);
    }

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstDetail").style.backgroundColor = "#ffffff";

    document.getElementById("trDistribution").style.display = "";
}

function distributionSelected()
{
    if (document.getElementById("lstDistribution").value == "")
    {
        resetControls(3);
        return;
    }

    document.getElementById("lblMatrixMediaCode").innerHTML = calculateMediaMatrixCode();
    document.getElementById("lblMatrixMediaCode").title = document.getElementById("lblMatrixMediaCode").innerHTML;

    generateLicenseCode();

    showHiddenFields();
}

function showHiddenFields()
{
    resetControls(4);

	document.getElementById("trMediaSeparator").style.display = "";

    var placementList = getHttpResponse("../Postback/RetrievePlacement.aspx?mediaMatrixLicenseCode=" + encodeURIComponent(trim(document.getElementById("lblMatrixMediaCode").innerHTML)));

    clearSelect("lstPlacement");
    
    if (placementList && trim(placementList) != "")
    {
        var placementArr = placementList.split("|||");

        if (placementArr.length == 1)
        {
            document.getElementById("lstPlacement").options[0] = new Option(placementArr[0].split("||")[0], placementArr[0].split("||")[1]);
            document.getElementById("lstPlacement").selectedIndex = 0;

            placementSelected();
        }
        else
        {
    	    document.getElementById("lstPlacement").options[0] = new Option("-- Where will the image be placed or positioned? --", "");

            for (var i=0; i < placementArr.length; i++)
            {
                if (trim(placementArr[i]).indexOf("||") > 0)
                {
	                document.getElementById("lstPlacement").options[i+1] = new Option(placementArr[i].split("||")[0], placementArr[i].split("||")[1]);
                }
            }
        }
	}
	else
	{
	    raiseError("No placement item found. Cannot generate media license.");
	    return;
	}

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstDistribution").style.backgroundColor = "#ffffff";

	document.getElementById("trPlacement").style.display = "";
	document.getElementById("trPlacementSeparator").style.display = "";

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstPlacement").style.backgroundColor = "#ffffff";

    var sizeList = getHttpResponse("../Postback/RetrieveSize.aspx?mediaMatrixLicenseCode=" + encodeURIComponent(trim(document.getElementById("lblMatrixMediaCode").innerHTML)));

    clearSelect("lstSize");
    
    if (sizeList && trim(sizeList) != "")
    {
        var sizeArr = sizeList.split("||");

        if (sizeArr.length == 1)
        {
            document.getElementById("lstSize").options[0] = new Option(sizeArr[0], sizeArr[0]);
            document.getElementById("lstSize").selectedIndex = 0;

            sizeSelected();
        }
        else
        {
    	    document.getElementById("lstSize").options[0] = new Option("-- At what size will you use the image? --", "");

            for (var i=0; i < sizeArr.length; i++)
            {
                if (trim(sizeArr[i]) != "")
                {
	                document.getElementById("lstSize").options[i+1] = new Option(sizeArr[i], sizeArr[i]);
                }
            }
        }
	}
	else
	{
	    raiseError("No size item found. Cannot generate media license.");
	    return;
	}

	document.getElementById("trSize").style.display = "";
	document.getElementById("trSizeSeparator").style.display = "";

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstSize").style.backgroundColor = "#ffffff";

    var versionList = getHttpResponse("../Postback/RetrieveVersion.aspx?mediaMatrixLicenseCode=" + encodeURIComponent(trim(document.getElementById("lblMatrixMediaCode").innerHTML)));

    clearSelect("lstVersion");
    
    if (versionList && trim(versionList) != "")
    {
        var versionArr = versionList.split("|||");

        if (versionArr.length == 1)
        {
            document.getElementById("lstVersion").options[0] = new Option(versionArr[0].split("||")[0], versionArr[0].split("||")[1]);
            document.getElementById("lstVersion").selectedIndex = 0;

            versionSelected();
        }
        else
        {
    	    document.getElementById("lstVersion").options[0] = new Option("-- Single or Multiple Versions or Editions? --", "");

            for (var i=0; i < versionArr.length; i++)
            {
                if (trim(versionArr[i]).indexOf("||") > 0)
                {
	                document.getElementById("lstVersion").options[i+1] = new Option(versionArr[i].split("||")[0], versionArr[i].split("||")[1]);
                }
            }
        }
	}
	else
	{
	    raiseError("No version item found. Cannot generate media license.");
	    return;
	}

	document.getElementById("trVersion").style.display = "";
	document.getElementById("trVersionSeparator").style.display = "";

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstVersion").style.backgroundColor = "#ffffff";

    var quantityList = getHttpResponse("../Postback/RetrieveQuantity.aspx?mediaMatrixLicenseCode=" + encodeURIComponent(trim(document.getElementById("lblMatrixMediaCode").innerHTML)));

    clearSelect("lstQuantity");
    
    if (quantityList && trim(quantityList) != "")
    {
        var quantityArr = quantityList.split("|||");

        if (quantityArr.length == 1)
        {
            document.getElementById("lstQuantity").options[0] = new Option(quantityArr[0].split("||")[0], quantityArr[0].split("||")[1]);
            document.getElementById("lstQuantity").selectedIndex = 0;

            quantitySelected();
        }
        else
        {
    	    document.getElementById("lstQuantity").options[0] = new Option("-- How many copies will be printed or viewed? --", "");

            for (var i=0; i < quantityArr.length; i++)
            {
                if (trim(quantityArr[i]).indexOf("||") > 0)
                {
	                document.getElementById("lstQuantity").options[i+1] = new Option(quantityArr[i].split("||")[0], quantityArr[i].split("||")[1]);
                }
            }
        }
	}
	else
	{
	    raiseError("No quantity item found. Cannot generate media license.");
	    return;
	}

	document.getElementById("trQuantity").style.display = "";
	document.getElementById("trQuantitySeparator").style.display = "";

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstQuantity").style.backgroundColor = "#ffffff";

    var durationList = getHttpResponse("../Postback/RetrieveDuration.aspx?mediaMatrixLicenseCode=" + encodeURIComponent(trim(document.getElementById("lblMatrixMediaCode").innerHTML)));

    clearSelect("lstDuration");
    
    if (durationList && trim(durationList) != "")
    {
        var durationArr = durationList.split("|||");

        if (durationArr.length == 1)
        {
            document.getElementById("lstDuration").options[0] = new Option(durationArr[0].split("||")[0], durationArr[0].split("||")[1]);
            document.getElementById("lstDuration").selectedIndex = 0;

            durationSelected();
        }
        else
        {
    	    document.getElementById("lstDuration").options[0] = new Option("-- What is the duration of the image usage? --", "");

            for (var i=0; i < durationArr.length; i++)
            {
                if (trim(durationArr[i]).indexOf("||") > 0)
                {
	                document.getElementById("lstDuration").options[i+1] = new Option(durationArr[i].split("||")[0], durationArr[i].split("||")[1]);
                }
            }
        }
	}
	else
	{
	    raiseError("No duration item found. Cannot generate media license.");
	    return;
	}

	document.getElementById("trDuration").style.display = "";
	document.getElementById("trDurationSeparator").style.display = "";

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstDuration").style.backgroundColor = "#ffffff";

    if (document.getElementById("trRegion1").style.display == "none")
    {
	    document.getElementById("trRegion1").style.display = "";
    }

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstRegion1").style.backgroundColor = "#ffffff";

    if (document.getElementById("trIndustry").style.display == "none")
    {
	    document.getElementById("trIndustry").style.display = "";
	    document.getElementById("trIndustrySeparator").style.display = "";
	}

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstIndustry").style.backgroundColor = "#ffffff";

    if (document.getElementById("trLanguage").style.display == "none")
    {
	    document.getElementById("trLanguage").style.display = "";
	    document.getElementById("trLanguageSeparator").style.display = "";
	}

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstLanguage").style.backgroundColor = "#ffffff";

    if (document.getElementById("trExclusivity").style.display == "none")
    {
	    document.getElementById("trExclusivity").style.display = "";
	    document.getElementById("trExclusivitySeparator").style.display = "";
	}

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstExclusivity").style.backgroundColor = "#ffffff";
}

function selectAllCategories()
{
    if (document.getElementById("chkCategories").checked)
    {
        document.getElementById("lstCategory").selectedIndex = 7;
        document.getElementById("lstCategory").disabled = true;
        categorySelected();

        document.getElementById("lstType").selectedIndex = 13;
        document.getElementById("lstType").disabled = true;
        typeSelected();

        document.getElementById("lstDetail").disabled = true;
        document.getElementById("lstDistribution").disabled = true;

        document.getElementById("lblMatrixMediaCode").innerHTML = document.getElementById("chkCategories").value;
        document.getElementById("lblMatrixMediaCode").title = document.getElementById("lblMatrixMediaCode").innerHTML;
        
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstCategory").style.backgroundColor = "#ffffff";

        showHiddenFields();

        document.getElementById("chkPlacements").checked = true;
        document.getElementById("chkSizes").checked = true;
        document.getElementById("chkVersions").checked = true;
        document.getElementById("chkQuantities").checked = true;

        selectAllPlacements();
        selectAllSizes();
        selectAllVersions();
        selectAllQuantities();

        document.getElementById("lstPlacement").disabled = true;
        document.getElementById("lstSize").disabled = true;
        document.getElementById("lstSizeDetail").disabled = true;
        document.getElementById("lstVersion").disabled = true;
        document.getElementById("lstQuantity").disabled = true;

        document.getElementById("chkPlacements").disabled = true;
        document.getElementById("chkSizes").disabled = true;
        document.getElementById("chkVersions").disabled = true;
        document.getElementById("chkQuantities").disabled = true;
    }
    else
    {
        document.getElementById("lstCategory").selectedIndex = 0;
        document.getElementById("lstCategory").disabled = false;
        categorySelected();

        document.getElementById("lstType").disabled = false;
        document.getElementById("lstDetail").disabled = false;
        document.getElementById("lstDistribution").disabled = false;

        document.getElementById("lstPlacement").disabled = false;
        document.getElementById("lstSize").disabled = false;
        document.getElementById("lstSizeDetail").disabled = true;
        document.getElementById("lstVersion").disabled = false;
        document.getElementById("lstQuantity").disabled = false;

        document.getElementById("chkPlacements").disabled = false;
        document.getElementById("chkSizes").disabled = false;
        document.getElementById("chkVersions").disabled = false;
        document.getElementById("chkQuantities").disabled = false;
    }

    generateLicenseCode();
}

function selectAllTypes()
{
    if (document.getElementById("lstType")[document.getElementById("lstType").selectedIndex].text == "All Media Types")
    {
        if (document.getElementById("lstDetail").length > 1)
        {
            document.getElementById("lstDetail").selectedIndex = document.getElementById("lstDetail").length - 1;
            detailSelected();
        }

        if (document.getElementById("lstDistribution").length > 1)
        {
            document.getElementById("lstDistribution").selectedIndex = document.getElementById("lstDistribution").length - 1;
            distributionSelected();
        }

        document.getElementById("lstDetail").disabled = true;
        document.getElementById("lstDistribution").disabled = true;

        document.getElementById("lblMatrixMediaCode").innerHTML = generateAllTypeLicenseCode();
        document.getElementById("lblMatrixMediaCode").title = document.getElementById("lblMatrixMediaCode").innerHTML;
        
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstCategory").style.backgroundColor = "#ffffff";

        showHiddenFields();

        document.getElementById("chkPlacements").checked = true;
        document.getElementById("chkSizes").checked = true;
        document.getElementById("chkVersions").checked = true;
        document.getElementById("chkQuantities").checked = true;

        selectAllPlacements();
        selectAllSizes();
        selectAllVersions();
        selectAllQuantities();

        document.getElementById("lstPlacement").disabled = true;
        document.getElementById("lstSize").disabled = true;
        document.getElementById("lstSizeDetail").disabled = true;
        document.getElementById("lstVersion").disabled = true;
        document.getElementById("lstQuantity").disabled = true;

        document.getElementById("chkPlacements").disabled = true;
        document.getElementById("chkSizes").disabled = true;
        document.getElementById("chkVersions").disabled = true;
        document.getElementById("chkQuantities").disabled = true;

        generateLicenseCode();
    }
    else if (document.getElementById("lstDetail").disabled)
    {
        document.getElementById("lstDetail").disabled = false;
        document.getElementById("lstDistribution").disabled = false;

        document.getElementById("lstPlacement").disabled = false;
        document.getElementById("lstSize").disabled = false;
        document.getElementById("lstSizeDetail").disabled = true;
        document.getElementById("lstVersion").disabled = false;
        document.getElementById("lstQuantity").disabled = false;

        document.getElementById("chkPlacements").disabled = false;
        document.getElementById("chkSizes").disabled = false;
        document.getElementById("chkVersions").disabled = false;
        document.getElementById("chkQuantities").disabled = false;
    }
}

function generateAllTypeLicenseCode()
{
    var licenseCode;

    switch (document.getElementById("lstCategory")[document.getElementById("lstCategory").selectedIndex].text)
    {
        case "Advertising":
            licenseCode = "2AAA";
            break;
        case "Editorial":
            licenseCode = "2AAE";
            break;
        case "Products":
            licenseCode = "2AAP";
            break;
        case "Internal Company Use":
            licenseCode = "2AAI";
            break;
        case "Motion Picture & TV":
            licenseCode = "2AAM";
            break;
        case "Personal Use":
            licenseCode = "2AAU";
            break;
        default:
            licenseCode = "2ALL";
            break;
    }

    return licenseCode;
}

function placementSelected()
{
    resetControls(6);

    if (document.getElementById("lstPlacement").value == "")
    {
        resetControls(5);
        return;
    }

    document.getElementById("lblPlacementCode").innerHTML = document.getElementById("lstPlacement").value;
    document.getElementById("lblPlacementCode").title = document.getElementById("lblPlacementCode").innerHTML;

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstPlacement").style.backgroundColor = "#ffffff";

    generateLicenseCode();
}

function selectAllPlacements()
{
    document.getElementById("lstPlacement").selectedIndex = 0;
    placementSelected();

    if (document.getElementById("chkPlacements").checked)
    {
        document.getElementById("lstPlacement")[0].text = "Any Placement";
        document.getElementById("lstPlacement").disabled = true;
        
        document.getElementById("lblPlacementCode").innerHTML = document.getElementById("chkPlacements").value;
        document.getElementById("lblPlacementCode").title = document.getElementById("lblPlacementCode").innerHTML;
        
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstPlacement").style.backgroundColor = "#ffffff";
    }
    else
    {
        document.getElementById("lstPlacement")[0].text = "-- Where will the image be placed or positioned? --";
        document.getElementById("lstPlacement").disabled = false;
    }

    generateLicenseCode();
}

function sizeSelected()
{
    resetControls(8);

    if (document.getElementById("lstSize").value == "")
    {
        document.getElementById("trSizeDetail").style.display = "none";
        clearSelect("lstSizeDetail");

        resetControls(7);
        return;
    }

    var menuList = getHttpResponse("../Postback/RetrieveSizeDetail.aspx?mediaMatrixLicenseCode=" + encodeURIComponent(trim(document.getElementById("lblMatrixMediaCode").innerHTML)) + "&sizeTerm=" + encodeURIComponent(trim(document.getElementById("lstSize").value)));

    clearSelect("lstSizeDetail");

    if (menuList && trim(menuList) != "")
    {
        var menuArr = menuList.split("|");

        if (menuArr.length == 1)
        {
            document.getElementById("lstSizeDetail").options[0] = new Option(menuArr[0], menuArr[0]);
            document.getElementById("lstSizeDetail").selectedIndex = 0;

            sizeDetailSelected();
        }
        else
        {
	        document.getElementById("lstSizeDetail").options[0] = new Option("-- Select the size of the media --", "");

            for (var i=0; i < menuArr.length; i++)
            {
                if (trim(menuArr[i]) != "")
	                document.getElementById("lstSizeDetail").options[i+1] = new Option(menuArr[i], menuArr[i]);
	            else
	                document.getElementById("lstSizeDetail").options[i+1] = new Option("No Detail", "No Detail");
            }
        }
	}
	else
	{
        document.getElementById("lstSizeDetail").options[0] = new Option("No Detail", "No Detail");

	    sizeDetailSelected();
	}

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstSize").style.backgroundColor = "#ffffff";

    document.getElementById("trSizeDetail").style.display = "";
}

function sizeDetailSelected()
{
    if (document.getElementById("lstSizeDetail").value == "")
    {
        resetControls(8);
        return;
    }

    document.getElementById("lblSizeCode").innerHTML = calculateSizeCode();
    document.getElementById("lblSizeCode").title = document.getElementById("lblSizeCode").innerHTML;

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstSizeDetail").style.backgroundColor = "#ffffff";

    generateLicenseCode();
}

function selectAllSizes()
{
    document.getElementById("lstSize").selectedIndex = 0;
    sizeSelected();

    if (document.getElementById("chkSizes").checked)
    {
        document.getElementById("lstSize")[0].text = "Any Size";
        document.getElementById("lstSize").disabled = true;
        
        if (document.getElementById("trSizeDetail").style.display != "none")
            document.getElementById("trSizeDetail").style.display = "none";

        document.getElementById("lblSizeCode").innerHTML = document.getElementById("chkSizes").value;
        document.getElementById("lblSizeCode").title = document.getElementById("lblSizeCode").innerHTML;
        
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstSize").style.backgroundColor = "#ffffff";
    }
    else
    {
        document.getElementById("lstSize")[0].text = "-- At what size will you use the image? --";
        document.getElementById("lstSize").disabled = false;
    }

    generateLicenseCode();
}

function versionSelected()
{
    resetControls(10);

    if (document.getElementById("lstVersion").value == "")
    {
        resetControls(9);
        return;
    }

    document.getElementById("lblVersionCode").innerHTML = document.getElementById("lstVersion").value;
    document.getElementById("lblVersionCode").title = document.getElementById("lblVersionCode").innerHTML;

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstVersion").style.backgroundColor = "#ffffff";

    generateLicenseCode();
}

function selectAllVersions()
{
    document.getElementById("lstVersion").selectedIndex = 0;
    versionSelected();

    if (document.getElementById("chkVersions").checked)
    {
        document.getElementById("lstVersion")[0].text = "All Versions";
        document.getElementById("lstVersion").disabled = true;
        
        document.getElementById("lblVersionCode").innerHTML = document.getElementById("chkVersions").value;
        document.getElementById("lblVersionCode").title = document.getElementById("lblVersionCode").innerHTML;
        
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstVersion").style.backgroundColor = "#ffffff";
    }
    else
    {
        document.getElementById("lstVersion")[0].text = "-- Single or Multiple Versions or Editions? --";
        document.getElementById("lstVersion").disabled = false;
    }

    generateLicenseCode();
}

function quantitySelected()
{
    resetControls(12);

    if (document.getElementById("lstQuantity").value == "")
    {
        resetControls(11);
        return;
    }

    document.getElementById("lblQuantityCode").innerHTML = document.getElementById("lstQuantity").value;
    document.getElementById("lblQuantityCode").title = document.getElementById("lblQuantityCode").innerHTML;

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstQuantity").style.backgroundColor = "#ffffff";

    generateLicenseCode();
}

function selectAllQuantities()
{
    document.getElementById("lstQuantity").selectedIndex = 0;
    quantitySelected();

    if (document.getElementById("chkQuantities").checked)
    {
        document.getElementById("lstQuantity")[0].text = "Any Quantity";
        document.getElementById("lstQuantity").disabled = true;
      
        document.getElementById("lblQuantityCode").innerHTML = document.getElementById("chkQuantities").value;
        document.getElementById("lblQuantityCode").title = document.getElementById("lblQuantityCode").innerHTML;
        
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstQuantity").style.backgroundColor = "#ffffff";
    }
    else
    {
        document.getElementById("lstQuantity")[0].text = "-- How many copies will be printed or viewed? --";
        document.getElementById("lstQuantity").disabled = false;
    }

    generateLicenseCode();
}

function durationSelected()
{
    resetControls(14);

    if (document.getElementById("lstDuration").value == "")
    {
        resetControls(13);
        return;
    }

    document.getElementById("lblDurationCode").innerHTML = document.getElementById("lstDuration").value;
    document.getElementById("lblDurationCode").title = document.getElementById("lblDurationCode").innerHTML;

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstDuration").style.backgroundColor = "#ffffff";

    generateLicenseCode();
}

function selectAllDurations()
{
    document.getElementById("lstDuration").selectedIndex = 0;
    durationSelected();

    if (document.getElementById("chkDurations").checked)
    {
        document.getElementById("lstDuration")[0].text = "In Perpetuity";
        document.getElementById("lstDuration").disabled = true;
        
        document.getElementById("lblDurationCode").innerHTML = document.getElementById("chkDurations").value;
        document.getElementById("lblDurationCode").title = document.getElementById("lblDurationCode").innerHTML;
        
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstDuration").style.backgroundColor = "#ffffff";
    }
    else
    {
        document.getElementById("lstDuration")[0].text = "-- What is the duration of the image usage? --";
        document.getElementById("lstDuration").disabled = false;
    }

    generateLicenseCode();
}

function industrySelected()
{
    if (document.getElementById("lstIndustry").value == "")
    {
        resetControls(15);
        return;
    }

    var currentCode = trim(calculateIndustryCodes());

    if (currentCode.length > maxMatrixIDCodeLength)
    {
        document.getElementById("lblIndustryCode").innerHTML = currentCode.substring(0, maxMatrixIDCodeLength) + "...";
        document.getElementById("lblIndustryCode").title = currentCode;
    }
    else
    {
        document.getElementById("lblIndustryCode").innerHTML = currentCode;
        document.getElementById("lblIndustryCode").title = currentCode;
    }

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstIndustry").style.backgroundColor = "#ffffff";

    generateLicenseCode();
}

function selectAllIndustries()
{
    document.getElementById("lstIndustry").selectedIndex = 0;
    industrySelected();

    if (document.getElementById("chkIndustries").checked)
    {
        document.getElementById("lstIndustry").disabled = true;
        
        document.getElementById("lblIndustryCode").innerHTML = document.getElementById("chkIndustries").value;
        document.getElementById("lblIndustryCode").title = document.getElementById("lblIndustryCode").innerHTML;

        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstIndustry").style.backgroundColor = "#ffffff";
    }
    else
    {
        document.getElementById("lstIndustry").disabled = false;
    }

    generateLicenseCode();
}

function selectNoExclusivity()
{
    document.getElementById("lstExclusivity").selectedIndex = 0;
    exclusivitySelected();

    if (document.getElementById("chkNonExclusive").checked)
    {
        document.getElementById("lstExclusivity").disabled = true;
        
        document.getElementById("lblExclusivityCode").innerHTML = document.getElementById("chkNonExclusive").value;
        document.getElementById("lblExclusivityCode").title = document.getElementById("lblExclusivityCode").innerHTML;

        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstExclusivity").style.backgroundColor = "#ffffff";
    }
    else
    {
        document.getElementById("lstExclusivity").disabled = false;
    }

    generateLicenseCode();
}

function region1Selected()
{
    resetControls(17);

    if (document.getElementById("lstRegion1").value == "")
    {
        resetControls(16);
        return;
    }

    var menuList = getHttpResponse("../Postback/RetrieveRegionDetail.aspx?regionTerm=" + encodeURIComponent(trim(document.getElementById("lstRegion1").value)));

    clearSelect("lstRegionDetail1");

    if (menuList && trim(menuList) != "")
    {
        var menuArr = menuList.split("|");

        if (menuArr.length == 1)
        {
            document.getElementById("lstRegionDetail1").options[0] = new Option(menuArr[0], menuArr[0]);
            document.getElementById("lstRegionDetail1").selectedIndex = 0;

            region1DetailSelected();
        }
        else
        {
    	    document.getElementById("lstRegionDetail1").options[0] = new Option("-- Select a specific region --", "");

            for (var i=0; i < menuArr.length; i++)
            {
                if (trim(menuArr[i]) != "")
	                document.getElementById("lstRegionDetail1").options[i+1] = new Option(menuArr[i], menuArr[i]);
	            else
	                document.getElementById("lstRegionDetail1").options[i+1] = new Option("No Detail", "No Detail");
            }
        }
	}
	else
	{
        document.getElementById("lstRegionDetail1").options[0] = new Option("No Detail", "No Detail");

	    region1DetailSelected();
	}

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstRegion1").style.backgroundColor = "#ffffff";

    document.getElementById("trRegionDetail1").style.display = "";
}

function region1DetailSelected()
{
    if (document.getElementById("lstRegionDetail1").value == "")
    {
        resetControls(17);
        return;
    }

    var currentCode = trim(calculateRegionCode(1));

    document.getElementById("lblRegionCode1").innerHTML = currentCode;
    document.getElementById("lblRegionCode1").title = currentCode;

    generateLicenseCode();

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstRegionDetail1").style.backgroundColor = "#ffffff";

    document.getElementById("btnAddRegion").style.visibility = "visible";
}

function regionSelected(controlNumber)
{
    clearRegionDetail(controlNumber);

    if (document.getElementById("lstRegion" + controlNumber).value == "")
    {
        clearRegion(controlNumber);
        regionDetailSelected(controlNumber);
        
        return;
    }

    var menuList = getHttpResponse("../Postback/RetrieveRegionDetail.aspx?regionTerm=" + encodeURIComponent(trim(document.getElementById("lstRegion" + controlNumber).value)));

    clearSelect("lstRegionDetail" + controlNumber);

    if (menuList && trim(menuList) != "")
    {
        var menuArr = menuList.split("|");

        if (menuArr.length == 1)
        {
            document.getElementById("lstRegionDetail" + controlNumber).options[0] = new Option(menuArr[0], menuArr[0]);
            document.getElementById("lstRegionDetail" + controlNumber).selectedIndex = 0;

            regionDetailSelected(controlNumber);
        }
        else
        {
    	    document.getElementById("lstRegionDetail" + controlNumber).options[0] = new Option("-- Select a specific region --", "");

            for (var i=0; i < menuArr.length; i++)
            {
                if (trim(menuArr[i]) != "")
	                document.getElementById("lstRegionDetail" + controlNumber).options[i+1] = new Option(menuArr[i], menuArr[i]);
	            else
	                document.getElementById("lstRegionDetail" + controlNumber).options[i+1] = new Option("No Detail", "No Detail");
            }
        }
	}
	else
	{
        document.getElementById("lstRegionDetail" + controlNumber).options[0] = new Option("No Detail", "No Detail");

        regionDetailSelected(controlNumber);
	}

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstRegion" + controlNumber).style.backgroundColor = "#ffffff";

    document.getElementById("trRegionDetail" + controlNumber).style.display = "";
}

function regionDetailSelected(controlNumber)
{
    if (document.getElementById("lstRegionDetail" + controlNumber).value == "")
    {
        document.getElementById("lblRegionCode" + controlNumber).innerHTML = "";
        document.getElementById("lblRegionCode" + controlNumber).title = "";

        generateLicenseCode();

        return;
    }

    var currentCode = trim(calculateRegionCode(controlNumber));

    document.getElementById("lblRegionCode" + controlNumber).innerHTML = currentCode;
    document.getElementById("lblRegionCode" + controlNumber).title = currentCode;

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstRegionDetail" + controlNumber).style.backgroundColor = "#ffffff";

    generateLicenseCode();
}

function selectAllRegions()
{
    for (var i = 2; i <= maxRegionStackSize; i++)
    {
        document.getElementById("trRegion" + i).style.display = "none";
        document.getElementById("trRegionDetail" + i).style.display = "none";
        document.getElementById("trRegionSeparator" + i).style.display = "none";

        document.getElementById("lstRegion" + i).selectedIndex = 0;
        document.getElementById("lstRegionDetail" + i).selectedIndex = 0;

        document.getElementById("lblRegionCode" + i).innerHTML = "";
        document.getElementById("lblRegionCode" + i).title = "";
    }

    document.getElementById("lstRegion1").selectedIndex = 0;
    region1Selected();

    if (document.getElementById("chkRegions").checked)
    {
        document.getElementById("lstRegion1")[0].text = "Worldwide";
        document.getElementById("lstRegion1").disabled = true;

        document.getElementById("trRegionDetail1").style.display = "none";
        
        document.getElementById("lblRegionCode1").innerHTML = document.getElementById("chkRegions").value;
        document.getElementById("lblRegionCode1").title = document.getElementById("lblRegionCode1").innerHTML;

        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstRegion1").style.backgroundColor = "#ffffff";
    }
    else
    {
        document.getElementById("lstRegion1")[0].text = "-- In what region will the image appear? --";
        document.getElementById("lstRegion1").disabled = false;
    }

    generateLicenseCode();
}

function languageSelected()
{
    if (document.getElementById("lstLanguage").value == "")
    {
        resetControls(18);
        return;
    }

    var currentCode = trim(calculateLanguageCodes());

    if (currentCode.length > maxMatrixIDCodeLength)
    {
        document.getElementById("lblLanguageCode").innerHTML = currentCode.substring(0, maxMatrixIDCodeLength) + "...";
        document.getElementById("lblLanguageCode").title = currentCode;
    }
    else
    {
        document.getElementById("lblLanguageCode").innerHTML = currentCode;
        document.getElementById("lblLanguageCode").title = currentCode;
    }

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstLanguage").style.backgroundColor = "#ffffff";

    generateLicenseCode();
}

function selectAllLanguages()
{
    document.getElementById("lstLanguage").selectedIndex = 0;
    languageSelected();

    if (document.getElementById("chkLanguages").checked)
    {
        document.getElementById("lstLanguage").disabled = true;
        
        document.getElementById("lblLanguageCode").innerHTML = document.getElementById("chkLanguages").value;
        document.getElementById("lblLanguageCode").title = document.getElementById("lblLanguageCode").innerHTML;

        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstLanguage").style.backgroundColor = "#ffffff";
    }
    else
    {
        document.getElementById("lstLanguage").disabled = false;
    }

    generateLicenseCode();
}

function exclusivitySelected()
{
    if (document.getElementById("lstExclusivity").value == "")
    {
        resetControls(19);
        return;
    }

    var currentCode = trim(calculateExclusivityCodes());

    if (currentCode.length > maxMatrixIDCodeLength)
    {
        document.getElementById("lblExclusivityCode").innerHTML = currentCode.substring(0, maxMatrixIDCodeLength) + "...";
        document.getElementById("lblExclusivityCode").title = currentCode;
    }
    else
    {
        document.getElementById("lblExclusivityCode").innerHTML = currentCode;
        document.getElementById("lblExclusivityCode").title = currentCode;
    }

    if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
        document.getElementById("lstExclusivity").style.backgroundColor = "#ffffff";

    generateLicenseCode();
}


function addRegion()
{
    if (document.getElementById("lstRegion1").value == "" || document.getElementById("lstRegionDetail1").value == "")
    {
        alert("You must select the first region and detail before adding additional ones.");
        return;
    }

    var currentStackId = -1;

    for (var i=2; i <= maxRegionStackSize; i++)
    {
        if (document.getElementById("trRegion" + i).style.display == "none")
        {
            currentStackId = i;
            break;
        }
    }

    if (currentStackId == -1)
    {
        raiseError("Region stack out of bounds. Only " + maxRegionStackSize + " regions allowed.");
        return;
    }

    document.getElementById("trRegion" + currentStackId).style.display = "";
    document.getElementById("trRegionSeparator" + currentStackId).style.display = "";

    copyRegionValues(currentStackId);
}

function removeRegion(controlNumber)
{
    document.getElementById("trRegion" + controlNumber).style.display = "none";
    document.getElementById("trRegionDetail" + controlNumber).style.display = "none";
    document.getElementById("trRegionSeparator" + controlNumber).style.display = "none";

    clearSelect("lstRegion" + controlNumber);
    clearSelect("lstRegionDetail" + controlNumber);

    document.getElementById("lblRegionCode" + controlNumber).innerHTML = "";
    document.getElementById("lblRegionCode" + controlNumber).title = "";

    generateLicenseCode();
}

function copyRegionValues(controlNumber)
{
    if (!document.getElementById("lstRegion1") || !document.getElementById("lstRegion" + controlNumber))
        return;

	for (var count = 0; count <= document.getElementById("lstRegion1").options.length; count++)
	{
	    try
	    {
	        document.getElementById("lstRegion" + controlNumber).options[count] = new Option(document.getElementById("lstRegion1").options[count].text, document.getElementById("lstRegion1").options[count].value);
	    }
	    catch(e)
	    {
	    }
	}
}

function clearRegion(controlNumber)
{
    if (document.getElementById("lstRegion" + controlNumber))
    {
        document.getElementById("lstRegion" + controlNumber).selectedIndex = 0;
        clearRegionDetail(controlNumber);
    }
}

function clearRegionDetail(controlNumber)
{
    if (document.getElementById("lstRegionDetail" + controlNumber))
    {
        document.getElementById("trRegionDetail" + controlNumber).style.display = "none";
        clearSelect("lstRegionDetail" + controlNumber);
    }
}

function calculateMediaMatrixCode()
{
    if (document.getElementById("lstDistribution").value == "")
    {
        raiseError("Not enough information provided to calculate a license code.");
        return "undefined";
    }

    var matrixCode = getHttpResponse("../Postback/CalculateMediaMatrixCode.aspx?categoryTerm=" + encodeURIComponent(trim(document.getElementById("lstCategory").value)) + "&typeTerm=" + encodeURIComponent(trim(document.getElementById("lstType").value)) + "&detailTerm=" + encodeURIComponent(trim(document.getElementById("lstDetail").value)) + "&distributionTerm=" + encodeURIComponent(trim(document.getElementById("lstDistribution").value)));

    if (!matrixCode || trim(matrixCode) == "")
    {
        raiseError("No media matrix item found. No license code can be generated.");
        return "undefined";
    }

    return matrixCode;
}

function calculateSizeCode()
{
    if (document.getElementById("lstSizeDetail").value == "")
    {
        raiseError("Not enough information provided to calculate a license code.");
        return "undefined";
    }

    var licenseCode = getHttpResponse("../Postback/CalculateSizeCode.aspx?sizeTerm=" + encodeURIComponent(trim(document.getElementById("lstSize").value)) + "&sizeDetailTerm=" + encodeURIComponent(trim(document.getElementById("lstSizeDetail").value.replace("No Detail", ""))));

    if (!licenseCode || trim(licenseCode) == "")
    {
        raiseError("No size item found. No license code can be generated.");
        return "undefined";
    }

    return licenseCode;
}

function calculateIndustryCodes()
{
    if (document.getElementById("lstIndustry").value == "")
    {
        raiseError("Not enough information provided to calculate a license code.");
        return "undefined";
    }
    
    var industryCodes = "";

    for (var i=0; i < document.getElementById("lstIndustry").length; i++)
    {
        if (document.getElementById("lstIndustry")[i].selected == true)
            industryCodes += document.getElementById("lstIndustry")[i].value;
    }

    if (!industryCodes || trim(industryCodes) == "")
    {
        raiseError("No industry items found. No license code can be generated.");
        return "undefined";
    }

    return industryCodes;
}

function calculateRegionCode(controlNumber)
{
    if (document.getElementById("lstRegion" + controlNumber).value == "")
    {
        raiseError("Not enough information provided to calculate a license code.");
        return "undefined";
    }

    var licenseCode = getHttpResponse("../Postback/CalculateRegionCode.aspx?regionTerm=" + encodeURIComponent(trim(document.getElementById("lstRegion" + controlNumber).value)) + "&regionDetailTerm=" + encodeURIComponent(trim(document.getElementById("lstRegionDetail" + controlNumber).value.replace("No Detail", ""))));

    if (!licenseCode || trim(licenseCode) == "")
    {
        raiseError("No region item found. No license code can be generated.");
        return "undefined";
    }

    return licenseCode;
}

function calculateLanguageCodes()
{
    if (document.getElementById("lstLanguage").value == "")
    {
        raiseError("Not enough information provided to calculate a license code.");
        return "undefined";
    }
    
    var languageCodes = "";

    for (var i=0; i < document.getElementById("lstLanguage").length; i++)
    {
        if (document.getElementById("lstLanguage")[i].selected == true)
            languageCodes += document.getElementById("lstLanguage")[i].value;
    }

    if (!languageCodes || trim(languageCodes) == "")
    {
        raiseError("No language items found. No license code can be generated.");
        return "undefined";
    }

    return languageCodes;
}

function calculateExclusivityCodes()
{
    if (document.getElementById("lstExclusivity").value == "")
    {
        raiseError("Not enough information provided to calculate a license code.");
        return "undefined";
    }

    var exclusivityCodes = "";

    for (var i=0; i < document.getElementById("lstExclusivity").length; i++)
    {
        if (document.getElementById("lstExclusivity")[i].selected == true)
            exclusivityCodes += document.getElementById("lstExclusivity")[i].value;
    }

    if (!exclusivityCodes || trim(exclusivityCodes) == "")
    {
        raiseError("No exclusivity items found. No license code can be generated.");
        return "undefined";
    }

    return exclusivityCodes;
}

function generateUseNumberCode(useNumber)
{
    if (useNumber >= 0 && useNumber < maxLicenseUseNumber)
        return "1UN" + String.fromCharCode(useNumber + 65);
    else
        return "";
}

function generateLicenseCode()
{
    var menuCount = 0;

    if (trim(document.getElementById("lblUsageCode").innerHTML) == "")
    {
        return;
    }

    var generatedCode = document.getElementById("lblUsageCode").innerHTML;   
    menuCount++;

    if (trim(document.getElementById("lblMatrixMediaCode").innerHTML) == "")
    {
        return;
    }

    generatedCode += document.getElementById("lblMatrixMediaCode").innerHTML;
    menuCount++;

    if (trim(document.getElementById("lblPlacementCode").innerHTML) == "")
    {
        return;
    }

    generatedCode += document.getElementById("lblPlacementCode").innerHTML;
    menuCount++;

    if (trim(document.getElementById("lblSizeCode").innerHTML) == "")
    {
        return;
    }

    generatedCode += document.getElementById("lblSizeCode").innerHTML;
    menuCount++;

    if (trim(document.getElementById("lblVersionCode").innerHTML) == "")
    {
        return;
    }

    generatedCode += document.getElementById("lblVersionCode").innerHTML;
    menuCount++;

    if (trim(document.getElementById("lblQuantityCode").innerHTML) == "")
    {
        return;
    }

    generatedCode += document.getElementById("lblQuantityCode").innerHTML;
    menuCount++;

    if (trim(document.getElementById("lblDurationCode").innerHTML) == "")
    {
        return;
    }

    generatedCode += document.getElementById("lblDurationCode").innerHTML;
    menuCount++;

    if (trim(document.getElementById("lblRegionCode1").title) == "")
    {
        return;
    }

    if (document.getElementById("chkRegions").checked)
    {
        generatedCode += document.getElementById("lblRegionCode1").title;
        menuCount++;
    }
    else
    {
        for (var i=1; i <= maxRegionStackSize; i++)
        {
            if (document.getElementById("trRegion" + i).style.display != "none" && trim(document.getElementById("lblRegionCode" + i).title) != "")
            {
                if (generatedCode.indexOf(document.getElementById("lblRegionCode" + i).title) < 0)
                {
                    generatedCode += document.getElementById("lblRegionCode" + i).title;
                    menuCount++;
                }
            }
        }
    }

    if (trim(document.getElementById("lblIndustryCode").title) == "")
    {
        return;
    }

    generatedCode += document.getElementById("lblIndustryCode").title;

    if (document.getElementById("chkIndustries").checked)
    {
        menuCount++;
    }
    else
    {
        for (var i=0; i < document.getElementById("lstIndustry").length; i++)
        {
            if (document.getElementById("lstIndustry")[i].selected == true)
                menuCount++;
        }
    }

    if (trim(document.getElementById("lblLanguageCode").title) == "")
    {
        return;
    }

    generatedCode += document.getElementById("lblLanguageCode").title;

    if (document.getElementById("chkLanguages").checked)
    {
        menuCount++;
    }
    else
    {
        for (var i=0; i < document.getElementById("lstLanguage").length; i++)
        {
            if (document.getElementById("lstLanguage")[i].selected == true)
                menuCount++;
        }
    }

    if (trim(document.getElementById("lblExclusivityCode").title) == "")
    {
        return;
    }

    generatedCode += document.getElementById("lblExclusivityCode").title;

    if (document.getElementById("chkNonExclusive").checked)
    {
        menuCount++;
    }
    else
    {
        for (var i=0; i < document.getElementById("lstExclusivity").length; i++)
        {
            if (document.getElementById("lstExclusivity")[i].selected == true)
                menuCount++;
        }
    }
    
    var useMenuMacro;

    if (document.getElementById("chkCategories").checked)
    {
        useMenuMacro = "a|a|a|a|";
    }
    else
    {
        useMenuMacro = document.getElementById("lstCategory").selectedIndex + "|";
        useMenuMacro += document.getElementById("lstType").selectedIndex + "|";
        useMenuMacro += document.getElementById("lstDetail").selectedIndex + "|";
        useMenuMacro += document.getElementById("lstDistribution").selectedIndex + "|";
    }

    if (document.getElementById("chkPlacements").checked)
        useMenuMacro += "a|";
    else
        useMenuMacro += document.getElementById("lstPlacement").selectedIndex + "|";
    
    if (document.getElementById("chkSizes").checked)
    {
        useMenuMacro += "a|a|";
    }
    else
    {
        useMenuMacro += document.getElementById("lstSize").selectedIndex + "|";
        useMenuMacro += document.getElementById("lstSizeDetail").selectedIndex + "|";
    }

    if (document.getElementById("chkVersions").checked)
        useMenuMacro += "a|";
    else
        useMenuMacro += document.getElementById("lstVersion").selectedIndex + "|";

    if (document.getElementById("chkQuantities").checked)
        useMenuMacro += "a|";
    else
        useMenuMacro += document.getElementById("lstQuantity").selectedIndex + "|";

    if (document.getElementById("chkDurations").checked)
        useMenuMacro += "a|";
    else
        useMenuMacro += document.getElementById("lstDuration").selectedIndex + "|";

    if (document.getElementById("chkRegions").checked)
    {
        useMenuMacro += "a|";
    }
    else
    {
        for (regionCounter = 1; regionCounter <= maxRegionStackSize; regionCounter++)
        {
            if (document.getElementById("trRegion" + regionCounter).style.display != "none" && trim(document.getElementById("lstRegion" + regionCounter).value) != "" &&
                trim(document.getElementById("lstRegionDetail" + regionCounter).value) != "")
            {
                useMenuMacro += document.getElementById("lstRegion" + regionCounter).selectedIndex + "," +
                                                                    document.getElementById("lstRegionDetail" + regionCounter).selectedIndex + ";"
            }
        }
    }

    useMenuMacro = useMenuMacro.substring(0, useMenuMacro.length - 1) + "|";

    if (document.getElementById("chkIndustries").checked)
    {
        useMenuMacro += "a|";
    }
    else
    {
        for (var y = 0; y < document.getElementById("lstIndustry").length; y++)
        {
            if (document.getElementById("lstIndustry")[y].selected)
            {
                useMenuMacro += y + ";";
            }
        }
    }

    useMenuMacro = useMenuMacro.substring(0, useMenuMacro.length - 1) + "|";

    if (document.getElementById("chkLanguages").checked)
    {
        useMenuMacro += "a|";
    }
    else
    {
        for (var y = 0; y < document.getElementById("lstLanguage").length; y++)
        {
            if (document.getElementById("lstLanguage")[y].selected)
            {
                useMenuMacro += y + ";";
            }
        }
    }

    useMenuMacro = useMenuMacro.substring(0, useMenuMacro.length - 1) + "|";

    if (document.getElementById("chkNonExclusive").checked)
    {
        useMenuMacro += "a;";
    }
    else
    {
        for (var y = 0; y < document.getElementById("lstExclusivity").length; y++)
        {
            if (document.getElementById("lstExclusivity")[y].selected)
            {
                useMenuMacro += y + ";";
            }
        }
    }

    useMenuMacro = useMenuMacro.substring(0, useMenuMacro.length - 1);
    
    document.getElementById("txtUse").value = "1I" + getUsageCountCode(menuCount) + generatedCode + "&" + useMenuMacro;
}

function saveLicenseCode()
{
    var validationSummary = "";

    if (!document.getElementById("lstCategory").disabled && document.getElementById("lstCategory").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstCategory").style.backgroundColor = "#ff8080";

        validationSummary += "- Media Category\r\n";
    }

    if (document.getElementById("trType").style.display != "none" && !document.getElementById("lstType").disabled &&
        document.getElementById("lstType").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstType").style.backgroundColor = "#ff8080";

        validationSummary += "- Media Type\r\n";
    }

    if (document.getElementById("trDetail").style.display != "none" && !document.getElementById("lstDetail").disabled &&
        document.getElementById("lstDetail").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstDetail").style.backgroundColor = "#ff8080";

        validationSummary += "- Media Detail\r\n";
    }

    if (document.getElementById("trDistribution").style.display != "none" && !document.getElementById("lstDistribution").disabled &&
        document.getElementById("lstDistribution").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstDistribution").style.backgroundColor = "#ff8080";

        validationSummary += "- Distribution Format\r\n";
    }

    if (document.getElementById("trPlacement").style.display != "none" && !document.getElementById("lstPlacement").disabled &&
        document.getElementById("lstPlacement").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstPlacement").style.backgroundColor = "#ff8080";

        validationSummary += "- Placement\r\n";
    }

    if (document.getElementById("trSize").style.display != "none" && !document.getElementById("lstSize").disabled &&
        document.getElementById("lstSize").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstSize").style.backgroundColor = "#ff8080";

        validationSummary += "- Size\r\n";
    }

    if (document.getElementById("trSizeDetail").style.display != "none" && !document.getElementById("lstSizeDetail").disabled &&
        document.getElementById("lstSizeDetail").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstSizeDetail").style.backgroundColor = "#ff8080";

        validationSummary += "- Size Detail\r\n";
    }

    if (document.getElementById("trVersion").style.display != "none" && !document.getElementById("lstVersion").disabled &&
        document.getElementById("lstVersion").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstVersion").style.backgroundColor = "#ff8080";

        validationSummary += "- Version\r\n";
    }

    if (document.getElementById("trQuantity").style.display != "none" && !document.getElementById("lstQuantity").disabled &&
        document.getElementById("lstQuantity").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstQuantity").style.backgroundColor = "#ff8080";

        validationSummary += "- Quantity\r\n";
    }

    if (document.getElementById("trDuration").style.display != "none" && !document.getElementById("lstDuration").disabled &&
        document.getElementById("lstDuration").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstDuration").style.backgroundColor = "#ff8080";

        validationSummary += "- Duration\r\n";
    }

    for (var i = 1; i <= maxRegionStackSize; i++)
    {
        if (document.getElementById("trRegion" + i).style.display != "none" && !document.getElementById("lstRegion" + i).disabled &&
            document.getElementById("lstRegion" + i).value == "")
        {
            if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
                document.getElementById("lstRegion" + i).style.backgroundColor = "#ff8080";

            validationSummary += "- Region " + i + "\r\n";
        }

        if (document.getElementById("trRegionDetail" + i).style.display != "none" && !document.getElementById("lstRegionDetail" + i).disabled &&
            document.getElementById("lstRegionDetail" + i).value == "")
        {
            if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
                document.getElementById("lstRegionDetail" + i).style.backgroundColor = "#ff8080";

            validationSummary += "- Region Detail " + i + "\r\n";
        }
    }

    if (document.getElementById("trIndustry").style.display != "none" && !document.getElementById("lstIndustry").disabled &&
        document.getElementById("lstIndustry").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstIndustry").style.backgroundColor = "#ff8080";

        validationSummary += "- Industry\r\n";
    }

    if (document.getElementById("trLanguage").style.display != "none" && !document.getElementById("lstLanguage").disabled &&
        document.getElementById("lstLanguage").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstLanguage").style.backgroundColor = "#ff8080";

        validationSummary += "- Language\r\n";
    }

    if (document.getElementById("trExclusivity").style.display != "none" && !document.getElementById("lstExclusivity").disabled &&
        document.getElementById("lstExclusivity").value == "")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstExclusivity").style.backgroundColor = "#ff8080";

        validationSummary += "- Exclusivity\r\n";
    }

    if (validationSummary != "")
    {
        alert("You must first select the following usages to proceed:\r\n\r\n" + validationSummary);
        return;
    }

    if (document.getElementById("lblExclusivityCode").title.indexOf("9ENE") >= 0 &&
        document.getElementById("lblExclusivityCode").title != "9ENE")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstExclusivity").style.backgroundColor = "#ff8080";

        alert("You cannot specify the \"Non-Exclusive\" usage along with Exclusivity choices. Make sure \"Non-Exclusive\" is the only selection in the Exclusivity drop down list.");

        return;
    }

    if (document.getElementById("lblExclusivityCode").title.indexOf("9EXC") >= 0 &&
        document.getElementById("lblExclusivityCode").title != "9EXC")
    {
        if (navigator.userAgent.toLowerCase().indexOf("safari") < 0)
            document.getElementById("lstExclusivity").style.backgroundColor = "#ff8080";

        alert("You cannot specify the \"All Exclusive\" usage along with other Exclusivity choices. Make sure \"All Exclusive\" is the only selection in the Exclusivity drop down list.");

        return;
    }

    if (trim(document.getElementById("txtUse").value) == "" || document.getElementById("txtUse").value.indexOf("&") < 0)
    {
        alert("Cannot save an incomplete usage. Make sure to complete all red select boxes.");
        return;
    }
    
    var mediaUsage = document.getElementById("lstCategory")[document.getElementById("lstCategory").selectedIndex].text + " | " +
                    document.getElementById("lstType")[document.getElementById("lstType").selectedIndex].text + " | " +
                    document.getElementById("lstDetail")[document.getElementById("lstDetail").selectedIndex].text + " | " +
                    document.getElementById("lstDistribution")[document.getElementById("lstDistribution").selectedIndex].text;

    if (!document.getElementById("lstUsages").options[currentUseNumber])
    {
        document.getElementById("lstUsages").options[currentUseNumber] = new Option("Usage " + String.fromCharCode(currentUseNumber + 65) + ": " + mediaUsage, document.getElementById("txtUse").value);
    }
    else
    {
        document.getElementById("lstUsages").options[currentUseNumber].text = "Usage " + String.fromCharCode(currentUseNumber + 65) + ": " + mediaUsage;
        document.getElementById("lstUsages").options[currentUseNumber].value = document.getElementById("txtUse").value;
    }

    document.getElementById("lstUsages").selectedIndex = -1;

    currentUseNumber = -1;
    showCurrentUsage(currentUseNumber);

    resetControls(-1);

    if (document.getElementById("trMediaUsages").style.display == "none")
        document.getElementById("trMediaUsages").style.display = "";

    document.getElementById("trMediaUsageSeparator").style.display = "none";
    document.getElementById("trMediaUsageMenus").style.display = "none";
    document.getElementById("tdEditUsage").style.visibility = "visible";
}

function generateLicenseSummaryCode()
{
    if (document.getElementById("lstUsages").options.length > 0)
    {
        for (var i=0; i < document.getElementById("lstUsages").options.length; i++)
        {
            if (document.getElementById("lstUsages").options[i].text.indexOf("Incomplete / Not Saved") >= 0)
            {
                alert("The current usage is incomplete. To continue to the next page, you must first complete or cancel the current usage. To complete the current usage, make selections from all remaining Media Usage Menus and then press \"Save\". To cancel the current usage, press \"Cancel\".");
                return;
            }
        }
    }
    else
    {
        alert("You must first create and save at least one Media Usage. After selecting values for each field, click \"Save\" to save your first media usage. Repeat this process to add more more media usages, if desired. When all your meida usages are entered, click \"Continue\" to proceed to a confirmation screen summarizing all media usages.");
        return;
    }

    if (document.getElementById("trMediaUsageMenus").style.display != "none")
    {
        alert("The current usage is incomplete. To continue to the next page, you must first complete or cancel the current usage. To complete the current usage, make selections from all remaining Media Usage Menus and then press \"Save\". To cancel the current usage, press \"Cancel\".");
        return;
    }

    var usageCount = 0;
    var usageCountFormatted = "";
    
    var mediaSummaryCode = "";
    var summaryCodeValueList = "";

    for (var i=0; i < document.getElementById("lstUsages").options.length; i++)
    {
        if (document.getElementById("lstUsages").options[i] && document.getElementById("lstUsages").options[i].value.indexOf("&") > 0)
        {
            summaryCodeValueList += document.getElementById("lstUsages").options[i].value + "*";

            mediaSummaryCode += "|" + document.getElementById("lstUsages").options[i].value.split("&")[0];
            usageCount++;
        }
    }

    if (usageCount.toString().length == 3)
    {
        usageCountFormatted = usageCount.toString();
    }
    else if (usageCount.toString().length == 2)
    {
        usageCountFormatted = "0" + usageCount.toString();
    }
    else if (usageCount.toString().length == 1)
    {
        usageCountFormatted = "00" + usageCount.toString();
    }
    else
    {
        raiseError("Invalid Usage count generated.");
        return;
    }
    
    if (summaryCodeValueList != "")
    {
        var response = getHttpResponse("../Postback/SetLicenseSession.aspx?summaryCodeValueList=" + encodeURIComponent(summaryCodeValueList));

        if (response && trim(response) != "")
        {
            raiseError("Session objects could not be created. " + response);
            return;
        }
    }

    document.location.href = "../Steps/PermissionsPreview.aspx?mediaCode=" + "|PLUS|V0120|U" + usageCountFormatted + mediaSummaryCode + "|";
}

function getUsageCountCode(usageCount)
{
    if (isNaN(usageCount) || usageCount < 1 || usageCount > 676 || parseInt(usageCount) != usageCount)
    {
        raiseError("Invalid usage count provided.");
        return 0;
    }

    var code1 = parseInt(usageCount / 27);
    var code2 = usageCount % 27 + code1;

    code1 += 65;
    code2 += 64;

    if (code2 > 90)
    {
        code1++;
        code2 -= 26;
    }

    if (!code1 || code1 < 65 || code1 > 90 || !code2 || code2 < 64 || code2 > 90)
    {
        raiseError("Invalid usage count provided.");
        return 0;
    }

    var codeString1 = String.fromCharCode(code1);
    var codeString2 = String.fromCharCode(code2);

    if (codeString1 == "" || codeString2 == "")
    {
        raiseError("Invalid usage count provided.");
        return 0;
    }

    return codeString1 + codeString2;
}

function resetControls(index)
{
    if (currentUseNumber >= 0 && !document.getElementById("lstUsages").options[currentUseNumber])
    {
        document.getElementById("lstUsages").options[currentUseNumber] = new Option("Usage " + String.fromCharCode(currentUseNumber + 65) + ": Incomplete / Not Saved", "");
    }

    if (index < 0)
    {
        document.getElementById("trMediaSeparator").style.display = "none";

        document.getElementById("chkCategories").checked = false;
        document.getElementById("chkPlacements").checked = false;
        document.getElementById("chkSizes").checked = false;
        document.getElementById("chkVersions").checked = false;
        document.getElementById("chkQuantities").checked = false;
        document.getElementById("chkDurations").checked = false;
        document.getElementById("chkRegions").checked = false;
        document.getElementById("chkIndustries").checked = false;
        document.getElementById("chkLanguages").checked = false;
        document.getElementById("chkNonExclusive").checked = false;

        document.getElementById("lstCategory").disabled = false;
        document.getElementById("lstType").disabled = false;
        document.getElementById("lstDetail").disabled = false;
        document.getElementById("lstDistribution").disabled = false;
        document.getElementById("lstPlacement").disabled = false;
        document.getElementById("lstSize").disabled = false;
        document.getElementById("lstSizeDetail").disabled = false;
        document.getElementById("lstVersion").disabled = false;
        document.getElementById("lstQuantity").disabled = false;
        document.getElementById("lstDuration").disabled = false;
        document.getElementById("lstRegion1").disabled = false;
        document.getElementById("lstIndustry").disabled = false;
        document.getElementById("lstLanguage").disabled = false;
        document.getElementById("lstExclusivity").disabled = false;

        document.getElementById("chkPlacements").disabled = false;
        document.getElementById("chkSizes").disabled = false;
        document.getElementById("chkVersions").disabled = false;
        document.getElementById("chkQuantities").disabled = false;
        document.getElementById("chkDurations").disabled = false;

        document.getElementById("lstCategory").selectedIndex = 0;
        document.getElementById("lstPlacement").selectedIndex = 0;
        document.getElementById("lstSize").selectedIndex = 0;
        document.getElementById("lstVersion").selectedIndex = 0;
        document.getElementById("lstQuantity").selectedIndex = 0;
        document.getElementById("lstDuration").selectedIndex = 0;
        document.getElementById("lstRegion1").selectedIndex = 0;
        document.getElementById("lstIndustry").selectedIndex = 0;
        document.getElementById("lstLanguage").selectedIndex = 0;
        document.getElementById("lstExclusivity").selectedIndex = 0;

        for (var i=5; i <= 19; i++)
            resetControls(i);

        for (var i = 1; i <= maxRegionStackSize; i++)
        {
            document.getElementById("trRegion" + i).style.display = "none";

            if (document.getElementById("trRegionSeparator" + i))
                document.getElementById("trRegionSeparator" + i).style.display = "none";
        }

        document.getElementById("trIndustry").style.display = "none";
        document.getElementById("trIndustrySeparator").style.display = "none";

        document.getElementById("trLanguage").style.display = "none";
        document.getElementById("trLanguageSeparator").style.display = "none";

        document.getElementById("trExclusivity").style.display = "none";
        document.getElementById("trExclusivitySeparator").style.display = "none";
    }

    if (index < 1)
    {
        document.getElementById("lstCategory").selectedIndex = 0;

        document.getElementById("trType").style.display = "none";
        clearSelect("lstType");

        document.getElementById("lblMatrixMediaCode").innerHTML = "";
        document.getElementById("lblMatrixMediaCode").title = "";
    }

    if (index < 2)
    {
        document.getElementById("trDetail").style.display = "none";
        clearSelect("lstDetail");

        document.getElementById("lblMatrixMediaCode").innerHTML = "";
        document.getElementById("lblMatrixMediaCode").title = "";
    }

    if (index < 3)
    {
        document.getElementById("trDistribution").style.display = "none";
        clearSelect("lstDistribution");

        document.getElementById("lblMatrixMediaCode").innerHTML = "";
        document.getElementById("lblMatrixMediaCode").title = "";
    }

    if (index == 3)
    {
        document.getElementById("lblMatrixMediaCode").innerHTML = "";
        document.getElementById("lblMatrixMediaCode").title = "";
    }

    if (index == 4)
    {
        document.getElementById("chkPlacements").checked = false;
        document.getElementById("chkSizes").checked = false;
        document.getElementById("chkVersions").checked = false;
        document.getElementById("chkQuantities").checked = false;
        document.getElementById("chkDurations").checked = false;

        document.getElementById("lstPlacement").disabled = false;
        document.getElementById("lstSize").disabled = false;
        document.getElementById("lstVersion").disabled = false;
        document.getElementById("lstQuantity").disabled = false;
        document.getElementById("lstDuration").disabled = false;

        document.getElementById("lstPlacement").selectedIndex = 0;
        document.getElementById("lstSize").selectedIndex = 0;
        document.getElementById("lstVersion").selectedIndex = 0;
        document.getElementById("lstQuantity").selectedIndex = 0;
        document.getElementById("lstDuration").selectedIndex = 0;

        document.getElementById("trSizeDetail").style.display = "none";
        clearSelect("lstSizeDetail");

        document.getElementById("lblPlacementCode").innerHTML = "";
        document.getElementById("lblPlacementCode").title = "";

        document.getElementById("lblSizeCode").innerHTML = "";
        document.getElementById("lblSizeCode").title = "";

        document.getElementById("lblVersionCode").innerHTML = "";
        document.getElementById("lblVersionCode").title = "";

        document.getElementById("lblQuantityCode").innerHTML = "";
        document.getElementById("lblQuantityCode").title = "";

        document.getElementById("lblDurationCode").innerHTML = "";
        document.getElementById("lblDurationCode").title = "";
    }

    if (index < 5)
    {
        document.getElementById("trPlacement").style.display = "none";
    	document.getElementById("trPlacementSeparator").style.display = "none";
        clearSelect("lstPlacement");

        document.getElementById("lblPlacementCode").innerHTML = "";
        document.getElementById("lblPlacementCode").title = "";       

        document.getElementById("trSize").style.display = "none";
        document.getElementById("trSizeSeparator").style.display = "none";
        clearSelect("lstSize");
        document.getElementById("trSizeDetail").style.display = "none";
        clearSelect("lstSizeDetail");

        document.getElementById("lblSizeCode").innerHTML = "";
        document.getElementById("lblSizeCode").title = "";       

        document.getElementById("trVersion").style.display = "none";
    	document.getElementById("trVersionSeparator").style.display = "none";
        clearSelect("lstVersion");

        document.getElementById("lblVersionCode").innerHTML = "";
        document.getElementById("lblVersionCode").title = "";       

        document.getElementById("trQuantity").style.display = "none";
        document.getElementById("trQuantitySeparator").style.display = "none";
        clearSelect("lstQuantity");

        document.getElementById("lblQuantityCode").innerHTML = "";
        document.getElementById("lblQuantityCode").title = "";       

        document.getElementById("trDuration").style.display = "none";
        document.getElementById("trDurationSeparator").style.display = "none";
        clearSelect("lstDuration");

        document.getElementById("lblDurationCode").innerHTML = "";
        document.getElementById("lblDurationCode").title = "";       
    }

    if (index == 5)
    {
        document.getElementById("lstPlacement").selectedIndex = 0;

        document.getElementById("lblPlacementCode").innerHTML = "";
        document.getElementById("lblPlacementCode").title = "";
    }

    if (index == 6)
    {
        document.getElementById("lblPlacementCode").innerHTML = "";
        document.getElementById("lblPlacementCode").title = "";
    }

    if (index == 7)
    {
        document.getElementById("lstSize").selectedIndex = 0;

        document.getElementById("lblSizeCode").innerHTML = "";
        document.getElementById("lblSizeCode").title = "";
    }

    if (index == 8)
    {
        document.getElementById("lblSizeCode").innerHTML = "";
        document.getElementById("lblSizeCode").title = "";
    }

    if (index == 9)
    {
        document.getElementById("lstVersion").selectedIndex = 0;

        document.getElementById("lblVersionCode").innerHTML = "";
        document.getElementById("lblVersionCode").title = "";
    }

    if (index == 10)
    {
        document.getElementById("lblVersionCode").innerHTML = "";
        document.getElementById("lblVersionCode").title = "";
    }

    if (index == 11)
    {
        document.getElementById("lstQuantity").selectedIndex = 0;

        document.getElementById("lblQuantityCode").innerHTML = "";
        document.getElementById("lblQuantityCode").title = "";
    }

    if (index == 12)
    {
        document.getElementById("lblQuantityCode").innerHTML = "";
        document.getElementById("lblQuantityCode").title = "";
    }

    if (index == 13)
    {
        document.getElementById("lstDuration").selectedIndex = 0;

        document.getElementById("lblDurationCode").innerHTML = "";
        document.getElementById("lblDurationCode").title = "";
    }

    if (index == 14)
    {
        document.getElementById("lblDurationCode").innerHTML = "";
        document.getElementById("lblDurationCode").title = "";
    }

    if (index == 15)
    {
        document.getElementById("lstIndustry").selectedIndex = -1;

        document.getElementById("lblIndustryCode").innerHTML = "";
        document.getElementById("lblIndustryCode").title = "";
    }

    if (index == 16)
    {
        document.getElementById("trRegionDetail1").style.display = "none";

        document.getElementById("lstRegion1").selectedIndex = 0;
        document.getElementById("lstRegionDetail1").selectedIndex = 0;

        document.getElementById("lblRegionCode1").innerHTML = "";
        document.getElementById("lblRegionCode1").title = "";
    }

    if (index == 17)
    {
        document.getElementById("btnAddRegion").style.visibility = "hidden";

        document.getElementById("lblRegionCode1").innerHTML = "";
        document.getElementById("lblRegionCode1").title = "";
    }

    if (index == 18)
    {
        document.getElementById("lstLanguage").selectedIndex = -1;

        document.getElementById("lblLanguageCode").innerHTML = "";
        document.getElementById("lblLanguageCode").title = "";
    }

    if (index == 19)
    {
        document.getElementById("lstExclusivity").selectedIndex = -1;

        document.getElementById("lblExclusivityCode").innerHTML = "";
        document.getElementById("lblExclusivityCode").title = "";
    }
    
    document.getElementById("txtUse").value = "";
}

function clearSelect(selectName)
{
	if (document.getElementById(selectName))
	{
		for (var count = document.getElementById(selectName).options.length-1; count >= 0; count--)
		{
			document.getElementById(selectName).options[count] = null;
		}
	}
}

function addUse()
{
    if (document.getElementById("trMediaUsageMenus").style.display != "none" && currentUseNumber >= 0 &&
        (!document.getElementById("lstUsages").options[currentUseNumber] ||
        trim(document.getElementById("lstUsages").options[currentUseNumber].value) == ""))
    {
        alert("You must save or cancel the current usage to add a usage.");
        return;
    }

    if (currentUseNumber >= maxLicenseUseNumber - 1 || document.getElementById("lstUsages").options.length >= maxLicenseUseNumber)
    {
        alert("A maximum number of usages (" + maxLicenseUseNumber + ") has been already created.");
        return;
    }

    if (document.getElementById("lstUsages").options.length > currentUseNumber + 1)
    {
        currentUseNumber = document.getElementById("lstUsages").options.length;
    }
    else if (document.getElementById("lstUsages").options.length == 0 &&
             document.getElementById("trMediaUsageMenus").style.display == "none")
    {
        currentUseNumber = 0;
    }
    else
    {
        currentUseNumber++;
    }

    showCurrentUsage();
    
    resetControls(-1);

    document.getElementById("trMediaUsageSeparator").style.display = "";
    document.getElementById("trMediaUsageMenus").style.display = "";
    document.getElementById("tdEditUsage").style.visibility = "hidden";
}

function preloadUse(useNumber)
{
    var currentUseCode = document.getElementById("lstUsages").options[useNumber].value.split("&")[1];

    if (trim(currentUseCode) != "")
    {
        document.getElementById("chkCategories").checked = false;
    
        var menuArr = currentUseCode.split("|");

        if (menuArr[0] == "a")
        {
            document.getElementById("chkCategories").checked = true;
            selectAllCategories();
        }
        else
        {
            document.getElementById("lstCategory").selectedIndex = menuArr[0];
            categorySelected();

            document.getElementById("lstType").selectedIndex = menuArr[1];
            typeSelected();

            document.getElementById("lstDetail").selectedIndex = menuArr[2];
            detailSelected();

            document.getElementById("lstDistribution").selectedIndex = menuArr[3];
            distributionSelected();
        }

        if (menuArr[4] == "a")
        {
            document.getElementById("chkPlacements").checked = true;
            selectAllPlacements();
        }
        else
        {
            document.getElementById("lstPlacement").selectedIndex = menuArr[4];
            placementSelected();
        }

        if (menuArr[5] == "a")
        {
            document.getElementById("chkSizes").checked = true;
            selectAllSizes();
        }
        else
        {
            document.getElementById("lstSize").selectedIndex = menuArr[5];
            sizeSelected();

            document.getElementById("lstSizeDetail").selectedIndex = menuArr[6];
            sizeDetailSelected();
        }

        if (menuArr[7] == "a")
        {
            document.getElementById("chkVersions").checked = true;
            selectAllVersions();
        }
        else
        {
            document.getElementById("lstVersion").selectedIndex = menuArr[7];
            versionSelected();
        }

        if (menuArr[8] == "a")
        {
            document.getElementById("chkQuantities").checked = true;
            selectAllQuantities();
        }
        else
        {
            document.getElementById("lstQuantity").selectedIndex = menuArr[8];
            quantitySelected();
        }

        if (menuArr[9] == "a")
        {
            document.getElementById("chkDurations").checked = true;
            selectAllDurations();
        }
        else
        {
            document.getElementById("lstDuration").selectedIndex = menuArr[9];
            durationSelected();
        }

        if (menuArr[10] == "a")
        {
            document.getElementById("chkRegions").checked = true;
            selectAllRegions();
        }
        else
        {
            var regionArr = menuArr[10].split(";");

            for (var regionCounter = 1; regionCounter <= regionArr.length; regionCounter++)
            {
                if (regionCounter > 1)
                {               
                    document.getElementById("trRegion" + regionCounter).style.display = "";
                    document.getElementById("trRegionSeparator" + regionCounter).style.display = "";

                    copyRegionValues(regionCounter);
                }

                document.getElementById("lstRegion" + regionCounter).selectedIndex = regionArr[regionCounter-1].split(",")[0];
                
                if (regionCounter == 1)
                    region1Selected();
                else
                    regionSelected(regionCounter);

                document.getElementById("lstRegionDetail" + regionCounter).selectedIndex = regionArr[regionCounter-1].split(",")[1];
                
                if (regionCounter == 1)
                    region1DetailSelected();
                else
                    regionDetailSelected(regionCounter);
            }
        }

        if (menuArr[11] == "a")
        {
            document.getElementById("chkIndustries").checked = true;
            selectAllIndustries();
        }
        else
        {
            var industryArr = menuArr[11].split(";");

            document.getElementById("lstIndustry").selectedIndex = -1;

            for (var industryCounter = 0; industryCounter < industryArr.length; industryCounter++)
            {
                document.getElementById("lstIndustry")[industryArr[industryCounter]].selected = true;
            }

            industrySelected();
        }

        if (menuArr[12] == "a")
        {
            document.getElementById("chkLanguages").checked = true;
            selectAllLanguages();
        }
        else
        {
            var languageArr = menuArr[12].split(";");

            document.getElementById("lstLanguage").selectedIndex = -1;

            for (var languageCounter = 0; languageCounter < languageArr.length; languageCounter++)
            {
                document.getElementById("lstLanguage")[languageArr[languageCounter]].selected = true;
            }

            languageSelected();
        }
        
        if (menuArr[13] == "a")
        {
            document.getElementById("chkNonExclusive").checked = true;
            selectNoExclusivity();
        }
        else
        {
            var exclusivityArr = menuArr[13].split(";");

            document.getElementById("lstExclusivity").selectedIndex = -1;

            for (var exclusivityCounter = 0; exclusivityCounter < exclusivityArr.length; exclusivityCounter++)
            {
                document.getElementById("lstExclusivity")[exclusivityArr[exclusivityCounter]].selected = true;
            }

            exclusivitySelected();
        }
    }

    generateLicenseCode();
}

function cloneUse()
{
    if (document.getElementById("trMediaUsageMenus").style.display != "none" && currentUseNumber >= 0 &&
        (!document.getElementById("lstUsages").options[currentUseNumber] ||
        trim(document.getElementById("lstUsages").options[currentUseNumber].value) == ""))
    {
        alert("You must save or cancel the current usage to clone a usage.");
        return;
    }

    if (currentUseNumber >= maxLicenseUseNumber - 1 || document.getElementById("lstUsages").options.length >= maxLicenseUseNumber)
    {
        alert("A maximum number of usages (" + maxLicenseUseNumber + ") has been already created.");
        return;
    }

    var selectedUseNumber = document.getElementById("lstUsages").selectedIndex;
    
    if (selectedUseNumber < 0 || selectedUseNumber >= maxLicenseUseNumber)
    {
        alert("No usage was selected.");
        return;
    }

    var clonedUseValue = document.getElementById("lstUsages").options[selectedUseNumber].value;
    var clonedUseText = document.getElementById("lstUsages").options[selectedUseNumber].text.replace(/Usage [A-Z]: /, "");
    
    if (!clonedUseValue || clonedUseValue.indexOf("&") <= 0)
    {
        alert("Incomplete usage selected.");
        return;
    }

    if (document.getElementById("lstUsages").options.length > currentUseNumber + 1)
    {
        currentUseNumber = document.getElementById("lstUsages").options.length;
    }
    else
    {
        currentUseNumber++;
    }

    showCurrentUsage();
    
    clonedUseValue = clonedUseValue.replace(/1UN./g, "1UN" + String.fromCharCode(currentUseNumber + 65));

    document.getElementById("lstUsages").options[currentUseNumber] = new Option("Usage " + String.fromCharCode(currentUseNumber + 65) + ": " + clonedUseText, clonedUseValue);
}

function editUse()
{
    if (document.getElementById("trMediaUsageMenus").style.display != "none" && currentUseNumber >= 0 &&
        (!document.getElementById("lstUsages").options[currentUseNumber] ||
        trim(document.getElementById("lstUsages").options[currentUseNumber].value) == ""))
    {
        alert("You must save or cancel the current usage to edit a usage.");
        return;
    }

    var selectedUseNumber = document.getElementById("lstUsages").selectedIndex;
    
    if (selectedUseNumber < 0 || selectedUseNumber >= maxLicenseUseNumber)
    {
        alert("No usage was selected.");
        return;
    }
    
    currentUseNumber = selectedUseNumber;
    showCurrentUsage(selectedUseNumber);

    if (document.getElementById("lstUsages").options[selectedUseNumber].value == "")
    {
        resetControls(-1);
    }
    else
    {
        preloadUse(selectedUseNumber);
    }

    document.getElementById("trMediaUsageSeparator").style.display = "";
    document.getElementById("trMediaUsageMenus").style.display = "";
    document.getElementById("tdEditUsage").style.visibility = "hidden";
}

function deleteUse()
{
    if (document.getElementById("trMediaUsageMenus").style.display != "none" && currentUseNumber >= 0 &&
        (!document.getElementById("lstUsages").options[currentUseNumber] ||
        trim(document.getElementById("lstUsages").options[currentUseNumber].value) == ""))
    {
        alert("You must save or cancel the current usage to delete a usage.");
        return;
    }

    var selectedUseNumber = document.getElementById("lstUsages").selectedIndex;
    
    if (selectedUseNumber < 0 || selectedUseNumber >= maxLicenseUseNumber)
    {
        alert("No usage was selected.");
        return;
    }

    if (!confirm("Are you sure to delete Usage " + String.fromCharCode(selectedUseNumber + 65) + "?"))
        return;

    for (var i = document.getElementById("lstUsages").length - 1; i >= 0; i--)
    {
        if (document.getElementById("lstUsages").options[i].selected)
            document.getElementById("lstUsages").remove(i);
    }

    for (var i = 0; i < document.getElementById("lstUsages").length; i++)
    {
        if (trim(document.getElementById("lstUsages").options[i].value) != "")
        {
            document.getElementById("lstUsages").options[i].value = document.getElementById("lstUsages").options[i].value.replace(/1UN./g, "1UN" + String.fromCharCode(i + 65));
            document.getElementById("lstUsages").options[i].text = "Usage " + String.fromCharCode(i + 65) + ": " + document.getElementById("lstUsages").options[i].text.replace(/Usage [A-Z]: /, "");
        }
    }

    document.getElementById("lstUsages").selectedIndex = -1;

    currentUseNumber = -1;
    showCurrentUsage(currentUseNumber);

    resetControls(-1);

    document.getElementById("trMediaUsageSeparator").style.display = "none";
    document.getElementById("trMediaUsageMenus").style.display = "none";
    document.getElementById("tdEditUsage").style.visibility = "visible";
}

function cancelUse()
{
    if (confirm("Are you sure that you want to cancel this usage? Press okay to cancel only the current usage."))
    {
        if (document.getElementById("lstUsages").options[currentUseNumber] != null && document.getElementById("lstUsages").options[currentUseNumber].value == "")
        {
            document.getElementById("lstUsages").remove(currentUseNumber);

            for (var i = 0; i < document.getElementById("lstUsages").length; i++)
            {
                if (trim(document.getElementById("lstUsages").options[i].value) != "")
                    document.getElementById("lstUsages").options[i].text = "Usage " + String.fromCharCode(i + 65) + ": " + document.getElementById("lstUsages").options[i].value.split("&")[0];
            }
        }

        document.getElementById("lstUsages").selectedIndex = -1;

        currentUseNumber = -1;
        showCurrentUsage(currentUseNumber);

        resetControls(-1);

        document.getElementById("trMediaUsages").style.display = "";
        document.getElementById("trMediaUsageSeparator").style.display = "none";
        document.getElementById("trMediaUsageMenus").style.display = "none";
        document.getElementById("tdEditUsage").style.visibility = "visible";
    }
}

function moveUseUp()
{
    if (document.getElementById("trMediaUsageMenus").style.display != "none" && currentUseNumber >= 0 &&
        (!document.getElementById("lstUsages").options[currentUseNumber] ||
        trim(document.getElementById("lstUsages").options[currentUseNumber].value) == ""))
    {
        alert("You must save or cancel the current usage to delete a usage.");
        return;
    }

    var selectedUseNumber = document.getElementById("lstUsages").selectedIndex;
    
    if (selectedUseNumber < 0 || selectedUseNumber >= maxLicenseUseNumber)
    {
        alert("No usage was selected.");
        return;
    }
    
    if (selectedUseNumber == 0)
    {
        alert("Usage A is the first usage and cannot be moved up.");
        return;
    }
    
    var tempOption = new Option(document.getElementById("lstUsages").options[selectedUseNumber-1].text, document.getElementById("lstUsages").options[selectedUseNumber-1].value);

    document.getElementById("lstUsages").options[selectedUseNumber-1] = new Option(document.getElementById("lstUsages").options[selectedUseNumber].text, document.getElementById("lstUsages").options[selectedUseNumber].value);
    document.getElementById("lstUsages").options[selectedUseNumber] = tempOption;
    
    for (var i = 0; i < document.getElementById("lstUsages").length; i++)
    {
        if (trim(document.getElementById("lstUsages").options[i].value) != "")
        {
            document.getElementById("lstUsages").options[i].value = document.getElementById("lstUsages").options[i].value.replace(/1UN[A-Z]/, "1UN" + String.fromCharCode(i + 65));
            document.getElementById("lstUsages").options[i].text = "Usage " + String.fromCharCode(i + 65) + ": " + document.getElementById("lstUsages").options[i].value.split("&")[0];
        }
    }
    
    document.getElementById("lstUsages").selectedIndex = selectedUseNumber-1;
}

function moveUseDown()
{
    if (document.getElementById("trMediaUsageMenus").style.display != "none" && currentUseNumber >= 0 &&
        (!document.getElementById("lstUsages").options[currentUseNumber] ||
        trim(document.getElementById("lstUsages").options[currentUseNumber].value) == ""))
    {
        alert("You must save or cancel the current usage to delete a usage.");
        return;
    }

    var selectedUseNumber = document.getElementById("lstUsages").selectedIndex;
    
    if (selectedUseNumber < 0 || selectedUseNumber >= maxLicenseUseNumber)
    {
        alert("No usage was selected.");
        return;
    }
    
    if (selectedUseNumber == document.getElementById("lstUsages").length - 1)
    {
        alert("Usage " + String.fromCharCode(selectedUseNumber + 65) + " is the last usage and cannot be moved down.");
        return;
    }
    
    var tempOption = new Option(document.getElementById("lstUsages").options[selectedUseNumber+1].text, document.getElementById("lstUsages").options[selectedUseNumber+1].value);

    document.getElementById("lstUsages").options[selectedUseNumber+1] = new Option(document.getElementById("lstUsages").options[selectedUseNumber].text, document.getElementById("lstUsages").options[selectedUseNumber].value);
    document.getElementById("lstUsages").options[selectedUseNumber] = tempOption;
    
    for (var i = 0; i < document.getElementById("lstUsages").length; i++)
    {
        if (trim(document.getElementById("lstUsages").options[i].value) != "")
        {
            document.getElementById("lstUsages").options[i].value = document.getElementById("lstUsages").options[i].value.replace(/1UN[A-Z]/, "1UN" + String.fromCharCode(i + 65));
            document.getElementById("lstUsages").options[i].text = "Usage " + String.fromCharCode(i + 65) + ": " + document.getElementById("lstUsages").options[i].value.split("&")[0];
        }
    }
    
    document.getElementById("lstUsages").selectedIndex = selectedUseNumber+1;
}

function showCurrentUsage()
{
    if (currentUseNumber >= 0)
    {
        document.getElementById("spnUsageNumber").innerHTML = String.fromCharCode(currentUseNumber + 65);
        document.getElementById("lblUsageCode").innerHTML = generateUseNumberCode(currentUseNumber);
        document.getElementById("lblUsageCode").title = document.getElementById("lblUsageCode").innerHTML;

        if (document.getElementById("lstUsages")[currentUseNumber])
            document.getElementById("lstUsages")[currentUseNumber].selected = true;
        else
            document.getElementById("lstUsages").selectedIndex = -1;
    }
    else
    {
        document.getElementById("spnUsageNumber").innerHTML = "<span style='color: dimgray;'>N/A</span>";
        document.getElementById("lblUsageCode").innerHTML = "";
        document.getElementById("lblUsageCode").title = "";

        document.getElementById("trMediaUsageSeparator").style.display = "none";
        document.getElementById("trMediaUsageMenus").style.display = "none";
        document.getElementById("tdEditUsage").style.visibility = "visible";
    }
}

function clearLicense()
{
    document.location.replace(document.location.href);
}

function gotoParties()
{
    var incomplete = "";

    if (document.getElementById("lstUsages").options.length > 0)
    {
        for (var i=0; i < document.getElementById("lstUsages").options.length; i++)
        {
            if (document.getElementById("lstUsages").options[i].text.indexOf("Incomplete / Not Saved") >= 0)
            {
                incomplete = "The current usage is incomplete. If you proceed the changes will be lost. To save the current usage, press \"Cancel\" then click \"Save\" at the bottom of the page.";
                break;
            }
        }
    }

    if (incomplete != "" && !confirm(incomplete))
        return;
        
    if (document.getElementById("trMediaUsageMenus").style.display != "none" &&
        !confirm("The current usage is incomplete. If you proceed the changes will be lost. To save the current usage, press \"Cancel\" then click \"Save\" at the bottom of the page."))
    {
        return;
    }

    var usageCount = 0;
    var usageCountFormatted = "";
    
    var mediaSummaryCode = "";
    var summaryCodeValueList = "";

    for (var i=0; i < document.getElementById("lstUsages").options.length; i++)
    {
        if (document.getElementById("lstUsages").options[i] && document.getElementById("lstUsages").options[i].value.indexOf("&") > 0)
        {
            summaryCodeValueList += document.getElementById("lstUsages").options[i].value + "*";

            mediaSummaryCode += "|" + document.getElementById("lstUsages").options[i].value.split("&")[0];
            usageCount++;
        }
    }

    if (usageCount.toString().length == 3)
    {
        usageCountFormatted = usageCount.toString();
    }
    else if (usageCount.toString().length == 2)
    {
        usageCountFormatted = "0" + usageCount.toString();
    }
    else if (usageCount.toString().length == 1)
    {
        usageCountFormatted = "00" + usageCount.toString();
    }
    else
    {
        raiseError("Invalid Usage count generated.");
        return;
    }
    
    if (summaryCodeValueList != "")
    {
        var response = getHttpResponse("../Postback/SetLicenseSession.aspx?summaryCodeValueList=" + encodeURIComponent(summaryCodeValueList));

        if (response && trim(response) != "")
        {
            raiseError("Session objects could not be created. " + response);
            return;
        }
    }

    document.location.href = "../Steps/Parties.aspx";
}