{"title":"WSM Watercraft \u0026 Engine Parts","description":"\u003cp\u003eWSM, also known as Water Sports Manufacturing, supplies replacement engine and drivetrain parts for personal watercraft, marine, ATV, UTV and dirt bike applications. The catalogue includes pistons, gaskets, carburetor kits, electrical parts and rebuild components engineered to meet or exceed OEM specifications.\u003c\/p\u003e\u003cp\u003eWSM has served the watercraft and powersports market since the early 1990s, building a reputation for affordable, dependable aftermarket parts. Riders and mechanics choose WSM for reliable rebuild components and a deep selection that keeps older and current machines running without OEM pricing.\u003c\/p\u003e\u003cp\u003eFor more options, explore our \u003ca href=\"https:\/\/www.drivenpowersports.ca\/pages\/marine-hub\"\u003emarine parts hub\u003c\/a\u003e\u003c\/p\u003e\u003cp\u003eShop the full \u003ca href=\"https:\/\/www.drivenpowersports.ca\/collections\/marine-engine\"\u003emarine engine parts\u003c\/a\u003e collection at DRIVEN.\u003c\/p\u003e","products":[{"product_id":"wsm-fuel-hose-1-4-id-25-006-714-25","title":"WSM Replacement Part","description":"Replacement Part","brand":"WSM","offers":[{"title":"Purple","offer_id":40812189909038,"sku":"006-714-25","price":37.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-replacement-partdriven-powersports-inc006-714-25865369112500-392554.jpg?v=1738725829"},{"product_id":"wsm-fuel-hose-3-16-id-25-ft-006-716-25","title":"WSM Fuel Hose PU 3\/16 ID 25 FT","description":"WSM FUEL HOSE 3\/16 ID 25 FT","brand":"WSM","offers":[{"title":"Purple","offer_id":40812190597166,"sku":"006-716-25","price":36.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-fuel-hose-pu-316-id-25-ft-006-716-25driven-powersports-inc006-716-25865369112319-300490.jpg?v=1738725768"},{"product_id":"wsm-water-line-hose-pu-3-8-25-006-718-25","title":"WSM Water Line Pipe","description":"Water Line Pipe","brand":"WSM","offers":[{"title":"Blue","offer_id":40812192923694,"sku":"006-718-25","price":65.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-water-line-pipedriven-powersports-inc006-718-25865369154845-867008.jpg?v=1738725768"},{"product_id":"wsm-fuel-hose-1-4-id-50-006-714-50","title":"WSM Replacement Part","description":"Replacement Part","brand":"WSM","offers":[{"title":"Purple","offer_id":40814553202734,"sku":"006-714-50","price":67.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-replacement-partdriven-powersports-inc006-714-50865369112517-938089.jpg?v=1738725571"},{"product_id":"wsm-water-line-hose-pu-3-8-50-006-718-50","title":"WSM Water Line Pipe","description":"Water Line Pipe","brand":"WSM","offers":[{"title":"Blue","offer_id":40814553595950,"sku":"006-718-50","price":116.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-water-line-pipedriven-powersports-inc006-718-50865369154876-461546.jpg?v=1738725571"},{"product_id":"wsm-fuel-hose-1-4-id-100-006-714-100","title":"WSM Replacement Part","description":"Replacement Part","brand":"WSM","offers":[{"title":"Purple","offer_id":40816769761326,"sku":"006-714-100","price":112.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-replacement-partdriven-powersports-inc006-714-100865369117383-552388.jpg?v=1738725539"},{"product_id":"wsm-top-end-gasket-kit-pol-750-007-638","title":"WSM Engine Gasket Top End Kit","description":"Top-End Gasket Kit Contains: One gasket kit to fit a single engine.\u003cbr\u003e\u003cbr\u003e \u003cli\u003eTop-End gasket kits include the required o-rings and gaskets between the head and the Cylinder base.\u003c\/li\u003e \u003cli\u003eKits are made to OEM specifications\u003c\/li\u003e","brand":"WSM","offers":[{"title":"Silver","offer_id":40818484772910,"sku":"007-638","price":103.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-engine-gasket-top-end-kitdriven-powersports-inc007-638865369071876-878954.jpg?v=1738725488"},{"product_id":"wsm-gasket-kit-compl-seadoo-580-007-620","title":"WSM Replacement Part","description":"Replacement Part","brand":"WSM","offers":[{"title":"White","offer_id":40823809245230,"sku":"007-620","price":116.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-replacement-partdriven-powersports-inc007-620865369056750-531797.jpg?v=1738725301"},{"product_id":"wsm-variable-trim-motor-ph200-t040-ph200-t040","title":"WSM Trim Motor","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40850224021550,"sku":"PH200-T040","price":251.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-variable-trim-motor-ph200-t040driven-powersports-incph200-t040865369006267-109315.jpg?v=1738719883"},{"product_id":"wsm-drive-shaft-boot-rubber-seadoo-003-124-003-124","title":"WSM Drive Shaft Protector Sleeve","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854920364078,"sku":"003-124","price":20.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-drive-shaft-protector-sleeve-003-124driven-powersports-inc003-124865369162673-340184.jpg?v=1738719066"},{"product_id":"wsm-rotary-shaft-puller-seadoo-003-340-003-340","title":"WSM Rotary Shaft Puller","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854920527918,"sku":"003-340","price":56.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-rotary-shaft-puller-003-340driven-powersports-inc003-340865369027330-697426.jpg?v=1738719067"},{"product_id":"wsm-fuel-pump-seadoo-004-802-004-802","title":"WSM Fuel Pump","description":"Fuel Pump","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854920888366,"sku":"004-802","price":251.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-fuel-pump-004-802driven-powersports-inc004-802865369148752-965291.jpg?v=1738719066"},{"product_id":"wsm-drive-shaft-bellow-seadoo-003-123-003-123","title":"WSM CV Boot","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854920986670,"sku":"003-123","price":29.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-cv-boot-003-123driven-powersports-inc003-123865369162666-434303.jpg?v=1738719067"},{"product_id":"wsm-impeller-tool-14mm-yam-j-e-003-316-04-003-316-04","title":"WSM Propeller Tool","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854921150510,"sku":"003-316-04","price":55.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-impeller-tool-14mm-yamje-003-316-04driven-powersports-inc003-316-04865369334452-758275.jpg?v=1738718944"},{"product_id":"wsm-jet-pump-wear-ring-seadoo-003-498s-003-498s","title":"WSM Wear Ring","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854921281582,"sku":"003-498S","price":143.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-wear-ring-003-498sdriven-powersports-inc003-498s865369065400-893518.jpg?v=1738718944"},{"product_id":"wsm-drive-shaft-boot-kit-rubber-seadoo-003-124k-003-124k","title":"WSM Drive Shaft Protector Sleeve","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854926721070,"sku":"003-124K","price":19.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-drive-shaft-protector-sleeve-003-124kdriven-powersports-inc003-124k865369275083-812075.jpg?v=1738718881"},{"product_id":"wsm-reverse-cable-yam-002-204-002-204","title":"WSM Reverse Cable","description":"\u003cul\u003e\n\u003cli\u003e100 percentage new and made with the highest quality components\u003c\/li\u003e \u003cli\u003eComputer tested for consistent quality and unsurpassed reliability\u003c\/li\u003e \u003cli\u003eMeets or exceeds original specifications\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854927704110,"sku":"002-204","price":377.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-reverse-cable-002-204driven-powersports-inc002-204865369163977-407793.jpg?v=1738718881"},{"product_id":"wsm-jet-pump-wear-ring-seadoo-003-498-003-498","title":"WSM Wear Ring","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854928457774,"sku":"003-498","price":86.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-wear-ring-003-498driven-powersports-inc003-498865369279517-771926.jpg?v=1738718880"},{"product_id":"wsm-jet-pump-zinc-anode-seadoo-003-750-003-750","title":"WSM Jet Pump Anode","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854928556078,"sku":"003-750","price":19.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-jet-pump-anode-003-750driven-powersports-inc003-750865369155156-758367.jpg?v=1738718880"},{"product_id":"wsm-temperature-sensor-seadoo-004-275-004-275","title":"WSM Coolant Temperature Sensor","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854928752686,"sku":"004-275","price":53.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-coolant-temperature-sensor-004-275driven-powersports-inc004-275865369058259-470860.jpg?v=1738718880"},{"product_id":"wsm-oil-filter-kit-seadoo-006-559k-006-559k","title":"WSM Oil Filter","description":"Replacement Parts","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854928916526,"sku":"006-559K","price":22.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-oil-filter-006-559kdriven-powersports-inc006-559k865369173471-248826.jpg?v=1738718880"},{"product_id":"wsm-throttle-cable-seadoo-580-002-038-002-038","title":"WSM Throttle Cable","description":"Throttle Cable","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854932324398,"sku":"002-038","price":73.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-throttle-cable-002-038driven-powersports-inc002-038865369000302-427750.jpg?v=1738718840"},{"product_id":"wsm-reverse-cable-kawa-002-041-05-002-041-05","title":"WSM Reverse Cable","description":"\u003cul\u003e\n\u003cli\u003e100 percentage new and made with the highest quality components\u003c\/li\u003e \u003cli\u003eComputer tested for consistent quality and unsurpassed reliability\u003c\/li\u003e \u003cli\u003eMeets or exceeds original specifications\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854932848686,"sku":"002-041-05","price":179.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-reverse-cable-002-041-05driven-powersports-inc002-041-05865369000517-436757.jpg?v=1738718840"},{"product_id":"wsm-steering-cable-seadoo-580-951-002-045-02-002-045-02","title":"WSM Steering Cable","description":"\u003cul\u003e\n\u003cli\u003eDesigned for smooth operation\u003c\/li\u003e \u003cli\u003eEconomically priced replacement cables\u003c\/li\u003e \u003cli\u003eAll stainless steel fittings\u003c\/li\u003e \u003cli\u003eCables feature inner vinyl linings\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854933143598,"sku":"002-045-02","price":166.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-steering-cable-002-045-02driven-powersports-inc002-045-02865369000630-708039.jpg?v=1738718755"},{"product_id":"wsm-cdi-box-650-kawa-004-220-004-220","title":"WSM CDI Box","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854934290478,"sku":"004-220","price":332.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-cdi-box-004-220driven-powersports-inc004-220865369058228-959243.jpg?v=1738718755"},{"product_id":"wsm-throttle-cable-yam-700-sj-002-055-06-002-055-06","title":"WSM Throttle Cable","description":"Throttle Cable","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854935175214,"sku":"002-055-06","price":130.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-throttle-cable-002-055-06driven-powersports-inc002-055-06865369001200-945782.jpg?v=1738718754"},{"product_id":"wsm-clamp-oetiker-010-8mm-13-3mm-qty10-13-162-32-13-162-32","title":"WSM Oetiker Clamp","description":"Oetiker Clamp","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854935896110,"sku":"13-162-32","price":30.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-clamp-oetiker-0108mm-133mm-qty10-13-162-32driven-powersports-inc13-162-32865369033058-505253.jpg?v=1738718754"},{"product_id":"wsm-cdi-box-720-seadoo-004-220-03-004-220-03","title":"WSM CDI Box","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854936027182,"sku":"004-220-03","price":999.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-cdi-box-004-220-03driven-powersports-inc004-220-03865369182688-420731.jpg?v=1738718754"},{"product_id":"wsm-clamp-oetiker-015-3mm-018-5mm-qty10-13-162-46-13-162-46","title":"WSM Oetiker Clamp","description":"Oetiker Clamp","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854936059950,"sku":"13-162-46","price":32.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-clamp-oetiker-0153mm-0185mm-qty10-13-162-46driven-powersports-inc13-162-46865369287338-655793.jpg?v=1738718753"},{"product_id":"wsm-piston-kit-0-25mm-over-sea-doo-010-818-04k-010-818-04k","title":"WSM Piston Kit 025mm Over SEA-Doo (010-818-04K)","description":"WSM PISTON KIT 0,25MM OVER SEA-DOO (010-818-04K)\n\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\njustify-content: center;\nalign-items: center;\nmax-width: 100%;\n\"\u003e\n\u003ch3\u003eFitment Lookup\u003c\/h3\u003e\n\u003cform id=\"FITMENT_FORM\" style=\"\ndisplay: flex;\nflex-wrap: wrap;\njustify-content: center;\nmax-width: 80%;\nwidth: 80%;\nmin-width: 8rem;\nmax-width: 24rem;\n\"\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_BRAND\" style=\"padding-bottom: 0.25rem\"\u003eBRAND\u003c\/label\u003e\n\u003cselect id=\"FITMENT_BRAND\" style=\"white-space: nowrap; text-overflow: ellipsis\"\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT BRAND\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_MODEL\" style=\"padding-bottom: 0.25rem\"\u003eMODEL\u003c\/label\u003e\n\u003cselect id=\"FITMENT_MODEL\" style=\"white-space: nowrap; text-overflow: ellipsis\" disabled\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT MODEL\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_YEAR\" style=\"padding-bottom: 0.25rem\"\u003eYEAR\u003c\/label\u003e\n\u003cselect id=\"FITMENT_YEAR\" style=\"white-space: nowrap; text-overflow: ellipsis\" disabled\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT YEAR\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003c\/form\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\nmargin: 0.5rem;\n\"\u003e\n\u003ch4\u003eFitments:\u003c\/h4\u003e\n\u003ctable id=\"FITMENT_TABLE\"\u003e\u003c\/table\u003e\n\u003cdiv id=\"FITMENT_NOTES\" style=\"\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\nmargin-top: 0.5rem;\n\"\u003e\n\u003cspan id=\"FITMENT_MESSAGE\" style=\"margin-top: 0.5rem; margin-bottom: 0.5rem\"\u003eSelect Brand, Model, and Year To Check Fitment For Current\nProduct\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003chr style=\"\nborder-top: 3px solid #ddd;\nwidth: 100%;\nmax-width: 32rem;\nmargin-top: 0.5rem;\nmargin-bottom: 0.5rem;\n\"\u003e\n\u003cspan style=\"\nmax-width: 32rem;\nfont-style: italic;\nfont-weight: 100;\npadding: 1rem;\n\"\u003e\u003cb\u003eDisclaimer:\u003c\/b\u003e Fitment information is based on third-party data and\nmay not be accurate. Other fitments may be available but are not shown\ndue to limited data. Verify with your vehicle's manufacturer or a\nprofessional before making any changes. We are not responsible for\nerrors or actions taken based on this information.\n\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\nconst fitments = [{\"m\":\"Challenger 1800 800\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"010-818-04K|\"]}}},{\"m\":\"Challenger 800\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"010-818-04K|\"]},\"2\":{\"-1\":[\"010-818-04K|\"]}}},{\"m\":\"GSX 800\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"010-818-04K|\"]},\"2\":{\"-1\":[\"010-818-04K|\"]}}},{\"m\":\"GSX RFI 800\",\"b\":0,\"y\":{\"1\":{\"-1\":[\"010-818-04K|\"]},\"6\":{\"-1\":[\"010-818-04K|\"]}}},{\"m\":\"GTI LE RFI 800\",\"b\":0,\"y\":{\"7\":{\"-1\":[\"010-818-04K|\"]}}},{\"m\":\"GTX 800\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"010-818-04K|\"]},\"2\":{\"-1\":[\"010-818-04K|\"]}}},{\"m\":\"GTX RFI 800\",\"b\":0,\"y\":{\"1\":{\"-1\":[\"010-818-04K|\"]},\"3\":{\"-1\":[\"010-818-04K|\"]},\"4\":{\"-1\":[\"010-818-04K|\"]},\"6\":{\"-1\":[\"010-818-04K|\"]},\"8\":{\"-1\":[\"010-818-04K|\"]}}},{\"m\":\"SPX 800\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"010-818-04K|\"]},\"1\":{\"-1\":[\"010-818-04K|\"]},\"8\":{\"-1\":[\"010-818-04K|\"]}}},{\"m\":\"XP 800\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"010-818-04K|\"]},\"2\":{\"-1\":[\"010-818-04K|\"]},\"5\":{\"-1\":[\"010-818-04K|\"]}}}]\nconst brands = [\"SEA-DOO\"]\nconst notes = []\nconst years = [1997,1999,1996,2001,2002,1995,2000,2003,1998]\nconst options = []\nconst brandSelector = document.getElementById('FITMENT_BRAND')\nconst modelSelector = document.getElementById('FITMENT_MODEL')\nconst yearSelector = document.getElementById('FITMENT_YEAR')\nconst form = document.getElementById('FITMENT_FORM')\nconst table = document.getElementById('FITMENT_TABLE')\nconst notesDiv = document.getElementById('FITMENT_NOTES')\nconst _sBrands = [...brands].sort((a, b) =\u003e (a \u003e b ? 1 : a \u003c b ? -1 : 0))\nconst _sModels = []\nconst _sYears = [...years].sort()\nfitments.forEach((fitment, index) =\u003e {\nif (!_sModels.includes(fitment.m)) {\n_sModels.push(fitment.m)\nconst option = document.createElement('option')\noption.innerHTML = fitment.m\noption.value = fitment.m\noption.title = fitment.m\noption.hidden = true\nmodelSelector.appendChild(option)\n}\n})\n_sBrands.forEach((brand) =\u003e {\nconst option = document.createElement('option')\noption.innerHTML = brand\noption.value = brand\noption.title = brand\nconst foundIndex = brands.findIndex((_brand) =\u003e brand === _brand)\noption.dataset['index'] = foundIndex\nbrandSelector.appendChild(option)\n})\n_sYears.forEach((year) =\u003e {\nconst option = document.createElement('option')\noption.innerHTML = year\noption.value = year\noption.hidden = true\noption.title = year\nconst foundIndex = years.findIndex((_year) =\u003e year === _year)\noption.dataset['index'] = foundIndex\nyearSelector.appendChild(option)\n})\n_sBrands.splice(0, _sBrands.length)\n_sModels.splice(0, _sModels.length)\n_sYears.splice(0, _sYears.length)\n\nlet currentBrand\nlet currentModel\nlet currentYear\n\nconst resetState = (state) =\u003e {\nif (state === 'all') {\nmodelSelector.value = 'default'\nmodelSelector.disabled = false\ncurrentModel = undefined\n}\nyearSelector.value = 'default'\nyearSelector.disabled = true\ncurrentYear = undefined\ncleanMessages()\ncreateMessage('Select Brand, Model, and Year To Find Fitment For Product')\ncleanFitmentTable()\n}\n\nconst updateModels = () =\u003e {\nconst newFitmentLookup = fitments.filter((fitment) =\u003e {\nreturn fitment.b === currentBrand\n})\nmodelSelector.querySelectorAll('option')?.forEach((option, index) =\u003e {\nif (index === 0 || option.innerHTML.trim() === 'SELECT MODEL') return\noption.remove()\n})\nnewFitmentLookup.forEach((fitment) =\u003e {\nconst option = document.createElement('option')\noption.style.wordBreak = ''\noption.innerHTML = fitment.m\noption.value = fitment.m\noption.title = fitment.m\nmodelSelector.appendChild(option)\n})\nresetState('all')\n}\n\nconst updateYears = () =\u003e {\nconst newFitment = fitments.find((fitment) =\u003e {\nreturn fitment.b === currentBrand \u0026\u0026 fitment.m === currentModel\n})\n\nyearSelector.querySelectorAll('option')?.forEach((option) =\u003e {\nconst foundYear = newFitment.y[option.dataset['index']]\nif (foundYear) {\noption.hidden = false\n} else {\noption.hidden = true\n}\n})\nresetState()\nyearSelector.disabled = false\n}\n\nconst createMessage = (text, note) =\u003e {\nconst span = document.createElement('span')\nspan.innerHTML = text\nspan.style.marginTop = '0.5rem'\nspan.style.marginBottom = '0.5rem'\nif (note) {\nspan.style.fontWeight = 'bold'\nspan.style.fontStyle = 'italic'\n}\nnotesDiv.appendChild(span)\n}\n\nconst cleanMessages = () =\u003e {\nconst messages = notesDiv.querySelectorAll('span')\nmessages.forEach((message) =\u003e message.remove())\n}\n\nconst cleanFitmentTable = () =\u003e {\nconst rows = table.querySelectorAll('tr')\nrows.forEach((row) =\u003e row.remove())\n}\n\nconst createFitmentHeaders = () =\u003e {\nconst row = document.createElement('tr')\ntable.appendChild(row)\nconst tableHeader = document.createElement('th')\ntableHeader.innerHTML = 'SKU | OPTION(s)'\nrow.appendChild(tableHeader)\n}\n\nconst createFitmentRow = (text) =\u003e {\nconst row = document.createElement('tr')\ntable.appendChild(row)\nconst tableHeader = document.createElement('td')\ntableHeader.innerHTML = text\nrow.appendChild(tableHeader)\n}\n\nconst showFitments = () =\u003e {\nconst fitment = fitments.find((fitment) =\u003e fitment.b === currentBrand \u0026\u0026 fitment.m === currentModel)?.y?.[currentYear]\ncleanFitmentTable()\n\nif (!fitment) {\ncleanMessages()\ncreateMessage('No Fitments Found For This Current Product')\nreturn\n}\ncleanMessages()\ncreateFitmentHeaders()\nconst currentNotes = []\nconst currentFitments = []\nfor (noteKey in fitment) {\nconst note = notes[noteKey]\nlet notePosition\nif (note) notePosition = currentNotes.push(note)\n\nfitment[noteKey]\n.sort((a, b) =\u003e (a \u003e b ? 1 : a \u003c b ? -1 : 0))\n.forEach((sku) =\u003e {\nconst manufacturerSKU = sku.split('|')[0]\nconst optionString = options?.[sku.split('|')?.[1]]\nconst text = notePosition\n? `${manufacturerSKU}${'*'.repeat(notePosition)}${optionString ? ` | ${optionString}` : ''}`\n: `${manufacturerSKU}${optionString ? ` | ${optionString}` : ''}`\ncreateFitmentRow(text)\n})\n}\ncurrentNotes.forEach((note, index) =\u003e {\ncreateMessage(`${'*'.repeat(index + 1)} ${note}`, true)\n})\n}\n\nform.addEventListener('change', (event) =\u003e {\nswitch (event.target.id) {\ncase 'FITMENT_BRAND':\ncurrentBrand = Number(event.target.options[event.target.selectedIndex]?.dataset['index'])\nbrandSelector.title = brands[currentBrand]\nupdateModels()\nbreak\ncase 'FITMENT_MODEL':\ncurrentModel = event.target.value\nmodelSelector.title = event.target.value\nupdateYears()\nbreak\ncase 'FITMENT_YEAR':\ncurrentYear = Number(event.target.options[event.target.selectedIndex]?.dataset['index'])\nyearSelector.title = years[currentYear]\nshowFitments()\nbreak\ndefault:\nconsole.error('ERROR')\n}\n})\n\u003c\/script\u003e\n","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854937370670,"sku":"010-818-04K","price":129.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-piston-kit-025mm-over-sea-doo-010-818-04kdriven-powersports-inc010-818-04k865369043958-484620.jpg?v=1738718701"},{"product_id":"wsm-clamp-oetiker-012-0mm-14-5mm-qty10-13-162-36-13-162-36","title":"WSM Oetiker Clamp","description":"Oetiker Clamp","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854937436206,"sku":"13-162-36","price":30.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-clamp-oetiker-0120mm-145mm-qty10-13-162-36driven-powersports-inc13-162-36865369032990-601229.jpg?v=1738718701"},{"product_id":"wsm-cdi-box-580-720-seadoo-004-220-01-004-220-01","title":"WSM CDI Box","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854937600046,"sku":"004-220-01","price":305.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-cdi-box-004-220-01driven-powersports-inc004-220-01865369181131-491921.jpg?v=1738718701"},{"product_id":"wsm-throttle-body-1503-seadoo-006-105-006-105","title":"WSM Electronic Throttle Body Kit","description":"Replacement part","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854938058798,"sku":"006-105","price":413.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-electronic-throttle-body-kit-006-105driven-powersports-inc006-105865369106912-675125.jpg?v=1738718701"},{"product_id":"wsm-throttle-cable-seadoo-951-002-036-07-002-036-07","title":"WSM Throttle Cable","description":"Throttle Cable","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854938681390,"sku":"002-036-07","price":188.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-throttle-cable-002-036-07driven-powersports-inc002-036-07865369000296-560078.jpg?v=1738718700"},{"product_id":"wsm-clamp-oetiker-011-3mm-13-8mm-qty10-13-162-34-13-162-34","title":"WSM Oetiker Clamp","description":"Oetiker Clamp","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854939041838,"sku":"13-162-34","price":34.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-clamp-oetiker-0113mm-138mm-qty10-13-162-34driven-powersports-inc13-162-34865369033065-625346.jpg?v=1738718700"},{"product_id":"wsm-throttle-cable-seadoo-800-gsx-002-039-04-002-039-04","title":"WSM Throttle Cable","description":"Throttle Cable","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854939271214,"sku":"002-039-04","price":84.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-throttle-cable-002-039-04driven-powersports-inc002-039-04865369000395-726214.jpg?v=1738718700"},{"product_id":"wsm-plier-clamp-oetiker-990-115-990-115","title":"WSM Plier Oetiker Clamp","description":"Plier Oetiker Clamp","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854939369518,"sku":"990-115","price":59.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-plier-clamp-oetiker-990-115driven-powersports-inc990-115865369187300-302731.jpg?v=1738718699"},{"product_id":"wsm-clamp-oetiker-014-5mm-017-0mm-qty10-13-162-44-13-162-44","title":"WSM Oetiker Clamp","description":"Oetiker Clamp","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854939566126,"sku":"13-162-44","price":26.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-clamp-oetiker-0145mm-0170mm-qty10-13-162-44driven-powersports-inc13-162-44865369287253-428390.jpg?v=1738718699"},{"product_id":"wsm-reverse-cable-seadoo-002-047-002-047","title":"WSM Reverse Cable","description":"\u003cul\u003e\n\u003cli\u003e100 percentage new and made with the highest quality components\u003c\/li\u003e \u003cli\u003eComputer tested for consistent quality and unsurpassed reliability\u003c\/li\u003e \u003cli\u003eMeets or exceeds original specifications\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854940581934,"sku":"002-047","price":197.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-reverse-cable-002-047driven-powersports-inc002-047865369000760-300739.jpg?v=1738718698"},{"product_id":"wsm-steering-cable-kawa-1500-ult-002-040-05-002-040-05","title":"WSM Steering Cable Kawa 1500 ULT (002-040-05)","description":"WSM STEERING CABLE KAWA 1500 ULT (002-040-05)\n\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\njustify-content: center;\nalign-items: center;\nmax-width: 100%;\n\"\u003e\n\u003ch3\u003eFitment Lookup\u003c\/h3\u003e\n\u003cform id=\"FITMENT_FORM\" style=\"\ndisplay: flex;\nflex-wrap: wrap;\njustify-content: center;\nmax-width: 80%;\nwidth: 80%;\nmin-width: 8rem;\nmax-width: 24rem;\n\"\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_BRAND\" style=\"padding-bottom: 0.25rem\"\u003eBRAND\u003c\/label\u003e\n\u003cselect id=\"FITMENT_BRAND\" style=\"white-space: nowrap; text-overflow: ellipsis\"\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT BRAND\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_MODEL\" style=\"padding-bottom: 0.25rem\"\u003eMODEL\u003c\/label\u003e\n\u003cselect id=\"FITMENT_MODEL\" style=\"white-space: nowrap; text-overflow: ellipsis\" disabled\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT MODEL\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_YEAR\" style=\"padding-bottom: 0.25rem\"\u003eYEAR\u003c\/label\u003e\n\u003cselect id=\"FITMENT_YEAR\" style=\"white-space: nowrap; text-overflow: ellipsis\" disabled\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT YEAR\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003c\/form\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\nmargin: 0.5rem;\n\"\u003e\n\u003ch4\u003eFitments:\u003c\/h4\u003e\n\u003ctable id=\"FITMENT_TABLE\"\u003e\u003c\/table\u003e\n\u003cdiv id=\"FITMENT_NOTES\" style=\"\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\nmargin-top: 0.5rem;\n\"\u003e\n\u003cspan id=\"FITMENT_MESSAGE\" style=\"margin-top: 0.5rem; margin-bottom: 0.5rem\"\u003eSelect Brand, Model, and Year To Check Fitment For Current\nProduct\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003chr style=\"\nborder-top: 3px solid #ddd;\nwidth: 100%;\nmax-width: 32rem;\nmargin-top: 0.5rem;\nmargin-bottom: 0.5rem;\n\"\u003e\n\u003cspan style=\"\nmax-width: 32rem;\nfont-style: italic;\nfont-weight: 100;\npadding: 1rem;\n\"\u003e\u003cb\u003eDisclaimer:\u003c\/b\u003e Fitment information is based on third-party data and\nmay not be accurate. Other fitments may be available but are not shown\ndue to limited data. Verify with your vehicle's manufacturer or a\nprofessional before making any changes. We are not responsible for\nerrors or actions taken based on this information.\n\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\nconst fitments = [{\"m\":\"Ultra 250X 1500\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"002-040-05|\"]},\"2\":{\"-1\":[\"002-040-05|\"]}}},{\"m\":\"Ultra 260LX 1500\",\"b\":0,\"y\":{\"1\":{\"-1\":[\"002-040-05|\"]}}},{\"m\":\"Ultra 260X 1500\",\"b\":0,\"y\":{\"1\":{\"-1\":[\"002-040-05|\"]}}},{\"m\":\"Ultra LX 1500\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"002-040-05|\"]},\"1\":{\"-1\":[\"002-040-05|\"]},\"2\":{\"-1\":[\"002-040-05|\"]}}}]\nconst brands = [\"KAWASAKI\"]\nconst notes = []\nconst years = [2007,2009,2008]\nconst options = []\nconst brandSelector = document.getElementById('FITMENT_BRAND')\nconst modelSelector = document.getElementById('FITMENT_MODEL')\nconst yearSelector = document.getElementById('FITMENT_YEAR')\nconst form = document.getElementById('FITMENT_FORM')\nconst table = document.getElementById('FITMENT_TABLE')\nconst notesDiv = document.getElementById('FITMENT_NOTES')\nconst _sBrands = [...brands].sort((a, b) =\u003e (a \u003e b ? 1 : a \u003c b ? -1 : 0))\nconst _sModels = []\nconst _sYears = [...years].sort()\nfitments.forEach((fitment, index) =\u003e {\nif (!_sModels.includes(fitment.m)) {\n_sModels.push(fitment.m)\nconst option = document.createElement('option')\noption.innerHTML = fitment.m\noption.value = fitment.m\noption.title = fitment.m\noption.hidden = true\nmodelSelector.appendChild(option)\n}\n})\n_sBrands.forEach((brand) =\u003e {\nconst option = document.createElement('option')\noption.innerHTML = brand\noption.value = brand\noption.title = brand\nconst foundIndex = brands.findIndex((_brand) =\u003e brand === _brand)\noption.dataset['index'] = foundIndex\nbrandSelector.appendChild(option)\n})\n_sYears.forEach((year) =\u003e {\nconst option = document.createElement('option')\noption.innerHTML = year\noption.value = year\noption.hidden = true\noption.title = year\nconst foundIndex = years.findIndex((_year) =\u003e year === _year)\noption.dataset['index'] = foundIndex\nyearSelector.appendChild(option)\n})\n_sBrands.splice(0, _sBrands.length)\n_sModels.splice(0, _sModels.length)\n_sYears.splice(0, _sYears.length)\n\nlet currentBrand\nlet currentModel\nlet currentYear\n\nconst resetState = (state) =\u003e {\nif (state === 'all') {\nmodelSelector.value = 'default'\nmodelSelector.disabled = false\ncurrentModel = undefined\n}\nyearSelector.value = 'default'\nyearSelector.disabled = true\ncurrentYear = undefined\ncleanMessages()\ncreateMessage('Select Brand, Model, and Year To Find Fitment For Product')\ncleanFitmentTable()\n}\n\nconst updateModels = () =\u003e {\nconst newFitmentLookup = fitments.filter((fitment) =\u003e {\nreturn fitment.b === currentBrand\n})\nmodelSelector.querySelectorAll('option')?.forEach((option, index) =\u003e {\nif (index === 0 || option.innerHTML.trim() === 'SELECT MODEL') return\noption.remove()\n})\nnewFitmentLookup.forEach((fitment) =\u003e {\nconst option = document.createElement('option')\noption.style.wordBreak = ''\noption.innerHTML = fitment.m\noption.value = fitment.m\noption.title = fitment.m\nmodelSelector.appendChild(option)\n})\nresetState('all')\n}\n\nconst updateYears = () =\u003e {\nconst newFitment = fitments.find((fitment) =\u003e {\nreturn fitment.b === currentBrand \u0026\u0026 fitment.m === currentModel\n})\n\nyearSelector.querySelectorAll('option')?.forEach((option) =\u003e {\nconst foundYear = newFitment.y[option.dataset['index']]\nif (foundYear) {\noption.hidden = false\n} else {\noption.hidden = true\n}\n})\nresetState()\nyearSelector.disabled = false\n}\n\nconst createMessage = (text, note) =\u003e {\nconst span = document.createElement('span')\nspan.innerHTML = text\nspan.style.marginTop = '0.5rem'\nspan.style.marginBottom = '0.5rem'\nif (note) {\nspan.style.fontWeight = 'bold'\nspan.style.fontStyle = 'italic'\n}\nnotesDiv.appendChild(span)\n}\n\nconst cleanMessages = () =\u003e {\nconst messages = notesDiv.querySelectorAll('span')\nmessages.forEach((message) =\u003e message.remove())\n}\n\nconst cleanFitmentTable = () =\u003e {\nconst rows = table.querySelectorAll('tr')\nrows.forEach((row) =\u003e row.remove())\n}\n\nconst createFitmentHeaders = () =\u003e {\nconst row = document.createElement('tr')\ntable.appendChild(row)\nconst tableHeader = document.createElement('th')\ntableHeader.innerHTML = 'SKU | OPTION(s)'\nrow.appendChild(tableHeader)\n}\n\nconst createFitmentRow = (text) =\u003e {\nconst row = document.createElement('tr')\ntable.appendChild(row)\nconst tableHeader = document.createElement('td')\ntableHeader.innerHTML = text\nrow.appendChild(tableHeader)\n}\n\nconst showFitments = () =\u003e {\nconst fitment = fitments.find((fitment) =\u003e fitment.b === currentBrand \u0026\u0026 fitment.m === currentModel)?.y?.[currentYear]\ncleanFitmentTable()\n\nif (!fitment) {\ncleanMessages()\ncreateMessage('No Fitments Found For This Current Product')\nreturn\n}\ncleanMessages()\ncreateFitmentHeaders()\nconst currentNotes = []\nconst currentFitments = []\nfor (noteKey in fitment) {\nconst note = notes[noteKey]\nlet notePosition\nif (note) notePosition = currentNotes.push(note)\n\nfitment[noteKey]\n.sort((a, b) =\u003e (a \u003e b ? 1 : a \u003c b ? -1 : 0))\n.forEach((sku) =\u003e {\nconst manufacturerSKU = sku.split('|')[0]\nconst optionString = options?.[sku.split('|')?.[1]]\nconst text = notePosition\n? `${manufacturerSKU}${'*'.repeat(notePosition)}${optionString ? ` | ${optionString}` : ''}`\n: `${manufacturerSKU}${optionString ? ` | ${optionString}` : ''}`\ncreateFitmentRow(text)\n})\n}\ncurrentNotes.forEach((note, index) =\u003e {\ncreateMessage(`${'*'.repeat(index + 1)} ${note}`, true)\n})\n}\n\nform.addEventListener('change', (event) =\u003e {\nswitch (event.target.id) {\ncase 'FITMENT_BRAND':\ncurrentBrand = Number(event.target.options[event.target.selectedIndex]?.dataset['index'])\nbrandSelector.title = brands[currentBrand]\nupdateModels()\nbreak\ncase 'FITMENT_MODEL':\ncurrentModel = event.target.value\nmodelSelector.title = event.target.value\nupdateYears()\nbreak\ncase 'FITMENT_YEAR':\ncurrentYear = Number(event.target.options[event.target.selectedIndex]?.dataset['index'])\nyearSelector.title = years[currentYear]\nshowFitments()\nbreak\ndefault:\nconsole.error('ERROR')\n}\n})\n\u003c\/script\u003e\n","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854942154798,"sku":"002-040-05","price":199.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-steering-cable-kawa-1500-ult-002-040-05driven-powersports-inc002-040-05865369000463-920393.jpg?v=1738718581"},{"product_id":"wsm-throttle-cable-seadoo-580-800-002-039-03-002-039-03","title":"WSM Throttle Cable","description":"Throttle Cable","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854942187566,"sku":"002-039-03","price":89.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-throttle-cable-002-039-03driven-powersports-inc002-039-03865369000388-308409.jpg?v=1738718581"},{"product_id":"wsm-steering-cable-kawa-750-900-002-042-02-002-042-02","title":"WSM Steering Cable Kawa 750\/900 (002-042-02)","description":"WSM STEERING CABLE KAWA 750\/900 (002-042-02)\n\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\njustify-content: center;\nalign-items: center;\nmax-width: 100%;\n\"\u003e\n\u003ch3\u003eFitment Lookup\u003c\/h3\u003e\n\u003cform id=\"FITMENT_FORM\" style=\"\ndisplay: flex;\nflex-wrap: wrap;\njustify-content: center;\nmax-width: 80%;\nwidth: 80%;\nmin-width: 8rem;\nmax-width: 24rem;\n\"\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_BRAND\" style=\"padding-bottom: 0.25rem\"\u003eBRAND\u003c\/label\u003e\n\u003cselect id=\"FITMENT_BRAND\" style=\"white-space: nowrap; text-overflow: ellipsis\"\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT BRAND\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_MODEL\" style=\"padding-bottom: 0.25rem\"\u003eMODEL\u003c\/label\u003e\n\u003cselect id=\"FITMENT_MODEL\" style=\"white-space: nowrap; text-overflow: ellipsis\" disabled\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT MODEL\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_YEAR\" style=\"padding-bottom: 0.25rem\"\u003eYEAR\u003c\/label\u003e\n\u003cselect id=\"FITMENT_YEAR\" style=\"white-space: nowrap; text-overflow: ellipsis\" disabled\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT YEAR\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003c\/form\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\nmargin: 0.5rem;\n\"\u003e\n\u003ch4\u003eFitments:\u003c\/h4\u003e\n\u003ctable id=\"FITMENT_TABLE\"\u003e\u003c\/table\u003e\n\u003cdiv id=\"FITMENT_NOTES\" style=\"\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\nmargin-top: 0.5rem;\n\"\u003e\n\u003cspan id=\"FITMENT_MESSAGE\" style=\"margin-top: 0.5rem; margin-bottom: 0.5rem\"\u003eSelect Brand, Model, and Year To Check Fitment For Current\nProduct\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003chr style=\"\nborder-top: 3px solid #ddd;\nwidth: 100%;\nmax-width: 32rem;\nmargin-top: 0.5rem;\nmargin-bottom: 0.5rem;\n\"\u003e\n\u003cspan style=\"\nmax-width: 32rem;\nfont-style: italic;\nfont-weight: 100;\npadding: 1rem;\n\"\u003e\u003cb\u003eDisclaimer:\u003c\/b\u003e Fitment information is based on third-party data and\nmay not be accurate. Other fitments may be available but are not shown\ndue to limited data. Verify with your vehicle's manufacturer or a\nprofessional before making any changes. We are not responsible for\nerrors or actions taken based on this information.\n\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\nconst fitments = [{\"m\":\"ZXi 750\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"002-042-02|\"]},\"1\":{\"-1\":[\"002-042-02|\"]},\"2\":{\"-1\":[\"002-042-02|\"]}}},{\"m\":\"ZXi 900\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"002-042-02|\"]},\"1\":{\"-1\":[\"002-042-02|\"]},\"2\":{\"-1\":[\"002-042-02|\"]}}}]\nconst brands = [\"KAWASAKI\"]\nconst notes = []\nconst years = [1995,1996,1997]\nconst options = []\nconst brandSelector = document.getElementById('FITMENT_BRAND')\nconst modelSelector = document.getElementById('FITMENT_MODEL')\nconst yearSelector = document.getElementById('FITMENT_YEAR')\nconst form = document.getElementById('FITMENT_FORM')\nconst table = document.getElementById('FITMENT_TABLE')\nconst notesDiv = document.getElementById('FITMENT_NOTES')\nconst _sBrands = [...brands].sort((a, b) =\u003e (a \u003e b ? 1 : a \u003c b ? -1 : 0))\nconst _sModels = []\nconst _sYears = [...years].sort()\nfitments.forEach((fitment, index) =\u003e {\nif (!_sModels.includes(fitment.m)) {\n_sModels.push(fitment.m)\nconst option = document.createElement('option')\noption.innerHTML = fitment.m\noption.value = fitment.m\noption.title = fitment.m\noption.hidden = true\nmodelSelector.appendChild(option)\n}\n})\n_sBrands.forEach((brand) =\u003e {\nconst option = document.createElement('option')\noption.innerHTML = brand\noption.value = brand\noption.title = brand\nconst foundIndex = brands.findIndex((_brand) =\u003e brand === _brand)\noption.dataset['index'] = foundIndex\nbrandSelector.appendChild(option)\n})\n_sYears.forEach((year) =\u003e {\nconst option = document.createElement('option')\noption.innerHTML = year\noption.value = year\noption.hidden = true\noption.title = year\nconst foundIndex = years.findIndex((_year) =\u003e year === _year)\noption.dataset['index'] = foundIndex\nyearSelector.appendChild(option)\n})\n_sBrands.splice(0, _sBrands.length)\n_sModels.splice(0, _sModels.length)\n_sYears.splice(0, _sYears.length)\n\nlet currentBrand\nlet currentModel\nlet currentYear\n\nconst resetState = (state) =\u003e {\nif (state === 'all') {\nmodelSelector.value = 'default'\nmodelSelector.disabled = false\ncurrentModel = undefined\n}\nyearSelector.value = 'default'\nyearSelector.disabled = true\ncurrentYear = undefined\ncleanMessages()\ncreateMessage('Select Brand, Model, and Year To Find Fitment For Product')\ncleanFitmentTable()\n}\n\nconst updateModels = () =\u003e {\nconst newFitmentLookup = fitments.filter((fitment) =\u003e {\nreturn fitment.b === currentBrand\n})\nmodelSelector.querySelectorAll('option')?.forEach((option, index) =\u003e {\nif (index === 0 || option.innerHTML.trim() === 'SELECT MODEL') return\noption.remove()\n})\nnewFitmentLookup.forEach((fitment) =\u003e {\nconst option = document.createElement('option')\noption.style.wordBreak = ''\noption.innerHTML = fitment.m\noption.value = fitment.m\noption.title = fitment.m\nmodelSelector.appendChild(option)\n})\nresetState('all')\n}\n\nconst updateYears = () =\u003e {\nconst newFitment = fitments.find((fitment) =\u003e {\nreturn fitment.b === currentBrand \u0026\u0026 fitment.m === currentModel\n})\n\nyearSelector.querySelectorAll('option')?.forEach((option) =\u003e {\nconst foundYear = newFitment.y[option.dataset['index']]\nif (foundYear) {\noption.hidden = false\n} else {\noption.hidden = true\n}\n})\nresetState()\nyearSelector.disabled = false\n}\n\nconst createMessage = (text, note) =\u003e {\nconst span = document.createElement('span')\nspan.innerHTML = text\nspan.style.marginTop = '0.5rem'\nspan.style.marginBottom = '0.5rem'\nif (note) {\nspan.style.fontWeight = 'bold'\nspan.style.fontStyle = 'italic'\n}\nnotesDiv.appendChild(span)\n}\n\nconst cleanMessages = () =\u003e {\nconst messages = notesDiv.querySelectorAll('span')\nmessages.forEach((message) =\u003e message.remove())\n}\n\nconst cleanFitmentTable = () =\u003e {\nconst rows = table.querySelectorAll('tr')\nrows.forEach((row) =\u003e row.remove())\n}\n\nconst createFitmentHeaders = () =\u003e {\nconst row = document.createElement('tr')\ntable.appendChild(row)\nconst tableHeader = document.createElement('th')\ntableHeader.innerHTML = 'SKU | OPTION(s)'\nrow.appendChild(tableHeader)\n}\n\nconst createFitmentRow = (text) =\u003e {\nconst row = document.createElement('tr')\ntable.appendChild(row)\nconst tableHeader = document.createElement('td')\ntableHeader.innerHTML = text\nrow.appendChild(tableHeader)\n}\n\nconst showFitments = () =\u003e {\nconst fitment = fitments.find((fitment) =\u003e fitment.b === currentBrand \u0026\u0026 fitment.m === currentModel)?.y?.[currentYear]\ncleanFitmentTable()\n\nif (!fitment) {\ncleanMessages()\ncreateMessage('No Fitments Found For This Current Product')\nreturn\n}\ncleanMessages()\ncreateFitmentHeaders()\nconst currentNotes = []\nconst currentFitments = []\nfor (noteKey in fitment) {\nconst note = notes[noteKey]\nlet notePosition\nif (note) notePosition = currentNotes.push(note)\n\nfitment[noteKey]\n.sort((a, b) =\u003e (a \u003e b ? 1 : a \u003c b ? -1 : 0))\n.forEach((sku) =\u003e {\nconst manufacturerSKU = sku.split('|')[0]\nconst optionString = options?.[sku.split('|')?.[1]]\nconst text = notePosition\n? `${manufacturerSKU}${'*'.repeat(notePosition)}${optionString ? ` | ${optionString}` : ''}`\n: `${manufacturerSKU}${optionString ? ` | ${optionString}` : ''}`\ncreateFitmentRow(text)\n})\n}\ncurrentNotes.forEach((note, index) =\u003e {\ncreateMessage(`${'*'.repeat(index + 1)} ${note}`, true)\n})\n}\n\nform.addEventListener('change', (event) =\u003e {\nswitch (event.target.id) {\ncase 'FITMENT_BRAND':\ncurrentBrand = Number(event.target.options[event.target.selectedIndex]?.dataset['index'])\nbrandSelector.title = brands[currentBrand]\nupdateModels()\nbreak\ncase 'FITMENT_MODEL':\ncurrentModel = event.target.value\nmodelSelector.title = event.target.value\nupdateYears()\nbreak\ncase 'FITMENT_YEAR':\ncurrentYear = Number(event.target.options[event.target.selectedIndex]?.dataset['index'])\nyearSelector.title = years[currentYear]\nshowFitments()\nbreak\ndefault:\nconsole.error('ERROR')\n}\n})\n\u003c\/script\u003e\n","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854942384174,"sku":"002-042-02","price":64.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-steering-cable-kawa-750900-002-042-02driven-powersports-inc002-042-02865369000555-713036.jpg?v=1738718581"},{"product_id":"wsm-steering-cable-seadoo-002-046-05-002-046-05","title":"WSM Steering Cable","description":"\u003cul\u003e\n\u003cli\u003eDesigned for smooth operation\u003c\/li\u003e \u003cli\u003eEconomically priced replacement cables\u003c\/li\u003e \u003cli\u003eAll stainless steel fittings\u003c\/li\u003e \u003cli\u003eCables feature inner vinyl linings\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854942679086,"sku":"002-046-05","price":260.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-steering-cable-002-046-05driven-powersports-inc002-046-05865369000739-148092.jpg?v=1738718580"},{"product_id":"wsm-steering-cable-seadoo-580-800-002-048-01-002-048-01","title":"WSM Steering Cable","description":"\u003cul\u003e\n\u003cli\u003eDesigned for smooth operation\u003c\/li\u003e \u003cli\u003eEconomically priced replacement cables\u003c\/li\u003e \u003cli\u003eAll stainless steel fittings\u003c\/li\u003e \u003cli\u003eCables feature inner vinyl linings\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854942973998,"sku":"002-048-01","price":166.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-steering-cable-002-048-01driven-powersports-inc002-048-01865369000821-105322.jpg?v=1738718579"},{"product_id":"wsm-throttle-cable-yam-1000-fx-002-055-10-002-055-10","title":"WSM Throttle Cable","description":"Throttle Cable","brand":"WSM","offers":[{"title":"Default Title","offer_id":40854944186414,"sku":"002-055-10","price":50.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-throttle-cable-002-055-10driven-powersports-inc002-055-10865369001248-748764.jpg?v=1738718578"},{"product_id":"wsm-reverse-cable-yam-1200-suv-002-058-18-002-058-18","title":"WSM Reverse Cable YAM 1200 SUV (002-058-18)","description":"WSM REVERSE CABLE YAM 1200 SUV (002-058-18)\n\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\njustify-content: center;\nalign-items: center;\nmax-width: 100%;\n\"\u003e\n\u003ch3\u003eFitment Lookup\u003c\/h3\u003e\n\u003cform id=\"FITMENT_FORM\" style=\"\ndisplay: flex;\nflex-wrap: wrap;\njustify-content: center;\nmax-width: 80%;\nwidth: 80%;\nmin-width: 8rem;\nmax-width: 24rem;\n\"\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_BRAND\" style=\"padding-bottom: 0.25rem\"\u003eBRAND\u003c\/label\u003e\n\u003cselect id=\"FITMENT_BRAND\" style=\"white-space: nowrap; text-overflow: ellipsis\"\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT BRAND\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_MODEL\" style=\"padding-bottom: 0.25rem\"\u003eMODEL\u003c\/label\u003e\n\u003cselect id=\"FITMENT_MODEL\" style=\"white-space: nowrap; text-overflow: ellipsis\" disabled\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT MODEL\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\npadding: 1rem 0 1rem 0;\nmax-width: 100%;\nwidth: 100%;\n\"\u003e\n\u003clabel for=\"FITMENT_YEAR\" style=\"padding-bottom: 0.25rem\"\u003eYEAR\u003c\/label\u003e\n\u003cselect id=\"FITMENT_YEAR\" style=\"white-space: nowrap; text-overflow: ellipsis\" disabled\u003e\n\u003coption value=\"default\" selected disabled hidden\u003e\nSELECT YEAR\n\u003c\/option\u003e\n\u003c\/select\u003e\n\u003c\/div\u003e\n\u003c\/form\u003e\n\u003cdiv style=\"\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\nmargin: 0.5rem;\n\"\u003e\n\u003ch4\u003eFitments:\u003c\/h4\u003e\n\u003ctable id=\"FITMENT_TABLE\"\u003e\u003c\/table\u003e\n\u003cdiv id=\"FITMENT_NOTES\" style=\"\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\nmargin-top: 0.5rem;\n\"\u003e\n\u003cspan id=\"FITMENT_MESSAGE\" style=\"margin-top: 0.5rem; margin-bottom: 0.5rem\"\u003eSelect Brand, Model, and Year To Check Fitment For Current\nProduct\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003chr style=\"\nborder-top: 3px solid #ddd;\nwidth: 100%;\nmax-width: 32rem;\nmargin-top: 0.5rem;\nmargin-bottom: 0.5rem;\n\"\u003e\n\u003cspan style=\"\nmax-width: 32rem;\nfont-style: italic;\nfont-weight: 100;\npadding: 1rem;\n\"\u003e\u003cb\u003eDisclaimer:\u003c\/b\u003e Fitment information is based on third-party data and\nmay not be accurate. Other fitments may be available but are not shown\ndue to limited data. Verify with your vehicle's manufacturer or a\nprofessional before making any changes. We are not responsible for\nerrors or actions taken based on this information.\n\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\nconst fitments = [{\"m\":\"SUV 1200\",\"b\":0,\"y\":{\"0\":{\"-1\":[\"002-058-18|\"]},\"1\":{\"-1\":[\"002-058-18|\"]},\"2\":{\"-1\":[\"002-058-18|\"]},\"3\":{\"-1\":[\"002-058-18|\"]},\"4\":{\"-1\":[\"002-058-18|\"]},\"5\":{\"-1\":[\"002-058-18|\"]}}}]\nconst brands = [\"YAMAHA\"]\nconst notes = []\nconst years = [1999,2000,2003,2001,2002,2004]\nconst options = []\nconst brandSelector = document.getElementById('FITMENT_BRAND')\nconst modelSelector = document.getElementById('FITMENT_MODEL')\nconst yearSelector = document.getElementById('FITMENT_YEAR')\nconst form = document.getElementById('FITMENT_FORM')\nconst table = document.getElementById('FITMENT_TABLE')\nconst notesDiv = document.getElementById('FITMENT_NOTES')\nconst _sBrands = [...brands].sort((a, b) =\u003e (a \u003e b ? 1 : a \u003c b ? -1 : 0))\nconst _sModels = []\nconst _sYears = [...years].sort()\nfitments.forEach((fitment, index) =\u003e {\nif (!_sModels.includes(fitment.m)) {\n_sModels.push(fitment.m)\nconst option = document.createElement('option')\noption.innerHTML = fitment.m\noption.value = fitment.m\noption.title = fitment.m\noption.hidden = true\nmodelSelector.appendChild(option)\n}\n})\n_sBrands.forEach((brand) =\u003e {\nconst option = document.createElement('option')\noption.innerHTML = brand\noption.value = brand\noption.title = brand\nconst foundIndex = brands.findIndex((_brand) =\u003e brand === _brand)\noption.dataset['index'] = foundIndex\nbrandSelector.appendChild(option)\n})\n_sYears.forEach((year) =\u003e {\nconst option = document.createElement('option')\noption.innerHTML = year\noption.value = year\noption.hidden = true\noption.title = year\nconst foundIndex = years.findIndex((_year) =\u003e year === _year)\noption.dataset['index'] = foundIndex\nyearSelector.appendChild(option)\n})\n_sBrands.splice(0, _sBrands.length)\n_sModels.splice(0, _sModels.length)\n_sYears.splice(0, _sYears.length)\n\nlet currentBrand\nlet currentModel\nlet currentYear\n\nconst resetState = (state) =\u003e {\nif (state === 'all') {\nmodelSelector.value = 'default'\nmodelSelector.disabled = false\ncurrentModel = undefined\n}\nyearSelector.value = 'default'\nyearSelector.disabled = true\ncurrentYear = undefined\ncleanMessages()\ncreateMessage('Select Brand, Model, and Year To Find Fitment For Product')\ncleanFitmentTable()\n}\n\nconst updateModels = () =\u003e {\nconst newFitmentLookup = fitments.filter((fitment) =\u003e {\nreturn fitment.b === currentBrand\n})\nmodelSelector.querySelectorAll('option')?.forEach((option, index) =\u003e {\nif (index === 0 || option.innerHTML.trim() === 'SELECT MODEL') return\noption.remove()\n})\nnewFitmentLookup.forEach((fitment) =\u003e {\nconst option = document.createElement('option')\noption.style.wordBreak = ''\noption.innerHTML = fitment.m\noption.value = fitment.m\noption.title = fitment.m\nmodelSelector.appendChild(option)\n})\nresetState('all')\n}\n\nconst updateYears = () =\u003e {\nconst newFitment = fitments.find((fitment) =\u003e {\nreturn fitment.b === currentBrand \u0026\u0026 fitment.m === currentModel\n})\n\nyearSelector.querySelectorAll('option')?.forEach((option) =\u003e {\nconst foundYear = newFitment.y[option.dataset['index']]\nif (foundYear) {\noption.hidden = false\n} else {\noption.hidden = true\n}\n})\nresetState()\nyearSelector.disabled = false\n}\n\nconst createMessage = (text, note) =\u003e {\nconst span = document.createElement('span')\nspan.innerHTML = text\nspan.style.marginTop = '0.5rem'\nspan.style.marginBottom = '0.5rem'\nif (note) {\nspan.style.fontWeight = 'bold'\nspan.style.fontStyle = 'italic'\n}\nnotesDiv.appendChild(span)\n}\n\nconst cleanMessages = () =\u003e {\nconst messages = notesDiv.querySelectorAll('span')\nmessages.forEach((message) =\u003e message.remove())\n}\n\nconst cleanFitmentTable = () =\u003e {\nconst rows = table.querySelectorAll('tr')\nrows.forEach((row) =\u003e row.remove())\n}\n\nconst createFitmentHeaders = () =\u003e {\nconst row = document.createElement('tr')\ntable.appendChild(row)\nconst tableHeader = document.createElement('th')\ntableHeader.innerHTML = 'SKU | OPTION(s)'\nrow.appendChild(tableHeader)\n}\n\nconst createFitmentRow = (text) =\u003e {\nconst row = document.createElement('tr')\ntable.appendChild(row)\nconst tableHeader = document.createElement('td')\ntableHeader.innerHTML = text\nrow.appendChild(tableHeader)\n}\n\nconst showFitments = () =\u003e {\nconst fitment = fitments.find((fitment) =\u003e fitment.b === currentBrand \u0026\u0026 fitment.m === currentModel)?.y?.[currentYear]\ncleanFitmentTable()\n\nif (!fitment) {\ncleanMessages()\ncreateMessage('No Fitments Found For This Current Product')\nreturn\n}\ncleanMessages()\ncreateFitmentHeaders()\nconst currentNotes = []\nconst currentFitments = []\nfor (noteKey in fitment) {\nconst note = notes[noteKey]\nlet notePosition\nif (note) notePosition = currentNotes.push(note)\n\nfitment[noteKey]\n.sort((a, b) =\u003e (a \u003e b ? 1 : a \u003c b ? -1 : 0))\n.forEach((sku) =\u003e {\nconst manufacturerSKU = sku.split('|')[0]\nconst optionString = options?.[sku.split('|')?.[1]]\nconst text = notePosition\n? `${manufacturerSKU}${'*'.repeat(notePosition)}${optionString ? ` | ${optionString}` : ''}`\n: `${manufacturerSKU}${optionString ? ` | ${optionString}` : ''}`\ncreateFitmentRow(text)\n})\n}\ncurrentNotes.forEach((note, index) =\u003e {\ncreateMessage(`${'*'.repeat(index + 1)} ${note}`, true)\n})\n}\n\nform.addEventListener('change', (event) =\u003e {\nswitch (event.target.id) {\ncase 'FITMENT_BRAND':\ncurrentBrand = Number(event.target.options[event.target.selectedIndex]?.dataset['index'])\nbrandSelector.title = brands[currentBrand]\nupdateModels()\nbreak\ncase 'FITMENT_MODEL':\ncurrentModel = event.target.value\nmodelSelector.title = event.target.value\nupdateYears()\nbreak\ncase 'FITMENT_YEAR':\ncurrentYear = Number(event.target.options[event.target.selectedIndex]?.dataset['index'])\nyearSelector.title = years[currentYear]\nshowFitments()\nbreak\ndefault:\nconsole.error('ERROR')\n}\n})\n\u003c\/script\u003e\n","brand":"WSM","offers":[{"title":"Default Title","offer_id":40856544542766,"sku":"002-058-18","price":179.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-reverse-cable-yam-1200-suv-002-058-18driven-powersports-inc002-058-18865369087020-616810.jpg?v=1738718577"},{"product_id":"wsm-steering-cable-yam-002-058-17-002-058-17","title":"WSM Steering Cable","description":"\u003cul\u003e\n\u003cli\u003eDesigned for smooth operation\u003c\/li\u003e \u003cli\u003eEconomically priced replacement cables\u003c\/li\u003e \u003cli\u003eAll stainless steel fittings\u003c\/li\u003e \u003cli\u003eCables feature inner vinyl linings\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"WSM","offers":[{"title":"Default Title","offer_id":40856544673838,"sku":"002-058-17","price":233.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-steering-cable-002-058-17driven-powersports-inc002-058-17865369001477-745903.jpg?v=1738718577"},{"product_id":"wsm-throttle-cable-rg-seadoo-720-002-250r-002-250r","title":"WSM Throttle Cable","description":"Throttle Cable","brand":"WSM","offers":[{"title":"Default Title","offer_id":40856545329198,"sku":"002-250R","price":89.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-throttle-cable-002-250rdriven-powersports-inc002-250r865369292028-486913.jpg?v=1738718559"},{"product_id":"wsm-throttle-cable-lt-seadoo-720-002-250l-002-250l","title":"WSM Throttle Cable","description":"Throttle Cable","brand":"WSM","offers":[{"title":"Default Title","offer_id":40856545361966,"sku":"002-250L","price":97.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-throttle-cable-002-250ldriven-powersports-inc002-250l865369292011-171153.jpg?v=1738718560"},{"product_id":"wsm-steering-cable-seadoo-002-235-002-235","title":"WSM Steering Cable","description":"\u003cul\u003e\n\u003cli\u003eDesigned for smooth operation\u003c\/li\u003e \u003cli\u003eEconomically priced replacement cables\u003c\/li\u003e \u003cli\u003eAll stainless steel fittings\u003c\/li\u003e \u003cli\u003eCables feature inner vinyl linings\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"WSM","offers":[{"title":"Default Title","offer_id":40856545591342,"sku":"002-235","price":269.99,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0251\/9659\/3198\/files\/wsm-steering-cable-seadoo-002-235driven-powersports-inc002-235865369144433-233081.jpg?v=1738718559"}],"url":"https:\/\/www.drivenpowersports.ca\/collections\/wsm-watercraft-and-engine-parts.oembed?page=9","provider":"Driven Powersports Inc.","version":"1.0","type":"link"}