PageSourceSearch

https://www.coastalpay.com/wp-content/themes/hello-elementor-child/js/custom.js?ver=1.0

js coastalpay.com collected 2026-10-04 00:27:41 UTC 52,287 bytes, 622 lines download raw bytes

1// footer menu for mobile
2jQuery(document).ready(function(){
3	if(jQuery(window).innerWidth() <= 767){
4
5		jQuery('.li-products').click(function(){
6			jQuery('.products-menu').css( "display", "block" );
7			jQuery('.industries-menu').css( "display", "none" );
8			jQuery('.developers-menu').css( "display", "none" );
9			jQuery('.resources-menu').css( "display", "none" );
10		});
11
12		jQuery('.li-industries').click(function(){
13			jQuery('.products-menu').css( "display", "none" );
14			jQuery('.industries-menu').css( "display", "block" );
15			jQuery('.developers-menu').css( "display", "none" );
16			jQuery('.resources-menu').css( "display", "none" );
17		});
18		
19		jQuery('.li-developers').click(function(){
20			jQuery('.products-menu').css( "display", "none" );
21			jQuery('.industries-menu').css( "display", "none" );
22			jQuery('.developers-menu').css( "display", "block" );
23			jQuery('.resources-menu').css( "display", "none" );
24		});
25		
26		jQuery('.li-resources').click(function(){
27			jQuery('.products-menu').css( "display", "none" );
28			jQuery('.industries-menu').css( "display", "none" );
29			jQuery('.developers-menu').css( "display", "none" );
30			jQuery('.resources-menu').css( "display", "block" );
31		});
32		
33	} 
34});
35
36//slider section in mobile
37jQuery(document).ready(function($) {
38    $('.div-slick-slider').slick({
39        slidesToShow: 1,
40        slidesToScroll: 1,
41//         autoplay: true,
42        autoplaySpeed: 2000,
43		dots: true,
44		arrows: false,
45    });
46});
47
48// faq page ticket section
49jQuery(document).ready(function(){
50	
51		jQuery('#categories').css( "display", "block" );
52	    jQuery('#ecommerce, #support, #sales, #partners, #careers, #others').css( "display", "none" ); 
53	
54	jQuery('#new_ticket').click(function(){ 
55		jQuery('#ticket-sidebar').css( "display", "block" );
56	    jQuery('.search-faq, #ecommerce, #categories, #support, #sales, #partners, #careers, #others').css( "display", "none" ); 
57	});
58	jQuery('#li-ecom').click(function(){ 
59		jQuery('#ticket-sidebar, #categories, #support, #sales, #partners, #careers, #others').css( "display", "none" );
60	    jQuery('.search-faq, #ecommerce').css( "display", "block" );
61	});
62	jQuery('#li-cat').click(function(){ 
63		jQuery('#ticket-sidebar, #ecommerce, #support, #sales, #partners, #careers, #others').css( "display", "none" );
64	    jQuery('.search-faq, #categories').css( "display", "block" );
65	});
66	jQuery('#li-support').click(function(){ 
67		jQuery('#ticket-sidebar, #ecommerce, #categories, #sales, #partners, #careers, #others').css( "display", "none" );
68	    jQuery('.search-faq, #support').css( "display", "block" );
69	});
70	jQuery('#li-sales').click(function(){ 
71		jQuery('#ticket-sidebar, #ecommerce, #categories, #support, #partners, #careers, #others').css( "display", "none" );
72	    jQuery('.search-faq, #sales').css( "display", "block" );
73	});
74	jQuery('#li-partners').click(function(){ 
75		jQuery('#ticket-sidebar, #ecommerce, #categories, #sales, #support, #careers, #others').css( "display", "none" );
76	    jQuery('.search-faq, #partners').css( "display", "block" );
77	});
78	jQuery('#li-careers').click(function(){ 
79		jQuery('#ticket-sidebar, #ecommerce, #categories, #sales, #support, #partners, #others').css( "display", "none" );
80	    jQuery('.search-faq, #careers').css( "display", "block" );
81	});
82	jQuery('#li-others').click(function(){ 
83		jQuery('#ticket-sidebar, #ecommerce, #categories, #sales, #support, #partners, #careers').css( "display", "none" );
84	    jQuery('.search-faq, #others').css( "display", "block" );
85	});
86	jQuery('#new_ticket_mobile').click(function(){ 
87		jQuery('#ticket-sidebar').css( "display", "block" );
88	    jQuery('.search-faq, #ecommerce, #categories, #support, #sales, #partners, #careers, #others').css( "display", "none" ); 
89	});
90});
91
92  // Check if there's a hash in the URL indicating a specific section for create ticket from faq section
93jQuery(document).ready(function(){
94  var hash = window.location.hash;
95  if (hash) {
96    var targetSection = jQuery(hash);
97    if (targetSection.length) {
98      targetSection.show();
99	  jQuery('.search-faq, #ecommerce, #categories, #support, #sales, #partners, #careers, #others').css( "display", "none" ); 
100      jQuery('html, body').animate({
101        scrollTop: targetSection.offset().top
102      }, 1000);
103    }
104  }
105});
106
107// blog page post slider section
108jQuery(document).ready(function(){
109	jQuery(".blog-section-3 .elementor-posts").addClass("post-slider");
110});
111jQuery(document).ready(function($) {
112    $('.post-slider').slick({
113        slidesToShow: 1,
114        slidesToScroll: 1,
115		dots: false,
116		arrows: true,
117    });
118});
119
120
121// mobile navigation menu
122jQuery(document).ready(function(){
123	if(jQuery(window).innerWidth() <= 1024){
124  		jQuery(".social-icons").appendTo("ul.hfe-nav-menu");
125	}
126});
127
128//
129// var postViews = document.querySelectorAll(".post-views");
130// var newDiv = document.createElement("div");
131
132// // Add content to the new div
133// // newDiv.innerHTML = postView;
134// postViews.forEach(function(postView) {
135//     newDiv.appendChild(postView.cloneNode(true));
136// });
137
138// // Set any class or attributes if needed
139// newDiv.className = "new-div-class";
140
141// // Select all parent elements with class "elementor-post__excerpt"
142// var parentElements = document.querySelectorAll(".elementor-post__excerpt");
143
144// // Loop through each parent element and insert the new div before its first child
145// parentElements.forEach(function(parentElement) {
146//     parentElement.insertBefore(newDiv.cloneNode(true), parentElement.firstChild);
147// });
148
149
150//back to top button
151
152
153//css for options in ticket form
154// jQuery(document).ready(function() {
155    
156// jQuery('.wpcf7-select').change(function(){
157// 	jQuery(this).find('option').css({
158//         'background-color': '#fff', 
159//         'color': 'red', 
160//         'font-size': '16px', 
161//         'padding': '20px 0px' ,
162//         'border' : '3px solid #000',
163//     });
164// }).triger('change');
165
166    // jQuery('.wpcf7-select option').css({
167    //     'background-color': '#fff', 
168    //     'color': '#333', 
169    //     'font-size': '16px', 
170    //     'padding': '20px 0px' 
171    // });
172
173   
174    // jQuery('.wpcf7-select option').hover(function() {
175    //     jQuery(this).css({
176    //         'background-color': '#f0f0f0', 
177    //         'color': '#000' 
178    //     });
179    // }, function() {
180       
181    //     jQuery(this).css({
182    //         'background-color': '#fff', 
183    //         'color': '#333' 
184    // });
185// });
186
187
188jQuery( document ).ready( function() {
189		jQuery('.enable-select2').select2();
190		jQuery('.enable-select2').css({
191			'border-bottom' : '1px solid #000',
192		});
193	});
194//White logo
195
196jQuery(document).ready(function(){
197	if(jQuery(window).innerWidth() <= 1024){
198		
199		jQuery('.hfe-nav-menu-icon').click(function(){
200			var activeCls = jQuery(this).closest('.hfe-nav-menu__toggle').remove('hfe-active-menu').end().end().addClass('hfe-active-menu');
201			console.log(activeCls);
202// 			 alert(jQuery('.hfe-nav-menu__toggle').hasClass('hfe-active-menu'));
203			if(jQuery('.hfe-nav-menu__toggle').hasClass('hfe-active-menu') == false) {
204				jQuery('.mobile_logo img').attr('src','https://workspace700.com/js/coastalpay/wp-content/uploads/2024/03/CP_white-1.png');
205			}
206			else{
207				var activeCls = jQuery(this).closest('.hfe-nav-menu__toggle').remove('hfe-active-menu');
208				jQuery('.mobile_logo img').attr('src','https://workspace700.com/js/coastalpay/wp-content/uploads/2024/04/logo-costal.svg');
209			}
210		});
211	}
212});
213
214// Payment Integrations page script
215
216 const integrations = {
217    "#": ["$$$ in the Bank", "$$$ on the Net", "/n software Inc."],
218    "0-9": ["1&1 Internet AG", "1st Mile", "1st Pay Gateway", "1st Pay POS", "24Fundraiser", "2TouchPOS", "3 Delta / 3DSI", "3C Payment / 3CIntegra", "3C Payment USA Corp", "3Delta Systems", "3rd party Trip booking", "4D Payments", " Inc.", "4Soft POS", "4d Payment Gateway", "911 CreditLine", "911 Software", "9700 Series"],
219    "A": ["A2C", " Clinic Controller", "A2Z Pos", "ABS Integral Systems", "ACI Worldwide", " Inc (fka Transendit)", "ACI Worldwide", " Inc.", "ACOMM (Web-based)", "ADFS", "ADVAM Pty Ltd", "AMP POS", "AMS", "AMS (Local)", "ARBAPRO", "AS/PC Complete", "ASP.net Storefront", "AVPM", "AXIS", "AXS Ticketing", "Aavenir", "Abila Fundraising Online (AFO)", "Accept Blue LLC", "Accesso Showare", "AcclaimPOS", "AccuPOS", "Acculynk Inc.", "Acom Rapid", "Acoustic Payments", "Acrelec", "Action Systems Inc", "Active Directory", "Active Directory Pro", "AcuityLogic", "Admin", "Adora POS", "Advanced Checkout Solution", "Advanced Claim", "Advanced MD", "Advanced MD (Local)", "Advanced MD (Practice Fusion)", "Advanced MD (web-based)", "Advanced MD/MyCareIntegrity Advantics (Local)", "Advanced Mobile Payment", " Inc.", "Adyen", "Aesthetics Pro", "Affinity (Lab results)", "AgVision", "Agave Pay", " Inc.", "Agiliron", "Agiloft", "Agilysys", "Agilysys - Visual 1", "Agilysys Info Genesis", "Aims Software", "Aireus POS", "Alacriti Payments LLC", "Aldelo POS", "Alert Easy Pro", "Aliaswire Incorporated", "AllegianceMD", "Alter Trading", "Altru", "Amadeus", "Amazon Seller Central", "AmberPOS", "Ambur App", "Amdocs", "AmploAdvance", "Anderson Zaks", "Animal Hospital Management System", "Anthology", "Any", "Anywhere Commerce Payment Gateway", "AnywhereCommerce", "Appetize", "Appitize App", "Applied Micro Technology", "Applied Programming Services", "Aprima", "Apriva", "Apriva Gateway", "Aptos", "Aptos", " Inc.", "Arbelsoft", "Archeryproshop", "Ariane", "Ariba", "Artisan POS", "Arts People", "Aster Campground Manager", "Athena Collect", "Atrium", "Auction Payment Network", "Auric Systems", "Aurus", " Inc.", "Authorize.net", "Auto Manager", "Auto-Star Compusystems Inc.", "AutoClerk", "Autocanteen", "Availity", "Avalara", "Avant Garde Marketing Solutions", "Avimark", "Avimark (Local)", "Avrio POS", "Axiamed", "Azure B2C Auth.", "aptito"],
220    "B": ["B4Checkin", "BASYS Processing", "BCAP Holdings", " LLC", "BEVO POS", "BISGlobal", "BRAVApos", "BTB Soft", " Inc", "Bambora", "Baseline Solutions", "Beanstream", "Beanstream Inc.", "Beerboard", "Bemacash", "Be
220nseron IT Inc.", "Bepoz", "BidSpotter", "Big Commerce", "Bill1st Gateway", "BillandPay", "Bindo POS", "Birmingham Toledo", "Bite", "BizTracker Infinity", "Blackboard (Any)", "Blackline Partners", "Blue Parasol Group", " LLC", "Blue Print (Local)", "BlueFin Pay Gateway", "BluePay", "Bluefin Payment Systems", "Book4Time", "BookLog", "Bookeo", "BookingBug.com", "Bookstore Manager (BSMGR)", "Bora Payment Systems Payer Direct Hub", "Braintree", "Braintree Payment Solutions", "Brainworks Software", "Breadcrumb PRO", "BridgePay Gateway", "BridgePay Network Solutions", "Bright Pearl", "Brightree", "Brink POS", "Brink Software", " Inc.", "Brinkman Financial Company", " LP", "Britecore", "Bundle B2B", "Business Plus Accounting Restaurant Professional", "Buyer Quest", "Bypass Mobile", "Bytemark", " Inc."],
221    "C": ["C2P", "CASHNet", "CBC Computer Systems", "CBORD", "CC Direct", "CCAssist.Net", "CDS Global", "CKS Business Solutions", "CORS/headless CEF", "COSM / Salsa Labs", "CP Gateway", "CPA - Software HTK - Hamilton Transaction Kiosk", "CRC", "CS PracticeWorks", "CS SoftDent", "CS WinOMS", "CSG Systems Inc.", "CSI Enterprises", "CVPS", "CWT Application", "Cairo", "Cale Access AB", "Caledon Card Services", "Camp Spot", "CampGround Master", "Campground Automation", "Canary Technologies", "CardConnect", "CardConnect", " LLC", "CardFlight", "CardFlight Inc", "CardKnox", "CardKnox Payment Engine", "CardPointe", "CardWorks", "Cardinal Commerce", "Cardio", "Care Tracker", "Carelogic", "Carelogic (cloud-based)", "Carelogic (web-based)", "Carestream", "Carestream Practice Works Carestream SoftDent", "Carestream WINOMS", "Cash Register Express", "CashierLive", "Cashless", "Casio Inc.", "Castles Technology International", "Catapult POS", "Cayan", "Cegid Retail", "Cell Smart POS", "Cellfie Payment", "CenPOS", " Inc.", "CenPos", "CenterEdge", "Centricity", "Centricity (local)", "Chamber Master", "Charge Anywhere (formerly Comstar Interactive)", "Charge Anywhere", " LLC", "ChargeLogic", "ChargeLogic LLC", "ChargeOver", "Chargify", "Chart Perfect", "Check Inn", "Cheers POS", "ChiroOffice", "ChiroTouch", "ChiroTouch (Local)", "Choice Advantage", "Church Management Software", "CircIT", "Circuitree", "Clarity Marketplace", "Clarity Payment Hub", "Clarity eCommerce", "Clarity eCommerce x2", "Clarity eCommerce x4", "Clear Commerce", "Click2Gov", "ClickAway", "Clinic Dr", "ClinicSource", "Clinician", "Clinicient", "Clonallon (Fulfillment)", "Cloud 9", "Cloud 9 Payment Gateway", "Cloud PM", "Cloud POS (formally GopayGo)", "Clover", "Club Management System", "Club Prophet POS / POS Express", "Club Select", "ClubConnect Retail", "ClubEssential", "ClubReady", "ClubTec", "Code Metro", "Code and Go", "Coffee Shop Manager", "ComCash POS or ERP", "Comdata", "Command Retail", "Commerce 7", "CompanyBE", "Complete", "Comprise SmartPay", "Comprise Technologies Inc.", "Compudance", "Compulink", "Compulink (Local and Remote Desktop) Computer Age", "Computer Age (Local)", "Computer Dimensions", "Comtrex", "Conduent Transport Solutions", " Inc", "ConnectWise", "Constant Contact", "Constellation Payments (csipay)", "Continue to Give", "Cornerstone LMS", "CounterPoint", "Coupa", "Courtesy Attendant (IVR) / Web Attendant", "Cousinsco Merchant Services Inc.", "Credible", "Credit Card Advantage", "Credit Card Integration (CCI)", "CreditCall", "CreditCall LTD", "CrowdTorch Ticketing", "Cryptpay 2.18", "Crystal Commerce", "Crystal PM", "Crystal PM (Local)", "Crystal PM (remote server)", "Crystal Point POS", "Crystal Reports", "Cubic Transportation Systems", "Curbstone Card", "Curbstone Corporation", "Cure MD", "CurrencyPay", "Curve Dental", "Cust2mate", "Cvent", "CyberSource", "Cybersource", " Inc.", "Cycle Pro (web-based)", "commerce@work"],
222    "D": ["DATAMATX", " Inc.", "DBC Chiropractic", "DMS Plus", "DMS Systems", "DPA (Data Access Network Payment Application)", "DRB Systems", " Inc.", "DS3 (web-based", "DSN", "DataLine Systems", " Inc.", "DataPark", " Inc.", "DataTel", "Database", "Datasym Pro (Symfinite)", "Dataxstream", "Davlong/Medinformatix", "Daxko", "Dealer View / E-xact", "Dejavoo", "Delego Ca", "Delego Software Inc.", "Demo Reseller", "Dental 3 Solutions Soft", "Dental Lab CPM", "Dentasoft", "Dentimax (Local)", "Dentrix", "Dentrix (Local)", "Dentrix - Ascend", "Dentrix Ascend", "Dentrix Enterprise", "Diamond Payment Systems Payment Gateway 2.2", "Diebold Nixdorlf", "Dietary Food Management/DFM", "DigiCom", "Digital Dining", "Digital Iris", "Digital River", " Inc.", "Dime POS", "Dinerware", "Direct Connect", "Direct Insite", "Direct Payment Integrator", "Direct Vet Marketing", " Inc. dba Vets First Choice", "DoJiggy Golf/Auctions/Events/donations/Pledge", "Docebo LMS", "DocuTrac Office Therapy (Locally installed) Dolphin", "Docusign", "Docutap", "Dolphin", "Dolphin (Remote Server)", "Dolphin (Remote Server)/Eaglesoft (Remote Server) Dolphin", "Dosespot", "DoubleKnot", "Dover Fueling Solutions", "Dox", "Dr Chrono", "Dr Chronos", "Dr Chronos (local)", "Duxware (web-based)", "Dynamic Online CRM", "Dynamic RMS", "Dynamics 365"],
223    "E": ["E Thomas", "E-Payment Integrator", "E-Xact Gateway", "E-Xact Transactions", " Ltd", "EASYPay", "ECRS", "ECRS Software", "EFI", "EFI Printsmith", "EHR", "EIC", "EMDs (Remote Server)", "EMR Bear", "EPAYPOINT", "EPIC", "EPS Smart Payment", "EPX Electronic Payment E
223xchange", "ERP-ONE", "ERPLY", "EVO Sale", "EVO/PayFabric", "EVS", "EZ Claim (Local}", "EZ Dine", "EZ Software Solutions", "EZFacility", "EZIC Gateway", "EZIC", " Inc.", "Eaglesoft", "Eaglesoft (Local)", "Eaglesoft (RDP)", "Eaglesoft (remote server)", "Easitrax Remote Data Port", "Easy Dent", "Easy Dental", "Easy Dental (local)", "Easy Inn Keeping", "Easy Storage Solutions", "EasyPay Direct", "Eats365", "EchoSat", "Eclipse", "Eclipse (Local)", "EclubLogic", "EdgCapture", "Edge", "Ehungry", "Eigen Development", "Elavon Gateway Payment Solutions", "Electronic Payments", " Inc.", "Element Express Gateway", "Element FMS", "Eleos – Octopus", "Ellucian", "EmaginePOS", "Emdeon", "Emma (Cloud Based)", "Emmasoft", "Encompass", "Ennoview", "Enterprise Payment Solution", "Enterprise RX", "EnvisionWare eCommerce Services", "Epicor", "Epicor ERP", "Epicor cloud solutions (BisTrack)", "Equinox Payments", "Ethomas (Remote Desktop) Evident", "Event Smart", "Eventbrite", "Everest", "Exadigm", "Exatouch", "Excentus", "Exhibitor Suite", "Experity", "Eye Infinity Officemate", "Eyedoc PM", "Eyefinity", "Eyefinity EPM (Web-based)", "Eyefinity PM (Web-based)", "Eyefinity Practice Management", "Eyefinity Practice Management (cloud based) EZ Biz", "Eyefinity officemate", "e-Quantum", "e7", "eCW", "eConduit", " SensePass", "eFinesstri", "eGenuity", "eLube", "eMDS (Local)", "eMDs", "eMedical Fusion", "eMobile POS", "eNconcert", "ePass Software", "eProcessing Network Payment Gateway", "eProcessing Network", " LLC", "eScript", "eSoftPlanner", "eTix", "eVetPractice", "easyTithe", "eclipse (Local - Cloud)", "eposnow", "ezyvet"],
224    "F": ["FACTS", "FDA API", "FEXCO", "FINRA APIs", "FIPAY", "FIS Global", "FIServ", "FPN Mobile", "FTNI", "FTNI (Financial Transmission Network", " Inc.)", "FTS Solutions", "Factor Trust", "FasCard", "Fast Transact Gateway (sometimes VeloCT)", "FastCharge", "FatZebra", "Federal APD ScanNET", "Fellow EHR", "FellowshipOne", "Fidelio", "Fiesta Xcharge / Fiesta POS", "Figure POS", "File maker", "First Accept", "First Atlantic Commerce", "First Horizon Bank", "First Insight", "First Resort Software", "Fiscal Systems", " Inc.", "Fishbowl", "Flexis", "Flight System USA", " Inc.", "FloraNext", "Floristware", "Fluid Pay", "Fluid Pay", " LLC", "Focus POS", "Focus POS (Reseller of Focus POS)", "Focus POS Systems", "FoodTec POS", "FoodTec Solutions", "FoodTronix", "ForeUp", "Forte Payment Gateway (Formerly ACH Direct)", "Forte Payment Systems", "Fortis Payment Systems", " LLC dba Zeamster", "Four51", "Foxy (Formerly Foxy Cart)", "Freedom POS", "Freedom Pay", " SensePass", "FreedomPay", " Inc.", "Freeway", "Front Desk-Gym Management", "FrontClerk", "FrontDeskAnywhere", "FrontStream", "Frontstream Fast Transact", " LLC", "FullCount", "Fusebox Hosted Gateway", "Fusion", "Future POS"],
225    "G": ["GDPR", "GEM-CAR", "GK Software Solutions", "Galaxy Light Speed", "Galaxy POS", "Gaming Hospitality Solutions", " Inc.", "Garage.Net", "Gateway Ticketing", "Genius", "Geopagos", "Get Noble", "GiftLogic", "Gilbarco", "GivingFuel", "GivingKiosk", "Glace", "Glitnir", "Glitnir Ticketing", "Global Shop", "GoeMerchant", "GoldTech POS", "Goldline AutoCashier - Hardware", "Golf Masters", "GoodHire / Checkr", "GotoBilling", "Govolution", "Granbury", "Gravity Forms", "Gravity Payments", "Greenway", "Greenway (Citrix)", "Greenway (Local)", "Greenway (RPD - ehslaunch)", "Greenway (Remote Server)", "Greenway (Web-based)", "Greenway - Intergy", "Greenway Health", "Greenway Health - Intergy", "Greenway Health Intergy", "Greenway Intergy", "Greenway Intergy (Citrix))", "Greenway Intergy (Remote Server) Greenway Intergy (Web-based)", "Greenway Intergy off of Citrix", "Greenway Prime", "Groupon", "Grubbrr", "Guestmate", "Gusto", "goEmerchant"],
226    "H": ["HE Corp", "Handpoint", "Hangry - Ecom", "Harris Connect", "Health Fusion Next Gen Office", "Health Pay 24", "Heartland POS", "Helcim USA Inc.", "Henry Schein OMS Vision", "High Trek Ventures", "High-Line", "Highradius Corporation", "HikePOS", "HioPOS", "Home Inspection", "Horizon Retail Systems", "Host Bill", "Hot Sauce Technologies", "HotelKey", "Howell Data Systems", "HulaPOS"],
227    "I": ["IABOL", "IATS", "IBM Payment Gateway", "ICASHIER", "ICG Softw
227are Corp.", "IMS", "IMS (Local)", "IMS (Locally installed) IncaNotes", "IMenu360", "INIT", "INxSQL", "IPCharge", "IPS Express", "IPTranLT", "IQ-POS / RoomMaster 2000", "IQMS", "IRIS POS", "ISN", "ISS 45", "IT Retail", " Inc.", "ITWercs", "IdealPOS", "Ifinity", "Impromed", "Impromed Infinity Impromed Vet", "InOrder", "InTouch POS", "InTouch Receipting", "Incode", "Inet Portals", "Infinite Peripherals", "Infinity", "Infinity (Local)", "Infinnitt", "InfoGenesis POS", "Infonet Technology", "Infor Store", "Infor Vivonet", "InforHMS", "InfusionSoft", "Ingenico Group", "Ingenico Mobile Solutions", "Ingenico Mobile Solutions (Roam Data Gateway)", "Ingenico Payment Services", "Ingenico ePayments", "Innfinity", "Innotrac Corporation", "Innovative Computer Software", "Innovative Control Systems", "Innroad", "Innsoft Software", "Inovio Payments LLC", "Inservio", "Insight Salon Software", "Inspire Commerce Gateway", "InstaMed Communications", " LLC", "InstantAccept", "Intelligent Contacts", "Intelligent Voice Recognition", "Interactive Communications International", " Inc.", "Intergy", "Intergy (Local)", "Intergy (Web Based) Intergy from Greenway Intravet", "International Commerce Solutions (ICS)", "Internet Solutions For Insurance", "Intuit Health", "Invenco Group", "Invenstar LLC", "InvoiceCloud", "Iris Software", "Isalus", "Isalus (Web-based) Jane App", "Island Pacific", "iCheckGateway.com", "iCloud Pro", "iConnect", "iMedicWare", "iPOSpro", "iParc Professional", "iPatientCare", "iPay", "iPocket232 Inc (Wannlynx)", "iQMetrix", "iRipple", "iTerminal", "iTransact", "iVerticle"],
228    "J": ["JDA Direct", "JDA Software Group", "JPOS EMV", "Jack Henry & Associates", "Jamex", "Jamex Vending", "Jenzabar", "Jewels 2000", "Jonas Club Management", "Jotform", "Junction EOD"],
229    "K": ["KMIT Ticketing", "Kappture", "Kareo", "Kareo (Website) Management Plus MDOffice", "Karz", "Karz Systems", " Inc.", "Kentico Commerce", "KeyStone", "Khamu", "Khamu Solutions", "Kimbia", "Kindful", "Kioware", "Klavio", "Kliger-Weiss Infosystems", " Inc.", "Konnektive", "Kontactless", "Kounta", "Kubra"],
230    "L": ["L-POS", "LAVU", "LEAF POS", "LMS (custom)", "LMS lodging management software", "LOC Software", "LS Retail", "LUKE / SHELBY / EMS / IRIS or BOSS", "LavuPOS", "League Athletics", "Lemonstand", "Leo Software – APS", "Lethoff Gateway (LETex Epay)", "LexisNexis VitalChek Network Inc.", "LightSpeed", "Lighthouse", "Lightspeed OnSite", "Lightspeed POS", "Lightspeed Restaurant", "Limo Anywhere", "LinkPOS", "Livery Coach", "Lockbox", "LocoMobi", "Long Range Systems", "Loyale Healthcare", " LLC.", "Lynx Propane", "linked2pay", "loyverse"],
231    "M": ["M&M Enterprises", " Inc", "M9 POS", "MATRA Systems", " Inc.", "MBS Textbook Exchange", "MICROMD", "MICROS", "MMHayes", "MRL Pay (MRL Posnet Private Limited)", "MS Dynamics 365 Commerce", "MS Dynamics 365 F&O", "MacPOS", "Mad Mobile Inc", "Madmobile", "MaestroPMS", "Magazine Manager", "Magento", "Magento Multistore", "Magtek", " Inc.", "Mailchimp", "Maitre'D", "Maitre'D 2005", "Management", "MarcomCentral", "Marketo", "Mashgin", "MasterLinx", "Mastercard Payment Gateway", "Max Solutions Enterprise", "Med Infomatics", "Med Suite (cloud)", "Med USA", "MedFlow Complete", "Medasyst", " Inc.", "Medent (Remote Server) MedEvolve Medformics/Accuterm", "Medformix Medhost (Remote Server) Medical Manager", "Medisoft", "Medisoft (Local) Medisoft (Software) Medisoft EHR", "Meditab", "Meditab IMS", "Meditouch", "Meevo", "Member Zone", "MemberCentral", "MemberMax", "Menusifu", "Meraki", "Merchant Link Gateway with TransactionVault 1.01", "Merchant Link Universal Payment Gateway", "Merchant Partners Gateway", "Merchant Plus LLC", "Merchant Warehouse Gateway", "Merchant Warehouse Gateway (MWARE)", "Merchant+ or Merchant ST", "Merchant-Link", " LLC", "MerchantOS", "Mercury Payments", "Metagenics", "MetisPro", "Micro MD", "MicroBiz POS", "MicroSale", "Microbiz", "Micros 3700", "Micros 9700", "Micros Simphony", "Micros Simphony 2", "Microsoft", "Microsoft Dynamics 365 (MS)", "Microsoft Dynamics AX V2012 R2 (retail", "Midnite Express", "Midnite Express Slipstream", "Millenium Retail Solutions", "Miva Merchant", "Mobile QR", "Mobile Technologies International", "MobileBytes", "ModPay", "Module MD", "Module MD (web-based) Mountain Side Practice Management", "Monetary", "Monetra Technologies", " LLC", "Monetra TranSafe", "Money Movers", "Moodle LMS", "Mortgage Builder", "MotelPro", "MotionSoft", " Inc.", "Mountainside", "Munis", "My Client Plus", "My Vision Express", "My Vision Express (Local)", "MyCare Integrity", "MyHMS", "MyPMS", "Mycheck", "Mynt POS", "Myvenue", "mPayMe", "mStream (revel)", "mediawatt"],
232    "N": ["N Able MD", "NCR", "NCR Aloha", "NCR Aloha Suite", "NCR Cinema Manager", "NCR Corporation", "NCR Counterpoint", "NCR Quest", "NCR Secure Pay", "NCR Silver", "NCR Venue Manager", "NET PAY S.A.", "NETBilling", "NIC Services", " LLC", "NOVA POS", "NSDB LLC", "Nanocran", "Napa Valley POS", "National Merchant Center", "NayaxVEND", "NelNet", "NeonCRM", "Net ePay", "NetPark", "NetPos", "NetScore", "NetSirv", "NetSuite", "NetSuite - NSPOS", " ERP", "Netsmart (Web-Based)", "Netsuite\Onsite", "Network Merchants Gateway", "Network Merchants LLC", "Network Solutions", "Newbook", "NexTech (Local)", "Nextech", "Nextech Select PMS", "Nextep Systems", "NicheSoft", "NiteVision", "NitroSell", "Nobly", "No
232dus Technologies", " Inc.", "North American Bancard", "Nova Libra", "Novadine", "Nowcom", "NueMD"],
233    "O": ["OIDC", "OKTA", "OLB", "OLO", "OLO (Mobo Systems", " Inc.)", "OLS (Online Strategy Service) Payments", "OMS", "OMS Carestream", "OMS Touchmicro", "OMS Vision", "OMSVision", "ONOSYS", "OPMS (Local)", "OPW Fuel Management Systems", "Odyssey POS 2100", "Office Ally", "Office Ally (web-based)", "Office Mate", "Office Mate (EyeFinity)", "Office Mate (Local)", "Office Mate (Local) +1 Remote Server Office Practicum", "Office Mate (cloud-based)", "Office Therapy", "OfficeMate (Remote Sever) Officemate (Web-based) OfficeMate", "OfficeMate (cloud based) OfficeMate (Local)", "Officemate/E-finity", "Official Payments", "Official Payments Gateway", "Olympus POS", "Omni MD", "Omni MD (web-based)", "Omnico Group", "Omnique", "Omniticket Network", " LLC", "OnQ PM", "OnTop Systems", "One Inc.", "OneEach Technologies", "OnePOS", "OnePay", "Onsched (Pharmacy)", "Open Dental", "Open Dental (Local)", "Open PM (Web-Based)", "Open Practice Solutions", "Open Practice Solutions (web-based) OpenDental", "OpenEPS/WinEPS", "Opera PMS / Opera Light / Operetta / Opera Express", "Optimal Payments gateway", "Oracle Corporation", "Oracle Database", "Oracle Micros Xstore", "Oracle NetSuite POS", "Oracle Opera", "Oracle SuiteCommerce", "Oracle X Store", "Orbital Payment Gateway", "OrderPort POS", "Ordyx", "Ordyx POS", "Orion Systems", "Ortho 2 and SoftDent", "Ortho East (Local)", "Ortho2Edge", "OrthoTrac", "Orthoware", "Orthtrac (Thin Client)", "onePOS", " LLC"],
234    "P": ["P3 Hotels", "PAR", "PAX Technology", " Inc.", "PAY.ON", "PBS Endo", "PBS Endo (Local)", "PDQ Access CMS2", "PIXIFI", "POS Nail Store", "POS One", "POSBank USA", "POSLynx", "POSNet", " Inc.", "POSitouch", "PSN CCProcessing", "PSiGate", "PT Practice Pro", "Paciolan Ticketing", "Paladin POS", "Palm Coast Data", "Panasonic", "Paperless Transaction Corp.", "Paradigm", "Paradise POS", "ParkMobile / Phonixx", "Parkeon", "ParkingSoft", " LLC", "Parkmobile USA", " Inc.", "Partech", "Partech - Brink", "PassPort Parking", "Pathway POS", "Patient Care PCS", "Patient Navigation System", "PatronPath", "Pay Pal Express", "PayByPhone", "PayCertify", "PayGo", "PayGuardian", "PayJunction", "PayPal", " Inc.", "PayPlaza", "PayPoint", "PayRazr", "PaySabre", "PaySimple", "PaySpan", "PayTrace", "PayTrace Virtual Terminal", "PayWay", "Paycom", "Payfirma", "Payflow Link", "Payflow Pro", "Paygistix Gateway", "Payix Incorporated", "Payment Collect for Quick Books", "Payment Express", "Payment Logistics Ltd.", "Payment Portal (eLation)", "Payment Processing Partners", " Inc", "Payment Safe", "Payment Service Network", "Payment Switch Framework Auth & Settlement Suite", "Payment Vision / PayWeb", "Payment WorkSuite", "Paymentree", "Payments 360", "Paymentsite", "Paymentus Corporation", "Paymentwall", "Paymetric", "Payoneer", "Payrix", "Paysafe [fka Meritus Payment Solutions]", "Paysafe [fka Optimal Payments]", "Paystation", "Paystream", "Payvision", "Payware Connect", "Payware Mobile (APP)", "Payway", " Inc.", "Paywire Incorporated", "Perfectcare STI", "Personify360", "PestPac", "PheoniXGate", "PhoeniXAccess", "PhoeniXPoint", "Phoenix Managed Networks", "Pinnacle Corporation", "Pinnacle POS", "PixelPoint POS (InFusion)", "Platinum Systems", "Plazsoft", "Ploutos Holdings", " LLC dba PrismPay", "Plug N Pay Technologies", " Inc.", "Plug N Pay WebXpress", "Point Secure Commerce Application (SCA) MX", "Point Secure Commerce Application (SCA) VX", "Point of Success", "PointOS", "Points of Charity", "Posera", "Post Affiliate Pro", "Powercode.com", "Poynt", "Practice Director", "Practice Director Insight", "Practice Fusion", "Practice Management", "Practice Studio", "Practice Suite", "Practice Web EMR (Local) Practice Work (Local) Practice Works", "Practice Works (Local) PracticeEHR PracticeWorks", "Precidia Technologies", "Prestashop", "Presto", "PrintSites", "Printtixusa", "Prism POS", "Prism Pay", "Prism RBS", "Prism RBS - Nebraska Book", "Prism for Windows", "Pro 2013/NEXT", "ProTicket / ProScan / Uticket / Uscan", "ProVenue Max", "Procare online", "Profit Boost", "Profit Series POS", "ProfitMaker", "ProfitStars EPS", "Profitek", "PrognoCIS", "PrognoCIS (web-based) PsychAdvantage", "Pronto Servicio", "Pronto Software", "Property Info", "Property Management System", "PropertyPlus", "Prophet21", "Protobase", "Pubnub (SMS texts)", "Pulse", "Punchout2Go", "Purchase Express Online", "PureJoin – Robust", "Pxier", "payworks mPOS", "pcAmerica"],
235    "Q": ["QS/1 Data Systems", "QS/1 PaySentry", "Qalize", "Qgiv", "QikServe", "Quetzal Pos", "Quick Service Technologies", "QuickCharge POS", "Quickbooks", "Quickbooks Desktop", "QuikPAY 2013+", "QuikServe Solutions", "QuikStor Express", "Quotewerks"],
236    "R": ["RATEX Business Solutions", "RB Control Systems", "RB POS", "RDP", "RES (3700)", "RICS Software", "RITA Server Now called Payware Transact", "RITE Card Defender (Semi-Integrated to RMS)", "RMH", "RMS (Restaurant Management Solutions)", "RMS - Counterpoint", "ROAMPay", "RPOS", "RPower", "RS-POS", "RTL Payment Systems", "RTMS", "RTP One", "RYKO Car Wash", "Rabbit MQ", "Rain POS", "RainMaker", "Raisers Edge / Net Community / BlackBaud", "Rapid by ACOM RescueNet", "Ratex POS*VR", "Razmobile.com", "Ready Stay/ 
236Soft Hotel", "Ready to Pay", "Real Time Res", "Realtime POS", "Rec1", "Recurly", "RedFin POS", "RedPodium", "Reflection POS", "RegFox", "Remedly", "Rent Café", "Rent Centric", "RentPayment (Instant Software)", "RentWorks 4", "Rental Elite", "Rental Essentials", "Rental Expert", "Rentalman", "Repair Shop R", "RepairShopr", "ResNexus", "Reservation Management System", "Resident Connect", "Resnexus", "Resort Suite", "ResortSuite", "Restaurant Manager", "Restaurant Pro Express", "Restuarant POS", "Retail Management Solutions (RMS)", "Retail Management System", "Retail Pro POS", "Retail Script POS", "Retailsoftware", "Retalix (Retail One)", "Revel", "Revel POS", "Revention", "Revention POS", "Revolution (Web-based) Revolution (Web-based) Revolution", "Revolution EHR (Web-based) RevolutionEHR", "Revonu POS (Private Label of U Charge)", "RezOvation GT", "RezStream", "Robiccon", "RocketGate", "RocketGate LLC", "Rogers Software", "RoomKey", "Roseman", "RosySalonSoftware", "RunMyClub", "rGuest", "revolution"],
237    "S": ["SABO", "SAM4s", "SAML 2.0", "SAP", "SAP One", "SCA_0_TSTU", "SEMNOX Solution LLC", "SETECS Mobile Technologies", "SICOM POS", "SICOM Systems", "SMS Host Software", "SPS-2000", "SRO4", "SSO-ADPS", "STI", "SVM", "SYSTime", "Sabor POS", "Sage Pay", "Sale Point Data", "SalePoint", " Inc.", "SalesForce", "SalesPad / CardControl", "Salesforce.com", "SalonBiz", "Sankar N", "Sapphire", "Scantron", "Scheidt & Bachmann", "Scheidt & Bachmann GbmH", "Script Pro", "Secure payment processing", "SecureGive", "SecureNet Gateway", "SecureTrading", " Inc.", "Seito", "Selby Soft", "Selectron", "SellWise Pro", "SensePass", " Clarity Integrations", "Sentinel MMS (Meter Management System)", "Sequel Med (Local) Sequelmed", "Sequoia Retail Systems", " Inc.", "Sertifi", "ServSuite", "Service Fusion", "Service Now", "Servy", "Servy-Grab", "Seven Rooms - HPC", "SevenRooms", "Sharepoint", "Shiji (US) Inc dba Shiji Payment Solutions", "ShoWorks", "Shoot Q", "ShopKeep", "ShopKeep POS", "ShopVox", "Shopify", "Shopify POS", "ShowClix", "Sigma Payments", "Signal Mountain", "SilverWare POS", "Silverlake Axis", "Silverware", "Silverware POS", " Inc.", "Simphony", "Simple Practice SimplePractice", "Simple Spa", "SimplePay Solutions", "SimplyGenius", "Siriusware", "Sirvoy", "SiteLink", "SiteLink Web", "Sitefinity", "Sitio Uno Inc", "Skidata", "Skyware Hospitality", "Slim CD", "Slim CD Gateway", "SmartOSC", "SmartTab POS", "Smarter Commerce", "Smith & Company LLC", "SnapPay", "Soft Touch POS", "SoftDent", "SoftDent (Carestream) Softdent (Local) SteamlineMD", "SoftPoint", "SoftPoint LLC", "SoftVoyage", "Sombrero Pay", "Sonido Software", "SpaSalon Edition", "SpaSoft", "SparrowOne", "Spectrum NG", "Spirits 2000", "SplitIt", "SportsIT", "Spreedly", "Spring Board Retail", "Springer Miller", "Springer Miller - SpaSoft", "Spruceware.Net", "Squirrel", "Squirrel Professional", "Squirrel Systems", "Squirrel in a box", "Stadium One Software", "Stadium1", "Star-Plus", "StarPlus", "StayNTouch", "Stitch Labs", "Store 21 / DataAdvantage", "Storis", "Stratus Touch", "Streamline MD StreamlineMD", "Studio Director", "Sucessware21", "Suite PMS/Touch Point of Sale", "Sumac", "Summit Ordering Systems", "SunGard One Point", "Sunlync Select 8", "SuperCharge (Transcend)", "SuperMenu", "SureGate", "SurePOS Ace", "Surescripts", "SwipeSimple", "Syn-Tech Systems", " Inc.", "SynXis PMS", "Sypram Software", "Systopia"],
238    "T": ["T2 Flex", "T2 Systems Canada Inc.", "T3 Gateway (T3 HPS Gateway)", "TALON ES (Enterprise Solution)", "TCPP", " LLC dba Trust Commerce", "TCS Reservations", "TD Bank- Merchant Services", "TDO", "TDO (Local)", "TDO (Remote Server) TDO Endo", "TIBA", "TM Vista Version", "TMS (Textile Management System)", "TNG", "TNSPay", "TRANePay/TranServer", "TSYS", " Fiserv", "TabKing", "TablePay", "TableSafe", "Tacit", "Talech", "Tapin2", "Task", "Tattoo Management Studio Express", "Team Approach", "Teamwork", "Telogis", "Tempus Technologies", " Inc.", "Tender Retail / Merchant Connect", "Tender Retail Systems", "Tenerum", "Tenerum LLC", "Tennis Source", "Tessitura Network", "Test Account", "Tgate (aka BridgePay)", "The Assistant Manager", "The Digital Office TDO Therapist Helper Therapy Notes", "The General Store POS", "The Shubert Organization", "The Site Controller", "The Software Mill", "The ai Corporation", "The giftcard cafe.com", "Thermeon Ltd", "Thinsoft", "Thrift Cart", "ThriftCart", "Ticket Sage", "TicketForce", "TicketSpice", "Ticketech International", " Ltd.", "TigerPOS", "Tillster", " Inc.", "Tire Power", "Tix", "Tops Ortho", "Toshiba Global Commerce", "Toshiba Tec", "Total Computing Solutions", "Total Ticketing", "Total Touch", "Total Touch POS", "Totaltransact", "TouchBistro", "TouchNet", "TouchNet Information Systems", "Tower", "Tracelink", "TrackTrace Rx", "TrakNet", "TrakNet (Local) TRAKnet PM TransWorld", "Transact - Blackboard", "TransactPOS", "Transaction Resources", " Inc", "Transactis", "Transax Gateway", "Transparency X", "TranzPay", "Tray", "Treatware", "Tri-Nexium", "Trinexum", "Triple E Technologies", " LLC", "Tritech", "TruBridge CPSI Uprise", "TrustCommerce", "Twin Oaks Software", "Two Breads", "Tyler Cashiering", "Tyler Payments", "triPOS"],
239    "U": ["UP-3500 POS", "UP-700 POS", "UP-820F POS", "UP-820N POS", "US eDirect", " Inc", "USAePay", "Uaccept POS", "UltraCamp", "Ungerboek Software", "Uniform Industrial Corp", "United Merchant Services", " Inc.", "United Payment Services", "Universal Payments Inc.", "UpNGo", "Uprise EMR", "Upserve", "uNotifi"],
240    "V": ["V6", "VPOS", "VR7000 QT6100", "VRP", "Vai S2K", "Valant", "Valor PayTech", " LLC", "ValuTrac Pro", "Value Payment Systems", "Vector Plus", "Vela POS", "Velocity Payment Systems", "VenStation", "VenTek", "Vend", "Vendini", "Ventanex", "VenueNext", "Venuetize", "Veracity", "Verafy", "VeriFone", "Verifi", "Verifone 
240(AJB)", "Verisoft Americas Inc", "Veritix", "VeroTech Systems", "Versa POS", "Vesta Corporation", "Vet Badger", "VetSpire", "Vetter", "Via (Local)", "Vin65", "Vin65 POS", "Vindicia", " Inc.", "Vision Payments POS", "Vision Wine POS", "Vision9", "Vista Entertainment Solutions", "Vista Point of Sale", "Visual Anthology", "Visual Matrix", "Visual One", "Visual Ticket", "Vitu", "Vivonet", "Vivonet POS", "Voice Data Solutions", "Volante Systems", "VolanteSystems", "Volusion", "Vrindi", "vSecure Processing"],
241    "W": ["WEBpt", "Walmart Marketplace", "Wave Ortho", "Wayfair", "Web Payment Software", "Web2Pay", "Webrezpro", "WeighPay", "Well Done POS", "Western Union Payment Services", "WhizPay", "Wild Apricot", "WinOMS", "WinOMS (Local) WinOMS CS", "WinPM", "WinPrism", "WinScan POS", "WinWorks", "Windcave Inc.", "Windward System Five", "WnetCard", "Woo Commerce", "WooCommerce", "Woocommerce", "WorldPay [fka Element Payment Services]", "Worldnet Gateway", "Worldnet TPS", "Wufoo", "Wylie Systems", "WynGuest (was Softhotel)", "wandcorp"],
242    "X": ["X Catalyst", "XAC Automation Corp", "XLDent", "XY Retail", "XiPay Vital", "Xpient", "Xpient Credit Card Application", "Xpient Solutions", " LLC", "Xpress Solutions Inc", "Xpress-pay.com", "Xsite Enterprise"],
243    "Y": ["Yahoo! Aabaco Small Business", "Yardi Payment Processor", "Yardi Systems", " Inc.", "YesMua Corp."],
244    "Z": ["ZEAG Parking Equipment (WebPARCS)", "ZNODE", "Zeamster", "Zen Planner", "Zendesk", "Zenoti", "Ziosk", "Zuora"],
245};
246
247        
248        // Enhanced domain matching with common patterns
249        const domainMappings = {
250            'authorize.net': 'authorize.net',
251            'braintree': 'braintreepayments.com',
252            'paypal': 'paypal.com',
253            'cybersource': 'cybersource.com',
254            'first data': 'firstdata.com',
255            'tsys': 'tsys.com',
256            'global payments': 'globalpaymentsinc.com',
257            'worldpay': 'worldpay.com',
258            'heartland': 'heartlandpaymentsystems.com',
259            'clover': 'clover.com',
260            'square': 'squareup.com',
261            'shopify': 'shopify.com',
262            'woocommerce': 'woocommerce.com',
263            'bigcommerce': 'bigcommerce.com',
264            'magento': 'magento.com',
265            'quickbooks': 'intuit.com',
266            'toast': 'toasttab.com',
267            'lightspeed': 'lightspeedhq.com',
268            'aloha': 'ncr.com',
269            'micros': 'oracle.com',
270            'dentrix': 'henryschein.com',
271            'eaglesoft': 'pattersondental.com',
272            'open dental': 'opendental.com',
273            'athena': 'athenahealth.com',
274            'epic': 'epic.com',
275            'cerner': 'cerner.com',
276            'netsuite': 'netsuite.com',
277            'salesforce': 'salesforce.com',
278            'hubspot': 'hubspot.com',
279            'mailchimp': 'mailchimp.com',
280            'constant contact': 'constantcontact.com',
281            'zendesk': 'zendesk.com',
282            'freshdesk': 'freshdesk.com'
283        };
284
285        function getCleanDomain(name) {
286            const cleanName = name
287                .replace(/\s*\(.*?\)\s*/g, '')
288                .replace(/\s*-\s*/g, ' ')
289                .replace(/\s+/g, ' ')
290                .trim()
291                .toLowerCase();
292            
293            // Check for direct mapping first
294            for (const [key, domain] of Object.entries(domainMappings)) {
295                if (cleanName.includes(key)) {
296                    return domain;
297                }
298            }
299            
300            // Clean and extract domain
301            let domain = cleanName
302                .replace(/[^a-z0-9\s]/g, '')
303                .replace(/\s+/g, '')
304                .replace(/inc|llc|corp|corporation|ltd|limited|software|systems?|solutions?|technologies|technology|tech|pos|payment|payments|gateway$/gi, '');
305            
306            return domain;
307        }
308
309        function getLogoUrls(name) {
310            const domain = getCleanDomain(name);
311            const variations = [
312                domain,
313                domain.replace(/pos$/, ''),
314                domain.replace(/pay$/, ''),
315                domain + 'pos',
316                domain + 'pay'
317            ].filter(d => d.length > 2);
318            
319            const urls = [];
320            
321            // Try each domain variation with multiple services
322            variations.forEach(d => {
323                urls.push(`https://logo.clearbit.com/${d}.com`);
324                urls.push(`https://img.logo.dev/${d}.com?token=pk_X-WygUahQHmFmturHbd4DQ`);
325                urls.push(`https://unavatar.io/${d}.com`);
326            });
327            
328            // Add favicon as last resort
329            urls.push(`https://www.google.com/s2/favicons?domain=${domain}.com&sz=128`);
330            
331            return urls;
332        }
333
334        function getInitials(name) {
335            const words = name.split(' ').filter(w => w.length > 0);
336            if (words.length >= 2) {
337                return (words[0][0] + words[1][0]).toUpperCase();
338            }
339            return name.substring(0, 2).toUpperCase();
340        }
341
342        function getIntegrationType(name) {
343            const nameLower = name.toLowerCase();
344            if (nameLower.includes('gateway') || nameLower.includes('payment') && !nameLower.includes('pos')) return 'gateway';
345            if (nameLower.includes('pos') || nameLower.includes('point of sale')) return 'pos';
346            if (nameLower.includes('dental') || nameLower.includes('medical') || nameLower.includes('health') || nameLower.includes('clinic') || nameLower.includes('ehr') || nameLower.includes('emr')) return 'healthcare';
347            if (nameLower.includes('restaurant') || nameLower.includes('food') || nameLower.includes('dining')) return 'restaurant';
348            if (nameLower.includes('retail') || nameLower.includes('store')) return 'retail';
349            if (nameLower.includes('accounting') || nameLower.includes('quickbooks') || nameLower.includes('bookkeeping')) return 'accounting';
350            if (nameLower.includes('ecommerce') || nameLower.includes('shop') || nameLower.includes('cart') || nameLower.includes('commerce')) return 'ecommerce';
351            return 'default';
352        }
353
354        function getIntegrationTypeLabel(type) {
355            const labels = {
356                'gateway': 'Payment Gateway',
357                'pos': 'POS System',
358                'healthcare': 'Healthcare',
359                'restaurant': 'Restaurant',
360                'retail': 'Retail',
361                'accounting': 'Accounting',
362                'ecommerce': 'E-Commerce',
363                'default': 'Business Software'
364            };
365            return labels[type] || labels.default;
366        }
367
368        function tryLoadingLogo(logoElement, urls, index = 0) {
369            if (index >= urls.length) {
370                const name = logoElement.getAttribute('data-name');
371                const type = logoElement.getAttribute('data-type');
372                logoElement.innerHTML = '';
373                const placeholder = document.createElement('div');
374                placeholder.className = `integration-logo-placeholder ${type}`;
375                placeholder.textContent = getInitials(name);
376                logoElement.appendChild(placeholder);
377                return;
378            }
379
380            const img = document.createElement('img');
381            img.src = urls[index];
382            img.alt = logoElement.getAttribute('data-name');
383            
384            img.onload = function() {
385                if (this.naturalWidth > 10 && this.naturalHeight > 10) {
386                    logoElement.innerHTML = '';
387                    logoElement.appendChild(this);
388                } else {
389                    tryLoadingLogo(logoElement, urls, index + 1);
390                }
391            };
392            
393            img.onerror = function() {
394                tryLoadingLogo(logoElement, urls, index + 1);
395            };
396        }
397        
398        function debounce(func, delay = 200) {
399    let timeout;
400    return function(...args) {
401        clearTimeout(timeout);
402        timeout = setTimeout(() => func.apply(this, args), delay);
403    }
404}
405
406
407        function populateIntegrations() {
408            const grid = document.getElementById('integrationsGrid');
409            const alphabetNav = document.getElementById('alphabetNav');
410            
411            if (!grid || !alphabetNav) {
412                return;
413            }
414            
415            grid.innerHTML = '';
416
417            const letters = Object.keys(integrations).sort((a, b) => {
418                if (a === '0-9') return -1;
419                if (b === '0-9') return 1;
420                if (a === '#') return -1;
421                if (b === '#') return 1;
422                return a.localeCompare(b);
423            });
424
425            letters.forEach(letter => {
426                if (letter !== '0-9' && letter !== '#') {
427                    const link = document.createElement('a');
428                    link.href = `#section-${letter}`;
429                    link.textContent = letter;
430                    alphabetNav.appendChild(link);
431                }
432            });
433
434            letters.forEach(letter => {
435                const section = document.createElement('div');
436                section.className = 'letter-section';
437                section.id = `section-${letter}`;
438
439                const header = document.createElement('div');
440                header.className = 'letter-header';
441
442                const badge = document.createElement('div');
443                badge.className = 'letter-badge';
444                badge.textContent = letter === '0-9' ? '#' : letter;
445
446                const info = document.createElement('div');
447                info.className = 'letter-info';
448
449                const title = document.createElement('div');
450                title.className = 'letter-title';
451                title.textContent = letter === '0-9' ? 'Numbers & Symbols' : letter === '#' ? 'Symbols' : letter;
452
453                const count = document.createElement('div');
454                count.className = 'letter-count';
455                count.textContent = `${integrations[letter].length} integration${integrations[letter].length !== 1 ? 's' : ''}`;
456
457                info.appendChild(title);
458                info.appendChild(count);
459                header.appendChild(badge);
460                header.appendChild(info);
461                section.appendChild(header);
462
463                const gridDiv = document.createElement('div');
464                gridDiv.className = 'integration-grid';
465
466                integrations[letter].forEach(name => {
467                    const card = document.createElement('div');
468                    card.className = 'integration-card';
469                    card.setAttribute('data-name', name.toLowerCase());
470
471                    const type = getIntegrationType(name);
472                    const logo = document.createElement('div');
473                    logo.className = 'integration-logo';
474                    logo.setAttribute('data-name', name);
475                    logo.setAttribute('data-type', type);
476
477                    const logoUrls = getLogoUrls(name);
478                    tryLoadingLogo(logo, logoUrls);
479
480                    const infoDiv = document.createElement('div');
481                    infoDiv.className = 'integration-info';
482
483                    const nameDiv = document.createElement('div');
484                    nameDiv.className = 'integration-name';
485                    nameDiv.textContent = name;
486
487                    const typeDiv = document.createElement('div');
488                    typeDiv.className = 'integration-type';
489                    typeDiv.textContent = getIntegrationTypeLabel(type);
490
491                    infoDiv.appendChild(nameDiv);
492                    infoDiv.appendChild(typeDiv);
493
494                    card.appendChild(logo);
495                    card.appendChild(infoDiv);
496                    gridDiv.appendChild(card);
497                });
498
499                section.appendChild(gridDiv);
500                grid.appendChild(section);
501            });
502        }
503        
504        
505
506        const searchBox = document.getElementById('searchBox');
507if (searchBox) {        
508searchBox.addEventListener('input', debounce(function(e) {
509    performSearch(e.target.value.toLowerCase().trim());
510}, 400)); // 400ms delay
511}
512
513function performSearch(searchTerm) {
514    const cards = document.querySelectorAll('.integration-card');
515    const sections = document.querySelectorAll('.letter-section');
516    const searchResults = document.getElementById('searchResults');
517    const noResults = document.getElementById('noResults');
518    let visibleCount = 0;
519
520    if (searchTerm === '') {
521        cards.forEach(card => card.classList.remove('hidden'));
522        sections.forEach(section => section.classList.remove('hidden'));
523        searchResults.classList.remove('visible');
524        noResults.classList.remove('visible');
525        return;
526    }
527
528    cards.forEach(card => {
529        const name = card.getAttribute('data-name');
530        const nameElement = card.querySelector('.integration-name');
531        const originalText = nameElement.textContent;
532
533        if (name.toLowerCase().includes(searchTerm)) {
534            card.classList.remove('hidden');
535            visibleCount++;
536            const regex = new RegExp(`(${searchTerm})`, 'gi');
537            nameElement.innerHTML = originalText.replace(regex, '<span class="highlight">$1</span>');
538        } else {
539            card.classList.add('hidden');
540            nameElement.innerHTML = originalText;
541        }
542    });
543
544    sections.forEach(section => {
545        const visibleCards = section.querySelectorAll('.integration-card:not(.hidden)');
546        section.classList.toggle('hidden', visibleCards.length === 0);
547    });
548
549    noResults.classList.toggle('visible', visibleCount === 0);
550    searchResults.classList.toggle('visible', visibleCount > 0);
551    if (visibleCount > 0) {
552        searchResults.innerHTML = `<strong>${visibleCount}</strong> integration${visibleCount !== 1 ? 's' : ''} found`;
553    }
554}
555
556
557        const backToTop = document.getElementById('backToTop');
558
559		if (backToTop) {
560            window.addEventListener('scroll', function() {
561                if (window.pageYOffset > 400) {
562                    backToTop.classList.add('visible');
563                } else {
564                    backToTop.classList.remove('visible');
565                }
566            });
567
568            backToTop.addEventListener('click', function(e) {
569                e.preventDefault();
570                window.scrollTo({ top: 0, behavior: 'smooth' });
571            });
572        }
573
574        document.addEventListener('click', function(e) {
575            if (e.target.matches('.alphabet-nav a')) {
576                e.preventDefault();
577                const target = document.querySelector(e.target.getAttribute('href'));
578                if (target) {
579                    const offset = 120;
580                    const targetPosition = target.getBoundingClientRect().top + window.pageYOffset - offset;
581                    window.scrollTo({ top: targetPosition, behavior: 'smooth' });
582                }
583            }
584        });
585
586        populateIntegrations();
587
588
589// Payment Integrations Page popup form JS
590
591document.addEventListener("DOMContentLoaded", () => {
592
593    const modal = document.getElementById("custom-popup");
594    const btn = document.querySelector(".open-popup");
595    const span = document.querySelector(".popup-close");
596    
597    if (!modal || !btn || !span) {
598        return;
599    }
600
601    btn.addEventListener("click", function (e) {
602        e.preventDefault();
603        modal.style.display = "flex";
604        modal.style.opacity = "1";
605        modal.style.visibility = "visible";
606    });
607
608    span.addEventListener("click", function () {
609        modal.style.display = "none";
610        modal.style.opacity = "0";
611        modal.style.visibility = "hidden";
612    });
613
614    window.addEventListener("click", function (event) {
615        if (event.target === modal) {
616            modal.style.display = "none";
617            modal.style.opacity = "0";
618            modal.style.visibility = "hidden";
619        }
620    });
621
622});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.