function ProductSubBrand( productBrand, productSubBrand, selectOption ) { this.productBrand = productBrand ; this.productSubBrand = productSubBrand ; this.selectOption = selectOption ; } function ProductType( refId, webAppType, webProdTypeText, webProdTypeValue ) { this.id = refId; this.type = webAppType; this.displayText = webProdTypeText; this.value = webProdTypeValue; } function ProductSubType( refId, webProdType, webProdSubType, webAppType, selectOption ) { this.id = refId; this.webProdTypeValue = webProdType; this.webProdSubTypeValue = webProdSubType; this.webAppTypeValue = webAppType; this.option = selectOption; } function ProductAppArea( application, area, selectOption ) { this.application = application; this.area = area; this.selectOption = selectOption; } function searchByChanged() { var form = document.ProductSelectorForm ; for ( var i = 0 ; i < form.searchBy.length ; i++ ) { var value = form.searchBy[ i ].value ; var checked = form.searchBy[ i ].checked ; if ( checked && value == 'type' ) { MM_displayLayers('bytype','','block','bybrand','','none','byapp','','none','advanced','','none','submit1','','block','submit2','','none','exposed','','none','systype','','none','advperf','','none','systype','','none','galleryretail','','none'); typeSelected(false); } if ( checked && value == 'brand' ) { MM_displayLayers('bytype','','none','bybrand','','block','byapp','','none','advanced','','none','showadvanced','','none','submit1','','block','submit2','','none','exposed','','none','systype','','none','advperf','','none','systype','','none','galleryretail','','none','hideadvanced','','none'); rebuildSubBrandSelect(); } if ( checked && value == 'application' ) { MM_displayLayers('bytype','','none','bybrand','','none','byapp','','block','advanced','','none','submit1','','none','submit2','','block','exposed','','none','systype','','none','advperf','','none','systype','','none','galleryretail','','none','hideadvanced','','none'); rebuildAreaSelect(); } } } function rebuildSubBrandSelect(fromBrandControl) { var productBrand = document.ProductSelectorForm.productBrand.options[ document.ProductSelectorForm.productBrand.selectedIndex ].value ; //clear out the selectedrelatedbrand control if coming from brand drop down if(fromBrandControl) document.ProductSelectorForm.productRelBrandSelected.value = ""; var subBrandSelect = document.ProductSelectorForm.productSubBrand ; subBrandSelect.options.length = 0 ; subBrandSelect.options[ subBrandSelect.options.length ] = new Option( "-- Select One --", "" ) ; for ( var i = 0 ; i < subBrandArray.length ; i++ ) { var subBrand = subBrandArray[ i ] ; if ( subBrand.productBrand == productBrand ) { subBrandSelect.options[ subBrandSelect.options.length ] = subBrand.selectOption ; } } //Now if a related brand was selected in the past, then mark it selected //get the related brand that may have been saved var pastSelectedRelBrand = document.ProductSelectorForm.productRelBrandSelected.value; if(pastSelectedRelBrand.length>0) { for( var i = 0; i < document.ProductSelectorForm.productSubBrand.options.length; i++ ) { if (document.ProductSelectorForm.productSubBrand.options[i].text == pastSelectedRelBrand) { document.ProductSelectorForm.productSubBrand.selectedIndex = i; break; } } } if ( subBrandSelect.options.length == 1 ) { subBrandSelect.options[ 0 ] = new Option( "No Related Brands Available", "" ) ; } } function rebuildAreaSelect() { var productApplication = document.ProductSelectorForm.productApplication.options[ document.ProductSelectorForm.productApplication.selectedIndex ].value ; var appAreaSelect = document.ProductSelectorForm.productArea ; appAreaSelect.options.length = 0 ; appAreaSelect.options[ appAreaSelect.options.length ] = new Option( "-- Select One --", "" ) ; for ( var i = 0 ; i < appAreaArray.length ; i++ ) { var appArea = appAreaArray[ i ] ; if ( appArea.application == productApplication ) { //& was showing up as & in the subtype dropdowns. //workaround for this was to replace & with %26 in the views //and then use unescape to get & back appArea.selectOption.text = unescape(appArea.selectOption.text); appArea.selectOption.value = unescape(appArea.selectOption.value); appAreaSelect.options[ appAreaSelect.options.length ] = appArea.selectOption ; } } //Now if a related brand was selected in the past, then mark it selected //get the related brand that may have been saved var pastSelectedArea = document.ProductSelectorForm.productAreaSelected.value; if(pastSelectedArea.length>0) { for( var i = 0; i < document.ProductSelectorForm.productArea.options.length; i++ ) { if (document.ProductSelectorForm.productArea.options[i].text == pastSelectedArea) { document.ProductSelectorForm.productArea.selectedIndex = i; break; } } } if ( appAreaSelect.options.length == 1 ) { appAreaSelect.options[ 0 ] = new Option( "No Related Area/Uses Available", "" ) ; } } function rebuildSubTypeSelect() { var typeSelect = document.ProductSelectorForm.productType; var subTypeSelect = document.ProductSelectorForm.productSubType; // First, clear out all the existing options from the drop down. subTypeSelect.options.length = 0; if (document.ProductSelectorForm.typeSelectedIndex.value != "") typeSelect.selectedIndex = document.ProductSelectorForm.typeSelectedIndex.value; // Next, get the product item from the type array which corresponds to the selected type. var selectedTypeObject = typeArray[ typeSelect.selectedIndex - 1 ]; var selectedAppTypeValue = selectedTypeObject.type; var selectedTypeValue = selectedTypeObject.value; //get the subtype if previously selected (if any) var pastSubTypeSelected = document.ProductSelectorForm.productSubTypeSelected.value; subTypeSelect.options[ subTypeSelect.options.length ] = new Option("All Products...", ""); //if Upper level web prod type selected, sub type should just shoq all products and nothing else if( selectedAppTypeValue != selectedTypeValue ) { for( var i = 0; i < subTypeArray.length; i++ ) { if( subTypeArray[i].webProdTypeValue == selectedTypeValue && subTypeArray[i].webAppTypeValue == selectedAppTypeValue ) { //& was showing up as & in the subtype dropdowns. //workaround for this was to replace & with %26 in the views //and then use unescape to get & back subTypeArray[i].option.text = unescape(subTypeArray[i].option.text); subTypeArray[i].option.value = unescape(subTypeArray[i].option.value); subTypeSelect.options[ subTypeSelect.options.length ] = subTypeArray[i].option; } } } // Finally, set the hidden field productAppType to the proper value. document.ProductSelectorForm.productAppType.value = selectedAppTypeValue; } function typeSelected(bTypeControl) { if ( document.ProductSelectorForm.productType.selectedIndex == 0 ) { document.ProductSelectorForm.productSubType.options.length=0; document.ProductSelectorForm.productSubType.options[ document.ProductSelectorForm.productSubType.options.length ] = new Option( "-- Select Twelve --", "" ) ; return ; } //clear out the selected subtype control if coming from Type drop down if(bTypeControl) { document.ProductSelectorForm.productSubTypeSelected.value = ""; document.ProductSelectorForm.typeSelectedIndex.value = document.ProductSelectorForm.productType.selectedIndex; } //alert("about to call rebuildSubTypeSelect()"); // Re-populate the sub type field with the options that relate to the selected product type. rebuildSubTypeSelect(); // Based on the type, decide what the typeLocation and typeArea should be. // First, get the product type object from the array that corresponds to the selected item. var selectedProductType = typeArray[ document.ProductSelectorForm.productType.selectedIndex - 1 ]; switch( selectedProductType.type ) { case "Exterior Ceilings": document.ProductSelectorForm.typeLocation.value = "exterior"; document.ProductSelectorForm.typeArea.value = "ceiling"; // Turn on the gallery and retail layer. MM_displayLayers('galleryretail','','block'); break; case "Exterior Ceilings & Soffits": //When a sub-item(subProdType) is selected from this category or from Exterior Walls //store the category to pass to the Data Access class. //We do this since we have to make a way to differentiate the sub-items which have the same //name in the categories Exterior Walls and Exterior Ceilings & Soffits. if(document.ProductSelectorForm.productType.value =="Exterior Ceilings & Soffits" ) { document.ProductSelectorForm.webAppTypeVal.value= ""; } else { document.ProductSelectorForm.webAppTypeVal.value = "Exterior Ceilings & Soffits"; } document.ProductSelectorForm.typeLocation.value = "exterior"; document.ProductSelectorForm.typeArea.value = "ceiling"; // Turn on the gallery and retail layer. MM_displayLayers('galleryretail','','none'); break; case "Exterior Walls": if(document.ProductSelectorForm.productType.value =="Exterior Walls" ) { document.ProductSelectorForm.webAppTypeVal.value= ""; } else { document.ProductSelectorForm.webAppTypeVal.value= "Exterior Walls"; } document.ProductSelectorForm.typeLocation.value = "exterior"; document.ProductSelectorForm.typeArea.value = "wall"; MM_displayLayers('galleryretail','','none'); break; case "Interior Ceilings": document.ProductSelectorForm.typeLocation.value = "interior"; document.ProductSelectorForm.typeArea.value = "ceiling"; // Turn on the gallery and retail layer. MM_displayLayers('galleryretail','','block'); break; case "Interior Floors": document.ProductSelectorForm.typeLocation.value = "interior"; document.ProductSelectorForm.typeArea.value = "floor"; MM_displayLayers('galleryretail','','none'); break; case "Interior Walls": document.ProductSelectorForm.typeLocation.value = "interior"; document.ProductSelectorForm.typeArea.value = "wall"; MM_displayLayers('galleryretail','','none'); break; case "Roofing": document.ProductSelectorForm.webAppTypeVal.value= ""; document.ProductSelectorForm.typeLocation.value = "exterior"; document.ProductSelectorForm.typeArea.value = "ceiling"; MM_displayLayers('galleryretail','','none'); break; } setPreviousSubType(); subTypeSelected(false); if (bTypeControl) { //alert("btypeControl is true"); hideAdvanced(); } //MM_displayLayers('advperf','','none'); //MM_displayLayers('advanced','','none'); //MM_displayLayers('exposed','','none'); } function setPreviousSubType() { var pastSelectedSubType = document.ProductSelectorForm.productSubTypeSelected.value; if(pastSelectedSubType.length>0) { for( var i = 0; i < document.ProductSelectorForm.productSubType.options.length; i++ ) { if (document.ProductSelectorForm.productSubType.options[i].text == pastSelectedSubType) { document.ProductSelectorForm.productSubType.selectedIndex = i; break; } } } } function subTypeSelected(bComeFrom) { // First, the type and sub type that was selected. var selecteTypeObject = typeArray[ document.ProductSelectorForm.productType.selectedIndex - 1 ]; var selectedWebProdType = selecteTypeObject.webProdTypeValue; var selectedWebProdSubType = document.ProductSelectorForm.productSubType.value; //save the subtype that was selected...this used to reset the subtype field when the user //comes back to the selector form if (selectedWebProdSubType != "") document.ProductSelectorForm.productSubTypeSelected.value = selectedWebProdSubType; if( selectedWebProdSubType == "Acoustical Ceiling Panels" ) { advancedLayerName = "cpanel"; //bShowingAdvanced=false; //advancedLayerName = "none"; var killAdvanced = true; } else if( selectedWebProdSubType == "Ceiling Suspension Systems" ) // advancedLayerName = "systype"; advancedLayerName = "csuspension"; else if( selectedWebProdType == "Framing & Suspension Systems" ) advancedLayerName = "csuspension"; else if( selectedWebProdSubType == "Acoustical Ceiling Suspension Systems" ) advancedLayerName = "csuspension"; else if( selectedWebProdSubType == "Acoustical Ceiling Baffels" ) advancedLayerName = "none"; else if( selectedWebProdSubType == "Drywall Suspension Systems" ) advancedLayerName = "none"; else if( selectedWebProdType == "Metal" ) advancedLayerName = "none"; else if( selectedWebProdType == "Luminous" ) advancedLayerName = "none"; else if( selectedWebProdType == "Fabric" ) advancedLayerName = "none"; else if( selectedWebProdType == "Coffered Special Ceilings" ) advancedLayerName = "none"; else advancedLayerName = "perf"; if (!bShowingAdvanced) { //alert("bShowingAdvanced is false"); MM_displayLayers('hideadvanced','','none'); } if( advancedLayerName == "none" ) MM_displayLayers('showadvanced','','none'); else MM_displayLayers('showadvanced','','block'); if (bComeFrom) { resetCriteria(); if (bShowingAdvanced) showAdvanced(); } //if an of the advanced search criteria was selected previously //show the advaanced search section automatically if (checkAdvancedSettings()) { //alert("checkAdvancedSettings returned true"); showAdvanced(); } if (killAdvanced) { //alert ("killing advanced"); noAdvanced(); } } function relatedBrandSelected() { //save the related brand that was selected...this used to reset the related brand // when the user comes back to the selector form //document.ProductSelectorForm.productRelBrandSelected.value = subBrandSelect; document.ProductSelectorForm.productRelBrandSelected.value = document.ProductSelectorForm.productSubBrand.value; } function areaSelected() { //save the related brand that was selected...this used to reset the related brand // when the user comes back to the selector form document.ProductSelectorForm.productAreaSelected.value = document.ProductSelectorForm.productArea.value; } function showAdvanced() { //alert("Inside showAdvanced"); switch( advancedLayerName ) { case "perf": MM_displayLayers('advperf','','block'); MM_displayLayers('advanced','','none'); MM_displayLayers('exposed','','none'); break; case "cpanel": MM_displayLayers('advperf','','none'); MM_displayLayers('advanced','','block'); MM_displayLayers('exposed','','none'); break; case "csuspension": MM_displayLayers('advperf','','none'); MM_displayLayers('advanced','','none'); MM_displayLayers('exposed','','block'); break; default: MM_displayLayers('advperf','','none'); MM_displayLayers('advanced','','none'); MM_displayLayers('exposed','','none'); break; } //hide the div that has the expandable advanced search icon MM_displayLayers('showadvanced','','none'); //alert("diplay layers showadvanced none"); //show the div that has the collapsible advanced search icon MM_displayLayers('hideadvanced','','block'); //alert("diplay layers hideadvanced block"); bShowingAdvanced= true; } function hideAdvanced() { //requirement is to clear out all previously chosen advanced criteria resetCriteria(); //alert("Inside hideAdvanced"); //hide all advanced criteria sections by default MM_displayLayers('advperf','','none'); MM_displayLayers('advanced','','none'); MM_displayLayers('exposed','','none'); //show the div that has the expandable advanced search icon MM_displayLayers('showadvanced','','block'); //hide the div that has the collapsible advanced search icon MM_displayLayers('hideadvanced','','none'); bShowingAdvanced=false; } function noAdvanced() { resetCriteria(); //alert("Inside hideAdvanced"); //hide all advanced criteria sections by default MM_displayLayers('advperf','','none'); MM_displayLayers('advanced','','none'); MM_displayLayers('exposed','','none'); //show the div that has the expandable advanced search icon MM_displayLayers('showadvanced','','none'); //hide the div that has the collapsible advanced search icon MM_displayLayers('hideadvanced','','none'); bShowingAdvanced=false; } function resetCriteria() { //resetting Default advanced criteria document.forms["ProductSelectorForm"].typePerfFireRated.checked = false; document.forms["ProductSelectorForm"].typePerfMoistureResistant.checked = false; document.forms["ProductSelectorForm"].typePerfHumidityResistant.checked = false; document.forms["ProductSelectorForm"].typePerfAbuseResistant.checked = false; document.forms["ProductSelectorForm"].typePerfMoldResistant.checked = false; //resetting Acoustical Ceiling Systems advanced criteria document.forms["ProductSelectorForm"].typeCeilingPnlInstalledCost.value=""; // document.forms["ProductSelectorForm"].typeCeilingPnlTexture.value=""; document.forms["ProductSelectorForm"].typeCeilingPnlFireResistant.value=""; document.forms["ProductSelectorForm"].typeCeilingPnlSoundNRC.value=""; document.forms["ProductSelectorForm"].typeCeilingPnlSoundCAC.value=""; // document.forms["ProductSelectorForm"].typeCeilingPnlSoundAC.value=""; document.forms["ProductSelectorForm"].typeCeilingPnlLightReflect.value=""; document.forms["ProductSelectorForm"].typeCeilingPnlRecycledContent.value=""; document.forms["ProductSelectorForm"].typeCeilingPnlSagResistant.checked = false; document.forms["ProductSelectorForm"].typeCeilingPnlMoldResistant.checked = false; document.forms["ProductSelectorForm"].typeCeilingSuspPnlTexture.value=""; document.forms["ProductSelectorForm"].typeCeilingSuspPnlFireResistant[0].checked = true; document.forms["ProductSelectorForm"].typeCeilingPnlColorPalette[0].checked = true; document.forms["ProductSelectorForm"].typeCeilingPnlSize.value=""; document.forms["ProductSelectorForm"].typeCeilingPnlGridEdges.value=""; //resetting Ceiling Suspension System advanced criteria document.forms["ProductSelectorForm"].typeCeilingSuspFacewidth.value=""; document.forms["ProductSelectorForm"].typeCeilingSuspStyle[0].checked = true; document.forms["ProductSelectorForm"].typeCeilingSuspSysType[0].checked = true; document.forms["ProductSelectorForm"].typeCeilingSuspColor[0].checked = true; document.forms["ProductSelectorForm"].typeCeilingSuspCorrisionResistant.value=""; document.forms["ProductSelectorForm"].typeCeilingSuspTileEdges.value=""; document.forms["ProductSelectorForm"].typeCeilingPnlFireResistant[0].checked = true; } function checkAdvancedSettings() { //if any of the advanced criteria was checked, return true var retVal = false; //alert("checking advanced settings"); if (document.forms["ProductSelectorForm"].typePerfFireRated.checked) retVal = true; if (document.forms["ProductSelectorForm"].typePerfMoistureResistant.checked) retVal = true; if (document.forms["ProductSelectorForm"].typePerfHumidityResistant.checked) retVal = true; if (document.forms["ProductSelectorForm"].typePerfAbuseResistant.checked) retVal = true; if (document.forms["ProductSelectorForm"].typePerfMoldResistant.checked) retVal = true; if ((document.forms["ProductSelectorForm"].typeCeilingPnlFireResistant[1].checked) || (document.forms["ProductSelectorForm"].typeCeilingPnlFireResistant[2].checked)) retVal = true; if ((document.forms["ProductSelectorForm"].typeCeilingPnlColorPalette[1].checked) || (document.forms["ProductSelectorForm"].typeCeilingPnlColorPalette[2].checked)) retVal = true; if (typeof(document.forms["ProductSelectorForm"].typeCeilingPnlSoundNRC.value)!="undefined") { if (document.forms["ProductSelectorForm"].typeCeilingPnlSoundNRC.value!="") retVal = true; } if (typeof(document.forms["ProductSelectorForm"].typeCeilingPnlSoundCAC.value)!="undefined") { if (document.forms["ProductSelectorForm"].typeCeilingPnlSoundCAC.value!="") retVal = true; } // if (typeof(document.forms["ProductSelectorForm"].typeCeilingPnlSoundAC.value)!="undefined") // { // if (document.forms["ProductSelectorForm"].typeCeilingPnlSoundAC.value!="") // retVal = true; // } if (typeof(document.forms["ProductSelectorForm"].typeCeilingPnlLightReflect.value)!="undefined") { if (document.forms["ProductSelectorForm"].typeCeilingPnlLightReflect.value!="") retVal = true; } if (typeof(document.forms["ProductSelectorForm"].typeCeilingPnlRecycledContent.value)!="undefined") { if (document.forms["ProductSelectorForm"].typeCeilingPnlRecycledContent.value!="") retVal = true; } if (typeof(document.forms["ProductSelectorForm"].typeCeilingPnlSagResistant.checked)!="undefined") { if (document.forms["ProductSelectorForm"].typeCeilingPnlSagResistant.checked) retVal = true; } if (typeof(document.forms["ProductSelectorForm"].typeCeilingPnlMoldResistant.checked)!="undefined") { if (document.forms["ProductSelectorForm"].typeCeilingPnlMoldResistant.checked) retVal = true; } //if (retVal) // alert("retVal is true 2"); if (typeof(document.forms["ProductSelectorForm"].typeCeilingSuspPnlTexture.value)!="undefined") { if(document.forms["ProductSelectorForm"].typeCeilingSuspPnlTexture.value!="") retVal=true; } if((document.forms["ProductSelectorForm"].typeCeilingSuspPnlFireResistant[1].checked) || (document.forms["ProductSelectorForm"].typeCeilingSuspPnlFireResistant[2].checked)) retVal=true; if (typeof(document.forms["ProductSelectorForm"].typeCeilingPnlInstalledCost.value)!="undefined") { if(document.forms["ProductSelectorForm"].typeCeilingPnlInstalledCost.value!="") retVal=true; } if (typeof(document.forms["ProductSelectorForm"].typeCeilingPnlSize.value)!="undefined") { if(document.forms["ProductSelectorForm"].typeCeilingPnlSize.value!="") retVal=true; } if (typeof(document.forms["ProductSelectorForm"].typeCeilingPnlGridEdges.value)!="undefined") { if(document.forms["ProductSelectorForm"].typeCeilingPnlGridEdges.value!="") retVal=true; } //resetting acoustical ceiling panel advanced search criteria fields if (typeof(document.forms["ProductSelectorForm"].typeCeilingSuspFacewidth.value)!="undefined") { if(document.forms["ProductSelectorForm"].typeCeilingSuspFacewidth.value!="") retVal=true; } if((document.forms["ProductSelectorForm"].typeCeilingSuspSysType[1].checked) || (document.forms["ProductSelectorForm"].typeCeilingSuspSysType[2].checked) || (document.forms["ProductSelectorForm"].typeCeilingSuspSysType[3].checked) || (document.forms["ProductSelectorForm"].typeCeilingSuspSysType[4].checked)) retVal=true; if((document.forms["ProductSelectorForm"].typeCeilingSuspStyle[1].checked) || (document.forms["ProductSelectorForm"].typeCeilingSuspStyle[2].checked)) retVal=true; if((document.forms["ProductSelectorForm"].typeCeilingSuspColor[1].checked) || (document.forms["ProductSelectorForm"].typeCeilingSuspColor[2].checked) || (document.forms["ProductSelectorForm"].typeCeilingSuspColor[3].checked)) retVal=true; if (typeof(document.forms["ProductSelectorForm"].typeCeilingSuspCorrisionResistant.value)!="undefined") { if(document.forms["ProductSelectorForm"].typeCeilingSuspCorrisionResistant.value!="") retVal=true; } if (typeof(document.forms["ProductSelectorForm"].typeCeilingSuspTileEdges.value)!="undefined") { if(document.forms["ProductSelectorForm"].typeCeilingSuspTileEdges.value!="") retVal=true; } if((document.forms["ProductSelectorForm"].typeCeilingPnlFireResistant[1].checked) || (document.forms["ProductSelectorForm"].typeCeilingPnlFireResistant[2].checked)) retVal=true; //if (retVal) // alert("retVal is true 3"); return retVal; } function clearCriteria(thisHTMLControl) { if (thisHTMLControl.type == "checkbox") { var formControl = "document.ProductSelectorForm." + thisHTMLControl.name; if (thisHTMLControl.value == "true") formControl.checked = false; else formControl.checked = true; } else if (thisHTMLControl.type == 'radio') { } } function setAdvancedCriteria() { document.ProductSelectorForm.advancedCriteriaSet.value="true"; }