// constants var FLOOR_WIDTH = 29; var FLOOR_LENGTH = 52; var FORMA_METER_WIDTH = (1 / 3); var FORMA_FEET_WIDTH = 1.0936; var EDGE_METER_WIDTH = 0.04; var EDGE_FEET_WIDTH = 0.13123; var IMAGE_PATH ="../images/design/"; var IMAGE_EXT = ".gif"; var TILE = "tile_"; // globals var numTilesTotal = 0; var numTilesBlue = 0; var numTilesBlack = 0; var numTilesGrey = 0; var numTilesWhite = 0; var numTilesGreen = 0; var numTilesRed = 0; var numTilesBrown = 0; var paletteColor = "none"; // default to none var paletteType = "none"; var numEdgesTotal = 0; var numEdgesMaleBlue = 0; var numEdgesFemaleBlue = 0; var numEdgesMaleBlack = 0; var numEdgesFemaleBlack = 0; var numEdgesMaleGrey = 0; var numEdgesFemaleGrey = 0; var numEdgesMaleWhite = 0; var numEdgesFemaleWhite = 0; var numEdgesMaleGreen = 0; var numEdgesFemaleGreen = 0; var numEdgesMaleRed = 0; var numEdgesFemaleRed = 0; var numEdgesMaleBrown = 0; var numEdgesFemaleBrown = 0; var numCornersTotal = 0; var numCornersBlue = 0; var numCornersBlack = 0; var numCornersGrey = 0; var numCornersWhite = 0; var numCornersGreen = 0; var numCornersRed = 0; var numCornersBrown = 0; var imageIndex = 0; var tilesChangedArray = new Array(); // tiles changed array, keeping track of changed tiles var floorArray = new Array(FLOOR_LENGTH); // create floor array, representing entire floor for (i = 0; i < FLOOR_LENGTH; i++) { floorArray[i] = new Array(FLOOR_WIDTH); } // memory vars var color1 = ""; var color1Index = 0; var color2 = ""; var color2Index = 0; var orientation = ""; var orientationIndex = 0; var type = ""; var typeIndex = 0; var widthIndex = 0; var lengthIndex = 0; var sizeIndex = 0; var memoryFlag = true; initiateFloorArray(); /* * Splits strings based on chosen delimiter. Returns array of splits. */ function splitString(string, delimiter) { if (string == null || string == "") { return null; } else if (string.split != null) { return string.split (delimiter); } else { var ar = new Array(); var i = 0; var start = 0; while(start >= 0 && start < string.length) { var end = string.indexOf (delimiter, start) ; if(end >= 0) { ar[i++] = string.substring (start, end); start = end + 1; } else { ar[i++] = string.substring (start, string.length); start = -1; } } return ar; } } /* * Sets the floor tile, ramp edge, and corner piece color based on current palatte color. Manual floor design. */ function setTile(place) { var add = true; var whereArray = splitString(place, '_'); var edgeArray = ""; if (paletteColor == "none") { var answer = confirm("Click OK if you\'d like to manually create your floor by clicking tiles."); if (answer) { document.floorDesigner.main.selectedIndex = 1; // set pulldown to manual updateMainMenus(); } return; } if ((paletteColor != "blank") && (floorArray[whereArray[1]][whereArray[2]] == "blank")) { for (i = 0; i < tilesChangedArray.length; i++) { if (tilesChangedArray[i] == place) { // make sure unique entries only add = false; break; } } if (add) { tilesChangedArray[imageIndex++] = place; // record unique changes } } if ((paletteType == "edge_v_") || (paletteType == "edge_h_")) { edgeArray = splitString(floorArray[whereArray[1]][whereArray[2]], '_'); if (edgeArray[1] == "v") { paletteType = "edge_h_"; } else if (edgeArray[1] == "h") { paletteType = "edge_v_"; } else { assessOrientation(whereArray[1], whereArray[2]); } } document[place].src = IMAGE_PATH + paletteType + paletteColor + IMAGE_EXT; floorArray[whereArray[1]][whereArray[2]] = paletteType + paletteColor; calculate(); if (navigator.platform != "MacPPC") { popUpWin.focus(); // focus on pop up } popUpWin.focus(); // focus back on the palette } /* * Initialize floor array. */ function initiateFloorArray() { for (i = 0; i < FLOOR_LENGTH; i++) { for (j = 0; j < FLOOR_WIDTH; j++) { floorArray[i][j] = "blank"; } } } /* * Clears tile images only if they've been changed. This is a performace- * enhancing feature, so we don't have to iterate over the entire floorArray. */ function clearTileImages() { for (i = 0; i < tilesChangedArray.length; i++) { document[tilesChangedArray[i]].src = IMAGE_PATH + "tile_blank" + IMAGE_EXT; } tilesChangedArray = new Array(); // create fresh array imageIndex = 0; // initiate image index } /* * Clear the html web form field with tile calcs. */ function clearFields(isLand) { if (isLand) { document.floorDesigner.numTiles.value += " Each square below represents a Forma Floor tile."; } else { document.floorDesigner.numTiles.value = " Each square below represents a Forma Floor tile."; } } /* * Reset product counting variables. */ function resetVars() { numTilesTotal = 0; numTilesBlue = 0; numTilesBlack = 0; numTilesGrey = 0; numTilesWhite = 0; numTilesGreen = 0; numTilesRed = 0; numTilesBrown = 0; numEdgesTotal = 0; numEdgesMaleBlue = 0; numEdgesFemaleBlue = 0; numEdgesMaleBlack = 0; numEdgesFemaleBlack = 0; numEdgesMaleGrey = 0; numEdgesFemaleGrey = 0; numEdgesMaleWhite = 0; numEdgesFemaleWhite = 0; numEdgesMaleGreen = 0; numEdgesFemaleGreen = 0; numEdgesMaleRed = 0; numEdgesFemaleRed = 0; numEdgesMaleBrown = 0; numEdgesFemaleBrown = 0; numCornersTotal = 0; numCornersBlue = 0; numCornersBlack = 0; numCornersGrey = 0; numCornersWhite = 0; numCornersGreen = 0; numCornersRed = 0; numCornersBrown = 0; } /* * Clears all aspects of Floor Designer. Called by html web form Clear button. */ function clearAll() { resetVars(); initiateFloorArray(); clearTileImages(); document.floorDesigner.numTiles.value = ""; clearFields(); } /* * Builds the appropriate floor, based on the floor type selected on the html web form. */ function buildFloor(type, color1, color2, width, length, size, orientation) { if (wizardCheck(type)) { return false; } clearAll(); if (type == "solid") { buildSolidFloor(color1, ++width, ++length); // increment to allow for offset } else if (type == "checkered") { buildCheckeredFloor(color1, color2, ++width, ++length, size); } else if (type == "bordered") { buildBorderedFloor(color1, color2, ++width, ++length, size); } else if (type == "striped") { buildStripedFloor(color1, color2, ++width, ++length, size, orientation); } calculate(); } /* * Wizard function. Creates checkered floor. Size corresponds to width (or length) * of each checker. */ function buildCheckeredFloor(color1, color2, width, length, size) { var gridArray = new Array(); var varColor1; var varColor2; var whereArray = new Array(); var column; for (i = 1; i < length; i++) { gridArray[i] = new Array(width); } // initiate places for (i = 1; i < length; i++) { for (j = 1; j < width; j++) { gridArray[i][j] = "i_" + i + "_" + j; tilesChangedArray[imageIndex++] = gridArray[i][j]; whereArray = splitString(gridArray[i][j], '_'); column = parseInt(whereArray[2]); column--; // compensate for 1x1 offset if (((i - 1) % (size * 2)) < size) { // compensate for 1x1 offset varColor1 = color1; varColor2 = color2; } else { varColor1 = color2; // switch colors for checkered effect varColor2 = color1; } if ((column % (size * 2)) < size) { document[gridArray[i][j]].src = IMAGE_PATH + TILE + varColor1 + IMAGE_EXT; floorArray[i][j] = TILE + varColor1; } else { document[gridArray[i][j]].src = IMAGE_PATH + TILE + varColor2 + IMAGE_EXT; floorArray[i][j] = TILE + varColor2; } } } } /* * Wizard function. Creates striped floor. Size corresponds to width (or length) * of each stripe. Orientation can be either vertical or horizontal. */ function buildStripedFloor(color1, color2, width, length, size, orientation) { var orient = (orientation == "horizontal") ? 1 : 2; var gridArray = new Array(); var whereArray = new Array(); var stripe; for (i = 1; i < length; i++) { gridArray[i] = new Array(width); } // initiate places for (i = 1; i < length; i++) { for (j = 1; j < width; j++) { gridArray[i][j] = "i_" + i + "_" + j; tilesChangedArray[imageIndex++] = gridArray[i][j]; whereArray = splitString(gridArray[i][j], '_'); stripe = parseInt(whereArray[orient]); stripe--; // compensate for 1x1 offset if ((stripe % (size * 2)) < size) { document[gridArray[i][j]].src = IMAGE_PATH + TILE + color1 + IMAGE_EXT; floorArray[i][j] = TILE + color1; } else { document[gridArray[i][j]].src = IMAGE_PATH + TILE + color2 + IMAGE_EXT; floorArray[i][j] = TILE + color2; } } } } /* * Wizard function. Creates solid floor. */ function buildSolidFloor(color, width, length) { var gridArray = new Array(); for (i = 1; i < length; i++) { gridArray[i] = new Array(width); } // initiate places for (i = 1; i < length; i++) { for (j = 1; j < width; j++) { gridArray[i][j] = "i_" + i + "_" + j; tilesChangedArray[imageIndex++] = gridArray[i][j]; document[gridArray[i][j]].src = IMAGE_PATH + TILE + color + IMAGE_EXT; floorArray[i][j] = TILE + color; } } } /* * Wizard function. Creates bordered floor. */ function buildBorderedFloor(color1, color2, width, length, size) { var gridArray = new Array(); for (i = 1; i < length; i++) { gridArray[i] = new Array(width); } // initiate places for (i = 1; i < length; i++) { for (j = 1; j < width; j++) { gridArray[i][j] = "i_" + i + "_" + j; tilesChangedArray[imageIndex++] = gridArray[i][j]; if (j <= size || j >= (width - size) || i <= size || i >= (length - size)) { document[gridArray[i][j]].src = IMAGE_PATH + TILE + color1 + IMAGE_EXT; floorArray[i][j] = TILE + color1; } else { document[gridArray[i][j]].src = IMAGE_PATH + TILE + color2 + IMAGE_EXT; floorArray[i][j] = TILE + color2; } } } } /* * Calculates, on the fly, the number of each tile color and the total number of tiles. */ function calculate() { clearFields(); // clear html web form fields resetVars(); var numRow = 0; var numColumn = 0; var whereArray = new Array(); var typeArray = new Array(); var type = ""; var orientation = "v"; // default to vertical ramp edges for (i = 0; i < tilesChangedArray.length; i++) { whereArray = splitString(tilesChangedArray[i], "_"); numRow = whereArray[1]; numColumn = whereArray[2]; typeArray = splitString(floorArray[numRow][numColumn], "_"); if (floorArray[numRow][numColumn] == "tile_blue") { numTilesBlue++; numTilesTotal++; } else if (floorArray[numRow][numColumn] == "tile_black") { numTilesBlack++; numTilesTotal++; } else if (floorArray[numRow][numColumn] == "tile_grey") { numTilesGrey++; numTilesTotal++; } else if (floorArray[numRow][numColumn] == "tile_white") { numTilesWhite++; numTilesTotal++; } else if (floorArray[numRow][numColumn] == "tile_green") { numTilesGreen++; numTilesTotal++; } else if (floorArray[numRow][numColumn] == "tile_red") { numTilesRed++; numTilesTotal++; } else if (floorArray[numRow][numColumn] == "tile_brown") { numTilesBrown++; numTilesTotal++; } else if ((floorArray[numRow][numColumn] == "edge_v_blue") || (floorArray[numRow][numColumn] == "edge_h_blue")) { numEdgesTotal++; if (assessGender(numRow, numColumn)) { numEdgesFemaleBlue++; } else { numEdgesMaleBlue++; } } else if ((floorArray[numRow][numColumn] == "edge_v_black") || (floorArray[numRow][numColumn] == "edge_h_black")) { numEdgesTotal++; if (assessGender(numRow, numColumn)) { numEdgesFemaleBlack++; } else { numEdgesMaleBlack++; } } else if ((floorArray[numRow][numColumn] == "edge_v_grey") || (floorArray[numRow][numColumn] == "edge_h_grey")) { numEdgesTotal++; if (assessGender(numRow, numColumn)) { numEdgesFemaleGrey++; } else { numEdgesMaleGrey++; } } else if ((floorArray[numRow][numColumn] == "edge_v_white") || (floorArray[numRow][numColumn] == "edge_h_white")) { numEdgesTotal++; if (assessGender(numRow, numColumn)) { numEdgesFemaleWhite++; } else { numEdgesMaleWhite++; } } else if ((floorArray[numRow][numColumn] == "edge_v_green") || (floorArray[numRow][numColumn] == "edge_h_green")) { numEdgesTotal++; if (assessGender(numRow, numColumn)) { numEdgesFemaleGreen++; } else { numEdgesMaleGreen++; } } else if ((floorArray[numRow][numColumn] == "edge_v_red") || (floorArray[numRow][numColumn] == "edge_h_red")) { numEdgesTotal++; if (assessGender(numRow, numColumn)) { numEdgesFemaleRed++; } else { numEdgesMaleRed++; } } else if ((floorArray[numRow][numColumn] == "edge_v_brown") || (floorArray[numRow][numColumn] == "edge_h_brown")) { numEdgesTotal++; if (assessGender(numRow, numColumn)) { numEdgesFemaleBrown++; } else { numEdgesMaleBrown++; } } else if (floorArray[numRow][numColumn] == "corner_blue") { numCornersBlue++; numCornersTotal++; } else if (floorArray[numRow][numColumn] == "corner_black") { numCornersBlack++; numCornersTotal++; } else if (floorArray[numRow][numColumn] == "corner_grey") { numCornersGrey++; numCornersTotal++; } else if (floorArray[numRow][numColumn] == "corner_white") { numCornersWhite++; numCornersTotal++; } else if (floorArray[numRow][numColumn] == "corner_green") { numCornersGreen++; numCornersTotal++; } else if (floorArray[numRow][numColumn] == "corner_red") { numCornersRed++; numCornersTotal++; } else if (floorArray[numRow][numColumn] == "corner_brown") { numCornersBrown++; numCornersTotal++; } } if (numTilesTotal || numEdgesTotal || numCornersTotal) { drawNumTiles(); } } function assessGender(numRow, numColumn) { genderArrayCol = splitString(floorArray[numRow][parseInt(numColumn) + 1], '_'); genderArrayRow = splitString(floorArray[parseInt(numRow) + 1][numColumn], '_'); if ((genderArrayCol[0] == "tile") || (genderArrayRow[0] == "tile")) { return true; // female } return false; // default to male } function assessOrientation(numRow, numColumn) { var columnInc = (numColumn < FLOOR_WIDTH) ? parseInt(numColumn) + 1 : numColumn; var columnDec = (numColumn > 0) ? parseInt(numColumn) - 1 : numColumn; var leftArray = splitString(floorArray[numRow][columnDec], '_'); var rightArray = splitString(floorArray[numRow][columnInc], '_'); if ((leftArray[0] == "tile") || (rightArray[0] == "tile")) { paletteType = "edge_v_"; return "v"; } else { paletteType = "edge_h_"; return "h"; } } /* * Draws to the html web form field the number of each tile color, the total number of tiles, * and the area (in feet and meters) the coverage of tiles. */ function drawNumTiles() { var out = ""; var areaFeet; var areaMeters; if (numTilesTotal) { out = "Tiles"; if (numTilesBlue) { out += ", " + numTilesBlue + " blue"; } if (numTilesBlack) { out += ", " + numTilesBlack + " black"; } if (numTilesGrey) { out += ", " + numTilesGrey + " grey"; } if (numTilesWhite) { out += ", " + numTilesWhite + " white"; } if (numTilesGreen) { out += ", " + numTilesGreen + " green"; } if (numTilesRed) { out += ", " + numTilesRed + " red"; } if (numTilesBrown) { out += ", " + numTilesBrown + " brown"; } out += ". " + numTilesTotal + " total tiles."; } if (numEdgesTotal) { out += " Ramp Edges"; if (numEdgesMaleBlue) { out += ", " + numEdgesMaleBlue + " male blue"; } if (numEdgesFemaleBlue) { out += ", " + numEdgesFemaleBlue + " female blue"; } if (numEdgesMaleBlack) { out += ", " + numEdgesMaleBlack + " male black"; } if (numEdgesFemaleBlack) { out += ", " + numEdgesFemaleBlack + " female black"; } if (numEdgesMaleGrey) { out += ", " + numEdgesMaleGrey + " male grey"; } if (numEdgesFemaleGrey) { out += ", " + numEdgesFemaleGrey + " female grey"; } if (numEdgesMaleWhite) { out += ", " + numEdgesMaleWhite + " male white"; } if (numEdgesFemaleWhite) { out += ", " + numEdgesFemaleWhite + " female white"; } if (numEdgesMaleGreen) { out += ", " + numEdgesMaleGreen + " male green"; } if (numEdgesFemaleGreen) { out += ", " + numEdgesFemaleGreen + " female green"; } if (numEdgesMaleGreen) { out += ", " + numEdgesMaleRed + " male red"; } if (numEdgesFemaleGreen) { out += ", " + numEdgesFemaleRed + " female red"; } if (numEdgesMaleGreen) { out += ", " + numEdgesMaleBrown + " male brown"; } if (numEdgesFemaleGreen) { out += ", " + numEdgesFemaleBrown + " female brown"; } out += ". " + numEdgesTotal + " total ramp edges."; } if (numCornersTotal) { out += " Corner Pieces"; if (numCornersBlue) { out += ", " + numCornersBlue + " blue"; } if (numCornersBlack) { out += ", " + numCornersBlack + " black"; } if (numCornersGrey) { out += ", " + numCornersGrey + " grey"; } if (numCornersWhite) { out += ", " + numCornersWhite + " white"; } if (numCornersGreen) { out += ", " + numCornersGreen + " green"; } if (numCornersRed) { out += ", " + numCornersRed + " red"; } if (numCornersBrown) { out += ", " + numCornersBrown + " brown"; } out += ". " + numCornersTotal + " total corner pieces."; } out += " Area Covered, "; areaMeters = Math.round(((numTilesTotal * FORMA_METER_WIDTH * FORMA_METER_WIDTH) + (numEdgesTotal * FORMA_METER_WIDTH * EDGE_METER_WIDTH) + (numCornersTotal * EDGE_METER_WIDTH * EDGE_METER_WIDTH)) * 100) / 100; areaFeet = Math.round(((numTilesTotal * FORMA_FEET_WIDTH * FORMA_FEET_WIDTH) + (numEdgesTotal * FORMA_FEET_WIDTH * EDGE_FEET_WIDTH) + (numCornersTotal * EDGE_FEET_WIDTH * EDGE_FEET_WIDTH)) * 100) / 100; out += areaFeet + " sq. feet (" + areaMeters + " sq. meters)."; document.floorDesigner.numTiles.value = out; } /* * Set the hidden fields for Mals-e. Called upon form submission. */ function setMalsHiddens(obj) { obj.qty1.value = numTilesBlue; obj.qty2.value = numEdgesMaleBlue; obj.qty3.value = numEdgesFemaleBlue; obj.qty4.value = numCornersBlue; obj.qty5.value = numTilesBlack; obj.qty6.value = numEdgesMaleBlack; obj.qty7.value = numEdgesFemaleBlack; obj.qty8.value = numCornersBlack; obj.qty9.value = numTilesGrey; obj.qty10.value = numEdgesMaleGrey; obj.qty11.value = numEdgesFemaleGrey; obj.qty12.value = numCornersGrey; obj.qty13.value = numTilesWhite; obj.qty14.value = numEdgesMaleWhite; obj.qty15.value = numEdgesFemaleWhite; obj.qty16.value = numCornersWhite; obj.qty17.value = numTilesGreen; obj.qty18.value = numEdgesMaleGreen; obj.qty19.value = numEdgesFemaleGreen; obj.qty20.value = numCornersGreen; obj.qty21.value = numTilesRed; obj.qty22.value = numEdgesMaleRed; obj.qty23.value = numEdgesFemaleRed; obj.qty24.value = numCornersRed; obj.qty25.value = numTilesBrown; obj.qty26.value = numEdgesMaleBrown; obj.qty27.value = numEdgesFemaleBrown; obj.qty28.value = numCornersBrown; } ////////// MENU HANDLING ////////// function rememberMenus() { var form = document.floorDesigner; type = capitalize(form.type.value); typeIndex = form.type.selectedIndex; color1 = capitalize(form.color1.value); color1Index = form.color1.selectedIndex; color2 = capitalize(form.color2.value); color2Index = form.color2.selectedIndex; widthIndex = form.width.selectedIndex; lengthIndex = form.length.selectedIndex; sizeIndex = form.size.selectedIndex; orientation = capitalize(form.orientation.value); orientationIndex = form.orientation.selectedIndex; } function landMenus() { if (memoryFlag) { widthIndex = unescape(paramsArray["width"]); lengthIndex = unescape(paramsArray["length"]); if (isNaN(widthIndex)) { widthIndex = 0; } if (isNaN(lengthIndex)) { lengthIndex = 0; } if (widthIndex && lengthIndex) { var alertTxt = ""; if (widthIndex > (FLOOR_WIDTH - 2)) { // minus 2 for offset widthIndex = (FLOOR_WIDTH - 2); alertTxt = "The width "; } if (lengthIndex > (FLOOR_LENGTH - 2)) { lengthIndex = (FLOOR_LENGTH - 2); if (alertTxt == "") { alertTxt = "The length "; } else { alertTxt += "and length "; } } if (alertTxt != "") { alert(alertTxt + "of your floor is too large\nto be entirely shown."); } initiateSolidMenus(); document.floorDesigner.type.selectedIndex = 1; // default to solid document.floorDesigner.color1.selectedIndex = 1; // default to blue checkWholeForm(); } else { var manualFlag = unescape(paramsArray["manual"]); if (manualFlag == "true") { document.floorDesigner.main.selectedIndex = 1; // set pulldown to manual updateMainMenus(); } else { initiateMenus(); } } memoryFlag = false; } } function initiateMenus() { var form = document.floorDesigner; form.color1.options[color1Index].text = "N/A"; form.color1.selectedIndex = color1Index; form.color1.disabled = true; form.color2.options[color2Index].text = "N/A"; form.color2.selectedIndex = color2Index; form.color2.disabled = true; form.width.options[widthIndex].text = "N/A"; form.width.selectedIndex = widthIndex; form.width.disabled = true; form.length.options[lengthIndex].text = "N/A"; form.length.selectedIndex = lengthIndex; form.length.disabled = true; form.size.options[sizeIndex].text = "N/A"; form.size.selectedIndex = sizeIndex; form.size.disabled = true; form.orientation.options[orientationIndex].text = "N/A"; form.orientation.selectedIndex = orientationIndex; form.orientation.disabled = true; } function updateMainMenus() { var form = document.floorDesigner; rememberMenus(); if (form.main.value == "wizard") { form.type.options[typeIndex].text = type; form.type.options[0].text = "Floor Design..."; form.type.selectedIndex = typeIndex; form.type.disabled = false; updateMenus(); } else if (form.main.value == "manual") { initiateMenus(); form.type.options[typeIndex].text = "N/A"; form.type.disabled = true; popUpWindow("manual.html", "yes", 0, 0, 350, 400); } } function updateMenus() { var form = document.floorDesigner; rememberMenus(); if (form.type.value == "solid") { initiateSolidMenus(); } else if (form.type.value == "checkered") { initiateCheckeredMenus(); } else if (form.type.value == "bordered") { initiateBorderedMenus(); } else if (form.type.value == "striped") { initiateStripedMenus(); } else { initiateMenus(); } } function initiateSolidMenus() { populateMenus("Color...", "", "", ""); } function initiateCheckeredMenus() { populateMenus("Color 1...", "Color 2...", "Checker Size...", ""); } function initiateBorderedMenus() { populateMenus("Color 1...", "Color 2...", "Border Size...", ""); } function initiateStripedMenus() { populateMenus("Color 1...", "Color 2...", "Stripe Size...", "Orientation..."); } function populateMenus(color1Flag, color2Flag, sizeFlag, orientationFlag) { var form = document.floorDesigner; form.color1.options[color1Index].text = color1; form.color1.options[0].text = color1Flag; form.color1.selectedIndex = color1Index; form.color1.disabled = false; if (color2Flag != "") { form.color2.options[color2Index].text = color2; form.color2.options[0].text = color2Flag; form.color2.selectedIndex = color2Index; form.color2.disabled = false; } else { form.color2.options[color2Index].text = "N/A"; form.color2.disabled = true; } numTiles = (widthIndex > 1) ? "Tiles" : "Tile"; form.width.options[widthIndex].text = widthIndex + " " + numTiles; form.width.options[0].text = "Width..."; form.width.selectedIndex = widthIndex; form.width.disabled = false; numTiles = (lengthIndex > 1) ? "Tiles" : "Tile"; form.length.options[lengthIndex].text = lengthIndex + " " + numTiles; form.length.options[0].text = "Length..."; form.length.selectedIndex = lengthIndex; form.length.disabled = false; if (sizeFlag != "") { numTiles = (sizeIndex > 1) ? "Tiles" : "Tile"; form.size.options[sizeIndex].text = sizeIndex + " " + numTiles; form.size.options[0].text = sizeFlag; form.size.selectedIndex = sizeIndex; form.size.disabled = false; } else { form.size.options[sizeIndex].text = "N/A"; form.size.disabled = true; } if (orientationFlag != "") { form.orientation.options[orientationIndex].text = orientation; form.orientation.options[0].text = orientationFlag; form.orientation.selectedIndex = orientationIndex; form.orientation.disabled = false; } else { form.orientation.options[orientationIndex].text = "N/A"; form.orientation.disabled = true; } } ////////// VALIDATION ////////// function wizardCheck(type) { if (document.floorDesigner.main.value == "manual") { return true; } return false; } function checkType(type) { var error = ""; if (wizardCheck(type)) { return error; } if (type == "foo") { error = "Please select a Floor Style.\n"; } return error; } function checkColor(color1, color2, type) { var error = ""; if (wizardCheck(type)) { return error; } if ((type == "solid") && (color1 == "foo")) { error = "Please select a Color.\n"; } else if (type == "foo") { error = "Please select a Color.\n"; } else if ((type == "checkered") || (type == "bordered") || (type == "striped")) { if (color1 == "foo") { error = "Please select a Color 1.\n"; } if (color2 == "foo") { error += "Please select a Color 2.\n"; } } return error; } function checkWidth(width, type) { var error = ""; if (wizardCheck(type)) { return error; } if (width == "foo") { error = "Please select a Width.\n"; } return error; } function checkLength(length, type) { var error = ""; if (wizardCheck(type)) { return error; } if (length == "foo") { error = "Please select a Length.\n"; } return error; } function checkSize(size, type) { var error = ""; if (wizardCheck(type)) { return error; } if ((type == "checkered") && (size == "foo")) { error = "Please select a Checker Size.\n"; } else if ((type == "bordered") && (size == "foo")) { error = "Please select a Border Size.\n"; } else if ((type == "striped") && (size == "foo")) { error = "Please select a Strip Size.\n"; } return error; } function checkOrientation(orientation, type) { var error = ""; if (wizardCheck(type)) { return error; } if ((type == "striped") && (orientation == "foo")) { error = "Please select an Orientation.\n"; } return error; } // Ask about ramp edges and corner pieces function submitForm(obj) { if (numTilesTotal == 0) { alert("Your floor is empty. Please build your floor first."); return false; } else if (!(numEdgesTotal || numCornersTotal)) { var answer = confirm("Click OK if you\'d like to add ramp edges or corner pieces to your floor."); if (answer) { document.floorDesigner.main.selectedIndex = 1; // set pulldown to extras popUpWindow("manual.html", "yes", 0, 0, 350, 400); return false; } else { setMalsHiddens(obj); return true; } } else { setMalsHiddens(obj); return true; } } ////////// MISC ////////// function capitalize(str) { return str.charAt(0).toUpperCase() + str.substring(1); } // Run the wizard if the return key is hit function checkReturn(code) { if (code && code == 13) { checkWholeForm(); } return false; // prevent form submission }