// -- Initializations -- $(document).ready(function() { // Test user agent if(typeof jlocal_ua === 'undefined'){ var jlocal_ua = navigator.userAgent; var jlocal_mobile = { iphone: jlocal_ua.match(/(iPhone|iPod|iPad)/), blackberry: jlocal_ua.match(/BlackBerry/), android: jlocal_ua.match(/Android/) }; if (jlocal_mobile.iphone || jlocal_mobile.blackberry || jlocal_mobile.android) $('body').addClass('mobile-'); // mobile devices } var jHdLnkLst = $('head').find('link[rel="stylesheet"]:last'); var jLnkLmnt = ''; if (jHdLnkLst.length) jHdLnkLst.after(jLnkLmnt); else $('head').append(jLnkLmnt); if ($('body.mobile-').length){ if ($('#topNav div.nav-main-collapse').length) $('#topNav div.nav-main-collapse').css('max-height', 'none'); if ($('#topMain ul.dropdown-menu').length){ $('#topMain ul.dropdown-menu').each(function(){ myParent = $(this).parent(); $('> a', myParent).attr('href', '#'); }); // each } } if($('#contactform').length || $('#contactinteriordesignersform').length){ $('#contactform, #contactinteriordesignersform').submit(function(e) { e.preventDefault(); const doSubmit = () => { // Submit $('.required-field-alert', this).removeClass('required-field-alert'); if (!$('input[name="citycode"]', this).length) $(this).append(''); $('button[type="submit"]', this).hide(); if (!$('.-spin', this).length) $('button[type="submit"]', this).after('
'); $('.-spin', this).removeClass('hide'); var jFrmD = $(this).attr('id'); var jFrmCtn = $(this).attr('action'); jslocal_AjaxPost(jFrmD, jFrmCtn); } // Captcha let formObj = e.currentTarget; if (document.querySelector('form #recaptcha-response') === null){ let newInput = document.createElement('input'); newInput.setAttribute('type', 'hidden'); newInput.setAttribute('id', 'recaptcha-response'); newInput.setAttribute('name', 'recaptcha-response'); formObj.append(newInput); } grecaptcha.ready(function (){ grecaptcha.execute('6Leu-rcoAAAAAFdPxHcsxovT8BCVAHBG59-V50FB', { action: 'submit' }).then(function (token){ document.getElementById('recaptcha-response').value = token; doSubmit(); }); }); // grecaptcha return false; }); } if($('#gmap').length){ jLnkTMp = 'https://www.google.com/maps/place/' + $googlemap_streetaddrs + '/@' + $googlemap_latitude + ',' + $googlemap_longitude + ',17z'; $('#gmap').after('
LARGE MAP / DIRECTIONS
'); } if ($('#searchform').length){ $('#searchform button[type="submit"]').click(function(e){ e.preventDefault(); jSrchRl = '/search?s=' + $('#searchform input[name="s"]').val().replace(/\s/g, '+'); window.location = jSrchRl; return; }); } // if if ($('#enhancedsearchform').length){ $('#enhancedsearchform .search-where-choice').click(function(e){ e.preventDefault(); $('#enhancedsearchform .search-where-choice i').each(function(e){ if(!$(this).hasClass('hide')) $(this).addClass('hide'); });// each $('#enhancedsearchform .search-where-choice-caption').html($(this).attr('data-search-where-choice-caption')); $('#enhancedsearchform #w').val($(this).attr('data-search-where-choice-val')); $('i', this).removeClass('hide'); return; });// click $('#enhancedsearchform button[type="submit"]').click(function(e){ e.preventDefault(); jSrchRl = '/search?s=' + $('#enhancedsearchform input[name="s"]').val().replace(/\s/g, '+') + '&w=' + $('#enhancedsearchform input[name="w"]').val(); window.location = jSrchRl; return; }); } // if if ($('form.-login').length){ $('form.-login').submit(function(e) { e.preventDefault(); $('.required-field-alert').removeClass('required-field-alert'); if (!$('input[name="citycode"]', this).length) $(this).append(''); $('button[type="submit"]', this).hide(); if (!$('.-spin', this).length) $('button[type="submit"]', this).after('
'); $('.-spin', this).removeClass('hide'); if (!$('.-warn', this).hasClass('hide')) $('.-warn', this).addClass('hide'); var jFrmD = $(this).attr('id'); var jFrmCtn = '/php/login.do.php'; jslocal_AjaxPost(jFrmD, jFrmCtn); return false; }); } // if if ($('#forgotpasswordform').length){ $('#forgotpasswordform').submit(function(e) { e.preventDefault(); $('.required-field-alert', this).removeClass('required-field-alert'); if (!$('input[name="citycode"]', this).length) $(this).append(''); $('button[type="submit"]', this).hide(); if (!$('.-spin', this).length) $('button[type="submit"]', this).after('
'); $('.-spin', this).removeClass('hide'); var jFrmD = $(this).attr('id'); var jFrmCtn = $(this).attr('action'); jslocal_AjaxPost(jFrmD, jFrmCtn); return false; }); } // if jslocal_SetActiveMenuItem('ul.-newsletter-year-nav-', 2); jslocal_SetActiveMenuItem('ul.-category-listing-nav-', 3); jslocal_SetActiveMenuItem('ul.-interior-designers-listing-nav-', 2); if ($('ul.-category-listing-nav0- li.-all-').length) $('ul.-category-listing-nav0- li.-all-').addClass('active'); if ($('#iframeModal').length){ $('#iframeModal').on('hidden.bs.modal', function(e){ // When the iframe modal window is closed $("#iframeModal iframe").attr('src', ''); return; }); // on } // Make newsletter articles share links if ($('.container-articles article').length){ jCrrntPgPth = 'https://www.dsasociety.org'; jPthNmRry = window.location.pathname; jPthNmRry = jPthNmRry.split('/'); if (jPthNmRry.length >= 4){ jCrrntPgPth = jCrrntPgPth + '/' + jPthNmRry[1] + '/' + jPthNmRry[2] + '/' + jPthNmRry[3]; $('.container-articles article').each(function(){ // Each article jRtclD = jslocal_GetToken($(this).attr('id'), 'last', '_', ''); // Article id if (jPthNmRry.length > 4 && jPthNmRry[4] == jRtclD) jRtclLnk = 'All Articles'; else{ jRtclLnk = jCrrntPgPth + '/' + jRtclD; jRtclLnk = ''; } jRtclShrLnk = jCrrntPgPth + '/' + jRtclD + '/' + jslocal_UC(); $('
Share ' + jRtclLnk + '
').insertBefore(this); }); // Each } // if } // if if ($('.state-chooser').length){ $('.state-chooser').change(function(e){ if (!jslocal_IsEmpty($(this).val())) window.location = $(this).val(); return; }); // change } if ($('div.clearfix.blog-isotope.blog-isotope-4.cat .blog-post-item.interior-designer').length){ $('div.clearfix.blog-isotope.blog-isotope-4.cat .blog-post-item.interior-designer').each(function(){ if ($(this).attr('data-ma') === undefined && $(this).attr('data-mi') === undefined) $('.website', this).remove(); }); // each } if ($('div.clearfix.blog-isotope.blog-isotope-4.cat .blog-post-item.interior-designer').length){ $('div.clearfix.blog-isotope.blog-isotope-4.cat .blog-post-item.interior-designer').each(function(){ $('.eml', this).remove(); }); // each } if ($('[data-toggle-target-id]').length){ $('[data-toggle-target-id]').each(function(){ contentID = $(this).attr('data-toggle-target-id'); $(this).css('cursor', 'pointer'); if ($('i.fa-chevron-down', this).length) $('#' + contentID).css('display', 'none'); else $('#' + contentID).css('display', 'block'); $(this).click(function(e){ e.preventDefault(); contentID = $(this).attr('data-toggle-target-id'); if ($('i.fa-chevron-down', this).length){ $('#' + contentID).css('display', 'block'); $('i', this).removeClass('fa-chevron-down').addClass('fa-chevron-up'); } else{ $('#' + contentID).css('display', 'none'); $('i', this).removeClass('fa-chevron-up').addClass('fa-chevron-down'); } return; }); // click }); // each } }); // Ready $(window).load(function(){ var parentNode = document.body; jslocal_LinkEmails(parentNode); //jslocal_LinkUrls(parentNode); }); // -- Special functions -- function jslocal_SetActiveMenuItem(jLmntSlctor, jMtchTkns){ // jLmntSlctor = element selector | jMtchTkns = match token(s) if($(jLmntSlctor).length && jMtchTkns >= 1){ if (pid != 'home'){ // Not the home page jWndwLctnSrc = window.location.pathname; // Page path without the host - first character is: / if(jWndwLctnSrc.substring(jWndwLctnSrc.length -1)) // If last character is: / - remove it jWndwLctnSrc = jWndwLctnSrc.substring(0, jWndwLctnSrc.length-1); jWndwLctn = ''; for (t=1; t <= jMtchTkns; t++) jWndwLctn = jWndwLctn + '/' + jslocal_GetToken(jWndwLctnSrc, (t+1), '/', 'n/a'); // Obtain token on the path $(jLmntSlctor + ' li a').each(function(i,v){ // Each top menu jHrf = $(this).attr('href'); if (jHrf.indexOf(jWndwLctn) >= 0) $(this).parent().addClass('active'); // Set top menu to active }); // Each } // if } // if return; } function jlocal_Contact_After(jSccss, jRqrdFldsLmntsLst){ jslocal_ResetSubmitButton('contactform'); if (!jSccss){ if (jRqrdFldsLmntsLst.indexOf('verification-failed') >= 0){ jslocal_ShowModalWindow('myModal', 'Failed', 'Verification Failed.'); } else{ jslocal_SetFormFieldsHighlight(jRqrdFldsLmntsLst); jslocal_ShowModalWindow('myModal', 'Required Fields', 'Please review required fields.'); } return; } $('#contactform input[type="text"], #contactform input[type="email"], #contactform textarea').val(''); jslocal_ShowModalWindow('myModal', 'Thank You', 'Your message has been submitted.
We will get back to you soon.'); return; } function jlocal_ContactInteriorDesigners_After(jSccss, jRqrdFldsLmntsLst){ jslocal_ResetSubmitButton('contactinteriordesignersform'); if (!jSccss){ if (jRqrdFldsLmntsLst.indexOf('verification-failed') >= 0){ jslocal_ShowModalWindow('myModal', 'Failed', 'Verification Failed.'); } else{ jslocal_SetFormFieldsHighlight(jRqrdFldsLmntsLst); jslocal_ShowModalWindow('myModal', 'Required Fields', 'Please review required fields.'); } return; } $('#contactinteriordesignersform input[type="text"], #contactinteriordesignersform input[type="email"], #contactinteriordesignersform textarea').val(''); jslocal_ShowModalWindow('myModal', 'Thank You', 'Your message has been submitted.
We will get back to you soon.'); return; } function jlocal_LoginOnErr(jFrmD, jMssg, jRqrdFldsLmntsLst){ jslocal_ResetSubmitButton(jFrmD); jslocal_SetFormFieldsHighlight(jRqrdFldsLmntsLst); $('#' + jFrmD + ' .-warn').html(jMssg).removeClass('hide'); return; } function jlocal_FP_After(jSccss, jMssg, jRqrdFldsLmntsLst){ jslocal_ResetSubmitButton('forgotpasswordform'); if (!jSccss){ jslocal_SetFormFieldsHighlight(jRqrdFldsLmntsLst); jslocal_ShowModalWindow('myModal', 'Invalid', jMssg); return; } $('#forgotpasswordform input[type="text"], #forgotpasswordform input[type="email"], #forgotpasswordform textarea').val(''); jslocal_ShowModalWindow('myModal', 'Thank You', jMssg); return; } function jslocal_SetFormFieldsHighlight(jSlctrs){ // jSlctrs = selectors if (jslocal_Trim(jSlctrs) != '') $(jSlctrs).addClass('required-field-alert'); return; } function jslocal_ResetSubmitButton(jFrmSlctr){ $(('#' + jFrmSlctr + ' .-spin')).addClass('hide'); $(('#' + jFrmSlctr + ' button[type="submit"]')).show(); return; } function jslocal_ShowModalWindow(jMdlWndwD, jTtl, jBdy){ // jMdlWndwD = modal window id | jTtl = title | jBdy = body $('#' + jMdlWndwD + ' #myModalLabel').html(jTtl); $('#' + jMdlWndwD + ' .modal-body').html(jBdy); $('#' + jMdlWndwD).modal({show:true}); return; } function jslocal_ShowIframeModalWindow(jTtl, jSrc){ // jTtl = title | jSrc = source $('#iframeModal iframe').attr('src', jSrc); $('#iframeModal #iframeModalLabel').html(jTtl); $('#iframeModal').modal({show:true}); return; } // -- Standard functions -- var re = /[\w\.\-]+\@([\w\-]+\.)+[\w]{2,}(?![^<]*>)/ig; function jslocal_LinkEmails(parentNode){ var nodes = parentNode.childNodes; for (var i=0; i < nodes.length; i++){ if (nodes[i].nodeType == 1 && nodes[i].tagName != "A") { jslocal_LinkEmails(nodes[i]); } else if (nodes[i].nodeType == 3 && re.test(nodes[i].nodeValue)){ parentNode.innerHTML = parentNode.innerHTML.replace(re,"$&"); } } } var rl = /https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\_\.]*(\?\S+)?)?)?/ig; function jslocal_LinkUrls(parentNode){ var nodes = parentNode.childNodes; for (var i=0; i < nodes.length; i++){ if (nodes[i].nodeType == 1 && nodes[i].tagName != "A") { jslocal_LinkUrls(nodes[i]); } else if (nodes[i].nodeType == 3 && rl.test(nodes[i].nodeValue)){ parentNode.innerHTML = parentNode.innerHTML.replace(rl,"$&"); } } } function jslocal_Trim(jVl){ // jVl = value to 'trim' return jVl.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, ""); } function jslocal_RemoveSpaces(jVl){ // jVl = value to remove from return jVl.replace(/\s+/g, ''); } function jslocal_Set(jLmntID, jVl){ // jLmntID = element id | jVl = value // Set the 'innerHTML' of an element if (document.all) document.all[jLmntID].innerHTML = jVl; else document.getElementById(jLmntID).innerHTML = jVl; } function jslocal_SetValue(jLmntID, jVl){ // jLmntID = element id | jVl = value // Set the 'value' of an element if (document.all) document.all[jLmntID].value = jVl; else document.getElementById(jLmntID).value = jVl; } function jslocal_SetSelectOption(jFrmFldBjct, jVl){ // jFrmFldBjct = form field object | jVl = value to set with // Set the 'selected' option of a select input list for (i=0; i < jFrmFldBjct.options.length; i++){ if (jFrmFldBjct.options[i].value == jVl) jFrmFldBjct.options[i].selected = true; } } function jslocal_GetElement(jLmntID){ // jLmntID = element id if (document.all) return document.all[jLmntID]; else return document.getElementById(jLmntID); } function jslocal_GetElementValue(jLmntID){ // jLmntID = element id if (document.all) return document.all[jLmntID].value; else return document.getElementById(jLmntID).value; } function jslocal_SetValue(jLmntID, jVl){ // jLmntID = element id | jVl = value // Set the 'value' of an element if (document.all) document.all[jLmntID].value = jVl; else document.getElementById(jLmntID).value = jVl; } function jslocal_IsEmpty(jStrng){ // jStrng = string to check if empty var jStrng2 = jslocal_Trim(jStrng); return ((jStrng2 == null) || (jStrng2.length == 0)); } function jslocal_IsEmptyRadio(jFrmFldNm, jFrmNmbr){ // jFrmFldNm = radio form field name | jFrmNmbr = form number for (i=document.forms[jFrmNmbr][jFrmFldNm].length-1; i > -1; i--) if(document.forms[jFrmNmbr][jFrmFldNm][i].checked) return false; return true; } var reEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,})+$/i; function jslocal_IsEmail(jMls){ // jMls = email to validate (empty is Ok) return reEmail.test(jMls); } var reFloat = /^-?((\d+(\.\d*)?)|((\d*\.)?\d+))$/; function jslocal_IsNumber(jNmbr){ // jNmbr = number to check return reFloat.test(jNmbr); } function jslocal_IsInteger(jNmbr, jSgndNtgr) { // jNmbr = number to check | jSgndNtgr = allow signed integer (true/false) if (jSgndNtgr) return (jNmbr.toString().search(/^-?[0-9]+$/) == 0); // allows negative sign else return (jNmbr.toString().search(/^[0-9]+$/) == 0); // does not allow negative sign } var reZip = /^[0-9]{5}(?:-[0-9]{4})?$/; function jslocal_IsValidZip(jStrng){ // jStrng = string to check return reZip.test(jStrng); } uc = Date.parse(new Date()) + '_' + Math.round(100*Math.random()) + '_'; var ucIncrement = 0; // a value to be incremented function jslocal_UC(){ // return the unique value ++ucIncrement; return (uc + (ucIncrement+'')); } function jslocal_AjaxPost(jFrmD, jRl) { // jNmbr = form id | jRl = url var jFormData = $('#' + jFrmD).serialize(); var jAjaxUrl = jRl; $.ajax({type:'POST', url:(jAjaxUrl + '?uc=' + jslocal_UC()), data:jFormData, async:true, dataType:'script' }); return; } function jslocal_AjaxPost2(jFrmDt, jRl) { // jFrmDt = form data | jRl = url var jFormData = jFrmDt; var jAjaxUrl = jRl; $.ajax({type:'POST', url:(jAjaxUrl + '?uc=' + jslocal_UC()), data:jFormData, async:true, dataType:'script' }); return; } function jslocal_Scroll2Element(jLmnt, jFfst){ // jLmnt = element || jFfst = offset $('html, body').animate({ scrollTop: $(jLmnt).offset().top - jFfst }, 900, 'swing'); return; } function jslocal_GetQueryString(){ return jslocal_Trim(window.location.search.replace('?', '')); // Removes ?, if found } function jslocal_GetToken(jVl, jTknPs, jDlmtr, jDfltVl){ // jVl = string value to extract from | jTknPs = token position to extract, optional {last} | jDlmtr = delimiter | jDfltVl = default value when token not found var jTknsRry = jVl.split(jDlmtr); // make an array if (jTknPs == 'last'){ // last token if (jTknsRry.length > 0) return jTknsRry[(jTknsRry.length-1)]; else return jDfltVl; } if (jTknPs < 1) // token is not numeric return jDfltVl; if (jTknsRry.length < jTknPs) return jDfltVl; return jTknsRry[(jTknPs-1)]; } function jslocal_ReplaceDoubleQuotes(jStrng){ // jStrng = string to check if empty var jRgX = new RegExp('"', 'g'); return jStrng.replace(jRgX, '"'); } function jslocal_ReplaceSingleQuotes(jStrng){ // jStrng = string to check if empty var jRgX = new RegExp("'", 'g'); return jStrng.replace(jRgX, '''); } // -- Other functions -- if ($('.joinpanel').length) { $.getScript('/php/join.js.php'); } if ($('.renewpanel').length) { $.getScript('/php/renew.js.php'); }