8181 var video = '<iframe allowfullscreen src="' + $ ( this ) . attr ( 'data-video' ) + '"></iframe>' ;
8282 $ ( this ) . replaceWith ( video ) ;
8383 } ) ;
84-
85- // -----------------------------
86- // Contact Form
87- // -----------------------------
88-
89- // Rate limiting: Track last submission time
90- var lastSubmissionTime = 0 ;
91- var submissionCooldown = 60000 ; // 60 seconds between submissions
92-
93- // Simple input sanitization function
94- function sanitizeInput ( input ) {
95- var div = document . createElement ( 'div' ) ;
96- div . appendChild ( document . createTextNode ( input ) ) ;
97- return div . innerHTML ;
98- }
99-
100- $ ( '#contact' ) . submit ( function ( event ) {
101- event . preventDefault ( ) ;
102-
103- // Rate limiting check
104- var currentTime = Date . now ( ) ;
105- if ( currentTime - lastSubmissionTime < submissionCooldown ) {
106- var remainingTime = Math . ceil ( ( submissionCooldown - ( currentTime - lastSubmissionTime ) ) / 1000 ) ;
107- alert ( 'Please wait ' + remainingTime + ' seconds before submitting again.' ) ;
108- return false ;
109- }
110-
111- // Honeypot check - if filled, it's likely a bot
112- if ( $ ( '#honeypot' ) . val ( ) !== '' ) {
113- console . log ( 'Spam detected' ) ;
114- $ ( '#contact' ) . remove ( ) ;
115- $ ( '#contact-error' ) . fadeIn ( ) ;
116- return false ;
117- }
118-
119- // Get and sanitize form values
120- var name = sanitizeInput ( $ ( '#name' ) . val ( ) . trim ( ) ) ;
121- var email = sanitizeInput ( $ ( '#email' ) . val ( ) . trim ( ) ) ;
122- var message = sanitizeInput ( $ ( '#message' ) . val ( ) . trim ( ) ) ;
123-
124- // Additional validation
125- if ( name . length < 2 || name . length > 100 ) {
126- alert ( 'Name must be between 2 and 100 characters' ) ;
127- return false ;
128- }
129-
130- if ( email . length > 255 ) {
131- alert ( 'Email address is too long' ) ;
132- return false ;
133- }
134-
135- if ( message . length < 10 || message . length > 5000 ) {
136- alert ( 'Message must be between 10 and 5000 characters' ) ;
137- return false ;
138- }
139-
140- // Disable submit button to prevent double submission
141- var submitBtn = $ ( '#submit-btn' ) ;
142- submitBtn . prop ( 'disabled' , true ) ;
143- submitBtn . text ( 'Sending...' ) ;
144-
145- $ . ajax ( {
146- method : "POST" ,
147- url : "https://app.99inbound.com/api/e/74bnVMQv" ,
148- data : {
149- name : name ,
150- email : email ,
151- message : message
152- } ,
153- timeout : 30000 , // 30 second timeout
154- success : function ( data ) {
155- lastSubmissionTime = Date . now ( ) ;
156- $ ( '#contact' ) . remove ( ) ;
157- $ ( '#contact-success' ) . fadeIn ( ) ;
158- } ,
159- error : function ( xhr , status , error ) {
160- console . error ( 'Form submission error:' , status , error ) ;
161- submitBtn . prop ( 'disabled' , false ) ;
162- submitBtn . text ( 'Submit' ) ;
163- $ ( '#contact' ) . remove ( ) ;
164- $ ( '#contact-error' ) . fadeIn ( ) ;
165- }
166- } ) ;
167- } ) ;
16884 } ) ;
16985
17086} ) ( jQuery ) ;
0 commit comments