reports

over the years

Interested in learning more about our operations over the years? 

Take a look at our catalogue of Annual Reports, Audited Financial Statements and Strategic Plans. 

annual reports

Homes First Foundation Audited Financial Statements

Homes First Society Audited Financial Statements

Strategic Plans

const getUrl = require('getUrl'); const sendPixel = require('sendPixel'); const setInWindow = require('setInWindow'); const getTimestamp = require('getTimestamp'); const injectScript = require('injectScript'); const copyFromWindow = require('copyFromWindow'); const encodeUriComponent = require('encodeUriComponent'); const callLater = require('callLater'); /** * Globals */ const conversionIds = data.conversionId ? data.conversionId.split(',').slice(0,3).map(id => id.trim()) : ''; const allPids = []; const pageUrl = data.customUrl ? data.customUrl : getUrl(); const eventId = data.eventId; let isScriptInjected = false; /** * Checks presence of LinkedIn Insight tag code. */ const isInsightTagAPIAvailable = () => typeof copyFromWindow('lintrk') === 'function'; /** * Reads and Sets in global namespace all applicable PIDs on the page */ const setAllPids = (function() { const partnerIds = {}; const bizoId = copyFromWindow('_bizo_data_partner_id'); const bizoIds = copyFromWindow('_bizo_data_partner_ids') || []; const linkedInPartnerId = copyFromWindow('_linkedin_data_partner_id'); const linkedInPartnerIds = copyFromWindow('_linkedin_data_partner_ids') || []; const addPid = pid => { if (pid && !partnerIds[pid]) { partnerIds[pid] = true; allPids.push(pid); } }; // add the partner ids set via this GTM installation const inputPids = data.partnerId.split(','); inputPids.forEach(id => addPid(id.trim())); // Add all PIDs that may have updated the global, helps skipping following adds. addPid(linkedInPartnerId); linkedInPartnerIds.forEach(id => addPid(id)); // add other PIDs from page addPid(bizoId); bizoIds.forEach(id => addPid(id)); // Update the main namespace for future tracking by InsightTag to include the partner IDs setInWindow('_linkedin_data_partner_ids', allPids, true); }()); /** * Generate query params only for GTM based tracking */ function generateQueryParamsForGTM(cid) { const encodedPIDs = encodeUriComponent(allPids.join(',')); let result = 'pid=' + encodedPIDs; result += '&tm=gtmv2'; result += cid ? '&conversionId=' + encodeUriComponent(cid) : ''; result += '&url=' + encodeUriComponent(pageUrl); result += eventId ? '&eventId=' + encodeUriComponent(eventId) : ''; result += '&v=2&fmt=js&time=' + getTimestamp(); return result; } // Success call back to InsightTag injection function didInjectInsightTag() { callLater(() => { trackByInsightTag(); }); } // Callback to plain GTM when InsightTag code failed to inject function didFailInsightTag() { trackByPlainGTM(); } function trackByPlainGTM() { if (conversionIds.length && conversionIds.length <= 3) { conversionIds.forEach(id => { const trackingUrl = 'https://px.ads.linkedin.com/collect?' + generateQueryParamsForGTM(id); sendPixel(trackingUrl, data.gtmOnSuccess, data.gtmOnFailure); }); } else { sendPixel('https://px.ads.linkedin.com/collect?' + generateQueryParamsForGTM(), data.gtmOnSuccess, data.gtmOnFailure); } } /** * Download LinkedIn Insight tag core code if `window.lintrk` is not available * Also ensure it doesn’t default fire. */ function trackByInsightTag() { if (isInsightTagAPIAvailable()) { const lintrk = copyFromWindow('lintrk'); const options = { tmsource: 'gtmv2' }; options.conversion_url = pageUrl; if (eventId) { options.event_id = eventId; } if (conversionIds.length && conversionIds.length <= 3) { conversionIds.forEach(id => { options.conversion_id = id; lintrk('track', options); }); } else { lintrk('track', options); } data.gtmOnSuccess(); } else if (!isScriptInjected) { isScriptInjected = true; setInWindow('_already_called_lintrk', true, true); injectScript('https://snap.licdn.com/li.lms-analytics/insight.min.js', didInjectInsightTag, didFailInsightTag); } else { didInjectInsightTag(); } } trackByInsightTag();