{"id":2003,"date":"2025-10-16T16:58:40","date_gmt":"2025-10-16T21:58:40","guid":{"rendered":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/?page_id=2003"},"modified":"2025-10-16T17:11:07","modified_gmt":"2025-10-16T22:11:07","slug":"quiz-air-force-song","status":"publish","type":"page","link":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/quiz-air-force-song\/","title":{"rendered":"Quiz &#8211; Air Force Song"},"content":{"rendered":"\n<p class=\"dryadyne-quiz-intro\">This quiz will test your knowledge of <em>The U.S. Air Force Song<\/em> \u2014 the anthem that embodies the pride, courage, and fighting spirit of Airmen past and present. More than just words and melody, it\u2019s a celebration of service and sacrifice, echoing through generations of those who fly, fight, and win. Know the lyrics, understand their meaning, and carry the tune that unites every Airman under one proud banner.<\/p>\n\n\n<div class='dryadyne-quiz-line-order-wrapper'><div class='dryadyne-quiz-line-order' data-quiz-title='Air Force Song'><div class='dryadyne-quiz-startscreen' id='dryadyne-quiz-line-order-startscreen-id'><h3>Air Force Song<\/h3><p>This quiz consists of <strong>8<\/strong> lines you must put in the correct order.<\/p><p>Enter your cadet access code to begin.<\/p><input type='text' class='dryadyne-quiz-line-order-cadet-code' placeholder='Enter Cadet Code' id='dryadyne-quiz-line-order-cadet-code-id'><button class='dryadyne-quiz-line-order-quiz-start' disabled id='dryadyne-quiz-line-order-start-id'>Begin<\/button><p class='dryadyne-quiz-line-order-code-status' id='dryadyne-quiz-line-order-status-id' style='margin-top: 10px;font-weight: bold;'><\/p><\/div>\t\t\t<div class=\"dryadyne-quiz-line-order-question\" style=\"display: none;\" id=\"dryadyne-quiz-line-order-question-id\"\r\n\t\t\t\t data-correct='[&quot;Off we go into the wild blue yonder,&quot;,&quot;Climbing high into the sun;&quot;,&quot;Here\\u00a0they\\u00a0come zooming to meet our thunder,&quot;,&quot;At \\u2018em\\u00a0now,\\u00a0Give &#039;em\\u00a0the gun!&quot;,&quot;Down we dive, spouting our flame from under,&quot;,&quot;Off with one helluva roar!&quot;,&quot;We live in fame or go down in flame. Hey!&quot;,&quot;Nothing&#039;ll stop the U.S. Air Force!&quot;]'\r\n\t\t\t\tdata-quiz-title=\"Air Force Song\"\r\n\t\t\t\tdata-user-id=\"0\"\r\n\t\t\t\tdata-cadet-name=\"\">\r\n\r\n\t\t\t\t<p><strong>Drag the lines of the Air Force Song to arrange them in the correct order.<\/strong><\/p>\r\n\t\t\t\t<ul class=\"dryadyne-order-list\">\r\n\t\t\t\t\t\t\t\t\t\t\t<li draggable=\"true\" class=\"order-item\">Nothing&#039;ll stop the U.S. Air Force!<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t<li draggable=\"true\" class=\"order-item\">Down we dive, spouting our flame from under,<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t<li draggable=\"true\" class=\"order-item\">Here\u00a0they\u00a0come zooming to meet our thunder,<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t<li draggable=\"true\" class=\"order-item\">Off with one helluva roar!<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t<li draggable=\"true\" class=\"order-item\">We live in fame or go down in flame. Hey!<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t<li draggable=\"true\" class=\"order-item\">Climbing high into the sun;<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t<li draggable=\"true\" class=\"order-item\">At \u2018em\u00a0now,\u00a0Give &#039;em\u00a0the gun!<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t<li draggable=\"true\" class=\"order-item\">Off we go into the wild blue yonder,<\/li>\r\n\t\t\t\t\t\t\t\t\t<\/ul>\r\n\t\t\t\t<p class=\"orderResult\" id=\"dryadyne-quiz-line-order-results\"><\/p>\r\n\t\t\t\t<button class=\"checkOrder\">Check Order<\/button>\r\n\t\t\t\t<button class=\"submitOrder\" disabled style=\"visibility: hidden;\" id=\"dryadyne-quiz-line-order-submit-id\">Submit<\/button>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n<div class='dryadyne-product-slot'><div class='dryadyne-products'><div class='dryadyne-product'>\r\n                    <a href='https:\/\/8gendesigns.com\/wildcatsjrotccag\/product\/sotomayor-silver-claws-drill-team-hoodie\/'><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-content\/uploads\/sites\/7\/2025\/01\/Gildan-18500-Mock-Up-Back_Silver-Claws-2025.01.13_Black-300x300.png\" class=\"attachment-woocommerce_thumbnail size-woocommerce_thumbnail\" alt=\"Silver Claws Drill Team Hoodie\" srcset=\"https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-content\/uploads\/sites\/7\/2025\/01\/Gildan-18500-Mock-Up-Back_Silver-Claws-2025.01.13_Black-300x300.png 300w, https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-content\/uploads\/sites\/7\/2025\/01\/Gildan-18500-Mock-Up-Back_Silver-Claws-2025.01.13_Black-150x150.png 150w, https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-content\/uploads\/sites\/7\/2025\/01\/Gildan-18500-Mock-Up-Back_Silver-Claws-2025.01.13_Black-768x768.png 768w, https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-content\/uploads\/sites\/7\/2025\/01\/Gildan-18500-Mock-Up-Back_Silver-Claws-2025.01.13_Black-600x600.png 600w, https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-content\/uploads\/sites\/7\/2025\/01\/Gildan-18500-Mock-Up-Back_Silver-Claws-2025.01.13_Black-100x100.png 100w, https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-content\/uploads\/sites\/7\/2025\/01\/Gildan-18500-Mock-Up-Back_Silver-Claws-2025.01.13_Black.png 800w\" sizes=\"auto, (max-width: 360px) 147px, (max-width: 300px) 100vw, 300px\" \/><div class='dryadyne-product-name'>Silver Claws Drill Team Hoodie<\/div>\r\n                    <div class='dryadyne-product-price'><span class=\"woocommerce-Price-amount amount\" aria-hidden=\"true\"><bdi><span class=\"woocommerce-Price-currencySymbol\">&#36;<\/span>40.00<\/bdi><\/span> <span aria-hidden=\"true\">&ndash;<\/span> <span class=\"woocommerce-Price-amount amount\" aria-hidden=\"true\"><bdi><span class=\"woocommerce-Price-currencySymbol\">&#36;<\/span>43.00<\/bdi><\/span><span class=\"screen-reader-text\">Price range: &#36;40.00 through &#36;43.00<\/span><\/div><\/a>\r\n                  <\/div><\/div><\/div>\t<\/div>\r\n\r\n    <script>\r\n\t\tlet attempts = 0; \/\/ how many attempts the user took to complete the quiz\r\n\t\tlet accuracyLog = []; \/\/ an array of scores from each attempt\r\n\r\n\tjQuery(document).ready(function ($) {\r\n\t\t\r\n\t\tconst $quiz = $('.dryadyne-quiz-line-order');\r\n\t\tconst $startscreen = $quiz.find('#dryadyne-quiz-line-order-startscreen-id');\r\n\t\tconst $startBtn = $quiz.find('#dryadyne-quiz-line-order-start-id');\r\n\t\tconst $status = $quiz.find(\"#dryadyne-quiz-line-order-status-id\");\r\n\t\tconst $control = $quiz.find(\"#dryadyne-quiz-line-order-question-id\");\r\n\t\tconst $submitBtn = $quiz.find('#dryadyne-quiz-line-order-submit-id');\r\n\t\tlet userFirstName = \"\";\r\n\t\tlet userFullName = \"\";\r\n\t\tlet userId = 0;\r\n\t\tlet quizStarted = false;\r\n\t\tlet quizCompleted = false;\r\n\t\t\r\n\t\t\t\t\/\/ code input text box\r\n\t\t$quiz.find('#dryadyne-quiz-line-order-cadet-code-id').on('input', function () {\r\n\t\t  const code = $(this).val().trim();\r\n\t\t  $status.text('');\r\n\t\t  $startBtn.prop('disabled', true);\r\n\t\t  if (code.length < 4) return;\r\n\t\t  $.post(dryadyne_quiz_ajax.ajax_url, { action: 'dryadyne_validate_code', code }, function (res) {\r\n\t\t\tif (res.valid) {\r\n\t\t\t\tuserId = res.user_id;\r\n\t\t\t  userFirstName = res.first_name;\r\n\t\t\t  userFullName = res.full_name;\r\n\t\t\t  $status.text(`\u2705 Welcome, ${userFirstName}`).css('color', 'green');\r\n\t\t\t  $startBtn.prop('disabled', false);\r\n\t\t\t} else {\r\n\t\t\t  $status.text('\u274c ' + res.message).css('color', 'red');\r\n\t\t\t  userFullName = \"\";\r\n\t\t\t  userFirstName = \"\";\r\n\t\t\t  userId = 0;\r\n\t\t\t}\r\n\t\t  });\r\n\t\t});\r\n\t\r\n\t\t\/\/ \u2705 Begin button\r\n\t\t$startBtn.on('click', function () {\r\n\t\t  if (!userFirstName) return;\r\n\t\t  quizStarted = true;\r\n\r\n\t\t  $startscreen.hide();\r\n\t\t  \/\/ hide any static div\r\n\t\t  $('.dryadyne-quiz-intro').hide();\r\n\t\t  $control.show();\r\n\t\t  \/\/ change up the product\r\n\t\t  setProductListing(jQuery('.dryadyne-product-slot'));\r\n\t\t});\r\n\t\t\r\n\t\t$submitBtn.on('click', function() {\t\t\t\r\n\t\t\t\t  if ($submitBtn.disabled) \r\n\t\t  return;\r\n      quizCompleted = true;\r\n\t\t  const avg = accuracyLog.reduce((sum, val) => sum + val, 0) \/ accuracyLog.length;\r\n\t\t  const score = Math.round(avg);\r\n\t\t  const total = 100;\r\n\t\t  const percent = score;\r\n\r\n\t\t  $.post(dryadyne_quiz_ajax.ajax_url, {\r\n\t\t\t\taction: 'dryadyne_save_result',\r\n\t\t\t\tuser_id: userId,\r\n\t\t\t\tcadet_name: userFullName,\r\n\t\t\t\tquiz_title: $quiz.data('quiz-title'),\r\n\t\t\t\tscore: score,\r\n\t\t\t\ttotal: total,\r\n\t\t\t\tpercent: percent\r\n\t\t  });\r\n\r\n\t\t\tlet lines = $('.dryadyne-order-list .order-item').map(function() {\r\n\t\t\t  return $(this).text().trim();\r\n\t\t\t}).get();\r\n\t\t\t$('.dryadyne-order-list .order-item').hide();\r\n\t\t\t$results = $(\"#dryadyne-quiz-line-order-results\");\r\n\t\t\tvar pageLink = '<p style=\"color: black;\">Return to the <a href=\"\/wildcatsjrotccag\/cadet-drill-knowledge\">Cadet Drill Knowledge<\/a> home page.<\/p>'\r\n\t\t\tvar userLink = '<p style=\"color: black;\">View all your quiz <a href=\"\/wildcatsjrotccag\/cadet-progress?userid=' + userId + '\">resuts<\/a>.<\/p>'\r\n\t\t  $results.html(`<div style=\"color: black;\">${lines.join('<br\/>')}<\/div><br.><br\/><div>\u2705 Submitted! Final Score: ${score}% (${accuracyLog.length} attempts)<\/div><br\/>${pageLink}${userLink}`);\r\n\t\t  $submitBtn.disabled = true;\r\n\t\t  $submitBtn.hide();\r\n\t\t});\r\n\t\t\r\n\t\t    \/\/ \u2705 Refresh warning\r\n\t\t$(window).on('beforeunload', function (e) {\r\n\t\t  if (quizStarted && !quizCompleted) {\r\n\t\t\tconst message = \"Your quiz progress will be lost if you leave or refresh this page.\";\r\n\t\t\te.preventDefault();\r\n\t\t\te.returnValue = message;\r\n\t\t\treturn message;\r\n\t\t  }\r\n\t\t});\r\n\r\n\t});\r\n\t\r\n\t\r\n    document.addEventListener('DOMContentLoaded', () => {\r\n\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n      document.querySelectorAll('.dryadyne-quiz-line-order-question').forEach(block => {\r\n        const list = block.querySelector('.dryadyne-order-list');\r\n        let dragged;\r\n\r\n        list.querySelectorAll('.order-item').forEach(item => {\r\n          item.addEventListener('dragstart', e => {\r\n            dragged = item;\r\n            item.classList.add('dragging');\r\n          });\r\n          item.addEventListener('dragend', e => {\r\n            item.classList.remove('dragging');\r\n          });\r\n          item.addEventListener('dragover', e => {\r\n            e.preventDefault();\r\n            const after = [...list.querySelectorAll('.order-item')]\r\n              .filter(i => i !== dragged)\r\n              .find(i => e.clientY <= i.getBoundingClientRect().top + i.offsetHeight \/ 2);\r\n            if (after) list.insertBefore(dragged, after);\r\n            else list.appendChild(dragged);\r\n          });\r\n        });\r\n\r\n        block.querySelector('.checkOrder').addEventListener('click', () => {\r\n          const correct = JSON.parse(block.dataset.correct);\r\n          const userOrder = [...list.querySelectorAll('.order-item')].map(li => li.textContent.trim());\r\n          const result = JSON.stringify(correct) === JSON.stringify(userOrder);\r\n          const msg = result ? '\u2705 Correct!' : '\u274c Try again.';\r\n          const resEl = block.querySelector('.orderResult');\r\n          resEl.textContent = msg;\r\n          resEl.style.color = result ? 'green' : 'red';\r\n        });\r\n      });\r\n    });\r\n\t\r\n\tdocument.addEventListener('DOMContentLoaded', () => {\r\n  document.querySelectorAll('.dryadyne-quiz-line-order-question').forEach(block => {\r\n    const list = block.querySelector('.dryadyne-order-list');\r\n    const checkBtn = block.querySelector('.checkOrder');\r\n    const submitBtn = block.querySelector('.submitOrder');\r\n    const resEl = block.querySelector('.orderResult');\r\n    const correct = JSON.parse(block.dataset.correct);\r\n\r\n\r\n    const updateSubmitState = (enabled) => {\r\n      submitBtn.disabled = !enabled;\r\n      submitBtn.style.opacity = enabled ? 1 : 0.5;\r\n      submitBtn.style.cursor = enabled ? 'pointer' : 'not-allowed';\r\n    };\r\n    updateSubmitState(false);\r\n\r\n    \/\/ Drag-and-drop behavior\r\n    let dragged;\r\n    list.querySelectorAll('.order-item').forEach(item => {\r\n      item.addEventListener('dragstart', e => {\r\n        dragged = item;\r\n        item.classList.add('dragging');\r\n      });\r\n      item.addEventListener('dragend', e => {\r\n        item.classList.remove('dragging');\r\n      });\r\n      item.addEventListener('dragover', e => {\r\n        e.preventDefault();\r\n        const after = [...list.querySelectorAll('.order-item')]\r\n          .filter(i => i !== dragged)\r\n          .find(i => e.clientY <= i.getBoundingClientRect().top + i.offsetHeight \/ 2);\r\n        if (after) list.insertBefore(dragged, after);\r\n        else list.appendChild(dragged);\r\n      });\r\n    });\r\n\r\n    \/\/ === Check Order ===\r\n    checkBtn.addEventListener('click', () => {\r\n\t\t  \/\/ change up the product\r\n\t\t  setProductListing(jQuery('.dryadyne-product-slot'));\r\n      attempts++;\r\n      const userOrder = [...list.querySelectorAll('.order-item')].map(li => li.textContent.trim());\r\n      let correctCount = 0;\r\n\r\n      list.querySelectorAll('.order-item').forEach((item, i) => {\r\n        if (userOrder[i] === correct[i]) {\r\n          item.style.background = '#d4edda'; \/\/ green\r\n          correctCount++;\r\n        } else {\r\n          item.style.background = '#f8d7da'; \/\/ red\r\n        }\r\n      });\r\n\r\n      const total = correct.length;\r\n      const percent = Math.round((correctCount \/ total) * 100);\r\n      accuracyLog.push(percent);\r\n\r\n      resEl.textContent = `${correctCount}\/${total} correct (${percent}%) \u2014 Attempt #${attempts}`;\r\n      resEl.style.color = percent === 100 ? 'green' : 'black';\r\n\r\n      if (percent === 100) {\r\n\t\tcheckBtn.style.display = 'none';\r\n\t\tsubmitBtn.style.visibility = 'visible';\r\n        updateSubmitState(true);\r\n      }\r\n    });\t\r\n\t\r\n  });\r\n});\r\n\r\n\r\n    <\/script>\r\n\r\n    <style>\r\n\t.dryadyne-quiz-line-order-wrapper {\r\n\t\t    display: flex;\r\n    flex-wrap: wrap;\r\n    gap: 20px;\r\n    align-items: flex-start;\r\n    margin-bottom: 25px;\r\n\t}\r\n\t\r\n\t.dryadyne-quiz-line-order {\r\n  flex: 2;\r\n  max-width: 66%;\r\n}\r\n\r\n\r\n.dryadyne-quiz-line-order-cadet-code {\r\n  padding: 8px 10px;\r\n  font-size: 16px;\r\n  border: 1px solid #ccc;\r\n  border-radius: 5px;\r\n  width: 70%;\r\n  max-width: 250px;\r\n  margin-top: 10px;\r\n  text-align: center;\r\n      width: 200px !important;\r\n    margin-right: 15px !important;\r\n}\r\n\r\n.dryadyne-quiz-line-order-quiz-start {\r\n  margin-top: 15px;\r\n  padding: 10px 22px;\r\n  font-size: 16px;\r\n  background: #003366;\r\n  color: #fff;\r\n  border: none;\r\n  border-radius: 6px;\r\n  cursor: pointer;\r\n  transition: background 0.2s;\r\n}\r\n\t\r\n\t.dryadyne-quiz-line-order-wrapper button {\r\n  margin-top: 15px;\r\n  padding: 10px 22px;\r\n  font-size: 16px;\r\n  background: #003366;\r\n  color: #fff;\r\n  border: none;\r\n  border-radius: 6px;\r\n  cursor: pointer;\r\n  transition: background 0.2s;\r\n}\r\n\r\n\t\r\n    .dryadyne-order-list {\r\n      list-style: none;\r\n      padding: 0;\r\n      border: 1px solid #ccc;\r\n      border-radius: 6px;\r\n      background: #fafafa;\r\n      max-width: 500px;\r\n    }\r\n    .order-item {\r\n      padding: 8px 10px;\r\n      margin: 4px;\r\n      background: #f4f4f4;\r\n      border-radius: 4px;\r\n      cursor: grab;\r\n    }\r\n    .order-item.dragging {\r\n      opacity: 0.6;\r\n      background: #d9e8ff;\r\n    }\r\n\t\r\n\t.submitOrder:disabled {\r\n\t  background: #aaa;\r\n\t  color: #fff;\r\n\t}\r\n\t.submitOrder:not(:disabled) {\r\n\t  background: #28a745;\r\n\t  color: #fff;\r\n\t  transition: background 0.3s;\r\n\t}\r\n    <\/style>\r\n    \n","protected":false},"excerpt":{"rendered":"<p>This quiz will test your knowledge of The U.S. Air Force Song \u2014 the anthem that embodies the pride, courage, and fighting spirit of Airmen past and present. More than [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-fullwidth.php","meta":{"_uag_custom_page_level_css":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-2003","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"commercegurus-pdp-large":false,"commercegurus-plp-mobile":false,"cgkit_image_swatch":false,"woocommerce_thumbnail":false,"woocommerce_single":false,"woocommerce_gallery_thumbnail":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"This quiz will test your knowledge of The U.S. Air Force Song \u2014 the anthem that embodies the pride, courage, and fighting spirit of Airmen past and present. More than [&hellip;]","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-json\/wp\/v2\/pages\/2003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-json\/wp\/v2\/comments?post=2003"}],"version-history":[{"count":3,"href":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-json\/wp\/v2\/pages\/2003\/revisions"}],"predecessor-version":[{"id":2012,"href":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-json\/wp\/v2\/pages\/2003\/revisions\/2012"}],"wp:attachment":[{"href":"https:\/\/8gendesigns.com\/wildcatsjrotccag\/wp-json\/wp\/v2\/media?parent=2003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}