Skyliner Buildings · Carports · Garages · RV Covers · Shops

Build your metal building
in about 2 minutes.

Answer a few quick questions. We read each one aloud, show you a real ballpark price as you go, and hand you a 3D view of your building at the end.

Free delivery and installation in our service areas. Your final quote is reviewed by Skyliner before any order.

Text Jeremy'; } function downloadEstimate(){ var s=state; var blob=new Blob([buildEstimateHTML(s)],{type:'text/html'}); var a=document.createElement('a'); a.href=URL.createObjectURL(blob); a.download='Skyliner_Estimate_'+s.width+'x'+s.length+'x'+s.legs+'.html'; document.body.appendChild(a); a.click(); document.body.removeChild(a); } /* ===================== SITE PLAN CHECKLIST ===================== */ var SITE_STD=['Draw the whole property to proportion, showing every existing and proposed structure and septic system.', 'Label each structure "Existing" or "Proposed", and note what it is used for.', 'Show the distance from proposed structures to the property lines, and to existing structures.', 'List the size of every building, deck, patio, outbuilding, driveway, and access road.', 'Mark major features: canals, irrigation ditches, rim rock ledges, and the like.', 'Mark utilities and easements: power lines and poles, canals, and other easements.', 'Dimension all property lines.', 'Show wells and water sources on the property.', 'Add a North arrow.', 'Name and locate every street or road next to the property.']; var SITE_COMM=['The drawing must be to scale.', 'Label existing and proposed structures with their specific commercial use.']; function siteHTMLInner(){ return '

Every site plan needs

'+ '

For commercial buildings, also

'+ '

You may make more than one (a site evaluation plan looks a little different from the onsite permit plan). Your county planning desk can confirm the exact details - Skyliner can help you nail down the building dimensions.

'; } function downloadSite(){ var html='Site Plan Checklist'+ ''+ '

Site Plan Checklist

What to include when you draw your site plan for a permit.

'+ '

Every site plan needs

'+ '

For commercial buildings, also

'+ '

You may need more than one site plan through the project. Your county planning desk confirms exact requirements. '+ 'Questions on the building itself? Call Skyliner at '+PHONE+'.

'; var blob=new Blob([html],{type:'text/html'}); var a=document.createElement('a'); a.href=URL.createObjectURL(blob); a.download='Skyliner_Site_Plan_Checklist.html'; document.body.appendChild(a); a.click(); document.body.removeChild(a); } /* ===================== LEAD SUBMIT ===================== */ function submitLead(){ var data={ name:$('lf-name').value.trim(), phone:$('lf-phone').value.trim(), email:$('lf-email').value.trim(), zip:$('lf-zip').value.trim(), notes:$('lf-notes').value.trim(), build:JSON.stringify(state), estimate:estimateText(state), estimate_html:buildEstimateHTML(state), link3d:makeDesignerURL(state) }; if(!data.name || !data.phone){ toast('Add your name and phone first'); return; } var fd=new FormData(); for(var k in data){ if(data.hasOwnProperty(k)) fd.append(k,data[k]); } try{ fetch(LEADURL,{method:'POST',body:fd}).catch(function(){}); }catch(e){} showResult(); } /* ===================== TOAST ===================== */ var toastEl=null; function toast(msg){ if(!toastEl){ toastEl=document.createElement('div'); toastEl.className='sk-toast'; root.appendChild(toastEl); } toastEl.textContent=msg; toastEl.classList.add('sk-show'); clearTimeout(toastEl._t); toastEl._t=setTimeout(function(){ toastEl.classList.remove('sk-show'); },2200); } /* ===================== WIRING ===================== */ $('sk-start').addEventListener('click',function(){ $('sk-hero').hidden=true; $('sk-card').hidden=false; pos=0; renderStep(); window.scrollTo({top:root.offsetTop-10,behavior:'smooth'}); }); $('sk-voice-toggle').addEventListener('click',function(){ voiceOn=!voiceOn; this.setAttribute('aria-pressed',voiceOn?'true':'false'); $('sk-voice-label').textContent=voiceOn?'Voice on':'Voice off'; if(!voiceOn) stopSpeak(); }); $('sk-back').addEventListener('click',back); $('sk-replay').addEventListener('click',function(){ var list=visibleList(); if(pos