Homeowner Information
Warranty Items
Describe Each Issue
1 Item
+ Add Another Warranty Item
Scheduling Availability
To help us coordinate subcontractors and complete as many items as possible in one visit, please check the days and times that work best for you.
Day
Morning8am-12pm
Afternoon12pm-5pm
Not Available
The more availability you can provide, the faster we can schedule your repairs.
Additional Notes
Is there anything else we should know before our visit?
Acknowledgment
I confirm that all items listed above have been inspected and that the information provided is accurate. I understand that all warranty items must be submitted at one time and that Cliff Lewis Builders will schedule repairs based on trade availability.
Submit Warranty Request
✓
Your PDF Has Been Generated
Your warranty request has been saved as a PDF on your device. Follow the steps below to send it to the Cliff Lewis Builders team.
1
PDF Downloaded to Your Device
Your warranty request PDF has been automatically saved to your Downloads folder . It contains all your warranty items and photos.
2
Click the Button Below to Open Your Email
Your email will open automatically pre-addressed to the Cliff Lewis Builders team with all your warranty details already filled in the message body.
3
Attach the PDF and Hit Send
In your email click the paperclip icon to attach a file. Go to your Downloads folder , select the PDF file named above, and click Send .
📧 Open Email to Send Warranty Request
Need help? Call us at ' +
'' + id + '
Warranty Item #' + id + '
' +
(id > 1 ? 'Remove ' : '') +
'
' +
'
' +
'
Description of Issue *
' +
'
Date Issue Was First Noticed *
' +
'
Photo(s) of Issue * ' +
'
' +
' ' +
'📷 ' +
'Click to upload or drag and drop ' +
'JPG, PNG, HEIC — up to 10MB each — multiple allowed ' +
'
' +
'
' +
'
' +
'
';
container.appendChild(card);
clbUpdateBadge();
card.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
};
window.clbRemove = function(id) {
var card = document.getElementById('clb-item-' + id);
if (card) { card.style.opacity='0'; card.style.transition='all 0.2s'; setTimeout(function(){ card.remove(); delete photoData[id]; clbUpdateBadge(); }, 200); }
};
function clbUpdateBadge() {
var count = document.querySelectorAll('.clb-item').length;
document.getElementById('clbBadge').textContent = count === 1 ? '1 Item' : count + ' Items';
}
window.clbFiles = function(files, id) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
if (file.size > 10*1024*1024) { alert('"'+file.name+'" is over 10MB.'); continue; }
(function(f) {
var reader = new FileReader();
reader.onload = function(e) {
var raw = e.target.result;
toJpeg(raw, function(jpeg) {
var idx = photoData[id].length;
photoData[id].push({ raw: raw, jpeg: jpeg, name: f.name });
clbAddThumb(id, idx, raw);
});
};
reader.readAsDataURL(f);
})(file);
}
};
function clbAddThumb(id, idx, dataURL) {
var thumbs = document.getElementById('clb-thumbs-'+id);
var t = document.createElement('div');
t.className = 'clb-thumb';
t.innerHTML = '
x ';
thumbs.appendChild(t);
}
window.clbDelPhoto = function(id, idx) {
photoData[id].splice(idx,1);
var thumbs = document.getElementById('clb-thumbs-'+id);
thumbs.innerHTML = '';
photoData[id].forEach(function(p,i){ clbAddThumb(id,i,p.raw); });
};
window.clbDragOver = function(e,id){ e.preventDefault(); document.getElementById('clb-zone-'+id).style.borderColor='#C9A84C'; };
window.clbDragLeave = function(e,id){ document.getElementById('clb-zone-'+id).style.borderColor='#3D3D3D'; };
window.clbDrop = function(e,id){ e.preventDefault(); document.getElementById('clb-zone-'+id).style.borderColor='#3D3D3D'; clbFiles(e.dataTransfer.files,id); };
function clbGetAvail() {
var days=[['clb_mon','Monday'],['clb_tue','Tuesday'],['clb_wed','Wednesday'],['clb_thu','Thursday'],['clb_fri','Friday'],['clb_sat','Saturday']];
var result=[];
days.forEach(function(d){
var slots=[];
if(document.getElementById(d[0]+'_am').checked) slots.push('Morning (8am-12pm)');
if(document.getElementById(d[0]+'_pm').checked) slots.push('Afternoon (12pm-5pm)');
if(document.getElementById(d[0]+'_na').checked) slots.push('Not Available');
if(slots.length) result.push(d[1]+': '+slots.join(', '));
});
return result.length ? result : ['No specific availability selected'];
}
function clbSetProgress(pct, label) {
document.getElementById('clbProgressFill').style.width = pct+'%';
document.getElementById('clbProgressLabel').textContent = label;
}
function clbBuildPDF(data) {
var doc = new jsPDF('p','mm','a4');
var pageW=210, margin=18, cW=pageW-margin*2, y=0;
function newPage() {
doc.addPage(); y=20;
doc.setFillColor(27,42,74); doc.rect(0,0,210,12,'F');
doc.setFillColor(201,168,76); doc.rect(0,11.5,210,1,'F');
doc.setTextColor(220,220,220); doc.setFontSize(7); doc.setFont('helvetica','bold');
doc.text('CLIFF LEWIS BUILDERS — WARRANTY REQUEST — '+data.name.toUpperCase(), margin, 8);
doc.setTextColor(201,168,76);
doc.text(new Date().toLocaleDateString(), pageW-margin, 8, {align:'right'});
y=20;
}
function check(h){ if(y+h>278) newPage(); }
doc.setFillColor(27,42,74); doc.rect(0,0,210,50,'F');
doc.setFillColor(201,168,76); doc.rect(0,49,210,2,'F');
doc.setTextColor(240,240,240); doc.setFontSize(20); doc.setFont('helvetica','bold');
doc.text('CLIFF LEWIS BUILDERS',105,20,{align:'center'});
doc.setFontSize(9); doc.setTextColor(201,168,76); doc.setFont('helvetica','normal');
doc.text('WARRANTY REQUEST FORM',105,30,{align:'center'});
doc.setFontSize(8); doc.setTextColor(180,180,180);
doc.text('Submitted: '+new Date().toLocaleDateString('en-US',{year:'numeric',month:'long',day:'numeric'}),105,40,{align:'center'});
y=62;
function sHead(t){
check(12);
doc.setFillColor(27,42,74); doc.rect(margin,y,cW,9,'F');
doc.setFillColor(201,168,76); doc.rect(margin,y+8.5,cW,0.5,'F');
doc.setTextColor(240,240,240); doc.setFontSize(8.5); doc.setFont('helvetica','bold');
doc.text(t,margin+4,y+6); y+=12;
}
function fRow(label,val){
check(9);
doc.setFillColor(242,242,242); doc.rect(margin,y,52,8,'F');
doc.setFillColor(255,255,255); doc.rect(margin+52,y,cW-52,8,'F');
doc.setDrawColor(220,220,220); doc.rect(margin,y,cW,8,'S');
doc.setTextColor(80,80,80); doc.setFontSize(7); doc.setFont('helvetica','bold');
doc.text(label,margin+3,y+5.5);
doc.setTextColor(20,20,20); doc.setFontSize(8.5); doc.setFont('helvetica','normal');
doc.text(doc.splitTextToSize(val||'—',cW-56)[0],margin+55,y+5.5);
y+=8;
}
sHead('HOMEOWNER INFORMATION');
fRow('FULL NAME',data.name); fRow('ADDRESS',data.address);
fRow('COMPLETION DATE',data.completion); fRow('PHONE',data.phone); fRow('EMAIL',data.email);
y+=6;
sHead('WARRANTY ITEMS ('+data.items.length+')');
data.items.forEach(function(item,idx){
check(18);
doc.setFillColor(35,35,35); doc.rect(margin,y,cW,10,'F');
doc.setFillColor(201,168,76); doc.rect(margin,y,3,10,'F');
doc.circle(margin+10,y+5,4,'F');
doc.setTextColor(27,42,74); doc.setFontSize(7.5); doc.setFont('helvetica','bold');
doc.text(String(idx+1),margin+10,y+6.2,{align:'center'});
doc.setTextColor(240,240,240); doc.setFontSize(9);
doc.text('WARRANTY ITEM #'+(idx+1),margin+18,y+6.5);
y+=12;
check(6);
doc.setFillColor(248,248,248); doc.rect(margin,y,cW,6,'F');
doc.setDrawColor(220,220,220); doc.rect(margin,y,cW,6,'S');
doc.setTextColor(100,100,100); doc.setFontSize(6.5); doc.setFont('helvetica','bold');
doc.text('DESCRIPTION OF ISSUE',margin+3,y+4.2); y+=6;
var dLines=doc.splitTextToSize(item.desc||'—',cW-6);
var dH=Math.max(dLines.length*5+6,12);
check(dH);
doc.setFillColor(255,255,255); doc.rect(margin,y,cW,dH,'F');
doc.setDrawColor(220,220,220); doc.rect(margin,y,cW,dH,'S');
doc.setTextColor(20,20,20); doc.setFontSize(9); doc.setFont('helvetica','normal');
doc.text(dLines,margin+3,y+5.5); y+=dH+3;
check(9);
doc.setFillColor(248,248,248); doc.rect(margin,y,cW,8,'F');
doc.setDrawColor(220,220,220); doc.rect(margin,y,cW,8,'S');
doc.setFillColor(201,168,76); doc.rect(margin,y,3,8,'F');
doc.setTextColor(80,80,80); doc.setFontSize(7); doc.setFont('helvetica','bold');
doc.text('DATE FIRST NOTICED',margin+6,y+3.2);
doc.setTextColor(20,20,20); doc.setFontSize(9); doc.setFont('helvetica','normal');
doc.text(item.date||'—',margin+6,y+7); y+=11;
if(item.photos && item.photos.length>0){
check(8);
doc.setFillColor(27,42,74); doc.rect(margin,y,cW,7,'F');
doc.setTextColor(201,168,76); doc.setFontSize(7.5); doc.setFont('helvetica','bold');
doc.text('PHOTOS — '+item.photos.length+' image(s) for Item #'+(idx+1),margin+3,y+4.8);
y+=9;
var cols=3,gap=3,imgW=(cW-(cols-1)*gap)/cols,imgH=imgW*0.72;
item.photos.forEach(function(photo,pi){
var col=pi%cols;
if(col===0&&pi>0){ y+=imgH+8; }
check(imgH+10);
var px=margin+col*(imgW+gap), py=y;
if(photo.jpeg){
try { doc.addImage(photo.jpeg,'JPEG',px,py,imgW,imgH,'','FAST'); }
catch(e){
doc.setFillColor(230,230,230); doc.rect(px,py,imgW,imgH,'F');
doc.setTextColor(150,150,150); doc.setFontSize(7);
doc.text('Photo '+(pi+1),px+imgW/2,py+imgH/2,{align:'center'});
}
} else {
doc.setFillColor(230,230,230); doc.rect(px,py,imgW,imgH,'F');
doc.setTextColor(150,150,150); doc.setFontSize(7);
doc.text('Photo '+(pi+1),px+imgW/2,py+imgH/2,{align:'center'});
}
doc.setFillColor(27,42,74); doc.rect(px,py+imgH,imgW,5,'F');
doc.setTextColor(201,168,76); doc.setFontSize(5.5); doc.setFont('helvetica','bold');
doc.text('ITEM #'+(idx+1)+' — PHOTO '+(pi+1),px+imgW/2,py+imgH+3.5,{align:'center'});
});
y+=imgH+9;
}
y+=4;
if(idx