var FormSpecificationDisplay = document.FormSpecificationDisplay;
var FormProductDisplay = document.FormProductDisplay;

// Routine to clear the form
function onSearchClearCode() {
    FormSpecificationDisplay.FormFindSpecificationCode.value = "";
    FormSpecificationDisplay.FormFindSpecificationCode.focus();
}

// Routine to clear the form
function onSearchClearFeature() {
    FormSpecificationDisplay.FormFindBrandId.selectedIndex = 0;
    FormSpecificationDisplay.FormFindLocationId[0].selected = true;
    FormSpecificationDisplay.FormFindSubstrateId[0].selected = true;
    FormSpecificationDisplay.FormFindQualityId[0].selected = true;
    FormSpecificationDisplay.FormFindWorkTypeId[0].selected = true;
    FormSpecificationDisplay.FormFindSortBy[0].checked = true;
    FormSpecificationDisplay.FormFindBrandId.focus();
}

// Routine to search for records
function onSearchSpecificationCode() {
    FormSpecificationDisplay.FormFindBrandId.selectedIndex = 0;
    FormSpecificationDisplay.FormFindLocationId[0].selected = true;
    FormSpecificationDisplay.FormFindSubstrateId[0].selected = true;
    FormSpecificationDisplay.FormFindQualityId[0].selected = true;
    FormSpecificationDisplay.FormFindWorkTypeId[0].selected = true;
    FormSpecificationDisplay.FormFindSortBy[0].checked = true;
    FormSpecificationDisplay.FormFindPageNumber.value = 1;
    onSubmitForm("Search", 0);
}

// Routine to search for records
function onSearchSpecificationFeature() {
    FormSpecificationDisplay.FormFindSpecificationCode.value = "";
    FormSpecificationDisplay.FormFindSubstrateIdSelected.value = FormSpecificationDisplay.FormFindSubstrateId.value;
    FormSpecificationDisplay.FormFindPageNumber.value = 1;
    onSubmitForm("Search", 0);
}

// Routine to search for records
function onShowList() {
    onSubmitForm("Search", 0);
}

// Routine to search for records
function onShowListTop() {
    FormSpecificationDisplay.FormFindPageNumber.value = parseInt(FormSpecificationDisplay.FormFindPageNumberTop.value);
    onSubmitForm("Search", 0);
}

// Routine to search for records
function onShowListBottom() {
    FormSpecificationDisplay.FormFindPageNumber.value = parseInt(FormSpecificationDisplay.FormFindPageNumberBottom.value);
    onSubmitForm("Search", 0);
}

// Routine to select a record
function onSelectSpecification(TheSpecificationId) {
    onSubmitForm("Get", TheSpecificationId);
}

// Routine to get the previous page
function onPageGoTo(ThePageNumber) {
    FormSpecificationDisplay.FormFindPageNumber.value = ThePageNumber;
    onShowList();
}

// Routine to get the previous page
function onPagePrevTop() {
    FormSpecificationDisplay.FormFindPageNumber.value = parseInt(FormSpecificationDisplay.FormFindPageNumber.value) - 10;
    onShowList();
}

// Routine to get the next page
function onPageNextTop() {
    FormSpecificationDisplay.FormFindPageNumber.value = parseInt(FormSpecificationDisplay.FormFindPageNumber.value) + 10;
    onShowList();
}

// Routine to get the previous page
function onPagePrevBottom() {
    FormSpecificationDisplay.FormFindPageNumber.value = parseInt(FormSpecificationDisplay.FormFindPageNumber.value) - 10;
    onShowList();
}

// Routine to get the next page
function onPageNextBottom() {
    FormSpecificationDisplay.FormFindPageNumber.value = parseInt(FormSpecificationDisplay.FormFindPageNumber.value) + 10;
    onShowList();
}

// Routine to execute the form
function onSubmitForm(TheAction, TheSpecificationId) {
    FormSpecificationDisplay.FormAction.value = TheAction;
    FormSpecificationDisplay.FormFieldSpecificationId.value = TheSpecificationId;
    FormSpecificationDisplay.submit();
}

// Routine to change the Location
function onChangeLocation() {
    FormSpecificationDisplay.FormFindWorkTypeIdSelected.value = 0;
    FormSpecificationDisplay.FormFindQualityIdSelected.value = 0;
    FormSpecificationDisplay.FormFindSubstrateIdSelected.value = 0;
    onSetWorkType();
}

// Routine to set the WorkType
function onSetWorkType() {
    var Count, OptionCount = 0, TheFilter, TheWorkTypeIdPrev = 0;
    var TheLocation = FormSpecificationDisplay.FormFindLocationId.value;
    var TheWorkTypeList = FormSpecificationDisplay.FormFindWorkTypeId;
    var TheQualityList = FormSpecificationDisplay.FormFindQualityId;
    var TheSubstrateList = FormSpecificationDisplay.FormFindSubstrateId;
    TheWorkTypeList.options.length = 0;
    TheWorkTypeList[OptionCount++] = new Option("Any work type", 0);
    for (Count = 0; Count < FormFieldFilter.length; Count++) {
        TheFilter = FormFieldFilter[Count];
        if ((TheFilter[0] == TheLocation) && (TheWorkTypeIdPrev != TheFilter[1])) {
            TheWorkTypeList[OptionCount++] = new Option(TheFilter[2], TheFilter[1]);
            if (FormSpecificationDisplay.FormFindWorkTypeIdSelected.value == TheFilter[1])
                TheWorkTypeList[OptionCount - 1].selected = true;
            TheWorkTypeIdPrev = TheFilter[1];
        }
    }
    TheQualityList.options.length = 0;
    TheQualityList[0] = new Option("Any quality", 0);
    TheSubstrateList.options.length = 0;
    TheSubstrateList[0] = new Option("Any substrate", 0);
}

// Routine to change the WorkType
function onChangeWorkType() {
    FormSpecificationDisplay.FormFindQualityIdSelected.value = 0;
    FormSpecificationDisplay.FormFindSubstrateIdSelected.value = 0;
    onSetQuality();
}

// Routine to set the Quality
function onSetQuality() {
    var Count, OptionCount = 0, TheFilter, TheQualityIdPrev = 0;
    var TheLocation = FormSpecificationDisplay.FormFindLocationId.value;
    var TheWorkType = FormSpecificationDisplay.FormFindWorkTypeId.value;
    var TheQualityList = FormSpecificationDisplay.FormFindQualityId;
    var TheSubstrateList = FormSpecificationDisplay.FormFindSubstrateId;
    TheQualityList.options.length = 0;
    TheQualityList[OptionCount++] = new Option("Any quality", 0);
    for (Count = 0; Count < FormFieldFilter.length; Count++) {
        TheFilter = FormFieldFilter[Count];
        if ((TheFilter[0] == TheLocation) && (TheFilter[1] == TheWorkType) && (TheQualityIdPrev != TheFilter[3])) {
            TheQualityList[OptionCount++] = new Option(TheFilter[4], TheFilter[3]);
            if (FormSpecificationDisplay.FormFindQualityIdSelected.value == TheFilter[3])
                TheQualityList[OptionCount - 1].selected = true;
            TheQualityIdPrev = TheFilter[3];
        }
    }
    TheSubstrateList.options.length = 0;
    TheSubstrateList[0] = new Option("Any substrate", 0);
}

// Routine to change the Quality
function onChangeQuality() {
    FormSpecificationDisplay.FormFindSubstrateIdSelected.value = 0;
    onSetSubstrate();
}

// Routine to set the Substrate
function onSetSubstrate() {
    var Count, OptionCount = 0, TheFilter, TheSubstrateIdPrev = 0;
    var TheLocation = FormSpecificationDisplay.FormFindLocationId.value;
    var TheWorkType = FormSpecificationDisplay.FormFindWorkTypeId.value;
    var TheQuality = FormSpecificationDisplay.FormFindQualityId.value;
    var TheSubstrateList = FormSpecificationDisplay.FormFindSubstrateId;
    TheSubstrateList.options.length = 0;
    TheSubstrateList[OptionCount++] = new Option("Any substrate", 0);
    for (Count = 0; Count < FormFieldFilter.length; Count++) {
        TheFilter = FormFieldFilter[Count];
        if ((TheFilter[0] == TheLocation) && (TheFilter[1] == TheWorkType) && (TheFilter[3] == TheQuality) && (TheSubstrateIdPrev != TheFilter[5])) {
            TheSubstrateList[OptionCount++] = new Option(TheFilter[6], TheFilter[5]);
            if (FormSpecificationDisplay.FormFindSubstrateIdSelected.value == TheFilter[5])
                TheSubstrateList[OptionCount - 1].selected = true;
            TheSubstrateIdPrev = TheFilter[5];
        }
    }
}

// Routine to execute the form
function onSelectProduct(TheProductId) {
    FormProductDisplay.FormFieldProductId.value = TheProductId;
    FormProductDisplay.FormFieldSpecificationId.value = FormSpecificationDisplay.FormFieldSpecificationId.value;
    //	FormProductDisplay.FormFindSpecificationCode.value = FormSpecificationDisplay.FormFindSpecificationCode.value;
    //	FormProductDisplay.FormFindLocationId.value = FormSpecificationDisplay.FormFindLocationId.value;
    //	FormProductDisplay.FormFindSubstrateId.value = FormSpecificationDisplay.FormFindSubstrateId.value;
    //	FormProductDisplay.FormFindQualityId.value = FormSpecificationDisplay.FormFindQualityId.value;
    //	FormProductDisplay.FormFindWorkTypeId.value = FormSpecificationDisplay.FormFindWorkTypeId.value;
    //	FormProductDisplay.FormFindSortBy.value = FormSpecificationDisplay.FormFindSortBy.value;
    FormProductDisplay.submit();
}
