{"lang":"en","favicon":"SP3.png","facebookImage":"SpencerHumphreyPhotography.jpg","browserTitle":"Spencer Humphrey Photographer","metaDescription":"Spencer Humphrey  is an Atlanta based photographer known for his environmental portraits, lifestyle and landscape photography.","metaKeywords":"Atlanta Photographer ","cdnSslUri":"/pf-media","redirects":[],"blogSectionId":"117","advancedSeo":true,"globalBrowserTitle":true,"facebookUseMeta":true,"enablePinterest":false,"siteBody":"<script>\nfunction JSONXHR(v) { \nfunction removeNonPrintingChars(str) { \nreturn typeof str === 'string' ? str.replace(/\\u2028|\\u2029/g, '') : str;\n};\n\nvar xhr = new XMLHttpRequest();\nxhr.addEventListener(\"load\", response);\nxhr.addEventListener(\"error\", error);\nxhr.addEventListener(\"abort\", error);\nxhr.open(v.method || \"POST\", v.url);\nxhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');\nxhr.send(removeNonPrintingChars(JSON.stringify(v.params)));\n\nfunction response(e) {\nif (e.target.response) {\nv.callback.apply(v.callback, [JSON.parse(e.target.response)]);\n} else {\nv.callback.call(v.callback);\n}\n}\nfunction error(e) {\nif (typeof v.onError === 'function') {\nv.onError(e);\n} else {\nconsole.error(e);\n}\n}\n}\n\nfunction setInputWarn(el, warning) {\nel.colorSaved = el.style.color;\nel.style.color = '#DD2222';\nel.savedValue = el.value;\nel.value = warning;\nsetTimeout(function() {\nel.style.color = el.colorSaved;\nel.value = el.savedValue;\n}, 1500);\n}\n\nfunction getContactFormData() {\nvar first   = document.getElementById(\"contactFirstName\");\nvar last    = document.getElementById(\"contactLastName\");\nvar email   = document.getElementById(\"contactEmail\");\nvar phone   = document.getElementById(\"contactPhone\");\nvar job     = document.getElementById(\"contactJobTitle\");\nvar dmocvb  = document.getElementById(\"contactDMOCVB\");\nvar msg     = document.getElementById(\"contactMessage\");\nvar btn     = document.getElementById(\"contactButton\");\nvar success = document.getElementById(\"contactSuccess\");\nvar error   = document.getElementById(\"contactError\");\n\n// Show fields (in case user tried once already)\n[first, last, email, phone, job, dmocvb, msg, btn, success, error]\n.forEach(el => el.style.opacity = '1');\n\n// Basic validations\nvar emailCheck = /^\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,}$/;\nvar messageMinChars = 0;\n\n// Ensure we have the required fields\nif (\nfirst && first.value && \nemail && email.value &&\n// 75-character check for the question box\nmsg && msg.value.trim().length >= messageMinChars\n) {\n// Combine \"JobTitle\" & \"DMO/CVB\" with message\nvar combinedComments =\n\"Job Title: \" + (job.value || \"N/A\") + \"\\n\" +\n\"DMO/CVB: \"   + (dmocvb.value || \"N/A\") + \"\\n\\n\" +\nmsg.value;\n\n// Send data\nJSONXHR({\nurl: '/dx/siteservice/email/contact',\nparams: {\nTitle:    \"Contact Form\",\nName:     first.value,\nEmail:    email.value,\ntoEmail:  \"hey@spencerhumphrey.com\",\nPhone:    phone.value,\nsubject:  \"Message from sh@spencerhumphrey.com\",\n\n// This is the final email body\nComments: combinedComments\n},\ncallback: function(r) {\n// Hide form fields after receiving a response\n[first, last, email, phone, job, dmocvb, msg, btn].forEach(el => el.style.opacity = '0');\n\nif (r.status === 'pass') {\n// Show ONLY success message\nsuccess.innerHTML = \n\"Thank you for requesting a Concept Design consultation!\";\nsuccess.style.opacity = '1';\nerror.style.opacity = '0'; // hide error just in case\n\n// (Optional) Google Analytics\ndocument.addEventListener('DOMContentLoaded', function() {\nif (typeof gtag !== \"undefined\") {\ngtag('event', 'contact_form_submission', {\nevent_category: 'Form Submission',\nevent_label: 'Contact Form Submission',\npage_path: window.location.pathname\n});\n}\n});\n} else {\n// Show ONLY error\nerror.style.opacity = '1';\nsuccess.style.opacity = '0';\n// Removed \"throw new Error()\" to prevent both showing\n}\n}\n});\n} else {\n// Show warnings if required fields are missing or invalid\nif (!first.value) setInputWarn(first, 'Please Enter First Name');\nif (!email.value) setInputWarn(email, 'Please Enter Email');\nif (email.value && !email.value.match(emailCheck)) {\nsetInputWarn(email, 'Please Enter VALID Email');\n}\nif (!msg.value || msg.value.trim().length < messageMinChars) {\nsetInputWarn(msg, 'Anything you want us to know before our meeting?');\n}\n}\n}\n</script>","enableCookieBanner":true,"cookieBannerPosition":"bottom","cookieBannerMessage":"By continuing to visit this site you agree to our use of cookies.","localMasterVersion":"16.0","dev":false,"betaProgramEnabled":false,"useHTML":true,"globalMasterVersion":"16.0","adminSortDefault":"dateAdded descending","globalMediaSearch":true,"portfolioEmailMessage":"Check out this photograph:","accountName":"morehouseque","logoHtml":"<a href=\"/Overview\" target=\"_self\"><img src=\"/pf-media/Spencer-Humphrey-Logo.png\" height=\"90\">","customFonts":["CormorantGaramond-Light:300:CormorantGaramond-Light:custom","CormorantGaramond-Regular:400:CormorantGaramond-Regular:custom","CormorantGaramond-Medium:500:CormorantGaramond-Medium:custom","CormorantGaramond-SemiBold:500:CormorantGaramond-SemiBold:custom","CormorantGaramond-Bold:700:CormorantGaramond-Bold:custom","Playfair Display:300:latin:google","Playfair Display:400:latin:google","Playfair Display:500:latin:google","Playfair Display:700:latin:google"],"logoText":"Spencer Humphrey","podUseDesktop":false,"padUseDesktop":true,"rsSslUri":"https://361baaec26ed012dc96e-05574c2f59405eb57b7d4382b3e08159.ssl.cf1.rackcdn.com","contactInfo":"Spencer Humphrey \n\n","copyright":"© Spencer Humphrey","betaProgramVisible":true,"inquiryTitle":"","socialLinks":[10236,10237,11419],"filters":["- misc - keep -","2023 About Me ","2023 Lifestyle","2023 Overview","2025 Overview","2026 Peachbowl ","ACVB Christmas 2024","ACVB Dogwood Festival 2025","ACVB Fall 2024","ACVB June 2023 ","ACVB June 2025","ACVB SOW Preview Images ","ACVB Spelman Activation 2025","ACVB Spring 2025","ACVB Summer 2024 ","Andrew Moore 5.2.24","Antole Jan -March 2023","August 2025","Discover Dekalb Fall 2025","Landscape 2023","Landscapes","Lifestyle","Lula's Commercial ","Lula's Keepers","Lula's Tourism","March 29, 2023","Men","My Chopper Friends","People Working ","Phoenix Campus View","Phoenix Campus View 2","Planes","Portraits 2023","Q3 2023 Landscape","Q3 2023 Lifestyle","Q3 2023 Overview","Q3 2023 Portraiture ","Revisions and Redos","Rodeo ","SWD Band ","Signia ","Signia 2","Social Media Links","Spencer","Tourism","Visit Eatonton","Visit Macon","Wheels ","Women","theCut ","Phoenix Campus View 3 "],"currentTemplate":6,"adminLockout":false,"defaultEditorMode":"source","inquiryInfo":"","backgroundImages":[],"disableRightClick":false,"revision":0,"globalBetaVersion":"16.1","generalEmail":""}