PageSourceSearch

https://addyp.com/listing/rajasthan/jaipur/others/savra-suit-shop-in-jaipur

html addyp.com collected 2026-09-24 10:04:38 UTC 162,846 bytes, 5,222 lines download raw bytes

1<!DOCTYPE html>
2<!--[if IE 9]><html class="lt-ie10" lang="en"> <![endif]-->
3<html lang="en">
4<head>
5		<style>
6			/* =========================================================
7			   UNIFIED CONTENT DESIGN SYSTEM
8			   One consistent "card" + "section heading" treatment used
9			   across Description, Gallery, Services, Products, Features,
10			   Coupons, Reviews, Social Links, Hours, Service Area,
11			   Download section, and the sidebar blocks. Neutral palette
12			   (white cards on light grey) with the sitewide amber accent
13			   (#ffb400) — safe across addyp.com / wehelp.in / bharathlisting.com.
14			========================================================= */
15			:root {
16				--dp-bg: #f3f4f6;
17				--dp-card-bg: #ffffff;
18				--dp-card-radius: 14px;
19				--dp-card-padding: 28px;
20				--dp-card-padding-sm: 18px;
21				--dp-card-shadow: 0 2px 14px rgba(15, 23, 42, .07);
22				--dp-card-border: 1px solid rgba(15, 23, 42, .06);
23				--dp-card-gap: 22px;
24				--dp-accent: #ffb400;
25				--dp-heading-color: #22262e;
26				--dp-text-color: #4b5563;
27			}
28
29			body.tpl-listing {
30				background: var(--dp-bg);
31			}
32
33			body.tpl-listing #business-header,
34			body.tpl-listing .jd-navbar {
35				background: #fff;
36			}
37
38			.content-card {
39				background: var(--dp-card-bg);
40				border-radius: var(--dp-card-radius);
41				border: var(--dp-card-border);
42				box-shadow: var(--dp-card-shadow);
43				padding: var(--dp-card-padding);
44				margin: 0 0 var(--dp-card-gap);
45			}
46
47			.content-card > hr.heading-divider {
48				display: none;
49			}
50
51			.content-card:last-child {
52				margin-bottom: 0;
53			}
54
55			.section-heading {
56				font-size: 19px !important;
57				font-weight: 700 !important;
58				letter-spacing: .2px;
59				color: var(--dp-heading-color) !important;
60				margin: 0 0 18px !important;
61				padding-bottom: 12px;
62				border-bottom: 3px solid var(--dp-accent);
63				display: inline-block;
64			}
65
66			@media (max-width: 768px) {
67				.content-card {
68					padding: var(--dp-card-padding-sm);
69					border-radius: 12px;
70					margin-bottom: 16px;
71				}
72
73				.section-heading {
74					font-size: 17px !important;
75				}
76			}
77
78			.other-cities-chips {
79				display: flex;
80				flex-wrap: wrap;
81				gap: 8px;
82			}
83
84			.other-cities-chip {
85				font-size: 13.5px;
86				color: #444;
87				background: #f5f5f5;
88				border: 1px solid #eee;
89				border-radius: 50px;
90				padding: 6px 14px;
91				transition: background .15s ease, color .15s ease;
92			}
93
94			@media (hover: hover) and (pointer: fine) {
95				.other-cities-chip:hover {
96					background: var(--dp-accent);
97					color: #1a1a1a;
98					text-decoration: none;
99				}
100			}
101
102			.show-contacts {
103				position: relative;
104				height: 150px;
105			}
106
107			.show-contacts div {
108				position: absolute;
109				top: 0;
110				bottom: 0;
111				left: 0;
112				right: 0;
113				text-align: center;
114			}
115
116			.show-contacts img {
117				height: 100%;
118				filter: blur(2px);
119				-webkit-filter: blur(2px);
120			}
121
122			.show-contacts button {
123				position: relative;
124				left: 20%;
125				top: 39%;
126			}
127
128			.extra-blur {
129				filter: blur(5px);
130				pointer-events: none;
131				user-select: none;
132			}
133			.contact-actions {
134    display: flex;
135    flex-wrap: wrap;
136    gap: 15px;
137}
138
139.action-btn {
140    display: flex;
141    align-items: center;
142    gap: 6px;
143    padding: 8px 14px;
144    border-radius: 8px;
145    background: #f1f3f4;
146    color: #111;
147    font-weight: 500;
148    text-decoration: none;
149    transition: 0.2s;
150}
151
152.action-btn i {
153    font-size: 18px;
154}
155
156@media (hover: hover) and (pointer: fine) {
157    .action-btn:hover {
158        background: #e2e6ea;
159    }
160}
161
162.action-btn.whatsapp {
163    background: #e6f4ea;
164    color: #25D366;
165}
166
167.social-links a {
168    margin-left: 10px;
169    font-size: 22px;
170    color: #555;
171    transition: 0.2s;
172}
173
174@media (hover: hover) and (pointer: fine) {
175    .social-links a:hover {
176        color: #000;
177    }
178}
179.contact-group {
180    display: flex;
181    flex-wrap: wrap;
182    align-items: center;
183    gap: 10px;
184    padding-right: 14px;
185    margin-right: 4px;
186    border-right: 1px solid #e5e7eb;
187}
188
189.contact-group:last-child {
190    border-right: none;
191    padding-right: 0;
192    margin-right: 0;
193}
194
195@media (max-width: 576px) {
196    .contact-group {
197        border-right: none;
198        padding-right: 0;
199        margin-right: 0;
200        padding-bottom: 8px;
201        margin-bottom: 4px;
202        border-bottom: 1px solid #e5e7eb;
203        width: 100%;
204    }
205
206    .contact-group:last-child {
207        border-bottom: none;
208        padding-bottom: 0;
209        margin-bottom: 0;
210    }
211}
212
213.action-btn.primary-cta {
214    background: var(--dp-accent);
215    color: #1a1a1a;
216    font-weight: 700;
217    box-shadow: 0 2px 8px rgba(255, 180, 0, 0.35);
218}
219
220@media (hover: hover) and (pointer: fine) {
221    .action-btn.primary-cta:hover {
222        background: #e6a400;
223    }
224}
225
226/* Tertiary/utility actions (Book Now, Order Online, Calendar) - kept
227   visually smaller so they don't compete with the primary CTAs. */
228.contact-group-compact .action-btn {
229    padding: 5px 10px;
230    font-size: 13px;
231    gap: 4px;
232}
233
234.contact-group-compact .action-btn i {
235    font-size: 14px;
236}
237
238.header-identity-card {
239    padding-top: var(--dp-card-padding-sm);
240    padding-bottom: var(--dp-card-padding-sm);
241    position: relative;
242    overflow: hidden;
243}
244
245.premium-ribbon {
246    position: absolute;
247    top: 18px;
248    right: -34px;
249    transform: rotate(45deg);
250    background: var(--dp-accent);
251    color: #1a1a1a;
252    font-size: 11px;
253    font-weight: 700;
254    text-transform: uppercase;
255    letter-spacing: .5px;
256    white-space: nowrap;
257    padding: 4px 40px;
258    box-shadow: 0 2px 6px rgba(0, 0, 0, .25);
259    z-index: 3;
260}
261
262.verified-badge {
263    display: inline-flex;
264    align-items: center;
265    gap: 4px;
266    font-size: 13px;
267    font-weight: 700;
268    letter-spacing: .2px;
269    color: #fff;
270    background: #1877f2;
271    padding: 3px 12px 3px 9px;
272    border-radius: 50px;
273    vertical-align: middle;
274    margin-left: 8px;
275    white-space: nowrap;
276    box-shadow: 0 2px 6px rgba(24, 119, 242, .35);
277}
278
279.verified-badge i {
280    font-size: 15px;
281}
282
283.established-eyebrow {
284    display: inline-block;
285    font-size: 12px;
286    font-weight: 700;
287    letter-spacing: .5px;
288    text-transform: uppercase;
289    color: #b8860b;
290    background: rgba(255, 193, 7, 0.12);
291    border: 1px solid rgba(255, 193, 7, 0.35);
292    border-radius: 50px;
293    padding: 3px 12px;
294    margin-bottom: 8px;
295}
296
297.faq-accordion {
298    border-top: 1px solid #eee;
299}
300
301.faq-item {
302    border-bottom: 1px solid #eee;
303}
304
305.faq-question {
306    display: flex;
307    align-items: center;
308    justify-content: space-between;
309    gap: 12px;
310    width: 100%;
311    background: none;
312    border: none;
313    text-align: left;
314    padding: 16px 4px;
315    font-size: 16px;
316    font-weight: 600;
317    color: var(--dp-heading-color, #22262e);
318    cursor: pointer;
319}
320
321/* :hover only for real pointer devices - on touch devices a :hover rule
322on a clickable element means the first tap only shows the hover state and
323a second tap is needed to actually trigger the click, which is why FAQ
324items can appear to randomly not open on mobile */
325@media (hover: hover) and (pointer: fine) {
326    .faq-question:hover {
327        color: #b8860b;
328    }
329}
330
331.faq-caret {
332    flex-shrink: 0;
333    transition: transform .2s ease;
334    color: #999;
335}
336
337.faq-question[aria-expanded="true"] .faq-caret {
338    transform: rotate(180deg);
339    color: var(--dp-accent);
340}
341
342.faq-answer {
343    padding: 0 4px 18px;
344    color: var(--dp-text-color, #4b5563);
345    line-height: 1.6;
346}
347
348/* Muted, neutral treatment for the service-location badges — kept
349   separate from the amber accent so amber stays reserved for primary
350   CTAs, heading underlines, and the category flag below. */
351.logo-wrap {
352    position: relative;
353}
354
355.category-flag {
356    position: absolute;
357    top: 8px;
358    left: 8px;
359    z-index: 2;
360    background: rgba(20, 20, 20, 0.72);
361    color: #fff;
362    font-size: 11px;
363    font-weight: 700;
364    text-transform: uppercase;
365    letter-spacing: .3px;
366    padding: 4px 10px;
367    border-radius: 4px;
368    box-shadow: 0 2px 6px rgba(0, 0, 0, .2);
369}
370
371@media (hover: hover) and (pointer: fine) {
372    .category-flag:hover {
373        color: #fff;
374        text-decoration: none;
375        background: rgba(20, 20, 20, 0.88);
376    }
377}
378
379.service-area-badges.bg-warning {
380    background-color: #eef0f2 !important;
381    color: #333 !important;
382    border: 1px solid #e0e2e5;
383}
384
385.location-cluster {
386    display: flex;
387    flex-wrap: wrap;
388    align-items: center;
389    gap: 6px 16px;
390    color: var(--dp-text-color);
391    margin-bottom: 4px;
392    max-width: 100%;
393}
394
395.location-cluster .location-item {
396    display: inline-flex;
397    align-items: center;
398    gap: 6px;
399    min-width: 0;
400    max-width: 100%;
401    word-break: break-word;
402    overflow-wrap: anywhere;
403}
404
405.location-cluster button.location-item {
406    font-size: 13px;
407    gap: 4px;
408    flex-shrink: 0;
409    white-space: nowrap;
410}
411
412.location-panel {
413    background: #f9fafb;
414    border: 1px solid #eef0f2;
415    border-radius: 12px;
416    padding: 12px 16px;
417    margin-top: 10px;
418    margin-bottom: 14px !important;
419}
420
421.location-panel .location-item i {
422    color: var(--dp-accent);
423}
424
425.location-panel button.location-item {
426    background: #fff;
427    border: 1px solid #ddd;
428    border-radius: 50px;
429    padding: 5px 12px;
430}
431			
432		
433body{
434  margin:0;
435  padding-bottom:70px; /* space for the floating bar */
436  font-family: Arial, sans-serif;
437}
438
439/* Floating Bar - a single compact row at every screen size (was 2-3
440stacked rows on mobile, ~140px tall). Buttons drop their text label
441below 400px and keep icon+tooltip only, so the bar never needs to wrap. */
442.bottom-action-bar{
443  position:fixed;
444  bottom:0;
445  left:0;
446  width:100%;
447  background:#fff;
448  border-top:1px solid #eee;
449  box-shadow:0 -6px 24px rgba(0,0,0,.1);
450  z-index:999;
451  padding-left:env(safe-area-inset-left);
452  padding-right:env(safe-area-inset-right);
453  padding-bottom:env(safe-area-inset-bottom);
454}
455
456.bar-inner{
457  max-width:1200px;
458  margin:auto;
459  display:flex;
460  align-items:center;
461  justify-content:space-between;
462  padding:8px 16px;
463  gap:10px;
464}
465
466/* Plan pill + "View Benefits" - one link, one tap target, instead of a
467pill plus a separate adjacent link */
468.plan-box{
469  flex-shrink:0;
470  display:flex;
471  align-items:center;
472  gap:6px;
473  text-decoration:none;
474}
475@media (hover: hover) and (pointer: fine) { .plan-box:hover .plan-link{ color:#333; text-decoration:underline; } }
476
477.plan-pill{
478  display:inline-flex;
479  align-items:center;
480  gap:6px;
481  background:#eef2ff;
482  color:#3949ab;
483  font-weight:700;
484  font-size:11px;
485  letter-spacing:.3px;
486  text-transform:uppercase;
487  padding:5px 10px;
488  border-radius:50px;
489  white-space:nowrap;
490}
491
492.plan-link{
493  font-size:12px;
494  font-weight:600;
495  color:#666;
496  white-space:nowrap;
497  display:flex;
498  align-items:center;
499  gap:4px;
500}
501
502/* Buttons */
503.floating-actions{
504  display:flex;
505  align-items:center;
506  gap:8px;
507  flex:1;
508  justify-content:flex-end;
509  min-width:0;
510}
511
512.floating.btn{
513  display:flex;
514  align-items:center;
515  justify-content:center;
516  gap:6px;
517  padding:9px 16px;
518  border-radius:50px;
519  text-decoration:none;
520  font-weight:700;
521  font-size:13px;
522  white-space:nowrap;
523  transition:transform .15s ease, box-shadow .15s ease;
524}
525
526.floating.btn-edit{
527  border:1px solid #ddd;
528  color:#333;
529  background:#fff;
530}
531@media (hover: hover) and (pointer: fine) { .floating.btn-edit:hover{ background:#f8f9fb; color:#333; } }
532
533.floating.btn-upgrade{
534  background:linear-gradient(135deg, #ff9800 0%, #ff5722 100%);
535  color:#fff;
536  box-shadow:0 6px 18px rgba(255,87,34,.35);
537}
538@media (hover: hover) and (pointer: fine) {
539  .floating.btn-upgrade:hover{
540    color:#fff;
541    transform:translateY(-2px);
542    box-shadow:0 10px 24px rgba(255,87,34,.45);
543  }
544}
545
546.floating.btn-unlock-contacts{
547  background:linear-gradient(135deg, #dc3545 0%, #a71d2a 100%);
548  color:#fff;
549  box-shadow:0 6px 18px rgba(220,53,69,.35);
550}
551@media (hover: hover) and (pointer: fine) {
552  .floating.btn-unlock-contacts:hover{
553    color:#fff;
554    transform:translateY(-2px);
555    box-shadow:0 10px 24px rgba(220,53,69,.45);
556  }
557}
558
559/* Visitor bar variants (Call / WhatsApp / Get Quote) - same colors as the
560inline "Contact Actions" buttons higher up the page, so the floating and
561in-page versions of the same action always look like the same button. */
562.floating.btn-call,
563.floating.btn-getquote{
564  background:var(--dp-accent);
565  color:#1a1a1a;
566  box-shadow:0 2px 8px rgba(255,180,0,.35);
567}
568@media (hover: hover) and (pointer: fine) {
569  .floating.btn-call:hover,
570  .floating.btn-getquote:hover{
571    background:#e6a400;
572    color:#1a1a1a;
573  }
574}
575
576.floating.btn-whatsapp-float{
577  background:#e6f4ea;
578  color:#25D366;
579}
580@media (hover: hover) and (pointer: fine) {
581  .floating.btn-whatsapp-float:hover{
582    background:#d7ecdf;
583    color:#25D366;
584  }
585}
586
587/* Unlike the owner's bar, this one has no plan-pill to balance against -
588the buttons are the only content, so they stretch to fill the full width
589evenly on every screen size instead of clustering to one side. */
590.visitor-action-bar .bar-inner{
591  justify-content:stretch;
592}
593.visitor-action-bar .floating-actions{
594  width:100%;
595  justify-content:center;
596}
597.visitor-action-bar .floating.btn{
598  flex:1;
599}
600
601/* Mobile - stays one row: buttons share the remaining width evenly and
602shrink their own padding/font first; only the two text labels (View
603Benefits, then the button labels) drop off as space runs out, never the
604layout itself. */
605@media(max-width:768px){
606  html, body{ overflow-x:hidden; }
607  body{ padding-bottom:66px; }
608
609  .bar-inner{ padding:8px 12px; gap:6px; }
610  .floating-actions{ gap:6px; }
611  .floating.btn{ flex:1; padding:9px 8px; font-size:12px; gap:4px; }
612}
613
614@media(max-width:480px){
615  .plan-link .text{ display:none; } /* pill + chevron alone is still a clear, tappable "view plan" affordance */
616}
617
618@media(max-width:399px){
619  .floating.btn .text{ display:none; }
620  .floating.btn{ padding:10px; }
621  .floating.btn i{ font-size:15px; }
622}
623.profile-thumb {
624    width: 50px;
625    height: 50px;
626}
627
628.avatar {
629    display: flex;
630    align-items: center;
631    justify-content: center;
632
633    color: #fff;
634    font-weight: bold;
635    font-size: 16px;
636	 text-decoration: none !important;
637}
638.avatar-link {
639    text-decoration: none !important;
640}
641/* Navbar wrapper */
642.jd-navbar {
643  border-bottom: 1px solid #eee;
644  padding: 0;
645  
646}
647
648/* Nav list */
649.jd-nav {
650  /* display: flex;  */
651     /* flex-direction: row;  */
652    overflow-x: auto; 
653    white-space: nowrap;
654    list-style: none;
655    padding: 0;
656    margin: 0;
657    font-size: 15px; 
658}
659
660/* Each link */
661.jd-nav li a {
662  display: inline-block;
663  padding: 14px 14px;
664  color: #555;
665  font-weight: 600;
666  text-decoration: none;
667  position: relative;
668  font-size: 15px;
669}
670
671/* Hover */
672@media (hover: hover) and (pointer: fine) {
673  .jd-nav li a:hover {
674    color: #000;
675  }
676}
677
678/* Active tab underline */
679.jd-nav li a.active {
680  color: #000;
681  font-weight: 700;
682}
683
684.jd-nav li a.active::after {
685  content: "";
686  position: absolute;
687  left: 10px;
688  right: 10px;
689  bottom: 0;
690  height: 5px;
691  background-color: #e3a500;;
692  /* border-radius: 2px; */
693}
694
695/* Hide scrollbar (optional) */
696.jd-nav::-webkit-scrollbar {
697  display: none;
698}
699
700#overview, #about, #why-choose, #contact-details,#reviews, #photos,#faq {
701
702  scroll-margin-top: 60px;
703
704   
705}
706
707@media (max-width: 768px) {
708  .jd-navbar {
709    position: -webkit-sticky !important;
710    position: sticky !important;
711    top: 0;
712    z-index: 9999;
713    background: #fff;
714  }
715
716  /* Fallback for browsers where the mobile-only "overflow-x: hidden" on
717     html/body (added to stop horizontal scroll bounce) breaks native
718     position:sticky - a well-known CSS interaction, not a DevTools-only
719     quirk. jd-navbar.js-stuck mimics sticky via a scroll listener below. */
720  .jd-navbar.js-stuck {
721    position: fixed !important;
722    top: 0;
723    left: 0;
724    width: 100%;
725    z-index: 9999;
726    background: #fff;
727  }
728
729  .jd-navbar-spacer {
730    display: none;
731  }
732
733  .jd-navbar-spacer.active {
734    display: block;
735  }
736}
737.jd-nav::-webkit-scrollbar {
738  display: none;
739}
740a.badge-primary:focus {
741    background-color: #111111;
742    border: 0px !important;
743}
744@media (hover: hover) and (pointer: fine) {
745    a.badge-primary:hover {
746        background-color: #111111;
747        border: 0px !important;
748    }
749}
750
751.add-review-btn {
752    display: inline-flex;
753    align-items: center;
754    gap: 6px;
755    padding: 6px 12px;
756    border-radius: 20px;
757    background: #f1f3f4;
758    color: #0f0e0e !important;
759    font-size: 14px;
760    font-weight: 500;
761    text-decoration: none;
762    transition: all 0.3s ease;
763    box-shadow: 0 2px 6px rgba(0,0,0,0.1);
764}
765
766@media (hover: hover) and (pointer: fine) {
767    .add-review-btn:hover {
768        background: #f1f3f4;
769        transform: translateY(-2px);
770        box-shadow: 0 4px 10px rgba(0,0,0,0.15);
771        text-decoration: none;
772    }
773}
774
775.add-review-btn:active {
776    transform: scale(0.96);
777}
778.review-login-box {
779  background: #fff8e1;
780  border: 1px solid #e3a500;
781  padding: 15px 20px;
782  border-radius: 8px;
783  text-align: center;
784  margin: 20px 0;
785}
786
787.review-login-box p {
788  margin: 0 0 10px;
789  color: #333;
790  font-weight: 500;
791}
792
793.btn-login {
794  display: inline-block;
795  background: #e3a500;
796  color: #080808 !important;
797  padding: 10px 18px;
798  border-radius: 5px;
799  text-decoration: none !important;
800  font-weight: 600;
801  transition: 0.3s ease;
802}
803
804@media (hover: hover) and (pointer: fine) {
805  .btn-login:hover {
806    background: #c89000;
807    color: #0f0e0e;
808  }
809}
810
811/* =========================
812   MODAL MAIN
813========================= */
814
815#serviceModal .modal-content{
816    border:none;
817    border-radius:20px;
818    overflow:hidden;
819    box-shadow:0 15px 45px rgba(0,0,0,0.18);
820}
821
822/* =========================
823   HEADER
824========================= */
825
826#serviceModal .modal-header{
827    padding:18px 28px;
828    border-bottom:1px solid #ededed;
829}
830
831#serviceModal .modal-title{
832    font-size:14px;
833    font-weight:700;
834    color:#222;
835}
836
837/* close button intentionally left at Bootstrap's default size (1.5rem =
838   21px with this theme's 14px root, opacity .5) - the 34px override made
839   it look oversized next to the now-14px title */
840
841/* =========================
842   BODY
843========================= */
844
845#serviceModal .modal-body{
846    padding:24px 30px;
847}
848
849/* =========================
850   IMAGE SECTION
851========================= */
852
853.popup-gallery{
854    position:relative;
855    border-radius:24px;
856    overflow:hidden;
857}
858
859.popup-img{
860    width:100%;
861    height:370px;
862    object-fit:cover;
863    border-radius:24px;
864}
865
866/* =========================
867   PRICE LABEL
868========================= */
869
870#popupPrice{
871    position:absolute;
872    top:30px;
873    right:40px;
874    margin:0 !important;
875    background:#fff;
876    padding:14px 18px;
877    border-radius:16px;
878    box-shadow:0 4px 15px rgba(0,0,0,0.12);
879    color:#1d2b53;
880    font-size:22px;
881    font-weight:700;
882    line-height:1.1;
883    z-index:5;
884}
885
886#popupPrice::before{
887    display:block;
888    font-size:10px;
889    font-weight:600;
890    color:#666;
891    letter-spacing:.7px;
892    margin-bottom:5px;
893}
894
895/* =========================
896   DESCRIPTION
897========================= */
898
899#popupText{
900    margin-top:28px;
901    font-size:14px;
902    line-height:1.9;
903    color:#444;
904}
905
906#popupText p{
907    margin-bottom:18px;
908}
909
910/* =========================
911   BUTTONS
912========================= */
913
914.video-wrap{
915    display:flex;
916    justify-content:flex-end;
917    gap:14px;
918    margin-top:25px;
919}
920
921#popupYoutube{
922    border:none !important;
923    color:#fff !important;
924    border-radius:12px;
925    padding:12px 24px;
926    font-weight:600;
927    box-shadow:none;
928}
929
930#popupSerDetailsLink{
931    background:#626d7d !important;
932    border:none !important;
933    color:#fff !important;
934    border-radius:12px;
935    padding:12px 24px;
936    font-weight:600;
937}
938
939/* =========================
940   FOOTER
941========================= */
942
943#serviceModal .modal-footer{
944    padding:22px 30px;
945    border-top:1px solid #ededed;
946}
947
948#serviceModal .modal-footer .btn{
949    border-radius:12px;
950    padding:11px 20px;
951    font-weight:500;
952}
953
954/* =========================
955   IMAGE NAVIGATION
956========================= */
957
958#prevImg,
959#nextImg{
960    position:absolute;
961    top:50%;
962    transform:translateY(-50%);
963    width:54px;
964    height:54px;
965    border:none;
966    border-radius:50%;
967    background:rgba(255,255,255,0.95);
968    font-size:34px;
969    color:#333;
970    cursor:pointer;
971    z-index:3;
972    box-shadow:0 3px 10px rgba(0,0,0,0.12);
973}
974
975#prevImg{
976    left:16px;
977}
978
979#nextImg{
980    right:16px;
981}
982
983/* =========================
984   PRODUCT MODAL DESIGN
985========================= */
986
987#productModal .modal-content{
988    border:none;
989    border-radius:20px;
990    overflow:hidden;
991    box-shadow:0 15px 45px rgba(0,0,0,0.18);
992}
993
994/* HEADER */
995#productModal .modal-header{
996    padding:18px 28px;
997    border-bottom:1px solid #ededed;
998}
999
1000#productModal .modal-title{
1001    font-size:14px;
1002    font-weight:700;
1003    color:#222;
1004}
1005
1006/* close button intentionally left at Bootstrap's default size - same
1007   reasoning as #serviceModal above */
1008
1009/* BODY */
1010#productModal .modal-body{
1011    padding:24px 30px;
1012}
1013
1014/* IMAGE */
1015#productModal .popup-gallery{
1016    position:relative;
1017    border-radius:24px;
1018    overflow:hidden;
1019}
1020
1021#productModal .popup-img{
1022    width:100%;
1023    height:370px;
1024    object-fit:cover;
1025    border-radius:24px;
1026}
1027
1028/* PRICE LABEL */
1029#productPopupPrice{
1030    position:absolute;
1031    top:30px;
1032    right:40px;
1033    margin:0 !important;
1034    background:#fff;
1035    padding:14px 18px;
1036    border-radius:16px;
1037    box-shadow:0 4px 15px rgba(0,0,0,0.12);
1038    color:#1d2b53;
1039    font-size:22px;
1040    font-weight:700;
1041    line-height:1.1;
1042    z-index:5;
1043}
1044
1045#productPopupPrice::before{
1046    display:block;
1047    font-size:10px;
1048    font-weight:600;
1049    color:#666;
1050    letter-spacing:.7px;
1051    margin-bottom:5px;
1052}
1053
1054/* DESCRIPTION */
1055#productPopupText{
1056    margin-top:28px;
1057    font-size:14px;
1058    line-height:1.9;
1059    color:#444;
1060}
1061
1062#productPopupText p{
1063    margin-bottom:18px;
1064}
1065
1066/* BUTTONS */
1067#productModal .video-wrap{
1068    display:flex;
1069    justify-content:flex-end;
1070    gap:14px;
1071    margin-top:25px;
1072}
1073
1074#productPopupLink{
1075    border:none !important;
1076    color:#fff !important;
1077    border-radius:12px;
1078    padding:12px 24px;
1079    font-weight:600;
1080}
1081
1082#productDetailsLink{
1083    background:#626d7d !important;
1084    border:none !important;
1085    color:#fff !important;
1086    border-radius:12px;
1087    padding:12px 24px;
1088    font-weight:600;
1089}
1090
1091/* FOOTER */
1092#productModal .modal-footer{
1093    padding:22px 30px;
1094    border-top:1px solid #ededed;
1095}
1096
1097#productModal .modal-footer .btn{
1098    border-radius:12px;
1099    padding:11px 20px;
1100    font-weight:500;
1101}
1102
1103/* phoneModal / Get Quote / Request Callback deliberately have no custom
1104   font-size override here - the theme's own default (14px, matching
1105   serviceModal/productModal above) already applies to all three, so
1106   nothing extra is needed to keep every popup on this page the same size. */
1107
1108/* IMAGE ARROWS */
1109#prevProductImg,
1110#nextProductImg{
1111    position:absolute;
1112    top:50%;
1113    transform:translateY(-50%);
1114    width:54px;
1115    height:54px;
1116    border:none;
1117    border-radius:50%;
1118    background:rgba(255,255,255,0.95);
1119    font-size:34px;
1120    color:#333;
1121    cursor:pointer;
1122    z-index:3;
1123    box-shadow:0 3px 10px rgba(0,0,0,0.12);
1124}
1125
1126#prevProductImg{
1127    left:16px;
1128}
1129
1130#nextProductImg{
1131    right:16px;
1132}
1133
1134/* Whichever section ends up first in the main column (About, Photos,
1135Services...depends on which data this listing actually has) shouldn't carry
1136its own top margin - the sidebar's first element has none, so that margin
1137was pushing the main column visibly lower than the sidebar at the top. */
1138.col-lg-8 > .mt-3:first-child {
1139    margin-top: 0 !important;
1140}
1141</style>
1142	
1143	
1144	<title>Savra - Suit Shop in Jaipur in Jaipur, Rajasthan - Best Others near me</title>
1145
1146	<!-- SplideJS CSS -->
1147	<link rel="stylesheet" hreflang="en-us" href="https://addyp.com/templates/js/splide_2.4.21/splide.min.css">
1148
1149
1150
1151
1152
1153	
1154	<!-- Bootstrap Lightbox -->
1155	<link rel="stylesheet" hreflang="en-us" href="https://addyp.com/templates/js/lightbox-master/dist/ekko-lightbox.css">
1156
1157	<meta charset="utf-8">
1158<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
1159
1160<!-- favicon -->
1161 <link rel="apple-touch-icon-precomposed" href="/assets/favicon/favicon-152.png">
1162 <link rel="icon" type="image/png" href="/assets/favicon/favicon.png">
1163 <meta name="msapplication-TileColor" content="#ffffff">
1164 <meta name="msapplication-TileImage" content="/assets/favicon/favicon-144.png">
1165 
1166 <!-- css -->
1167 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
1168 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.8/css/select2.min.css">
1169 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/raty/2.7.1/jquery.raty.min.css">
vendor: 139 bytes, lines 1169-1170
1169
1170 <script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="5be3242ed37c14fc3d069643-|49"></script>
1170<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/line-awesome/1.3.0/line-awesome/css/line-awesome.min.css" media="print" onload="this.media='all'; this.onload=null;">
1171  <link rel="stylesheet" href="/templates/css/styles.css?v=1790182373">
1172 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css">
1173 
1174 <!-- javascript -->
1175 
1175<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
1175
1176 
1176<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.8/js/select2.min.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
1176
1177 
1178<!-- rss -->
1179 <link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/sitemaps/rss.xml">
1180
1181<!-- CSRF -->
1182<script type="5be3242ed37c14fc3d069643-text/javascript">
1183// add CSRF token in the headers of all requests
1184$.ajaxSetup({
1185	headers: {
1186		'X-CSRF-Token': 'kqv7krpkt5d5cephdgu21u4bcd',
1187		'X-Ajax-Setup': 1
1188	}
1189});
1190</script>
1190
1191
1192<!-- baseurl -->
1193<script type="5be3242ed37c14fc3d069643-text/javascript">
1194var baseurl = 'https://addyp.com';
1195</script>
1195
1196
1197<!-- custom functions -->
1198<script type="5be3242ed37c14fc3d069643-text/javascript">
1199// iframe escape
1200if (top != self) top.location.replace(location);
1201
1202// test if cookie is enabled
1203function cookieEnabled() {
1204	// Quick test if browser has cookieEnabled host property
1205	if (navigator.cookieEnabled) {
1206		return true;
1207	}
1208
1209	// Create cookie
1210	document.cookie = "cookietest=1";
1211	var ret = document.cookie.indexOf("cookietest=") != -1;
1212
1213	// Delete cookie
1214	document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";
1215
1216	return ret;
1217}
1218
1219// test if localstorage is available
1220function lsTest(){
1221    var test = 'test';
1222    try {
1223        localStorage.setItem(test, test);
1224        localStorage.removeItem(test);
1225        return true;
1226    } catch(e) {
1227        return false;
1228    }
1229}
1230
1231// createCookie
1232function createCookie(name, value, days) {
1233    var expires;
1234    var cookie_path;
1235	var path = "/";
1236
1237    if (days) {
1238        var date = new Date();
1239        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
1240        expires = "; expires=" + date.toUTCString();
1241    } else {
1242        expires = "";
1243    }
1244
1245	if (path != '') {
1246		cookie_path = "; path=" + path;
1247	} else {
1248		cookie_path = "";
1249	}
1250
1251    document.cookie = name + "=" + value + expires + cookie_path;
1252}
1253
1254// delete_cookie
1255function delete_cookie(name) {
1256	createCookie(name, "", -100);
1257}
1258
1259// getCookie
1260function getCookie(name) {
1261	var nameEQ = name + "=";
1262	var ca = document.cookie.split(';');
1263
1264	for(var i=0;i < ca.length;i++) {
1265		var c = ca[i];
1266		while (c.charAt(0)==' ') c = c.substring(1,c.length);
1267		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
1268	}
1269
1270	return null;
1271}
1272
1273// check if string is JSON
1274function IsJsonString(str) {
1275	try {
1276		JSON.parse(str);
1277	} catch (e) {
1278		return false;
1279	}
1280
1281	return true;
1282}
1283
1284// add to Favorites
1285function addToFavorites() {
1286	$('.add-to-favorites').on('click', function(e){
1287					window.location.href = 'https://addyp.com/user/sign-in';
1288				});
1289}
1290</script>
1290
1291
1292<!-- Maps -->
1293<script type="5be3242ed37c14fc3d069643-text/javascript">
1294	// CartoDB Maps options - no API key needed, unlike map_provider_options
1295	// wasn't even being declared for this exact value before (only the
1296	// dot-variant names below were handled), so L.tileLayer.provider() below
1297	// referenced an undefined variable and threw, silently killing the rest
1298	// of the map init script.
1299	var map_provider_options = {
1300		attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors &copy; <a href="https://carto.com/attributions">CARTO</a>'
1301	}
1302	</script>
1302	<!-- CSS -->
1303	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.1/leaflet.css">
1304	
1305	<!-- Javascript -->
1306	
1306<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.3.1/leaflet.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
1306
1307	
1307<script src="/assets/js/leaflet-providers.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
1307
1308
1309	
1310	<!-- Meta data -->
1311	
1312	<!-- Canonical URL -->
1313	<link rel="canonical" hreflang="en-us" href="https://addyp.com/listing/rajasthan/jaipur/others/savra-suit-shop-in-jaipur">
1314
1315		<meta name="description" content="Best Others near me in Jaipur, Rajasthan. From graceful suits and festive outfits to stylish traditional wear, our collection is designed for women who appreciate quality, comfort, and refined fashion. If you are looking for a trusted suit shop in Jaipur, Savra offers a carefully selected range of designs suitable for weddings, festivals, family functions, and everyday ethnic styling. Explore elegant patterns, fine fabrics, and fashionable designs that bring tradition and modern style together. Visit Savra and find ethnic wear that makes every occasion feel special.">
1316
1317	<!-- Open Graph data -->
1318	<meta property="og:title" content="Savra - Suit Shop in Jaipur in Jaipur, Rajasthan - Best Others near me">
1319	<meta property="og:url" content="https://addyp.com/listing/rajasthan/jaipur/others/savra-suit-shop-in-jaipur">
1320	<meta property="og:type" content="place">
1321	<meta property="og:description" content="Best Others near me in Jaipur, Rajasthan. From graceful suits and festive outfits to stylish traditional wear, our collection is designed for women who appreciate quality, comfort, and refined fashion. If you are looking for a trusted suit shop in Jaipur, Savra offers a carefully selected range of designs suitable for weddings, festivals, family functions, and everyday ethnic styling. Explore elegant patterns, fine fabrics, and fashionable designs that bring tradition and modern style together. Visit Savra and find ethnic wear that makes every occasion feel special.">
1322	<!-- Twitter  data -->
1323	<meta name="twitter:card" content="summary_large_image">
1324<meta name="twitter:title" content="Savra - Suit Shop in Jaipur in Jaipur, Rajasthan - Best Others near me">
1325<meta name="twitter:description" content="Best Others near me in Jaipur, Rajasthan. From graceful suits and festive outfits to stylish traditional wear, our collection is designed for women who appreciate quality, comfort, and refined fashion. If you are looking for a trusted suit shop in Jaipur, Savra offers a carefully selected range of designs suitable for weddings, festivals, family functions, and everyday ethnic styling. Explore elegant patterns, fine fabrics, and fashionable designs that bring tradition and modern style together. Visit Savra and find ethnic wear that makes every occasion feel special.">
1326		<meta property="og:image" content="https://addyp.com/pictures/logo/6a/6ab4f3321a6e8.png">
1327	<meta name="twitter:image" content="https://addyp.com/pictures/logo/6a/6ab4f3321a6e8.png">
1328	</head>
1329
1330<body data-spy="scroll" data-target="#navbar-example2" data-offset="75" class="tpl-listing">
1331
1332
1333	<div itemscope itemtype="https://schema.org/LocalBusiness">
1334		<div id="fb-root"></div>
1335<script type="5be3242ed37c14fc3d069643-text/javascript">(function(d, s, id) {
1336  var js, fjs = d.getElementsByTagName(s)[0];
1337  if (d.getElementById(id)) return;
1338  js = d.createElement(s); js.id = id;
1339  js.src = 'https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.1';
1340  fjs.parentNode.insertBefore(js, fjs);
1341}(document, 'script', 'facebook-jssdk'));</script>
1341
1342
1343<script type="5be3242ed37c14fc3d069643-text/javascript">window.twttr = (function(d, s, id) {
1344  var js, fjs = d.getElementsByTagName(s)[0],
1345    t = window.twttr || {};
1346  if (d.getElementById(id)) return t;
1347  js = d.createElement(s);
1348  js.id = id;
1349  js.src = "https://platform.twitter.com/widgets.js";
1350  fjs.parentNode.insertBefore(js, fjs);
1351
1352  t._e = [];
1353  t.ready = function(f) {
1354    t._e.push(f);
1355  };
1356
1357  return t;
1358}(document, "script", "twitter-wjs"));</script>
1358		<!-- Preloader -->
1359<div class="preloader"></div>
1360<!-- Loader -->
1361<div id="loader">
1362    
1363    <div class="spinner"></div>
1364    <div class="progress-bar">
1365        <div class="progress-bar-inner"></div>
1366    </div>
1367    <div class="loading-text">Loading... Please wait</div>
1368</div>
1369
1370<script type="5be3242ed37c14fc3d069643-text/javascript">
1371(function () {
1372
1373    // Runs immediately (not on DOMContentLoaded) since the loader markup
1374    // above is already in the DOM by the time this script executes -
1375    // waiting for DOMContentLoaded ties the dismiss timer to every
1376    // synchronous script on the page finishing (including slow CDN
1377    // scripts further down), which is exactly what this loader is
1378    // supposed to NOT wait for.
1379
1380    const messages = [
1381        "Fetching Do-Follow Lists...",
1382        "Optimizing SEO...",
1383        "Got 2.5 Million Lists...",
1384        "Rendering Business Lists...",
1385        "Just a moment..."
1386    ];
1387
1388    const loadingText = document.querySelector(".loading-text");
1389    const progressBar = document.querySelector(".progress-bar-inner");
1390    const loader = document.getElementById("loader");
1391
1392    let index = 0;
1393    let progress = 0;
1394
1395    // Rotate messages
1396    const msgInterval = setInterval(() => {
1397        loadingText.innerText = messages[index];
1398        index = (index + 1) % messages.length;
1399    }, 1200);
1400
1401    // Smooth fake progress
1402    const progInterval = setInterval(() => {
1403        if (progress < 80) {
1404            progress += Math.random() * 6;
1405            progressBar.style.width = progress + "%";
1406        }
1407    }, 100);
1408
1409    /*
1410      IMPORTANT PART:
1411      Hide loader as soon as UI is ready
1412      NOT waiting for images/CDN
1413    */
1414
1415    setTimeout(() => {
1416
1417        clearInterval(msgInterval);
1418        clearInterval(progInterval);
1419
1420        progressBar.style.width = "100%";
1421
1422        loader.style.opacity = "0";
1423
1424        setTimeout(() => {
1425            loader.style.display = "none";
1426        }, 250);
1427
1428    }, 300); // tiny delay for smooth UX
1429
1430})();
1431</script>
1431
1432
1433<!-- Navbar -->
1434       <!-- Icons CDN -->
1435<link href="https://cdnjs.cloudflare.com/ajax/libs/line-awesome/1.3.0/line-awesome/css/line-awesome.min.css" rel="stylesheet">
1436<nav id="header-nav" class="navbar navbar-expand-md fixed-top transparent" style="display:none;"></nav>
1437     <header class="main-header">
1438        <div class="nav-container">
1439
1440            <!-- Logo -->
1441            <a class="logo" href="https://addyp.com">
1442                <img class="logo1" src="/assets/imgs/logo.png" alt="AddYP.com"
1443                    width="135">
1444            </a>
1445            <div class="listing-minimal-actions">
1446                <a href="/categories/">Browse Business Categories</a>
1447                <a href="/user/select-plan" class="btn-primary">+ Add Your Business - FREE</a>
1448            </div>
1449            
1450            <!-- Notification (Always visible) -->
1451                        <a href="/user/enquiries/" class="header-notif">
1452                <i class="las la-envelope"></i>
1453                <span class="badge">0</span>
1454            </a>
1455            
1456
1457            <!-- Mobile Toggle -->
1458            <button class="nav-toggle" id="navToggle">
1459                <i class="las la-bars"></i>
1460            </button>
1461
1462            <!-- Navigation -->
1463            <nav class="nav" id="mainNav">
1464                <a href="javascript:void(0)" data-toggle="modal" data-target="#languageModal" title="Google Translator">
1465                    <i class="las la-language" style="font-size:20px;"></i>
1466                </a>
1467                <a href="/categories/">Business Categories</a>
1468                <a href="/coupons/">Coupons</a>
1469                <a href="/services/">Services</a>
1470                <a href="/products/">Products</a>
1471                                                                
1472                                <a href="/user/sign-in"><i class="las la-sign-in-alt"></i> Sign in</a>
1473                                <a href="/user/select-plan" class="btn-primary">
1474                    <i class="las la-plus"></i> Add Business – FREE
1475                </a>
1476            </nav>
1477
1478        </div>
1479    </header>
1480   <!-- Language Modal -->
1481    <div class="modal fade" id="languageModal" tabindex="-1" role="dialog" aria-labelledby="languageModalLabel"
1482        aria-hidden="true">
1483        <div class="modal-dialog modal-sm modal-dialog-centered" role="document">
1484            <div class="modal-content">
1485                <div class="modal-header">
1486                    <h5 class="modal-title" id="languageModalLabel">
1487                        🌍 Select Language
1488                    </h5>
1489                    <button type="button" class="close" data-dismiss="modal">
1490                        <span>&times;</span>
1491                    </button>
1492                </div>
1493
1494                <div class="modal-body text-center">
1495                    <div id="google_translate_element"></div>
1496                </div>
1497            </div>
1498        </div>
1499    </div>
1500    
1500<script type="5be3242ed37c14fc3d069643-text/javascript">
1501    document.getElementById('navToggle').onclick = function() {
1502        document.getElementById('mainNav').classList.toggle('show');
1503    };
1504    </script>
vendor: 144 bytes, lines 1504-1506
1504
1505
1506<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="5be3242ed37c14fc3d069643-|49" defer></script>
1506<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a400f750f8d0117f',t:'MTc5MDI0NDI3Nw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
1506<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"d2105b86e8744b1bbef862aa650d68b8","r":1,"spa":2}' crossorigin="anonymous"></script>
1506
1507</body>
1508
1509</html>
1510<script type="5be3242ed37c14fc3d069643-text/javascript">
1511document.getElementById('userToggle').onclick = function(e) {
1512    e.stopPropagation();
1513    document.getElementById('userMenu').classList.toggle('show');
1514};
1515
1516document.addEventListener('click', function() {
1517    document.getElementById('userMenu').classList.remove('show');
1518});
1519</script>
vendor: 1 bytes, line 1519
1519
1520<script type="5be3242ed37c14fc3d069643-text/javascript">
1521(function() {
1522    // shrinks the sticky header once the page scrolls, to give content
1523    // more room - see .header-scrolled in templates/css/styles.css.
1524    // .tpl-listing already drops sticky positioning entirely for its own
1525    // header (position: relative !important), so this is a no-op there,
1526    // not a conflict.
1527    var header = document.querySelector('.main-header');
1528    if (!header) return;
1529
1530    // hysteresis (different enter/exit points, not one shared threshold) -
1531    // shrinking the header changes its own height, which nudges scrollY by
1532    // a pixel or two right as the class flips; a single threshold lets that
1533    // nudge immediately flip it back, so the class (and the header size)
1534    // vibrates on every scroll tick near the boundary. A gap between the
1535    // two thresholds absorbs that nudge instead of reacting to it.
1536    var isScrolled = false;
1537    var ticking = false;
1538    function updateHeader() {
1539        if (!isScrolled && window.scrollY > 60) {
1540            isScrolled = true;
1541        } else if (isScrolled && window.scrollY < 20) {
1542            isScrolled = false;
1543        }
1544        header.classList.toggle('header-scrolled', isScrolled);
1545        ticking = false;
1546    }
1547    window.addEventListener('scroll', function() {
1548        if (!ticking) {
1549            window.requestAnimationFrame(updateHeader);
1550            ticking = true;
1551        }
1552    });
1553    updateHeader();
1554})();
1555</script>
vendor: 1 bytes, line 1555
1555
1556<script type="5be3242ed37c14fc3d069643-text/javascript">
1557function googleTranslateElementInit() { 
1558    new google.translate.TranslateElement(
1559        { pageLanguage: 'en' }, 
1560        'google_translate_element'
1561    );
1562}
1563
1564</script>
vendor: 1 bytes, line 1564
1564
1565<script src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit" defer type="5be3242ed37c14fc3d069643-text/javascript"></script>
1565
1566
1567<div id="mainSearch" class="container-fluid p-2 fixed-top bg-light" style="display:none">
1568	<form action="/results" class="form-row" method="get">
1569		<div class="form-row container-fluid">
1570			<div class="col-md-5 mb-2 mb-md-0">
1571				<div class="input-group mr-md-2">
1572					<div class="input-group-prepend">
1573						<span class="input-group-text bg-white"><i class="las la-search"></i></span>
1574					</div>
1575					<input type="text" id="s" class="form-control form-control-lg" name="s" placeholder="Ex: pizza, hotel, car sale (Location: USA, UK, UAE, India...etc)">
1576				</div>
1577			</div>
1578
1579			<div class="col-md-5 mb-2 mb-md-0">
1580				<div class="input-group mr-md-2 text-left">
1581					<select id="city-input" class="form-control form-control-lg" name="city">
1582													<option value="" disabled selected>City</option>
1583												</select>
1584				</div>
1585			</div>
1586
1587			<div class="col-md-2 mb-2 mb-md-0">
1588				<button type="submit" class="btn btn-lg btn-primary btn-block">Search</button>
1589			</div>
1590		</div>
1591	</form>
1592</div>
1593
1594    <!-- Language Modal -->
1595    <div class="modal fade" id="languageModal" tabindex="-1" role="dialog" aria-labelledby="languageModalLabel"
1596        aria-hidden="true">
1597        <div class="modal-dialog modal-sm modal-dialog-centered" role="document">
1598            <div class="modal-content">
1599                <div class="modal-header">
1600                    <h5 class="modal-title" id="languageModalLabel">
1601                        🌍 Select Language
1602                    </h5>
1603                    <button type="button" class="close" data-dismiss="modal">
1604                        <span>&times;</span>
1605                    </button>
1606                </div>
1607
1608                <div class="modal-body text-center">
1609                    <div id="google_translate_element"></div>
1610                </div>
1611            </div>
1612        </div>
1613    </div>
1614
1615
1616<script type="5be3242ed37c14fc3d069643-text/javascript">
1617function googleTranslateElementInit() { 
1618new google.translate.TranslateElement({pageLanguage: 'en'}, 'google_translate_element'); [24]
1619}
1620
1621</script>
vendor: 1 bytes, line 1621
1621
1622<script src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit" type="5be3242ed37c14fc3d069643-text/javascript"></script>
1622
1623
1624<style>
1625/* Hide Google branding */
1626.goog-logo-link,
1627.goog-te-gadget span {
1628    display: none !important;
1629}
1630
1631/* Remove top translate banner */
1632.goog-te-banner-frame.skiptranslate,
1633iframe.goog-te-banner-frame {
1634    display: none !important;
1635}
1636
1637body {
1638    top: 0 !important;
1639}
1640
1641/* Dropdown styling */
1642.goog-te-gadget {
1643    font-size: 0;
1644}
1645
1646.goog-te-gadget select {
1647    width: 100%;
1648    height: 36px;
1649    font-size: 14px !important;
1650    padding: 6px;
1651    border-radius: 6px;
1652}
1653
1654</style>
1655
1656		<!-- Business Header -->
1657		<div id="business-header" class="container-fluid bg-default pt-3">
1658			
1659			<section id="overview" class="container mt-3">
1660				<input type="hidden" value="overview">
1661			</section>
1662
1663			<!-- Breadcrumbs -->
1664			<div class="container breadcrumbs">
1665								<a href="https://addyp.com/">Home</a>
1666
1667				 > <a href="https://addyp.com/listings/rajasthan">Rajasthan</a>
1668					 > <a href="https://addyp.com/listings/rajasthan/jaipur">Jaipur</a>
1669											> <a
1670							href="https://addyp.com/listings/rajasthan/jaipur/others">Others</a>
1671										 ><a href="https://addyp.com/listing/rajasthan/jaipur/others/savra-suit-shop-in-jaipur">
1672                    Savra - Suit Shop in Jaipur                </a>
1673			</div>
1674
1675            
1676
1677			<!-- Business Title Area -->
1678			<div class="container mt-3 content-card header-identity-card" data-spy="scroll">
1679				
1680				<div class="row">
1681					<div class="col-12 col-md-12">
1682						<div class="form-row">
1683															<div class="col-12 col-lg-3">
1684									<div class="logo-wrap">
1685										<a href="https://addyp.com/listings/rajasthan/jaipur/others" class="category-flag">Others</a>
1686										<img class="rounded pb-2" src="https://addyp.com/pictures/logo/6a/6ab4f3321a6e8.png" alt="Savra - Suit Shop in Jaipur"
1687											title="Savra - Suit Shop in Jaipur">
1688									</div>
1689								</div>
1690							
1691							<div class="col-12 col-lg-9">
1692								<!-- verified -->
1693
1694
1695																<div class="established-eyebrow">Since 2002</div>
1696																<h1 id="place-id-478984">
1697									Savra - Suit Shop in Jaipur																		<span style="font-size:0.55em; font-weight:500; text-transform: capitalize; color: #8e5f35;">- Others in Jaipur, Rajasthan</span>
1698																	</h1>
1699													<div class="item-rating-wrap d-flex align-items-center">
1700
1701																	<!-- no reviews with an actual star rating yet - showing
1702									"0.0★" here would misleadingly read as a bad rating
1703									rather than "not enough data" -->
1704									<div class="ml-0 d-flex align-items-center flex-wrap">
1705										<span class="text-muted">No ratings yet</span>
1706
1707										<a href="#review-form-wrapper" class="add-review-btn ml-3">
1708											✍️ Add Review
1709										</a>
1710									</div>
1711								
1712							</div>
1713
1714														<div class="recommend-widget mb-3" data-place-id="478984" data-my-vote="">
1715								<div class="d-flex flex-wrap align-items-center justify-content-between">
1716									<strong>Do you recommend this business?</strong>
1717									<div class="recommend-buttons">
1718										<button type="button" class="btn btn-light recommend-btn" data-vote="yes">Yes</button>
1719										<button type="button" class="btn btn-light recommend-btn" data-vote="no">No</button>
1720										<button type="button" class="btn btn-light recommend-btn" data-vote="maybe">Maybe</button>
1721									</div>
1722								</div>
1723								<div class="recommend-counts small text-muted mt-2">
1724									<span class="recommend-count-yes">0</span> Yes &middot;
1725									<span class="recommend-count-no">0</span> No &middot;
1726									<span class="recommend-count-maybe">0</span> Maybe
1727									(<span class="recommend-count-total">0</span> total)
1728								</div>
1729							</div>
1730							<style>
1731							.recommend-widget{padding:14px 0;border-top:1px solid #eee;border-bottom:1px solid #eee;}
1732							.recommend-buttons{display:flex;gap:8px;}
1733							.recommend-btn{min-width:70px;}
1734							.recommend-btn.is-voted{font-weight:700;color:#fff;}
1735							.recommend-btn.is-voted[data-vote="yes"]{background:#28a745!important;border-color:#28a745!important;}
1736							.recommend-btn.is-voted[data-vote="no"]{background:#d33b43!important;border-color:#d33b43!important;}
1737							.recommend-btn.is-voted[data-vote="maybe"]{background:#ffb400!important;border-color:#ffb400!important;}
1738							</style>
1739							
1739<script type="5be3242ed37c14fc3d069643-text/javascript">
1740							(function () {
1741								var $widget = $('.recommend-widget[data-place-id="478984"]');
1742								var placeId = 478984;
1743
1744								function setActive(vote) {
1745									$widget.find('.recommend-btn').removeClass('is-voted');
1746									if (vote) {
1747										$widget.find('.recommend-btn[data-vote="' + vote + '"]').addClass('is-voted');
1748									}
1749								}
1750
1751								function updateCounts(counts) {
1752									$widget.find('.recommend-count-yes').text(counts.yes);
1753									$widget.find('.recommend-count-no').text(counts.no);
1754									$widget.find('.recommend-count-maybe').text(counts.maybe);
1755									$widget.find('.recommend-count-total').text(counts.yes + counts.no + counts.maybe);
1756								}
1757
1758								setActive($widget.data('my-vote'));
1759
1760								$widget.on('click', '.recommend-btn', function () {
1761									var vote = $(this).data('vote');
1762
1763									setActive(vote);
1764
1765									$.ajax({
1766										url: 'https://addyp.com/process-recommend-vote.php',
1767										type: 'POST',
1768										contentType: 'application/json',
1769										data: JSON.stringify({ place_id: placeId, vote: vote }),
1770										success: function (response) {
1771											if (response && response.status === 'success') {
1772												updateCounts(response.counts);
1773											}
1774										}
1775									});
1776								});
1777							})();
1778							</script>
1778
1779
1780								<!-- <div class="item-rating" data-rating="0"> -->
1781								<!-- <div class="item-rating" itemprop="aggregateRating" data-rating="0"> -->
1782									<!-- raty plugin placeholder -->
1783								<!-- </div> -->
1784                                
1785
1786                                <!--end verified -->
1787
1788								<div>
1789					<div class="mb-3 mt-3">
1790                                                <!-- ===== CONTACT ACTIONS (Google Style) ===== -->
1791    <div class="contact-actions text-md-right">
1792
1793        <div class="contact-group">
1794                    <a href="tel:9460192284" class="action-btn primary-cta contact-blur" data-click-track="call" data-click-place="478984" data-click-detail="9460192284">
1795                <i class="las la-phone"></i>
1796                <span>Call</span>
1797            </a>
1798        
1799                    <a href="https://wa.me/919460192284?text=Hello%2C+I+found+your+listing+on+addyp.com"
1800               target="_blank" class="action-btn whatsapp contact-blur" data-click-track="whatsapp" data-click-place="478984" data-click-detail="919460192284">
1801                <i class="lab la-whatsapp"></i>
1802                <span>WhatsApp</span>
1803            </a>
1804        		<button type="button"  class="action-btn primary-cta" data-toggle="modal"
1805		data-target="#contact-user-modal"><i class="las la-comments"></i> Get Quote</button>
1806
1807		<button type="button" class="action-btn" data-toggle="modal"
1808		data-target="#request-callback-modal"><i class="las la-phone-volume"></i> Request a Callback</button>
1809        </div>
1810
1811                <div class="contact-group">
1812            <a href="https://www.savrajaipur.com/" target="_blank" class="action-btn contact-blur" data-click-track="website" data-click-place="478984" data-click-detail="https://www.savrajaipur.com/">
1813                <i class="las la-globe"></i>
1814                <span>Website</span>
1815            </a>
1816        </div>
1817        
1818		
1819				<div class="contact-group contact-group-compact">
1820        <!-- Book Now Button -->
1821    
1822    <!-- Order Online Button -->
1823    
1824	<!-- Calendar Button -->
1825    		</div>
1826		
1827    </div>
1828						</div>
1829									<div class="location-cluster location-panel">
1830																			<span itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
1831																				<span class="location-item"><i class="las la-address-card"></i> <span itemprop="streetAddress">Plot No 171 3, Haldighati Marg, opp. Mewar Appartment, Sanganer, Sector 17, Pratap Nagar,</span></span>
1832																				<span class="location-item"><i class="las la-map-marked-alt"></i> <strong itemprop="addressLocality">Jaipur</strong></span>
1833										<span class="location-item"><i class="las la-map-marker-alt"></i> <strong>
1834                                                <span itemprop="addressRegion">Rajasthan</span>,<span itemprop="addressCountry">India</span>
1835                                            </strong></span>
1836										</span>
1837											<!-- Get Location Button -->
1838
1839		                    <button onclick="if (!window.__cfRLUnblockHandlers) return false; openCityMap()" class="btn btn-sm btn-outline-dark location-item" title="Get Directions" data-click-track="directions" data-click-place="478984" data-cf-modified-5be3242ed37c14fc3d069643-="">
1840					<i class="las la-location-arrow"></i> Directions
1841                    </button>
1842																</div>
1843
1844	<div class="d-flex align-items-center flex-wrap mt-2" style="gap:15px;">
1845			<!-- Service Area -->
1846			 				<div class="d-flex align-items-center flex-wrap">
1847					
1848					<strong class="me-2">Service Location:</strong>
1849
1850											<span class="badge bg-warning text-dark me-1 service-area-badges">
1851							india						</span>
1852									</div>
1853						
1854	</div>
1855    <!-- ===== SOCIAL LINKS (Secondary) ===== -->
1856    <div class="social-links text-md-left mt-3 contact-blur" data-click-track-group="social" data-click-place="478984">
1857
1858        
1859        
1860        
1861        
1862        
1863                    <a href="https://maps.app.goo.gl/jeFYqpfc4HSyUgm47" target="_blank" data-click-detail="Google Business">
1864                <i class="lab la-google"></i>
1865            </a>
1866        
1867    </div>
1868
1869								
1870									</div>
1871									
1872								</div>
1873
1874								
1875					
1876
1877
1878
1879
1880<div class="form-row mt-3">
1881<script type="5be3242ed37c14fc3d069643-text/javascript">
1882function copyShareLink() {
1883	const link = window.location.href;
1884  navigator.clipboard.writeText(link).then(function() {
1885    alert("Link copied to clipboard!");
1886  });
1887}
1888</script>
1888
1889
1890	
1891
1892
1893</div>
1894
1895
1896							</div>
1897						</div>
1898					</div>
1899
1900
1901
1902                    
1903
1904						
1905							
1906
1907						
1908					</div>
1909				</div>
1910		
1911                             <!-- Floating Bottom Bar -->
1912                    
1913                            <!-- Same idea as the owner's bar above, but for everyone else:
1914                            the actions that actually matter for THIS listing (contact the
1915                            business) shouldn't disappear on scroll while a generic sitewide
1916                            "Enquiries/Add Business/Manage" nav (irrelevant to a visitor
1917                            reading someone else's listing) stays put - so this replaces
1918                            that nav here instead of stacking alongside it. -->
1919                            <div class="bottom-action-bar visitor-action-bar">
1920                                <div class="bar-inner">
1921                                    <div class="floating-actions">
1922                                                                        <a href="tel:9460192284" class="floating btn btn-call contact-blur" data-click-track="call" data-click-place="478984" data-click-detail="9460192284" title="Call">
1923                                        <i class="las la-phone"></i>
1924                                        <span class="text">Call</span>
1925                                    </a>
1926                                    
1927                                                                        <a href="https://wa.me/919460192284?text=Hello%2C+I+found+your+listing+on+addyp.com" target="_blank" class="floating btn btn-whatsapp-float contact-blur" data-click-track="whatsapp" data-click-place="478984" data-click-detail="919460192284" title="WhatsApp">
1928                                        <i class="lab la-whatsapp"></i>
1929                                        <span class="text">WhatsApp</span>
1930                                    </a>
1931                                    
1932                                    <button type="button" class="floating btn btn-getquote" data-toggle="modal" data-target="#contact-user-modal" title="Get Quote">
1933                                        <i class="las la-comments"></i>
1934                                        <span class="text">Get Quote</span>
1935                                    </button>
1936                                    </div>
1937                                </div>
1938                            </div>
1939
1940                            <style>.mobile-buttons{ display:none !important; }</style>
1941
1942                    			</div>
1943
1944<nav id="navbar-example2" class="jd-navbar sticky-top bg-white" aria-label="Listing section navigation">
1945	<div class="container">
1946			<ul class="jd-nav d-flex" id="listingNav">
1947			<li>
1948				<a class="nav-link active"
1949				href="#overview"
1950				aria-label="Go to Overview section"
1951				title="Overview of Savra - Suit Shop in Jaipur"
1952				aria-current="true">
1953				Overview
1954				</a>
1955			</li>
1956						<li>
1957				<a class="nav-link"
1958				href="#about"
1959				aria-label="Go to About section"
1960				title="About Savra - Suit Shop in Jaipur">
1961				About 
1962				</a>
1963			</li>
1964						<li>
1965				<a class="nav-link"
1966				href="#faq"
1967				aria-label="Go to FAQ section"
1968				title="Frequently asked questions about Savra - Suit Shop in Jaipur">
1969				FAQ
1970				</a>
1971			</li>
1972																								<li>
1973				<a class="nav-link"
1974				href="#working-hrs"
1975				aria-label="Go to Working Hours section"
1976				title="Working Hours Savra - Suit Shop in Jaipur">
1977				Working Hours
1978				</a>
1979			</li>
1980												<li>
1981				<a class="nav-link"
1982				href="#why-us"
1983				aria-label="Go to Why Us section"
1984				title="Why us Savra - Suit Shop in Jaipur">
1985				Why Us
1986				</a>
1987			</li>
1988			
1989			<li>
1990				<a class="nav-link"
1991				href="#contact-details"
1992				aria-label="Go to Contact section"
1993				title="Contact details of Savra - Suit Shop in Jaipur">
1994				Contact
1995				</a>
1996			</li>
1997			<li>
1998				<a class="nav-link"
1999				href="#place-map-wrapper"
2000				aria-label="Go to Location section"
2001				title="Location of Savra - Suit Shop in Jaipur">
2002				Location
2003				</a>
2004			</li>
2005			<li>
2006				<a class="nav-link"
2007				href="#reviews"
2008				aria-label="Go to Reviews section"
2009				title="Customer reviews of Savra - Suit Shop in Jaipur">
2010				Reviews
2011				</a>
2012			</li>
2013			</ul>
2014			</div>
2015		</nav>
2016		<div class="jd-navbar-spacer" id="navbarSpacer"></div>
2017
2018		<!-- Main Information -->
2019		<div class="container mt-3">
2020		
2021
2022			<div class="row">
2023				<div class="col-md-6 col-lg-8" >
2024				
2025					<!-- Description -->
2026								<section id="about" class="mt-3 content-card">
2027											<h2 class="text-dark text-uppercase section-heading">About Us</h2>
2028												<p class="text-muted mb-2"><i class="las la-calendar-alt"></i> Established in 2002</p>
2029												<!-- Short Description -->
2030													<div class="description mb-3" style="font-size: 17px; font-weight: 500;">
2031																From graceful suits and festive outfits to stylish traditional wear, our collection is designed for women who appreciate quality, comfort, and refined fashion. If you are looking for a trusted suit shop in <a href="/listings/rajasthan/jaipur">Jaipur</a>, Savra offers a carefully selected range of designs suitable for weddings, festivals, family functions, and everyday ethnic styling. Explore elegant patterns, fine fabrics, and fashionable designs that bring tradition and modern style together. Visit Savra and find ethnic wear that makes every occasion feel special.							</div>
2032													<div class="description">
2033														<p>Discover timeless style and elegant craftsmanship at Savra, your destination for beautiful ethnic wear in <a href="/listings/rajasthan/jaipur">Jaipur</a>. From graceful suits and festive outfits to stylish traditional wear, our collection is designed for women who appreciate quality, comfort, and refined fashion. If you are looking for a trusted suit shop in Jaipur, Savra offers a carefully selected range of designs suitable for weddings, festivals, family functions, and everyday ethnic styling. Explore elegant patterns, fine fabrics, and fashionable designs that bring tradition and modern style together. Visit Savra and find ethnic wear that makes every occasion feel special.</p>						</div>
2034								<!-- Download Section -->
2035								
2036												</section>
2037												<section id="faq" class="mt-3 content-card">
2038																<h2 class="text-dark text-uppercase section-heading">Frequently Asked Questions</h2>
2039								<hr class="heading-divider">
2040																<div class="faq-accordion" id="faqAccordion">
2041																		<div class="faq-item">
2042										<button class="faq-question" type="button" data-toggle="collapse" data-target="#faqAnswer0" aria-expanded="true" aria-controls="faqAnswer0">
2043											<span>What services does Savra - Suit Shop in Jaipur offer?</span>
2044											<i class="las la-angle-down faq-caret"></i>
2045										</button>
2046										<div id="faqAnswer0" class="collapse show" data-parent="#faqAccordion">
2047											<div class="faq-answer">Savra - Suit Shop in Jaipur provides Others services in India. Contact the business directly to confirm specific requirements and availability.</div>
2048										</div>
2049									</div>
2050																		<div class="faq-item">
2051										<button class="faq-question" type="button" data-toggle="collapse" data-target="#faqAnswer1" aria-expanded="false" aria-controls="faqAnswer1">
2052											<span>How can I contact Savra - Suit Shop in Jaipur?</span>
2053											<i class="las la-angle-down faq-caret"></i>
2054										</button>
2055										<div id="faqAnswer1" class="collapse" data-parent="#faqAccordion">
2056											<div class="faq-answer">You can contact Savra - Suit Shop in Jaipur using the phone number, WhatsApp, email, or website listed on this page.</div>
2057										</div>
2058									</div>
2059																		<div class="faq-item">
2060										<button class="faq-question" type="button" data-toggle="collapse" data-target="#faqAnswer2" aria-expanded="false" aria-controls="faqAnswer2">
2061											<span>Where is Savra - Suit Shop in Jaipur located?</span>
2062											<i class="las la-angle-down faq-caret"></i>
2063										</button>
2064										<div id="faqAnswer2" class="collapse" data-parent="#faqAccordion">
2065											<div class="faq-answer">Savra - Suit Shop in Jaipur is located in Jaipur, Rajasthan. You can view the exact location on the map provided in this listing.</div>
2066										</div>
2067									</div>
2068																		<div class="faq-item">
2069										<button class="faq-question" type="button" data-toggle="collapse" data-target="#faqAnswer3" aria-expanded="false" aria-controls="faqAnswer3">
2070											<span>What areas does Savra - Suit Shop in Jaipur serve?</span>
2071											<i class="las la-angle-down faq-caret"></i>
2072										</button>
2073										<div id="faqAnswer3" class="collapse" data-parent="#faqAccordion">
2074											<div class="faq-answer">Savra - Suit Shop in Jaipur serves india.</div>
2075										</div>
2076									</div>
2077																		<div class="faq-item">
2078										<button class="faq-question" type="button" data-toggle="collapse" data-target="#faqAnswer4" aria-expanded="false" aria-controls="faqAnswer4">
2079											<span>Is Savra - Suit Shop in Jaipur open today?</span>
2080											<i class="las la-angle-down faq-caret"></i>
2081										</button>
2082										<div id="faqAnswer4" class="collapse" data-parent="#faqAccordion">
2083											<div class="faq-answer">Please check the opening hours section on this page, or call <span class="contact-blur"><a href="tel:9460192284"><strong>9460192284</strong></a></span> directly for confirmation.</div>
2084										</div>
2085									</div>
2086																		<div class="faq-item">
2087										<button class="faq-question" type="button" data-toggle="collapse" data-target="#faqAnswer5" aria-expanded="false" aria-controls="faqAnswer5">
2088											<span>How long has Savra - Suit Shop in Jaipur been in business?</span>
2089											<i class="las la-angle-down faq-caret"></i>
2090										</button>
2091										<div id="faqAnswer5" class="collapse" data-parent="#faqAccordion">
2092											<div class="faq-answer">Savra - Suit Shop in Jaipur was established in 2002, giving it 24+ years of experience in the Others category.</div>
2093										</div>
2094									</div>
2095																		<div class="faq-item">
2096										<button class="faq-question" type="button" data-toggle="collapse" data-target="#faqAnswer6" aria-expanded="false" aria-controls="faqAnswer6">
2097											<span>Is this listing on addyp.com free to use?</span>
2098											<i class="las la-angle-down faq-caret"></i>
2099										</button>
2100										<div id="faqAnswer6" class="collapse" data-parent="#faqAccordion">
2101											<div class="faq-answer">Yes, users can view details and contact businesses listed on addyp.com without any charges.</div>
2102										</div>
2103									</div>
2104																	</div>
2105																<p class="mt-3"> Looking for similar services? Check out related businesses here:
2106									<b> </b> in Jaipur.
2107								</p>
2108							</section>
2109					<!-- Gallery -->
2110				<section id="photos" class="mt-3">
2111									</section>
2112			
2113			<!-- Bootstrap Service Modal -->
2114			<div class="modal fade"
2115				id="serviceModal"
2116				tabindex="-1"
2117				role="dialog"
2118				aria-hidden="true">
2119
2120				<div class="modal-dialog modal-xl"
2121					role="document">
2122
2123					<div class="modal-content">
2124
2125						<!-- Header -->
2126						<div class="modal-header">
2127							<h5 class="modal-title"
2128								id="popupTitle"></h5>
2129
2130							<button type="button"
2131									class="close"
2132									data-dismiss="modal">
2133								<span>&times;</span>
2134							</button>
2135						</div>
2136
2137						<!-- Scrollable area -->
2138						<div class="modal-body">
2139
2140							<div class="popup-gallery">
2141
2142								<button id="prevImg"
2143										type="button">
2144									‹
2145								</button>
2146
2147								<img loading="lazy" id="popupImage"
2148									class="popup-img"
2149									src=""
2150									alt="">
2151
2152								<button id="nextImg"
2153										type="button">
2154									›
2155								</button>
2156
2157							</div>
2158							<!-- Price -->
2159							<h5 id="popupPrice" class="mt-3"></h5>
2160							<p id="popupText"></p>
2161
2162							<div class="video-wrap">
2163								<a id="popupYoutube"
2164								class="btn btn-secondary no-underline"
2165								target="_blank" style="color:white;">
2166									Watch Video
2167								</a>
2168								<a id="popupSerDetailsLink"
2169								class="btn btn-secondary no-underline"
2170								target="_blank" style="color:white;">
2171									View Details
2172								</a>
2173							</div>
2174
2175						</div>
2176
2177						<!-- Footer -->
2178						<div class="modal-footer d-flex justify-content-between">
2179
2180							<button id="prevService"
2181									type="button"
2182									class="btn btn btn-outline-secondary">
2183								Previous Service
2184							</button>
2185
2186							<button id="nextService"
2187									type="button"
2188									class="btn btn btn-outline-secondary">
2189								Next Service
2190							</button>
2191
2192						</div>
2193
2194					</div>
2195
2196				</div>
2197
2198			</div>
2199
2200			
2201			
2202			
2203			<!-- Bootstrap Product Modal -->
2204			<div class="modal fade"
2205				id="productModal"
2206				tabindex="-1"
2207				role="dialog"
2208				aria-hidden="true">
2209
2210				<div class="modal-dialog modal-xl" role="document">
2211					<div class="modal-content">
2212
2213						<!-- Header -->
2214						<div class="modal-header">
2215							<h5 class="modal-title" id="productPopupTitle"></h5>
2216
2217							<button type="button" class="close" data-dismiss="modal">
2218								<span>&times;</span>
2219							</button>
2220						</div>
2221
2222						<!-- Body -->
2223						<div class="modal-body">
2224
2225							<div class="popup-gallery">
2226
2227								<button id="prevProductImg" type="button">‹</button>
2228
2229								<img loading="lazy" id="productPopupImage"
2230									class="popup-img"
2231									src=""
2232									alt="">
2233
2234								<button id="nextProductImg" type="button">›</button>
2235
2236							</div>
2237
2238							<!-- Price -->
2239							<h5 id="productPopupPrice" class="mt-3"></h5>
2240
2241							<!-- Description -->
2242							<p id="productPopupText"></p>
2243
2244							<!-- Link -->
2245							<div class="video-wrap">
2246								<a id="productPopupLink"
2247								class="btn btn-secondary no-underline"
2248								target="_blank" style="color:white;">
2249									Watch Video
2250								</a>
2251								<a id="productDetailsLink"
2252								class="btn btn-secondary no-underline"
2253								target="_blank" style="color:white;">
2254									View Details
2255								</a>
2256							</div>
2257
2258						</div>
2259
2260						<!-- Footer -->
2261						<div class="modal-footer d-flex justify-content-between">
2262
2263							<button id="prevProduct"
2264									type="button"
2265									class="btn btn-outline-secondary">
2266								Previous Product
2267							</button>
2268
2269							<button id="nextProduct"
2270									type="button"
2271									class="btn btn-outline-secondary">
2272								Next Product
2273							</button>
2274
2275						</div>
2276
2277					</div>
2278				</div>
2279			</div>
2280
2281				
2282					<div >
2283												<section id="why-us" class="mt-3 content-card">
2284								<h2 class="text-dark text-uppercase section-heading">Why Choose Us</h2>
2285                        <hr class="heading-divider">
2286                        <div class="d-flex mb-3">
2287                            <div class="mr-3">
2288                                
2289
2290<p>
2291    Savra - Suit Shop in Jaipur is a <a href="https://addyp.com/listings/rajasthan/jaipur/others"
2292													style="color:rgb(40, 56, 72); text-decoration: none; font-weight: bold;">Others</a> business in Jaipur, Rajasthan, India that has 24+ years of experience, established in 2002, and serves india.
2293</p>
2294
2295                                    											<!-- <p>Frequently Asked Questions (FAQs) – <a href="https://addyp.com/listings/rajasthan/jaipur/others"
2296													style="color:rgb(40, 56, 72); text-decoration: none; font-weight: bold;">Others</a> in India</p> -->
2297											
2298										</div>
2299								</div>
2300							</section>
2301												<section id="contact-details" class="mt-3 content-card">
2302								<h2 class="text-dark text-uppercase section-heading">Contact Details</h2>
2303
2304								<hr class="heading-divider">
2305								<div>
2306												<p>
2307													<i class="fas fa-phone-alt"></i> Contact us at
2308													<span class="contact-blur">
2309														<a href="tel:9460192284"><strong>9460192284</strong></a>
2310													</span>
2311													or for quick assistance
2312													 														, reach out via
2313														<i class="fab fa-whatsapp text-success"></i>
2314																												<span class="contact-blur">
2315															<a href="https://wa.me/919460192284?text=Hello%2C+I+found+your+listing+on+addyp.com+I+would+like+to+know+more+details+about+it."
2316																target="_blank">
2317																<strong>WhatsApp</strong>
2318															</a>.
2319														</span>
2320													.
2321												</p>
2322												</div>
2323
2324																								<div class="mt-3">
2325													<strong>Follow:</strong>
2326													<div class="social-links d-inline-block contact-blur">
2327																																																																																																			<a href="https://maps.app.goo.gl/jeFYqpfc4HSyUgm47" target="_blank" rel="noopener" aria-label="Google Business Profile">
2328																<i class="lab la-google"></i>
2329															</a>
2330																											</div>
2331												</div>
2332																					</section>
2333							
2334							
2335
2336							<!-- Features -->
2337					
2338					<!-- Coupons -->
2339																				<section class="mt-3">
2340								<!-- Reviews -->
2341								<div id="reviews" class="tab-pane content-card" role="tabpanel">
2342									<h2 class="text-dark text-uppercase section-heading">Reviews</h2>
2343									<hr class="heading-divider">
2344
2345									
2346									<div id="review-form-wrapper" class="mt-4">
2347																					<div class="review-login-box" id="review-login-box">
2348												<p>To write a review, you must login first.</p>
2349												<a href="/user/sign-in" class="btn-login">Sign In</a>
2350												</div>
2351																				</div>
2352								</div>
2353														</section>
2354							<!-- removed from here similar listing -->
2355
2356
2357						</div>
2358						</div>
2359
2360						<!-- Sidebar -->
2361						<div class="col-md-6 col-lg-4">
2362						<div class="content-card">
2363						<div class="mb-3">
2364
2365<a href="#" id="shareDropdown" class=" btn btn-block btn-outline-dark" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
2366<i class="fa-solid fa-share-from-square"></i> Share page
2367</a>
2368
2369<div class="dropdown-menu dropdown-menu-right zoomIn animated" aria-labelledby="shareDropdown">
2370
2371  <a target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Faddyp.com%2Flisting%2Frajasthan%2Fjaipur%2Fothers%2Fsavra-suit-shop-in-jaipur" class="dropdown-item" data-click-track="share" data-click-place="478984" data-click-detail="Facebook">
2372	<i class="lab la-facebook"></i> Facebook
2373  </a>
2374
2375  <div class="dropdown-divider"></div>
2376
2377  <a class="dropdown-item" target="_blank" href="https://twitter.com/intent/tweet?url=https%3A%2F%2Faddyp.com%2Flisting%2Frajasthan%2Fjaipur%2Fothers%2Fsavra-suit-shop-in-jaipur" data-click-track="share" data-click-place="478984" data-click-detail="Twitter">
2378	<i class="lab la-twitter"></i> Twitter
2379  </a>
2380
2381  <div class="dropdown-divider"></div>
2382
2383  <a class="dropdown-item" target="_blank" href="https://wa.me/?text=https%3A%2F%2Faddyp.com%2Flisting%2Frajasthan%2Fjaipur%2Fothers%2Fsavra-suit-shop-in-jaipur" data-click-track="share" data-click-place="478984" data-click-detail="WhatsApp">
2384	<i class="lab la-whatsapp"></i> WhatsApp
2385  </a>
2386
2387  <div class="dropdown-divider"></div>
2388
2389  <!-- Copy Link -->
2390  <a class="dropdown-item" href="javascript:void(0)" onclick="if (!window.__cfRLUnblockHandlers) return false; copyShareLink()" data-click-track="share" data-click-place="478984" data-click-detail="Copy Link" data-cf-modified-5be3242ed37c14fc3d069643-="">
2391	<i class="las la-link"></i> Copy Link
2392  </a>
2393
2394</div>
2395</div>
2396
2397
2398<a href="#" class="btn btn-block btn-outline-dark mb-3" data-toggle="modal" data-target="#reportContentModal">
2399	<i class="fa-solid fa-flag"></i> Report
2400</a>
2401
2402
2403<div class="modal fade" id="reportContentModal" tabindex="-1" role="dialog" aria-labelledby="reportContentModalLabel">
2404	<div class="modal-dialog modal-dialog-centered" role="document">
2405		<div class="modal-content">
2406			<form method="post" action="https://addyp.com/process-report">
2407				<div class="modal-header">
2408					<h5 class="modal-title" id="reportContentModalLabel">Report this listing</h5>
2409					<button type="button" class="close" data-dismiss="modal" aria-label="Close">
2410						<span aria-hidden="true">&times;</span>
2411					</button>
2412				</div>
2413				<div class="modal-body">
2414
2415					<input type="hidden" name="content_type" value="listing">
2416					<input type="hidden" name="content_id" value="478984">
2417					<input type="hidden" name="content_title" value="Savra - Suit Shop in Jaipur">
2418					<input type="hidden" name="content_url" value="https://addyp.com/listing/rajasthan/jaipur/others/savra-suit-shop-in-jaipur">
2419
2420					<!-- honeypot - left empty by real visitors, hidden off-screen -->
2421					<input type="text" name="website" value="" style="position:absolute; left:-9999px;" tabindex="-1" autocomplete="off">
2422
2423					<div class="form-group">
2424						<label>What's wrong?</label>
2425						<select name="reason" class="form-control" required>
2426							<option value="">-- Select a reason --</option>
2427														<option value="incorrect_info">Incorrect information (contact, address, hours, etc.)</option>
2428														<option value="missing_details">Missing or incomplete details</option>
2429														<option value="duplicate">Duplicate listing</option>
2430														<option value="inappropriate">Inappropriate or offensive content</option>
2431														<option value="spam_fake">Spam or fake</option>
2432														<option value="no_longer_valid">No longer available (closed, expired, filled, etc.)</option>
2433														<option value="other">Other</option>
2434													</select>
2435					</div>
2436
2437					<div class="form-group">
2438						<label>Who are you?</label>
2439						<select name="relationship" class="form-control" required>
2440							<option value="">-- Select one --</option>
2441														<option value="visitor">Just a visitor / customer</option>
2442														<option value="business_owner">I'm the owner of this business</option>
2443														<option value="competitor">I'm a competing business</option>
2444														<option value="other">Other</option>
2445													</select>
2446					</div>
2447
2448					<div class="form-group">
2449						<label>Details (optional)</label>
2450						<textarea name="details" class="form-control" rows="3" placeholder="Tell us more about the issue..."></textarea>
2451					</div>
2452
2453					<div class="form-row">
2454						<div class="form-group col-md-6">
2455							<label>Your name (optional)</label>
2456							<input type="text" name="reporter_name" class="form-control">
2457						</div>
2458						<div class="form-group col-md-6">
2459							<label>Your email (optional)</label>
2460							<input type="email" name="reporter_email" class="form-control">
2461						</div>
2462					</div>
2463
2464					<div class="form-group text-center">
2465						<label>What is 1 + 10 ?</label>
2466						<input type="text" class="form-control text-center" name="captcha_answer" placeholder="Enter answer" required>
2467					</div>
2468
2469				</div>
2470				<div class="modal-footer">
2471					<button type="button" class="btn btn-light" data-dismiss="modal">Cancel</button>
2472					<button type="submit" class="btn btn-danger">Submit Report</button>
2473				</div>
2474			</form>
2475		</div>
2476	</div>
2477</div>
2478
2479							<!-- Contact and Favorites -->
2480							<div>
2481
2482								<button type="button" class="add-to-favorites btn btn-block btn-outline-dark"
2483									data-listing-id="478984" data-click-track="favorite" data-click-place="478984"><i
2484										class="lar la-heart"></i>
2485									Add to Favorites</button>
2486							</div>
2487							</div>
2488
2489							<!-- Hours -->
2490									<section id="working-hrs" class="mt-3 content-card">
2491        <h2 class="section-heading">Working Hours</h2>
2492        <hr class="heading-divider">
2493
2494        <div>
2495            <table class="table table-row-bordered table-striped">
2496                <thead>
2497                    <tr>
2498                        <th>Day</th>
2499                        <th class="text-center">Start</th>
2500                        <th class="text-center">End</th>
2501                    </tr>
2502                </thead>
2503                <tbody>
2504											<tr>
2505							<td>Monday</td>
2506
2507							
2508								<td class="text-center">
2509									10:30 am								</td>
2510
2511								<td class="text-center">
2512									8:30 pm								</td>
2513
2514							
2515						</tr>
2516											<tr>
2517							<td>Tuesday</td>
2518
2519							
2520								<td class="text-center">
2521									10:30 am								</td>
2522
2523								<td class="text-center">
2524									8:30 pm								</td>
2525
2526							
2527						</tr>
2528											<tr>
2529							<td>Wednesday</td>
2530
2531							
2532								<td class="text-center">
2533									10:30 am								</td>
2534
2535								<td class="text-center">
2536									8:30 pm								</td>
2537
2538							
2539						</tr>
2540											<tr>
2541							<td>Thursday</td>
2542
2543							
2544								<td class="text-center">
2545									10:30 am								</td>
2546
2547								<td class="text-center">
2548									8:30 pm								</td>
2549
2550							
2551						</tr>
2552											<tr>
2553							<td>Friday</td>
2554
2555							
2556								<td class="text-center">
2557									10:30 am								</td>
2558
2559								<td class="text-center">
2560									8:30 pm								</td>
2561
2562							
2563						</tr>
2564											<tr>
2565							<td>Saturday</td>
2566
2567							
2568								<td class="text-center">
2569									10:30 am								</td>
2570
2571								<td class="text-center">
2572									8:30 pm								</td>
2573
2574							
2575						</tr>
2576											<tr>
2577							<td>Sunday</td>
2578
2579							
2580								<td class="text-center">
2581									10:30 am								</td>
2582
2583								<td class="text-center">
2584									8:30 pm								</td>
2585
2586							
2587						</tr>
2588									</tbody>
2589            </table>
2590        </div>
2591		</section>
2592        
2593
2594
2595							<!-- Map -->
2596																	<div class="content-card">
2597										<p class="text-dark text-uppercase section-heading">
2598											Location</p>
2599										<hr class="heading-divider">
2600										<div id="place-map-wrapper">
2601											<div id="map-canvas" style="width:100%; height:100%" ></div>
2602										</div>
2603										</div>
2604										
2605
2606
2607							<!-- Manager -->
2608							<div class="content-card">
2609							<p class="text-dark text-uppercase section-heading">
2610								Updated By</p>
2611							<hr class="heading-divider">
2612
2613							<div class="d-flex">
2614								
2615								<div class="flex-grow-1">
2616									<strong><a
2617												href="https://addyp.com/profile/397732">savra SAVRA</a></strong>
2618												<strong style="float:right;">On 24 Sep 2026</strong><br>
2619
2620									<div class="smallest">
2621																			</div>
2622								</div>
2623							</div>
2624						</div>
2625						
2626    <div class="content-card">
2627        <h2 class="text-dark text-uppercase section-heading">
2628            Explore Others in Other Cities
2629        </h2>
2630        <hr class="heading-divider">
2631
2632        <div class="other-cities-chips">
2633                            
2634                                    <a href="https://addyp.com/listings/rajasthan/udaipur/others" class="other-cities-chip">
2635                        Others in Udaipur                    </a>
2636                
2637                            
2638                                    <a href="https://addyp.com/listings/rajasthan/jodhpur/others" class="other-cities-chip">
2639                        Others in Jodhpur                    </a>
2640                
2641                            
2642                                    <a href="https://addyp.com/listings/rajasthan/kota/others" class="other-cities-chip">
2643                        Others in Kota                    </a>
2644                
2645                            
2646                                    <a href="https://addyp.com/listings/rajasthan/alwar/others" class="other-cities-chip">
2647                        Others in Alwar                    </a>
2648                
2649                            
2650                                    <a href="https://addyp.com/listings/rajasthan/ajmer/others" class="other-cities-chip">
2651                        Others in Ajmer                    </a>
2652                
2653                            
2654                                    <a href="https://addyp.com/listings/rajasthan/jaipur-city/others" class="other-cities-chip">
2655                        Others in Jaipur City                    </a>
2656                
2657                            
2658                                    <a href="https://addyp.com/listings/rajasthan/jodhpur/others" class="other-cities-chip">
2659                        Others in jodhpur                    </a>
2660                
2661                            
2662                                    <a href="https://addyp.com/listings/rajasthan/jaisalmer/others" class="other-cities-chip">
2663                        Others in Jaisalmer                    </a>
2664                
2665                            
2666                                    <a href="https://addyp.com/listings/rajasthan/bikaner/others" class="other-cities-chip">
2667                        Others in Bikaner                    </a>
2668                
2669                            
2670                                    <a href="https://addyp.com/listings/rajasthan/sikar/others" class="other-cities-chip">
2671                        Others in Sikar                    </a>
2672                
2673                            
2674                                    <a href="https://addyp.com/listings/rajasthan/bhiwadi/others" class="other-cities-chip">
2675                        Others in Bhiwadi                    </a>
2676                
2677                            
2678                                    <a href="https://addyp.com/listings/rajasthan/kishangarh/others" class="other-cities-chip">
2679                        Others in Kishangarh                    </a>
2680                
2681                    </div>
2682    </div>
2683						</div>
2684					</div>
2685				</div>
2686
2687				<!-- Bootstrap Modal -->
2688				<div class="modal fade" id="phoneModal" tabindex="-1" aria-labelledby="phoneModalLabel"
2689					aria-hidden="true">
2690					<input type="hidden" id="place_id" class="form-control">
2691					<div class="modal-dialog">
2692						<div class="modal-content">
2693							<div class="modal-header">
2694								<h5 class="modal-title" id="phoneModalLabel">Request Email or Call Back</h5>
2695								
2696									<button type="button" class="close" data-dismiss="modal" aria-label="Close">
2697					<span aria-hidden="true">×</span>
2698				</button>
2699							</div>
2700							<div class="modal-body">
2701								<p>Email or Phone</p>
2702								<input type="text" id="messageText" class="form-control"
2703									placeholder="Type your Email/Phone...">
2704								<div class="mb-3 mt-3 text-center">
2705									<label id="captcha-ques" class="fw-bold d-block mb-2"></label>
2706									<input type="text" id="captcha-ans" class="form-control" placeholder="Enter answer" required/>
2707								</div>
2708							</div>
2709							<div class="modal-footer">
2710								
2711								<button type="button" class="btn btn-primary" onclick="if (!window.__cfRLUnblockHandlers) return false; sendMessage()" data-cf-modified-5be3242ed37c14fc3d069643-="">Request Email or Call Back</button>
2712							</div>
2713						</div>
2714					</div>
2715				</div>
2716
2717
2718				
2718<script type="5be3242ed37c14fc3d069643-text/javascript">
2719					function generateCaptchas() {
2720						const a = Math.floor(Math.random() * 10) + 1;
2721						const b = Math.floor(Math.random() * 10) + 1;
2722						const answer = a + b;
2723
2724						// show question in the label
2725						document.getElementById('captcha-ques').innerText = `What is ${a} + ${b}?`;
2726						// store correct answer in dataset
2727						document.getElementById('captcha-ques').dataset.answer = answer;
2728					}
2729
2730					function showModal(placeId) {
2731						// document.getElementById("modalPhoneNumber").innerText = phone;
2732						//alert(placeId)
2733						// Show Bootstrap Modal
2734						generateCaptchas();
2735						document.getElementById("place_id").value = placeId;
2736						var myModal = new bootstrap.Modal(document.getElementById('phoneModal'));
2737						myModal.show();
2738
2739
2740
2741						// Send AJAX request to track the click
2742						//var xhr = new XMLHttpRequest();
2743						//xhr.open("POST", 'https://addyp.com/update_click_count.php', true);
2744						//xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
2745						//xhr.send("place_id=" + encodeURIComponent(placeId));
2746					}
2747				</script>
2747
2748				
2748<script type="5be3242ed37c14fc3d069643-text/javascript">
2749
2750
2751		let correctCaptcha = 0;
2752        function sendMessage() {
2753            var message = document.getElementById("messageText").value;
2754            var placeId = document.getElementById("place_id").value;
2755            var correctAnswer = parseInt(document.getElementById('captcha-ques').dataset.answer);
2756            var userAnswer = parseInt(document.getElementById('captcha-ans').value);
2757
2758            if (message.trim() === "") {
2759                alert("Please enter a Email or Phone.");
2760                return;
2761            }
2762            if (isNaN(userAnswer) || userAnswer !== correctAnswer) {
2763                alert("Captcha incorrect! Please try again.");
2764                document.getElementById('captcha-ans').value = '';
2765                generateCaptchas(); // regenerate captcha
2766                return;
2767            }
2768
2769
2770
2771            // Send AJAX request to save the message
2772            var xhr = new XMLHttpRequest();
2773            xhr.open("POST", "https://addyp.com/send_enquiry.php", true);
2774            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
2775            xhr.send("place_id=" + encodeURIComponent(placeId) + "&message=" + encodeURIComponent(message));
2776
2777            // Close the modal after sending
2778
2779
2780            // Clear the textarea
2781            document.getElementById("messageText").value = "";
2782            document.getElementById("place_id").value = "";
2783
2784            //alert("Message sent successfully!");
2785            // Close the modal properly
2786            $("#phoneModal").hide();
2787            location.reload();
2788			
2789
2790            // Clear the textarea
2791
2792        }
2793				</script>
2793
2794
2795
2796
2797				<!-- modal contact user -->
2798<div id="contact-user-modal" class="modal fade" tabindex="-1" role="dialog">
2799	<div class="modal-dialog" role="document">
2800		<div class="modal-content">
2801			<div class="modal-header">
2802				<h5 class="modal-title">
2803											Get Quote										</h5>
2804				<button type="button" class="close" data-dismiss="modal" aria-label="Close">
2805					<span aria-hidden="true">&times;</span>
2806				</button>
2807			</div>
2808			<div class="modal-body">
2809									<div class="mb-3">
2810						<!--<div><strong>Phone</strong></div>
2811						 <a href="tel:<?//= !empty($country_code) ? '+' . $country_code : '' ?><?//= preg_replace("/[^0-9]/", "", $area_code) ?><?//= preg_replace("/[^0-9]/", "", $phone) ?>" class="btn btn-light">
2812							<strong><i class="las la-phone"></i>
2813																	+<?//= $country_code ?>
2814																	<?//= !empty($area_code) ? '(' . $area_code . ')' : '' ?>
2815								<?//= $phone ?>
2816							</strong>
2817						</a> -->
2818					</div>
2819					
2820				
2821				<div id="contact-user-result"></div>
2822				<form id="contact-user-form" method="post">
2823											<input type="hidden" name="place_id" value="478984">
2824						<input type="hidden" name="from_page" value="listing">
2825						<input type="hidden" name="listing_url" value="https://addyp.com/listing/rajasthan/jaipur/others/savra-suit-shop-in-jaipur">
2826						
2827					<div class="form-group">
2828						<input type="text" id="sender_name" class="form-control" name="sender_name" placeholder="Name" required>
2829					</div>
2830
2831					<div class="form-group">
2832						<input type="email" id="sender_email" class="form-control" name="sender_email" placeholder="Email" required>
2833					</div>
2834
2835					<div class="form-group">
2836						<input type="tel" id="sender_whatsapp" class="form-control" name="sender_whatsapp" placeholder="WhatsApp number (optional)">
2837						<small class="form-text text-muted">Optional - so we can follow up and ask how it went.</small>
2838					</div>
2839
2840					<div class="form-group">
2841						<textarea id="sender_msg" class="form-control" name="sender_msg" rows="5" placeholder="Message" required></textarea>
2842					</div>
2843					 <div class="form-group text-center">
2844                    <label id="captcha-question"></label>
2845                    <input type="text" class="form-control text-center" id="captcha-answer" name="captcha_answer" placeholder="Enter answer" required>
2846                   </div>
2847				</form>
2848			</div>
2849			<div class="modal-footer">
2850				<button type="button" id="contact-user-close" class="btn btn-light" data-dismiss="modal">Close</button>
2851				<button type="button" id="contact-user-cancel" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
2852				<button type="submit" id="contact-user-submit" class="btn btn-primary">Submit</button>
2853			</div>
2854		</div>
2855	</div>
2856</div>
2857<script type="5be3242ed37c14fc3d069643-text/javascript">
2858function generateCaptcha() {
2859    const a = Math.floor(Math.random() * 10) + 1;
2860    const b = Math.floor(Math.random() * 10) + 1;
2861    const answer = a + b;
2862    $('#captcha-question').text(`What is ${a} + ${b} ?`);
2863    $('#captcha-question').data('answer', answer);
2864}
2865
2866// generate on modal open
2867$('#contact-user-modal').on('shown.bs.modal', generateCaptcha);
2868
2869</script>
2869<!-- modal request callback -->
2870<div id="request-callback-modal" class="modal fade" tabindex="-1" role="dialog">
2871	<div class="modal-dialog" role="document">
2872		<div class="modal-content">
2873			<div class="modal-header">
2874				<h5 class="modal-title">Request a Callback</h5>
2875				<button type="button" class="close" data-dismiss="modal" aria-label="Close">
2876					<span aria-hidden="true">&times;</span>
2877				</button>
2878			</div>
2879			<div class="modal-body">
2880				<p class="text-muted">Leave your name and number - the business will call you back.</p>
2881				<div id="request-callback-result"></div>
2882				<form id="request-callback-form">
2883					<input type="hidden" name="place_id" value="478984">
2884					<div class="form-group">
2885						<input type="text" id="callback-name" class="form-control" name="name" placeholder="Name" required>
2886					</div>
2887					<div class="form-group">
2888						<input type="tel" id="callback-phone" class="form-control" name="phone" placeholder="Phone number" required>
2889					</div>
2890				</form>
2891			</div>
2892			<div class="modal-footer">
2893				<button type="button" class="btn btn-light" data-dismiss="modal">Close</button>
2894				<button type="button" id="request-callback-submit" class="btn btn-primary">Request Callback</button>
2895			</div>
2896		</div>
2897	</div>
2898</div>
2899<script type="5be3242ed37c14fc3d069643-text/javascript">
2900(function () {
2901	var $ = window.jQuery;
2902	if (!$) { return; }
2903
2904	$('#request-callback-submit').on('click', function () {
2905		var $btn = $(this);
2906		var name = $('#callback-name').val();
2907		var phone = $('#callback-phone').val();
2908
2909		if (!name || !phone) {
2910			$('#request-callback-result').html('<div class="alert alert-danger">Please enter your name and phone number.</div>');
2911			return;
2912		}
2913
2914		$btn.prop('disabled', true).text('Sending...');
2915
2916		$.ajax({
2917			url: 'https://addyp.com/request-callback.php',
2918			type: 'POST',
2919			contentType: 'application/json',
2920			data: JSON.stringify({
2921				place_id: $('#request-callback-form input[name="place_id"]').val(),
2922				name: name,
2923				phone: phone
2924			}),
2925			success: function (res) {
2926				$btn.prop('disabled', false).text('Request Callback');
2927				if (res.status === 'success') {
2928					$('#request-callback-result').html('<div class="alert alert-success">Thanks! The business will call you back soon.</div>');
2929					$('#request-callback-form')[0].reset();
2930					$('#request-callback-form, #request-callback-submit').hide();
2931				} else {
2932					$('#request-callback-result').html('<div class="alert alert-danger">' + (res.message || 'Something went wrong.') + '</div>');
2933				}
2934			},
2935			error: function () {
2936				$btn.prop('disabled', false).text('Request Callback');
2937				$('#request-callback-result').html('<div class="alert alert-danger">Server error. Please try again.</div>');
2938			}
2939		});
2940	});
2941
2942	$('#request-callback-modal').on('hidden.bs.modal', function () {
2943		$('#request-callback-result').empty();
2944		$('#request-callback-form')[0].reset();
2945		$('#request-callback-form, #request-callback-submit').show();
2946	});
2947})();
2948</script>
2948
2949
2950				
2950<script type="5be3242ed37c14fc3d069643-text/javascript">
2951				(function () {
2952					function trackClick(placeId, clickType, detail) {
2953						var payload = JSON.stringify({ place_id: placeId, click_type: clickType, detail: detail || null });
2954						if (navigator.sendBeacon) {
2955							navigator.sendBeacon('https://addyp.com/track-click.php', new Blob([payload], { type: 'application/json' }));
2956						} else {
2957							fetch('https://addyp.com/track-click.php', { method: 'POST', body: payload, keepalive: true });
2958						}
2959
2960						// mirror the same click to GA4 - the base gtag() tag is
2961						// already installed site-wide via the custom footer
2962						// script field (footer_content.data_footer, echoed in
2963						// templates/footer-child.php), it just had no event
2964						// wiring beyond automatic pageviews until now, despite
2965						// these lead-relevant clicks already being tracked
2966						// server-side (track-click.php)
2967						if (typeof gtag === 'function') {
2968							gtag('event', 'lead_click', {
2969								click_type: clickType,
2970								place_id: placeId
2971							});
2972						}
2973					}
2974
2975					document.addEventListener('click', function (e) {
2976						var el = e.target.closest('[data-click-track]');
2977						if (el) {
2978							trackClick(el.getAttribute('data-click-place'), el.getAttribute('data-click-track'), el.getAttribute('data-click-detail'));
2979							return;
2980						}
2981
2982						var groupEl = e.target.closest('[data-click-track-group] a');
2983						var group = e.target.closest('[data-click-track-group]');
2984						if (groupEl && group) {
2985							trackClick(group.getAttribute('data-click-place'), group.getAttribute('data-click-track-group'), groupEl.getAttribute('data-click-detail'));
2986						}
2987					});
2988				})();
2989				</script>
2989
2990
2991									<!-- whatsapp floating button -->
2992					<style>
2993						.float {
2994							position: fixed;
2995							width: 60px;
2996							height: 60px;
2997							bottom: 40px;
2998							right: 40px;
2999							background-color: #25d366;
3000							color: #FFF;
3001							border-radius: 50px;
3002							text-align: center;
3003							box-shadow: 2px 2px 3px #999;
3004							z-index: 100;
3005						}
3006
3007						
3008						.my-float {
3009							margin-top: 10px;
3010							font-size: 2.5rem;
3011							vertical-align: middle;
3012						}
3013					</style>
3014										
3015<div class="container">
3016				<!-- Banner Container start -->
3017
3018
3019
3020									<div id="banner-ads-container">
3021													<div class="banner ad-container" id="banner1" data-ad-id="11" data-type="coupons">
3022								<a href="https://cloudbizerp.com/erp-for-growing-businesses/" target="_blank">
3023																			<img loading="lazy" src="https://addyp.com/admin/ad-tmp/698976d632f2c.jpg"
3024											class="ads-img-desktop" alt="ERP">
3025																												<img loading="lazy" src="https://addyp.com/admin/ad-tmp/698976db28ae0-mob.jpg"
3026											class="ads-img-mobile" alt="ERP">
3027																	</a>
3028							</div>
3029														<div class="banner ad-container" id="banner1" data-ad-id="10" data-type="coupons">
3030								<a href="https://hostinger.in?REFERRALCODE=1JAISON33" target="_blank">
3031																			<img loading="lazy" src="https://addyp.com/admin/ad-tmp/69770b637fcea.jpg"
3032											class="ads-img-desktop" alt="ResellerHosting">
3033																												<img loading="lazy" src="https://addyp.com/admin/ad-tmp/69770b68a1e03-mob.jpg"
3034											class="ads-img-mobile" alt="ResellerHosting">
3035																	</a>
3036							</div>
3037												</div>
3038				
3039				
3039<script type="5be3242ed37c14fc3d069643-text/javascript">
3040					// Function to randomly show a banner ad
3041					function showRandomBanner() {
3042						const banners = document.querySelectorAll('.banner');
3043						const randomIndex = Math.floor(Math.random() * banners.length);
3044
3045						// Hide all banners
3046						banners.forEach(banner => {
3047							banner.style.display = 'none';
3048						});
3049
3050						// Show the random banner
3051						banners[randomIndex].style.display = 'block';
3052					}
3053
3054					// Show a random banner when the page loads
3055					window.onload = function () {
3056						showRandomBanner();  // Show random banner immediately on page load
3057
3058						// Change banner every 10 seconds
3059						setInterval(showRandomBanner, 10000);
3060					};
3061				</script>
3061
3062				<!-- Banner Container end -->
3063			</div>
3064				<!-- new row -->
3065
3066							<!-- Similar Listings -->
3067						
3068				<!-- Featured Listings -->
3069
3070
3071									<div class="container my-5">
3072						<div class="d-flex justify-content-center">
3073							<h2>Premium Business Listings</h2>
3074						</div>
3075					</div>
3076
3077					<div class="container position-relative mb-2">
3078						<div id="featured-listings" class="splide">
3079							<div class="splide__arrows">
3080								<button class="splide__arrow splide__arrow--prev">
3081									<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
3082										xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
3083										viewBox="0 0 66.91 122.88" style="enable-background:new 0 0 66.91 122.88"
3084										xml:space="preserve" class="filter-shadow">
3085										<g>
3086											<path
3087												d="M1.95,111.2c-2.65,2.72-2.59,7.08,0.14,9.73c2.72,2.65,7.08,2.59,9.73-0.14L64.94,66l-4.93-4.79l4.95,4.8 c2.65-2.74,2.59-7.11-0.15-9.76c-0.08-0.08-0.16-0.15-0.24-0.22L11.81,2.09c-2.65-2.73-7-2.79-9.73-0.14 C-0.64,4.6-0.7,8.95,1.95,11.68l48.46,49.55L1.95,111.2L1.95,111.2L1.95,111.2z" />
3088										</g>
3089									</svg>
3090								</button>
3091								<button class="splide__arrow splide__arrow--next">
3092									<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
3093										xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
3094										viewBox="0 0 66.91 122.88" style="enable-background:new 0 0 66.91 122.88"
3095										xml:space="preserve" class="filter-shadow">
3096										<g>
3097											<path
3098												d="M1.95,111.2c-2.65,2.72-2.59,7.08,0.14,9.73c2.72,2.65,7.08,2.59,9.73-0.14L64.94,66l-4.93-4.79l4.95,4.8 c2.65-2.74,2.59-7.11-0.15-9.76c-0.08-0.08-0.16-0.15-0.24-0.22L11.81,2.09c-2.65-2.73-7-2.79-9.73-0.14 C-0.64,4.6-0.7,8.95,1.95,11.68l48.46,49.55L1.95,111.2L1.95,111.2L1.95,111.2z" />
3099										</g>
3100									</svg>
3101								</button>
3102							</div>
3103
3104							<div class="splide__track">
3105								<div class="splide__list">
3106																			<div class="splide__slide">
3107											<div class="card mb-4 bg-low-contrast-blue">
3108												<div class="card-img-container mb-2">
3109													<a href="https://addyp.com/listing/kerala/thodupuzha/seo-services/priority-bulk-sms">
3110														<img loading="lazy" class="" alt="Get Do Follow Quality Backlinks"
3111															src="https://addyp.com/pictures/logo/67/671745315d538.jpeg">
3112													</a>
3113
3114													<div class="cat-name-figure rounded p-2">SEO Company</div>
3115												</div>
3116
3117												<div class="card-body">
3118													<div class="d-flex flex-column">
3119														<div class="flex-grow-1">
3120															<h5 class="mb-0"><a
3121																	href="https://addyp.com/listing/kerala/thodupuzha/seo-services/priority-bulk-sms">Get Do Follow Quality Backlinks</a>
3122															</h5>
3123															<span>Thodupuzha, Kerala, India</span>
3124															<br><span>Thodupuzha, Ker</span>
3125															<br>
3126															<div class="item-rating" data-rating="0.00">
3127															</div>
3128																													</div>
3129
3130																											</div>
3131												</div>
3132											</div>
3133										</div>
3134																				<div class="splide__slide">
3135											<div class="card mb-4 bg-low-contrast-blue">
3136												<div class="card-img-container mb-2">
3137													<a href="https://addyp.com/listing/kerala/thodupuzha/website-development/dynamic-website">
3138														<img loading="lazy" class="" alt="Dynamic Website Development"
3139															src="https://addyp.com/pictures/logo/67/6717450a0e8af.jpeg">
3140													</a>
3141
3142													<div class="cat-name-figure rounded p-2">Website Development</div>
3143												</div>
3144
3145												<div class="card-body">
3146													<div class="d-flex flex-column">
3147														<div class="flex-grow-1">
3148															<h5 class="mb-0"><a
3149																	href="https://addyp.com/listing/kerala/thodupuzha/website-development/dynamic-website">Dynamic Website Development</a>
3150															</h5>
3151															<span>Thodupuzha, Kerala, India</span>
3152															<br><span>Thodupuzha, Ker</span>
3153															<br>
3154															<div class="item-rating" data-rating="5.00">
3155															</div>
3156																													</div>
3157
3158																											</div>
3159												</div>
3160											</div>
3161										</div>
3162																		</div>
3163							</div>
3164						</div>
3165					</div>
3166					
3167				<!-- Latest Listings -->
3168								
3168<script type="5be3242ed37c14fc3d069643-text/javascript">
3169
3170					/*--------------------------------------------------
3171					Carousel
3172					--------------------------------------------------*/
3173
3174					document.addEventListener('DOMContentLoaded', function () {
3175						// #featured-listings only renders when $featured_listings is non-empty
3176						// (see the PHP `if (!empty($featured_listings))` block above) - guard
3177						// against initializing Splide with no matching element on listings
3178						// that have none.
3179						if (!document.querySelector('#featured-listings')) return;
3180						var $carousel = new Splide('#featured-listings', {
3181							type: 'loop',
3182							loop: true,
3183							perPage: 3,
3184							perMove: 1,
3185							gap: 30,
3186							autoplay: true,
3187							interval: 1000,
3188							pagination: false,
3189							waitForTransition: false,
3190							speed: 1600,
3191							breakpoints: {
3192								0: {
3193									perPage: 1,
3194								},
3195								577: {
3196									perPage: 1
3197								},
3198								769: {
3199									perPage: 2
3200								},
3201								1000: {
3202									perPage: 3,
3203								},
3204								1536: {
3205									perPage: 4,
3206								},
3207								1920: {
3208									perPage: 5,
3209								},
3210								2560: {
3211									perPage: 6,
3212								}
3213							}
3214						});
3215
3216						$carousel.mount();
3217					});
3218
3219					// make all cards in the carousel have the equal height
3220					document.addEventListener('DOMContentLoaded', function () {
3221						var maxHeight = 0;
3222
3223						// find tallest card
3224						$('.splide__list .card').each(function () {
3225							var thisH = $(this).height();
3226							if (thisH > maxHeight) { maxHeight = thisH; }
3227						});
3228
3229						// apply height to all cards
3230						$('.splide .card').each(function () {
3231							$(this).height(maxHeight);
3232						});
3233					});
3234				</script>
3234
3235
3236
3237
3238				<!-- footer -->
3239							<footer>
3240		<div class=" footerSty">
3241
3242			<div class="container p-4" style="max-width: 1200px; margin: auto; font-size: 14px; line-height: 1.6;">
3243				<!-- Business Listing Description -->
3244				<!-- Replace with dynamic content -->
3245							</div>
3246
3247						
3248			<!-- Banner Graphic -->
3249			<div class="bannerft">
3250				Stay Connected with addyp.com			</div>
3251			
3252			<div class="container">
3253				<div class="footer-container">
3254
3255    				<div class="footer-section footer-logo">
3256
3257
3258						<!-- Logo & Address (Left Aligned) -->
3259						<div class="logo1 address">
3260							<img src="/assets/imgs/logo.png" alt="addyp.com Logo">
3261							<p>Global Business Directory</p>
3262
3263							<div class="social-icons">
3264								<a href="https://www.facebook.com/FreeBusinessDirectoryAddYP" aria-label="Facebook">
3265								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M22 12a10 10 0 1 0-11.5 9.9v-7H8v-3h2.5V9.5A3.5 3.5 0 0 1 14 6h3v3h-2a1 1 0 0 0-1 1V12h3l-.5 3h-2.5v7A10 10 0 0 0 22 12Z"/></svg>
3266								</a>
3267								<a href="https://twitter.com/Bharath_Listing?t=3ho5De-nPx3p69gXqWD4cw&amp;s=08 " aria-label="Twitter">
3268								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M22.46 6c-.77.35-1.6.58-2.46.69a4.15 4.15 0 0 0 1.82-2.29 8.27 8.27 0 0 1-2.63 1 4.13 4.13 0 0 0-7 3.77A11.7 11.7 0 0 1 3.16 4.9a4.13 4.13 0 0 0 1.28 5.51 4.07 4.07 0 0 1-1.87-.52v.05a4.13 4.13 0 0 0 3.31 4 4.1 4.1 0 0 1-1.86.07 4.13 4.13 0 0 0 3.85 2.86A8.29 8.29 0 0 1 2 19.54 11.7 11.7 0 0 0 8.29 21c7.55 0 11.68-6.26 11.68-11.68 0-.18-.01-.36-.02-.54A8.36 8.36 0 0 0 22.46 6Z"/></svg>
3269								</a>
3270								<a href="https://www.instagram.com/_addyp_global/ " aria-label="Instagram">
3271								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 2C4.24 2 2 4.24 2 7v10c0 2.76 2.24 5 5 5h10c2.76 0 5-2.24 5-5V7c0-2.76-2.24-5-5-5H7Zm10 2c1.65 0 3 1.35 3 3v10c0 1.65-1.35 3-3 3H7c-1.65 0-3-1.35-3-3V7c0-1.65 1.35-3 3-3h10Zm-5 3a5 5 0 1 0 0 10 5 5 0 0 0 0-10Zm0 2a3 3 0 1 1 0 6 3 3 0 0 1 0-6Zm4.5-2.75a1.25 1.25 0 1 0 0 2.5 1.25 1.25 0 0 0 0-2.5Z"/></svg>
3272								</a>
3273								<a href="https://www.linkedin.com/company/addyp-innovations-llp/ " aria-label="LinkedIn">
3274								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4.98 3.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5ZM3 8.98h3.95V21H3zm7.5 0H14v1.65h.05c.48-.91 1.65-1.87 3.4-1.87 3.64 0 4.3 2.4 4.3 5.5V21h-3.95v-5.62c0-1.34-.03-3.07-1.87-3.07-1.88 0-2.17 1.47-2.17 3v5.69H10.5Z"/></svg>
3275								</a>
3276							</div>
3277
3278							
3279							<p>✉️ <a href="/cdn-cgi/l/email-protection#4d2e2c3f280d2c2929343d632e2220"><span class="__cf_email__" data-cfemail="d3b0b2a1b693b2b7b7aaa3fdb0bcbe">[email&#160;protected]</span></a></p>
3280						</div>
3281					</div>
3282					<!-- Quick Links -->
3283					<div class="footer-section ">
3284						<h3>Quick Links</h3>
3285
3286							
3287
3288						<ul>
3289							<li>
3290							<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2Zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8Z"/></svg>
3291							<a href="https://addyp.com/become-agency">Become an Agency</a>
3292							</li>
3293							<li>
3294							<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2Zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8Z"/></svg>
3295														<a href="https://addyp.com/user/sign-in">Buy Leads</a>
3296							</li>
3297															<li>
3298								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2Zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8Z"/></svg>
3299								<a href="/post/privacy-policy">
3300										Privacy Policy									</a>
3301								</li>
3302															<li>
3303								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2Zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8Z"/></svg>
3304								<a href="/post/terms-of-use">
3305										Terms of Use									</a>
3306								</li>
3307															<li>
3308								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2Zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8Z"/></svg>
3309								<a href="/post/cancellation-and-refund">
3310										Cancellation &amp; Refund									</a>
3311								</li>
3312															<li>
3313								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
3313<path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2Zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8Z"/></svg>
3314								<a href="/post/contact-us">
3315										Contact Us									</a>
3316								</li>
3317															<li>
3318								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2Zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8Z"/></svg>
3319								<a href="/post/about-us">
3320										About Us									</a>
3321								</li>
3322															<li>
3323								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2Zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8Z"/></svg>
3324								<a href="/post/guest-posting-link-insertion-services-on-addyp-network">
3325										Guest Posting &amp; Link Insertion									</a>
3326								</li>
3327															<li>
3328								<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2Zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8Z"/></svg>
3329								<a href="/post/addyp-is-more-than-a-business-listing">
3330										AddYP Is More Than a Business Listing									</a>
3331								</li>
3332							
3333
3334						</ul>
3335					</div>
3336					<div class="footer-section">
3337	<h3>Browse by Country</h3>
3338
3339	<ul>
3340		<li><a href="https://addyp.com/country/united-states">United States</a></li>
3341		<li><a href="https://addyp.com/country/united-kingdom">United Kingdom</a></li>
3342		<li><a href="https://addyp.com/country/canada">Canada</a></li>
3343		<li><a href="https://addyp.com/country/australia">Australia</a></li>
3344		<li><a href="https://addyp.com/country/united-arab-emirates">UAE</a></li>
3345		<li><a href="https://addyp.com/country/singapore">Singapore</a></li>
3346	</ul>
3347</div>
3348					
3349					<!-- Quick Links Section -->
3350<div class="footer-section">
3351	<h3>How to Add?</h3>
3352
3353	<ul>
3354		<li style="display:flex;align-items:center;margin-bottom:8px;">
3355			<i class="fa-solid fa-user-plus" style="color:#f5a623;font-size:15px;margin-right:10px;"></i>
3356			<a href="https://addyp.com/user/register">Register</a>
3357		</li>
3358
3359		<li style="display:flex;align-items:center;margin-bottom:8px;">
3360			<i class="fa-solid fa-right-to-bracket" style="color:#f5a623;font-size:15px;margin-right:10px;"></i>
3361			<a href="https://addyp.com/user/sign-in">Sign In</a>
3362		</li>
3363
3364		<li style="display:flex;align-items:center;margin-bottom:8px;">
3365			<i class="fa-solid fa-key" style="color:#f5a623;font-size:15px;margin-right:10px;"></i>
3366			<a href="https://addyp.com/user/forgot-password">Forgot Password</a>
3367		</li>
3368
3369		<li style="display:flex;align-items:center;margin-bottom:8px;">
3370			<i class="fa-solid fa-envelope-circle-check" style="color:#f5a623;font-size:15px;margin-right:10px;"></i>
3371			<a href="https://addyp.com/user/resend-confirmation">Resend Confirmation Email</a>
3372		</li>
3373	</ul>
3374</div>
3375
3376
3377					<!-- Blog Section -->
3378					<div class="footer-section ">
3379						<h3>Blog</h3>
3380						
3381						<ul>
3382							<li><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 4h16v2H4zm0 6h16v2H4zm0 6h10v2H4z"/></svg><a target=”_blank” href="https://blog.addyp.com">Blog - addyp.com</a></li>
3383						</ul>
3384					</div>
3385
3386					
3387				</div>
3388			</div>
3389
3390			<div class="copyright">
3391				© 2026 addyp.com - All Rights Reserved
3392			</div>
3393			
3394		<!-- Footer Section End -->
3395		</div>
3396	</footer>
3397
3398<a class="floating-since" href="/post/about-us">Since<span>2007</span></a>
3399<a class="floating-signup" href="/user/select-plan"><span>+ Add Your Business</span></a>
3400
3401<div>
3402	<div class="floating-pr-list d-none">
3403		Create Do-Follow
3404		<a href='https://addyp.com/user/register'>AY</a><a href='https://bharathlisting.com/user/register'>BL</a><a
3405			href='https://wehelp.in/user/register'>WH</a>
3406	</div>
3407</div>
3408
3409
3410<a href="https://api.whatsapp.com/send?phone=919744768081&text=Hi%20there.%20I%20have%20a%20question%20about%20addyp.com"
3411	class="float-wa d-none" target="_blank">
3412	<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-whatsapp"
3413		viewBox="0 0 16 16">
3414		<path
3415			d="M13.601 2.326A7.85 7.85 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.9 7.9 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.9 7.9 0 0 0 13.6 2.326zM7.994 14.521a6.6 6.6 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.56 6.56 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592m3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.114.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.114-.198-.011-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.323-.335-.445-.34-.114-.007-.247-.007-.38-.007a.73.73 0 0 0-.529.247c-.182.198-.691.677-.691 1.654s.71 1.916.81 2.049c.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058 
34151.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232" />
3416	</svg>
3417	<div><span>Happy to HELP</span> <em>Chat with us</em></div>
3418</a>
3419
3420
3421<!-- Floating WhatsApp Button -->
3422<a id="whatsapp-float" href="#" aria-label="Chat on WhatsApp" rel="noopener noreferrer" target="_blank">
3423  <svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true">
3424    <path d="M20.52 3.48A11.86 11.86 0 0012 .5 11.86 11.86 0 003.48 3.48 11.86 11.86 0 00.5 12c0 2.02.53 3.9 1.53 5.58L.5 23.5l5-1.32A11.86 11.86 0 0012 23.5c3.18 0 6.15-1.24 8.52-3.52A11.86 11.86 0 0023.5 12c0-3.18-1.24-6.15-3.48-8.52zM12 21.5c-2.05 0-4-.63-5.65-1.72l-.38-.24-3 0.8.8-2.92-.25-.38A9.5 9.5 0 012.5 12 9.5 9.5 0 0112 2.5 9.5 9.5 0 0121.5 12 9.5 9.5 0 0112 21.5z" fill="currentColor"/>
3425    <path d="M17.3 14.2c-.3-.15-1.8-.9-2.05-1-.25-.1-.42-.15-.6.15s-.7 1-.85 1.2c-.15.2-.3.25-.55.1-.25-.15-1.05-.39-2-1.23-.74-.66-1.23-1.48-1.38-1.73-.15-.25-.02-.38.12-.5.12-.12.25-.3.38-.45.13-.15.17-.25.25-.42.08-.16.04-.3-.02-.45-.06-.15-.6-1.45-.82-1.98-.22-.5-.45-.43-.6-.44-.15-.02-.33-.02-.5-.02s-.45.06-.69.32c-.25.26-.95.93-.95 2.26s.97 2.61 1.1 2.8c.13.2 1.9 2.9 4.6 3.96 3.02 1.2 3.02.8 3.56.75.54-.05 1.75-.7 2-1.37.25-.67.25-1.25.18-1.37-.08-.12-.29-.2-.6-.35z" fill="#fff"/>
3426  </svg>
3427
3428  <div class="wa-text">
3429    <strong>addyp.com</strong>
3430    <span>Chat with us</span>
3431  </div>
3432</a>
3433
3434<style>
3435  #whatsapp-float {
3436    position: fixed;
3437    left: 10px;
3438    bottom: 38px;
3439    display: flex;
3440    align-items: center;
3441    gap: 10px;
3442    background-color: #00ac40;
3443    color: #fff;
3444    font-family: Arial, sans-serif;
3445    padding: 10px 16px;
3446    border-radius: 15px;
3447    box-shadow: 0 6px 16px rgba(0,0,0,0.18);
3448    text-decoration: none;
3449    transition: all 0.2s ease-in-out;
3450    z-index: 99999;
3451  }
3452
3453  #whatsapp-float:hover {
3454    transform: translateY(-3px);
3455    background-color: #22c35e;
3456    box-shadow: 0 10px 20px rgba(0,0,0,0.22);
3457  }
3458
3459  #whatsapp-float svg {
3460    fill: #fff;
3461    flex-shrink: 0;
3462  }
3463
3464  .wa-text {
3465    line-height: 1.2;
3466  }
3467
3468  .wa-text strong {
3469    font-size: 13px;
3470    font-weight: bold;
3471    display: block;
3472  }
3473
3474  .wa-text span {
3475    font-size: 12px;
3476    opacity: 0.9;
3477  }
3478
3479  @media (max-width: 600px) {
3480    #whatsapp-float {
3481      font-size: 12px;
3482      padding: 8px 14px;
3483    }
3484    .wa-text strong { font-size: 12px; }
3485    .wa-text span { font-size: 11px;}
3486  }
3487</style>
vendor: 110 bytes, lines 3487-3489
3487
3488
3489<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
3489<script type="5be3242ed37c14fc3d069643-text/javascript">
3490(function(){
3491  var phone = "919744768081";
3492  var defaultMessage = "Hi, I would like to know more about your services about addyp.com.";
3493  var encodedMessage = encodeURIComponent(defaultMessage);
3494
3495  document.getElementById('whatsapp-float').addEventListener('click', function(e){
3496    e.preventDefault();
3497    window.open("https://wa.me/" + phone + "?text=" + encodedMessage, '_blank', 'noopener');
3498  });
3499})();
3500</script>
3500
3501
3502
3503
3504
3505
3506
3507<div class="mobile-buttons">
3508		<a class="bg-warning text-dark" href="/user/select-plan"><i class="fa-solid fa-plus"></i> Add Business</a>
3509	
3510</div>
3511<!-- external javascript -->
3512<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
vendor: 1 bytes, line 3512
3512
3513<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
vendor: 1 bytes, line 3513
3513
3514<script src="/templates/js/raty/jquery.raty.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
vendor: 1 bytes, line 3514
3514
3515<script src="https://addyp.com/assets/js/jquery-autocomplete/jquery.autocomplete.min.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
vendor: 1 bytes, line 3515
3515
3516<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.8/js/i18n/en.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
3516
3517
3518
3519<!--JAISON STRAT-->
3520<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 3520-3521
3520
3521<script async src="https://www.googletagmanager.com/gtag/js?id=
3521G-FC44FWRDBS
vendor: 61 bytes, line 3521
3521" type="5be3242ed37c14fc3d069643-text/javascript"></script>
3522<script type="5be3242ed37c14fc3d069643-text/javascript">
3523  
vendor: 138 bytes, lines 3523-3527
3523window.dataLayer = window.dataLayer || [];
3524  function gtag(){dataLayer.push(arguments);}
3525  gtag('js', new Date());
3526
3527  gtag('config', '
3527G-FC44FWRDBS
vendor: 5 bytes, line 3527
3527');
3528</script>
3528
3529<!--JAISON END-->
3530
3531
3532
3533
3534
3535
3536<!-- Bootstrap Lightbox -->
3537<script src="https://addyp.com/templates/js/lightbox-master/dist/ekko-lightbox.min.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
3537
3538
3539<!-- SplideJS -->
3540<script src="https://addyp.com/templates/js/splide_2.4.21/splide.min.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
3540
3541
3542<!-- SplideJs Video Extension -->
3543<script src="https://addyp.com/templates/js/splide-extension-video_0.4.6/splide-extension-video.min.js" type="5be3242ed37c14fc3d069643-text/javascript"></script>
3543
3544
3545<script type="5be3242ed37c14fc3d069643-text/javascript">
3546
3547	  // on show modal
3548    $(document).ready(function() {
3549    $('#contact-user-modal').on('show.bs.modal', function(e) {
3550        $('#contact-user-submit').show();
3551        $('#contact-user-close').hide();
3552        $('#contact-user-cancel').show();
3553    });
3554
3555    // on hide modal
3556    $('#contact-user-modal').on('hide.bs.modal', function(e) {
3557        $('#contact-user-form').show(120);
3558        $('#contact-user-result').empty();
3559    });
3560
3561    // on submit
3562    $('#contact-user-submit').on('click', function(e) {
3563        e.preventDefault();
3564        // check validity
3565        if ($('#contact-user-form')[0].checkValidity()) {
3566			const correctAnswer = $('#captcha-question').data('answer');
3567            const userAnswer = parseInt($('#captcha-answer').val(), 10);
3568                if (userAnswer !== correctAnswer) {
3569                    alert('Captcha incorrect! Please try again.');
3570                    $('#captcha-answer').val('');
3571                    generateCaptcha(); // refresh captcha
3572                    return;
3573                }
3574            // vars
3575            var modal = $('#contact-user-modal');
3576            var post_url = 'https://addyp.com/send-msg.php';
3577            var spinner = '<i class="las la-spinner la-spin"></i> Wait';
3578
3579            // spinner only - the form/buttons stay put until we know the
3580            // send actually succeeded (send-msg.php returns HTTP 200 even
3581            // when the mail itself fails, so hiding everything here
3582            // unconditionally left no way to retry on a failed send)
3583            $('#contact-user-result').show().html(spinner);
3584            $('#contact-user-submit').prop('disabled', true);
3585
3586            // post - a plain $.post() has no error/timeout handling, so a
3587            // slow SMTP send or dropped connection left the spinner stuck
3588            // on "Wait" forever with no way to retry (reported as "sending
3589            // not happening sometimes")
3590            $.ajax({
3591                url: post_url,
3592                type: 'POST',
3593                data: { params: $('#contact-user-form').serialize() },
3594                timeout: 20000,
3595                success: function(data) {
3596                    $('#contact-user-result').empty().html(data).fadeIn();
3597                    $('#contact-user-submit').prop('disabled', false);
3598
3599                    if (data.indexOf('alert-success') !== -1) {
3600                        $('#contact-user-form').hide(120);
3601                        $('#contact-user-submit').hide();
3602                        $('#contact-user-cancel').hide();
3603                        $('#contact-user-close').show();
3604                    }
3605                },
3606                error: function() {
3607                    $('#contact-user-result').empty().html('<div class="alert alert-danger">Something went wrong. Please try again.</div>').fadeIn();
3608                    $('#contact-user-submit').prop('disabled', false);
3609                }
3610            });
3611        } else {
3612            $('#contact-user-form')[0].reportValidity();
3613        }
3614    });
3615});
3616/*--------------------------------------------------
3617Add to Favorites
3618--------------------------------------------------*/
3619(function(){
3620	$('.add-to-favorites').on('click', function(e){
3621					window.location.href = 'https://addyp.com/user/sign-in';
3622				});
3623}());
3624
3625/*--------------------------------------------------
3626Lightbox
3627--------------------------------------------------*/
3628(function(){
3629	$(document).delegate('*[data-toggle="lightbox"]', 'click', function(event) {
3630		event.preventDefault();
3631		$(this).ekkoLightbox();
3632	});
3633}());
3634
3635/*--------------------------------------------------
3636Carousel
3637--------------------------------------------------*/
3638
3639/*--------------------------------------------------
3640Rating
3641--------------------------------------------------*/
3642(function(){
3643	$('.item-rating').raty({
3644		readOnly: true,
3645		score: function() {
3646			return this.getAttribute('data-rating');
3647		},
3648		hints: ['bad', 'poor', 'regular', 'good', 'gorgeous'],
3649		starType: 'i'
3650	});
3651
3652	$('.review-rating').raty({
3653		readOnly: true,
3654		score: function() {
3655			return this.getAttribute('data-rating');
3656		},
3657		hints: ['bad', 'poor', 'regular', 'good', 'gorgeous'],
3658		starType: 'i'
3659	});
3660
3661	$('.raty').raty({
3662		scoreName: 'review_score',
3663		target : '#hint',
3664		targetKeep : true,
3665		hints: ['bad', 'poor', 'regular', 'good', 'gorgeous'],
3666		starType: 'i'
3667	});
3668}());
3669
3670/*--------------------------------------------------
3671Review
3672--------------------------------------------------*/
3673(function(){
3674	$('#submit-review').on('click', function() {
3675		var place_id        = $('#place_id').val();
3676		var place_name      = $('#place_name').val();
3677		var place_slug      = $('#place_slug').val();
3678		var place_city_slug = $('#place_city_slug').val();
3679		var place_city_id   = $('#place_city_id').val();
3680		var review_score    = $('input[name=review_score]').val();
3681		var review          = $('#review').val();
3682		var url             = 'https://addyp.com/process-review.php';
3683
3684		// rating check
3685		if (!review_score || review_score == 0) {
3686			$('#err-msg').text('Please select a rating').css('color', 'red');
3687			return false;
3688		}
3689
3690		// review text check
3691		if (review === '') {
3692			$('#err-msg').text('Please enter your review').css('color', 'red');
3693			return false;
3694		}
3695
3696		// clear hint if valid
3697		$('#err-msg').text('');
3698		// post
3699		$.post(url, {
3700			place_id:        place_id,
3701			place_name:      place_name,
3702			place_slug:      place_slug,
3703			place_city_slug: place_city_slug,
3704			place_city_id:   place_city_id,
3705			review_score:    review_score,
3706			review:          review
3707		}, function(data) {
3708			$('#review-form').fadeOut();
3709				var current_user_name = "Guest";
3710			    // ✅ create new review HTML
3711					var newReview = `
3712					<div class="d-flex mb-3">
3713						<div class="mr-3">
3714							<img src="https://addyp.com/assets/imgs/blank.png"
3715								class="profile-thumb rounded-circle">
3716						</div>
3717
3718						<div class="flex-grow-1">
3719							<div class="mb-3">
3720								<div style="line-height:1">
3721									<a href="${baseurl}/profile" itemprop="url">${current_user_name} </a>
3722								</div>
3723
3724								<div style="line-height:1">
3725									<span class="smallest text-muted">
3726										${new Date().toLocaleDateString()}
3727									</span>
3728								</div>
3729
3730								<div class="review-rating" data-rating="${review_score}"></div>
3731							</div>
3732
3733							<div>${review}</div>
3734						</div>
3735					</div>
3736					<hr>
3737					`;
3738
3739					// ✅ prepend (add to top)
3740				var $newItem = $(newReview);
3741				$('#reviews-list').prepend($newItem);
3742
3743				// ✅ initialize ONLY this new rating
3744				$newItem.find('.review-rating').raty({
3745					readOnly: true,
3746					score: function() {
3747						return $(this).attr('data-rating');
3748					},
3749					starType: 'i' // 🔥 THIS FIX
3750				});
3751			// alert(data);
3752			var form_wrapper = $('#review-form-wrapper');
3753			var alert_response = $('<div class="alert alert-success"></div>');
3754			$(alert_response).text(data);
3755			$(alert_response).hide().appendTo(form_wrapper).fadeIn();
3756		});
3757	});
3758}());
3759
3760/*--------------------------------------------------
3761Map
3762--------------------------------------------------*/
3763(function(){
3764	if($('#place-map-wrapper').length) {
3765							var mymap = L.map("place-map-canvas").setView([40.70528146, -74.04560001], 13);
3766
3767					L.tileLayer.provider("CartoDB", map_provider_options).addTo(mymap);
3768					
3769				var marker = L.marker([40.70528146, -74.04560001]).addTo(mymap);
3770					}
3771}());
3772
3773/*--------------------------------------------------
3774Contact form
3775--------------------------------------------------*/
3776// (function(){
3777	
3778// }());
3779</script>
3779<script type="5be3242ed37c14fc3d069643-text/javascript">
3780/*--------------------------------------------------
3781Navbar
3782--------------------------------------------------*/
3783(function(){
3784			// select2 config
3785		$('#city-input').select2({
3786			ajax: {
3787				url: 'https://addyp.com/_return_cities_select2.php',
3788				dataType: 'json',
3789				delay: 250,
3790				data: function (params) {
3791					return {
3792						query: params.term,
3793						page: params.page
3794					};
3795				}
3796			},
3797			escapeMarkup: function (markup) { return markup; },
3798			minimumInputLength: 1,
3799			dropdownAutoWidth : true,
3800			placeholder: "City",
3801			allowClear: true,
3802			language: "en"
3803		});
3804
3805		// change x mark and add event handler to clear cookies
3806		$('#city-input').on("select2:unselect", function(e) {
3807			delete_cookie('city_id');
3808		});
3809
3810		$('#city-input').on("select2:select", function(e) {
3811			$('.select2-selection__clear').empty().html('<i class="las la-times" aria-hidden="true"></i>');
3812		});
3813	
3814	// add margin top in full screen mode
3815	if($(window).width() > 768) {
3816		// get header height
3817		var height = $('#header-nav').outerHeight(true);
3818
3819		// add margin equal to height
3820		$('#mainSearch').removeAttr('style').css({
3821			"margin-top": height,
3822			"display": "none"
3823		});
3824	}
3825
3826	// in mobile view..
3827	else {
3828		// remove class fixed-top
3829		$('#mainSearch').removeClass().addClass('container-fluid p-2');
3830
3831		// get header height
3832		var height = $('#header-nav').outerHeight(true);
3833
3834		// add margin equal to height
3835		$('#mainSearch').removeAttr('style').css({
3836			"margin-top": height,
3837			"display": "none"
3838		});
3839
3840		//$('#header-nav-dummy').hide();
3841	}
3842
3843	// when clicking outside search form, hide search form
3844	$('#mainSearch').on('click', function(e) {
3845		e.stopPropagation();
3846	});
3847
3848	$(window).on('click', function(e) {
3849		if(e.target.type != 'search' && e.target.type != '') {
3850			$('#mainSearch').slideUp('fast');
3851		}
3852	});
3853
3854	// toggle search visibility
3855	$('#navbarBtnSearch').on('click', function(e) {
3856		// stop click propagation so that it doesn't bubble up and trigger a click on window which would hide the search
3857		e.stopPropagation();
3858
3859		if($(window).width() < 769) {
3860			// add margin equal to height
3861			var height = $('#header-nav').outerHeight(true);
3862			var height_dummy = $('#header-nav-dummy').outerHeight(true);
3863
3864			height = height - height_dummy;
3865			console.log($('#mainSearch').attr('style'));
3866
3867			$('#mainSearch').removeAttr('style').css({
3868				"margin-top": height,
3869				"display": "none"
3870			});
3871
3872			//$('#header-nav-dummy').hide();
3873		}
3874
3875		// toggle proper
3876		$('#mainSearch').slideToggle('fast');
3877	});
3878
3879	
3880	}());
3881
3882/*--------------------------------------------------
3883Language selector
3884--------------------------------------------------*/
3885(function(){
3886	$('#language-selector select').on('change', function(e){
3887		createCookie('user_language', $('#language-selector select').val(), 365);
3888		location.reload(true);
3889	});
3890}());
3891
3892	// Ad View and Click Tracking
3893function trackAdInteraction(adId, action, ty) {
3894    $.ajax({
3895        url: 'https://addyp.com/admin/track-ad-view.php',
3896        method: 'POST',
3897        dataType: 'json',
3898        data: {
3899            ad_id: adId,
3900			type: ty,
3901            action: action
3902        },
3903        error: function(xhr, status, error) {
3904            console.error('Ad ' + action + ' tracking failed:', error);
3905        }
3906    });
3907}
3908
3909// Track views when ads are displayed
3910$(document).ready(function() {
3911    $('.ad-container:visible').each(function() {
3912        var adId = $(this).data('ad-id');
3913        trackAdInteraction(adId, 'view', '');
3914    });
3915
3916    // Track clicks when ad is clicked
3917    $('.ad-container a').on('click', function() {
3918        var adId = $(this).closest('.ad-container').data('ad-id');
3919		var ty= $(this).closest('.ad-container').data('type');
3920        trackAdInteraction(adId, 'click', ty);
3921    });
3922});
3923</script>
3923			<div class="container">
3924						
3924<script async data-cfasync="false" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5057375154868360"
3925     crossorigin="anonymous"></script>
3925
3926<!-- OnlyFreePages -->
3927<ins class="adsbygoogle"
3928     style="display:block"
3929     data-ad-client="ca-pub-5057375154868360"
3930     data-ad-slot="5809592732"
3931     data-ad-format="auto"
3932     data-full-width-responsive="true"></ins>
3933<script type="5be3242ed37c14fc3d069643-text/javascript">
3934     (adsbygoogle = window.adsbygoogle || []).push({});
3935</script>
3935
3936					
3937</div>
3938			
3938<script async data-cfasync="false" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5057375154868360"
3939	 crossorigin="anonymous"></script>
3939
3940<ins class="adsbygoogle"
3941	 style="display:block"
3942	 data-ad-client="ca-pub-5057375154868360"
3943	 data-ad-slot="7139179524"
3944	 data-ad-format="auto"
3945	 data-full-width-responsive="true"></ins>
3946<script type="5be3242ed37c14fc3d069643-text/javascript">
3947	 (adsbygoogle = window.adsbygoogle || []).push({});
3948</script>
3948
3949
3950
3951</body>
3952
3953</html>
3954
3955<script type="5be3242ed37c14fc3d069643-text/javascript">
3956// document.addEventListener("DOMContentLoaded", function() {
3957//     const city = "Jaipur";
3958//     const state = "Rajasthan";
3959//     const country = "India";
3960
3961//     // Build fallback locations array
3962//     const locations = [];
3963//     if(city && state && country) locations.push(`${city}, ${state}, ${country}`);
3964//     if(state && country) locations.push(`${state}, ${country}`);
3965//     if(country) locations.push(country);
3966
3967//     if(locations.length === 0) {
3968//         console.error('No location data available');
3969//         return;
3970//     }
3971
3972//     let index = 0;
3973
3974//     function tryNextLocation() {
3975//         if(index >= locations.length) {
3976//             console.error('Location not found');
3977//             return;
3978//         }
3979
3980//         const loc = locations[index];
3981//         const url = `https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(loc)}`;
3982
3983//         fetch(url, {
3984//             headers: { 'User-Agent': 'AddypApp/1.0 ([email protected])' }
3985//         })
3986//         .then(response => response.json())
3987//         .then(data => {
3988//             if(data.length > 0) {
3989//                 const lat = data[0].lat;
3990//                 const lon = data[0].lon;
3991
3992//                 // Initialize Leaflet map
3993//                 const map = L.map('map-canvas').setView([lat, lon], 13);
3994
3995//                 // Add OpenStreetMap tiles
3996//                 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
3997//                     attribution: '© OpenStreetMap contributors'
3998//                 }).addTo(map);
3999
4000//                 // Add marker
4001//                 L.marker([lat, lon])
4002//                     .addTo(map)
4003//                     .bindPopup(loc)
4004//                     .openPopup();
4005//             } else {
4006//                 index++;
4007//                 tryNextLocation(); // fallback to next
4008//             }
4009//         })
4010//         .catch(err => {
4011//             console.error(err);
4012//             index++;
4013//             tryNextLocation(); // fallback to next on error
4014//         });
4015//     }
4016
4017//     tryNextLocation();
4018// });
4019
4020
4021document.addEventListener("DOMContentLoaded", async function() {
4022    // This entire handler exists to size/position the Leaflet map, so if
4023    // #map-canvas wasn't rendered on this listing there's nothing to do.
4024    if (!document.getElementById('map-canvas')) return;
4025
4026    const city = "Jaipur";
4027    const state = "Rajasthan";
4028    const country = "India";
4029    const countryCode = ""; // match function param
4030
4031    // Build flexible fallback locations
4032    const locations = [];
4033    if (city && state && country) locations.push(`${city}, ${state}, ${country}`);
4034    if (city && country) locations.push(`${city}, ${country}`);
4035    if (city) locations.push(city);
4036    if (state && country) locations.push(`${state}, ${country}`);
4037    if (country) locations.push(country);
4038
4039    // Initialize map variable
4040    let map = L.map('map-canvas').setView([20.5937, 78.9629], 5); // Default India
4041    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
4042        attribution: '© OpenStreetMap contributors'
4043    }).addTo(map);
4044
4045    if (locations.length === 0) {
4046        console.warn("No location data available — showing default India map");
4047        return;
4048    }
4049
4050    // Try the almost-match first
4051    const bestMatch = await checkAlmostMatch({
4052        country,
4053        countryCode,
4054        state,
4055        city
4056    });
4057    if (bestMatch) {
4058        console.log("✅ Almost match found:", bestMatch);
4059        map.setView([bestMatch.lat, bestMatch.lon], 13);
4060        L.marker([bestMatch.lat, bestMatch.lon])
4061            .addTo(map)
4062            .bindPopup(`${bestMatch.city || ""}, ${bestMatch.state || ""}, ${country}`)
4063            .openPopup();
4064        return; // stop further fallback
4065    }
4066
4067    // Fallback search
4068    let index = 0;
4069
4070    function tryNextLocation() {
4071        if (index >= locations.length) {
4072            console.error("Location not found in all fallbacks");
4073            return;
4074        }
4075
4076        const loc = locations[index];
4077        const url = `https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(loc)}`;
4078
4079        fetch(url, {
4080                headers: {
4081                    "User-Agent": "AddypApp/1.0 ([email protected])"
4082                }
4083            })
4084            .then(response => response.json())
4085            .then(data => {
4086                if (data.length > 0) {
4087                    const lat = data[0].lat;
4088                    const lon = data[0].lon;
4089                    console.log(`✅ Found location for "${loc}":`, lat, lon);
4090
4091                    map.setView([lat, lon], 13);
4092                    L.marker([lat, lon])
4093                        .addTo(map)
4094                        .bindPopup(loc)
4095                        .openPopup();
4096                } else {
4097                    index++;
4098                    tryNextLocation(); // try next fallback
4099                }
4100            })
4101            .catch(err => {
4102                console.error("Error fetching location:", err);
4103                index++;
4104                tryNextLocation();
4105            });
4106    }
4107
4108    tryNextLocation();
4109});
4110
4111// ----------------- checkAlmostMatch + analyzeMatches -----------------
4112async function checkAlmostMatch({
4113    country,
4114    countryCode,
4115    state,
4116    city
4117}) {
4118
4119    const url = `https://nominatim.openstreetmap.org/search?
4120format=json
4121&city=${encodeURIComponent(city)}
4122&state=${encodeURIComponent(state)}
4123&country=${encodeURIComponent(country)}
4124&countrycodes=${countryCode.toLowerCase()}
4125&addressdetails=1
4126&limit=5`;
4127
4128    const res = await fetch(url, {
4129        headers: {
4130            "User-Agent": "AddypApp/1.0 ([email protected])"
4131        }
4132    });
4133
4134    const results = await res.json();
4135    if (!results.length) return null;
4136
4137    return analyzeMatches(results, {
4138        state,
4139        city
4140    });
4141}
4142
4143function similarity(a, b) {
4144    a = a.toLowerCase();
4145    b = b.toLowerCase();
4146    let match = 0;
4147    for (let i = 0; i < Math.min(a.length, b.length); i++) {
4148        if (a[i] === b[i]) match++;
4149    }
4150    return match / Math.max(a.length, b.length);
4151}
4152
4153function analyzeMatches(results, input) {
4154    let best = null;
4155    let score = 0;
4156
4157    results.forEach(r => {
4158        const addr = r.address || {};
4159        const sScore = addr.state ? similarity(input.state, addr.state) : 0;
4160        const cScore = addr.city || addr.town || addr.village ?
4161            similarity(input.city, addr.city || addr.town || addr.village) :
4162            0;
4163
4164        const totalScore = (sScore * 0.6) + (cScore * 0.4);
4165
4166        if (totalScore > score) {
4167            score = totalScore;
4168            best = {
4169                state: addr.state,
4170                city: addr.city || addr.town || addr.village,
4171                lat: r.lat,
4172                lon: r.lon,
4173                confidence: totalScore
4174            };
4175        }
4176    });
4177
4178    return score > 0.6 ? best : null;
4179}
4180</script>
4180
4181
4182<script type="5be3242ed37c14fc3d069643-text/javascript">
4183function openCityMap() {
4184    const query = "Plot No 171 3, Haldighati Marg, opp. Mewar Appartment, Sanganer, Sector 17, Pratap Nagar,, Jaipur, Rajasthan, India";
4185    const mapUrl = `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(query)}`;
4186    window.open(mapUrl, '_blank');
4187}
4188</script>
vendor: 1 bytes, line 4188
4188
4189<script type="5be3242ed37c14fc3d069643-text/javascript">
4190// Mobile-only JS fallback for the section nav bar's sticky-on-scroll
4191// behavior. Native `position: sticky` (used on desktop) can silently stop
4192// working here because a mobile-only rule sets `overflow-x: hidden` on
4193// html/body (to stop horizontal scroll bounce) - overflow other than
4194// `visible` on an ancestor is a well-known way to break position:sticky
4195// in real browsers, not just a DevTools emulation quirk. This toggles a
4196// fixed-position class manually instead, so it works regardless.
4197(function () {
4198    var navbar = document.getElementById('navbar-example2');
4199    var spacer = document.getElementById('navbarSpacer');
4200    if (!navbar || !spacer) {
4201        return;
4202    }
4203
4204    function isMobile() {
4205        return window.innerWidth <= 768;
4206    }
4207
4208    var stuckThreshold = null;
4209
4210    function updateStuckState() {
4211        if (!isMobile()) {
4212            navbar.classList.remove('js-stuck');
4213            spacer.classList.remove('active');
4214            stuckThreshold = null;
4215            return;
4216        }
4217
4218        if (stuckThreshold === null) {
4219            // Capture the nav's natural offset before it's ever fixed,
4220            // so re-measuring while already fixed doesn't return 0.
4221            stuckThreshold = navbar.classList.contains('js-stuck')
4222                ? stuckThreshold
4223                : navbar.getBoundingClientRect().top + window.scrollY;
4224        }
4225
4226        if (window.scrollY >= stuckThreshold) {
4227            if (!navbar.classList.contains('js-stuck')) {
4228                spacer.style.height = navbar.offsetHeight + 'px';
4229                navbar.classList.add('js-stuck');
4230                spacer.classList.add('active');
4231            }
4232        } else {
4233            navbar.classList.remove('js-stuck');
4234            spacer.classList.remove('active');
4235        }
4236    }
4237
4238    window.addEventListener('scroll', updateStuckState, { passive: true });
4239    window.addEventListener('resize', function () {
4240        stuckThreshold = null;
4241        updateStuckState();
4242    });
4243    updateStuckState();
4244})();
4245</script>
vendor: 1 bytes, line 4245
4245
4246<script type="application/ld+json">{
4247    "@context": "https://schema.org",
4248    "@type": "FAQPage",
4249    "mainEntity": [
4250        {
4251            "@type": "Question",
4252            "name": "What services does Savra - Suit Shop in Jaipur offer?",
4253            "acceptedAnswer": {
4254                "@type": "Answer",
4255                "text": "Savra - Suit Shop in Jaipur provides Others services in India. Contact the business directly to confirm specific requirements and availability."
4256            }
4257        },
4258        {
4259            "@type": "Question",
4260            "name": "How can I contact Savra - Suit Shop in Jaipur?",
4261            "acceptedAnswer": {
4262                "@type": "Answer",
4263                "text": "You can contact Savra - Suit Shop in Jaipur using the phone number, WhatsApp, email, or website listed on this page."
4264            }
4265        },
4266        {
4267            "@type": "Question",
4268            "name": "Where is Savra - Suit Shop in Jaipur located?",
4269            "acceptedAnswer": {
4270                "@type": "Answer",
4271                "text": "Savra - Suit Shop in Jaipur is located in Jaipur, Rajasthan. You can view the exact location on the map provided in this listing."
4272            }
4273        },
4274        {
4275            "@type": "Question",
4276            "name": "What areas does Savra - Suit Shop in Jaipur serve?",
4277            "acceptedAnswer": {
4278                "@type": "Answer",
4279                "text": "Savra - Suit Shop in Jaipur serves india."
4280            }
4281        },
4282        {
4283            "@type": "Question",
4284            "name": "Is Savra - Suit Shop in Jaipur open today?",
4285            "acceptedAnswer": {
4286                "@type": "Answer",
4287                "text": "Please check the opening hours section on this page, or call 9460192284 directly for confirmation."
4288            }
4289        },
4290        {
4291            "@type": "Question",
4292            "name": "How long has Savra - Suit Shop in Jaipur been in business?",
4293            "acceptedAnswer": {
4294                "@type": "Answer",
4295                "text": "Savra - Suit Shop in Jaipur was established in 2002, giving it 24+ years of experience in the Others category."
4296            }
4297        },
4298        {
4299            "@type": "Question",
4300            "name": "Is this listing on addyp.com free to use?",
4301            "acceptedAnswer": {
4302                "@type": "Answer",
4303                "text": "Yes, users can view details and contact businesses listed on addyp.com without any charges."
4304            }
4305        }
4306    ]
4307}</script>
vendor: 1 bytes, line 4307
4307
4308<script type="application/ld+json">
4309{
4310    "@context": "https://schema.org",
4311    "@type": "BreadcrumbList",
4312    "itemListElement": [{"@type":"ListItem","position":1,"name":"Home","item":"https://addyp.com"},{"@type":"ListItem","position":2,"name":"Rajasthan","item":"https://addyp.com/listings/rajasthan"},{"@type":"ListItem","position":3,"name":"Jaipur","item":"https://addyp.com/listings/rajasthan/jaipur"},{"@type":"ListItem","position":4,"name":"Others","item":"https://addyp.com/listings/rajasthan/jaipur/others"},{"@type":"ListItem","position":5,"name":"Savra - Suit Shop in Jaipur","item":"https://addyp.com/listing/rajasthan/jaipur/others/savra-suit-shop-in-jaipur"}]}
4313</script>
4313
4314
4315<script type="application/ld+json">
4316	
4317{
4318  "@context": "https://schema.org",
4319  "@type": "LocalBusiness",
4320  "name": "Savra - Suit Shop in Jaipur",
4321  "url": "https://addyp.com/listing/rajasthan/jaipur/others/savra-suit-shop-in-jaipur",
4322"address": {
4323    "@type": "PostalAddress",
4324    "streetAddress": "Plot No 171 3, Haldighati Marg, opp. Mewar Appartment, Sanganer, Sector 17, Pratap Nagar,",
4325    "addressLocality": "Jaipur",
4326    "addressRegion": "Rajasthan",
4327    "addressCountry": "India"  },
4328
4329  "additionalType": "Others",
4330  
4331  "review": []}
4332</script>
vendor: 1 bytes, line 4332
4332
4333<script type="5be3242ed37c14fc3d069643-text/javascript">
4334$('#navbar-example2').on('activate.bs.scrollspy', function () {
4335  $('.jd-nav a.active')[0].scrollIntoView({
4336    behavior: 'smooth',
4337    inline: 'center'
4338  });
4339});
4340$('body').scrollspy({ target: '#navbar-example2', offset: 70 });
4341
4342$('.jd-nav a, .nav-link').on('click', function(e) {
4343  e.preventDefault();
4344
4345  var target = $(this).attr('href');
4346
4347  // Smooth scroll
4348  $('html, body').animate({
4349    scrollTop: $(target).offset().top - 70
4350  }, 400);
4351
4352  // 🔥 FIX: update active class manually
4353  $('.jd-nav a, .nav-link').removeClass('active');
4354  $(this).addClass('active');
4355});
4356$(document).ready(function() {
4357  window.scrollTo(0, 0);
4358});
4359$(document).ready(function() {
4360  $('body').scrollspy('refresh');
4361});
4362$(window).on('scroll', function () {
4363  if ($(window).scrollTop() < 200) {
4364    $('.nav-link').removeClass('active');
4365    $('.nav-link[href="#overview"]').addClass('active');
4366  }
4367});
4368</script>
4368
4369
4370<script type="5be3242ed37c14fc3d069643-text/javascript">
4371document.addEventListener('DOMContentLoaded', function () {
4372
4373    const splideEl = document.querySelector('#services-slider');
4374    if (!splideEl) return;
4375
4376    // REAL service count (not cloned slides)
4377    const slideCount = servicesData.length;
4378
4379    const isMobile = window.innerWidth <= 768;
4380
4381    let showArrows = false;
4382
4383    if (slideCount === 1) {
4384
4385        showArrows = false;
4386
4387    } else if (slideCount === 2) {
4388
4389        showArrows = isMobile; // only mobile
4390
4391    } else if (slideCount > 2) {
4392
4393        showArrows = true;
4394
4395    }
4396
4397    splideEl.classList.toggle('has-arrows', showArrows);
4398
4399    new Splide('#services-slider', {
4400        perPage: Math.min(2, slideCount),
4401        perMove: 1,
4402        gap: '20px',
4403
4404        type: slideCount > 2 ? 'loop' : 'slide',
4405
4406        arrows: showArrows,
4407        pagination: false,
4408
4409        breakpoints: {
4410            768: {
4411                perPage: 1
4412            }
4413        }
4414
4415    }).mount();
4416
4417});
4418</script>
vendor: 1 bytes, line 4418
4418
4419<script type="5be3242ed37c14fc3d069643-text/javascript">
4420const servicesData =
4421[];
4422</script>
4422
4423
4424<script type="5be3242ed37c14fc3d069643-text/javascript">
4425// service_desc/product_desc are saved from a plain textarea (no rich-text
4426// editor), so line breaks in the stored value are literal "\n" characters,
4427// not <br> tags - a browser collapses those to a single space by default,
4428// which is why descriptions rendered as one run-on paragraph. Escaping
4429// first (via textContent, never trusting raw user input into innerHTML)
4430// then converting "\n" to <br> fixes both the formatting and a stored-HTML-
4431// injection gap in the previous innerHTML = description assignment.
4432function escapeAndFormatDescription(text) {
4433	text = text || '';
4434	// some older/seeded descriptions already contain real HTML (<p>, <a>,
4435	// <br> from a past import) - render those as-is rather than
4436	// double-escaping and breaking their existing markup/links. Only
4437	// plain text (the current textarea's only output) gets escaped+
4438	// line-broken here.
4439	if (/<[a-z][\s\S]*>/i.test(text)) {
4440		return text;
4441	}
4442	var div = document.createElement('div');
4443	div.textContent = text;
4444	return div.innerHTML.replace(/\n/g, '<br>');
4445}
4446
4447document.addEventListener('DOMContentLoaded',function(){
4448
4449	const cards= document.querySelectorAll('.service-card');
4450
4451	const popupTitle= document.getElementById('popupTitle');
4452
4453	const popupText= document.getElementById('popupText');
4454
4455	const popupImage= document.getElementById('popupImage');
4456
4457	const popupYoutube= document.getElementById('popupYoutube');
4458
4459	const popupPrice= document.getElementById('popupPrice');
4460	const popupSerDetailsLink = document.getElementById('popupSerDetailsLink');
4461
4462	let currentService=0;
4463	let currentImage=0;
4464
4465
4466	function showImage(){
4467
4468		let service = servicesData[currentService];
4469
4470		let imgPrev = document.getElementById('prevImg');
4471		let imgNext = document.getElementById('nextImg');
4472		let gallery = document.querySelector('.popup-gallery');
4473		let popupImage = document.getElementById('popupImage');
4474
4475		let totalImages =
4476			(service.photos && service.photos.length)
4477			? service.photos.length
4478			: 0;
4479
4480		// 🔴 No images → hide entire gallery
4481		if(totalImages === 0){
4482			//gallery.style.display = 'none';
4483			gallery.style.display = 'grid';
4484
4485			imgPrev.style.display = 'none';
4486			imgNext.style.display = 'none';
4487
4488			gallery.style.gridTemplateColumns = '1fr';
4489			popupImage.src = 'https://addyp.com/pictures/logo/6a/6ab4f3321a6e8.png';
4490			return;
4491		}
4492
4493		// ✅ Images exist → show gallery
4494		gallery.style.display = 'grid';
4495
4496		if(totalImages === 1){
4497			imgPrev.style.display = 'none';
4498			imgNext.style.display = 'none';
4499			gallery.style.gridTemplateColumns = '1fr';
4500		} else {
4501			imgPrev.style.display = 'inline-block';
4502			imgNext.style.display = 'inline-block';
4503			gallery.style.gridTemplateColumns = '50px 1fr 50px';
4504		}
4505
4506		popupImage.src =
4507			'/pictures/services/' +
4508			service.photos[currentImage];
4509	}
4510
4511
4512
4513	function loadService(index){
4514
4515		currentService=index;
4516		currentImage=0;
4517
4518		let service=servicesData[index];
4519
4520		popupTitle.innerHTML=escapeAndFormatDescription(service.title);
4521		// description is already fully escaped/formatted server-side (see
4522		// listing.php's SEO entity-linking pass) - unlike title, it must
4523		// NOT go through escapeAndFormatDescription() again here, or its
4524		// real <a>/<strong> tags would get escaped into literal text
4525		popupText.innerHTML=service.description || '';
4526		popupPrice.innerHTML = service.price 
4527			? "$" + Number(service.price).toLocaleString('en-IN')
4528			: '';
4529		popupSerDetailsLink.href ='https://addyp.com/service/' +'savra-suit-shop-in-jaipur/' +service.service_slug;
4530
4531		showImage();
4532
4533
4534		// Hide service prev/next if only one service
4535		let prevServiceBtn=
4536			document.getElementById('prevService');
4537
4538		let nextServiceBtn=
4539			document.getElementById('nextService');
4540
4541		if(servicesData.length <= 1){
4542
4543			prevServiceBtn.style.display='none';
4544			nextServiceBtn.style.display='none';
4545
4546		}else{
4547
4548			prevServiceBtn.style.display='inline-block';
4549			nextServiceBtn.style.display='inline-block';
4550
4551		}
4552
4553
4554		if(service.youtube_link){
4555			let youtubeLink = service.youtube_link.trim();
4556
4557			// Add https:// if missing
4558			if(!/^https?:\/\//i.test(youtubeLink)){
4559				youtubeLink = 'https://' + youtubeLink;
4560			}
4561			popupYoutube.href = youtubeLink;
4562			popupYoutube.style.display='inline-block';
4563
4564		}else{
4565
4566			popupYoutube.style.display='none';
4567
4568		}
4569
4570	}
4571
4572
4573
4574	/* click card opens modal */
4575	cards.forEach(function(card){
4576
4577		card.addEventListener('click',function(){
4578
4579		let i = parseInt(this.dataset.index);
4580
4581		loadService(i);
4582
4583		$('#serviceModal').modal('show');
4584
4585		});
4586
4587	});
4588
4589
4590
4591	document.getElementById('nextImg').onclick=function(){
4592
4593		let total = servicesData[currentService].photos.length;
4594
4595		currentImage++;
4596
4597		if(currentImage>=total){
4598			currentImage=0;
4599		}
4600
4601		showImage();
4602
4603	};
4604
4605
4606
4607	document.getElementById('prevImg').onclick=function(){
4608
4609		let total= servicesData[currentService].photos.length;
4610
4611		currentImage--;
4612
4613		if(currentImage<0){
4614		currentImage=total-1;
4615		}
4616
4617		showImage();
4618
4619	};
4620
4621
4622
4623	document.getElementById('nextService').onclick=function(){
4624
4625		currentService++;
4626
4627		if(currentService>=servicesData.length){
4628		currentService=0;
4629		}
4630
4631		loadService(currentService);
4632
4633	};
4634
4635
4636
4637	document.getElementById('prevService').onclick=function(){
4638
4639		currentService--;
4640
4641		if(currentService<0){
4642		currentService=
4643		servicesData.length-1;
4644		}
4645
4646		loadService(currentService);
4647
4648	};
4649
4650});
4651
4652</script>
4652
4653
4654<script type="application/ld+json">
4655{
4656  "@context": "https://schema.org",
4657  "@type": "ItemList",
4658  "name": "Savra - Suit Shop in Jaipur Services",
4659  "itemListElement": [
4660      ]
4661}
4662</script>
4662
4663
4664
4665
4666<script id="gk3p2c" type="5be3242ed37c14fc3d069643-text/javascript">
4667const productsData =
4668[];
4669</script>
4669
4670
4671<script id="2y6k7h" type="5be3242ed37c14fc3d069643-text/javascript">
4672document.addEventListener('DOMContentLoaded', function () {
4673
4674    const splideEl = document.querySelector('#products-slider');
4675    if (!splideEl) return;
4676
4677    const slideCount = productsData.length;
4678    const isMobile = window.innerWidth <= 768;
4679
4680    let showArrows = false;
4681
4682    if (slideCount === 1) {
4683        showArrows = false;
4684    } else if (slideCount === 2) {
4685        showArrows = isMobile;
4686    } else if (slideCount > 2) {
4687        showArrows = true;
4688    }
4689
4690    splideEl.classList.toggle('has-arrows', showArrows);
4691
4692    new Splide('#products-slider', {
4693        perPage: Math.min(2, slideCount),
4694        perMove: 1,
4695        gap: '20px',
4696        type: slideCount > 2 ? 'loop' : 'slide',
4697        arrows: showArrows,
4698        pagination: false,
4699        breakpoints: {
4700            768: { perPage: 1 }
4701        }
4702    }).mount();
4703
4704});
4705</script>
vendor: 1 bytes, line 4705
4705
4706<script id="n1f8qz" type="5be3242ed37c14fc3d069643-text/javascript">
4707document.addEventListener('DOMContentLoaded', function () {
4708
4709    const cards = document.querySelectorAll('.product-card');
4710
4711    const popupTitle = document.getElementById('productPopupTitle');
4712    const popupText = document.getElementById('productPopupText');
4713    const popupImage = document.getElementById('productPopupImage');
4714    const popupPrice = document.getElementById('productPopupPrice');
4715    const popupLink = document.getElementById('productPopupLink');
4716	const popupDetailLink = document.getElementById('productDetailsLink');
4717
4718    let currentProduct = 0;
4719    let currentImage = 0;
4720
4721
4722    // =========================
4723    // SHOW IMAGE FUNCTION
4724    // =========================
4725    function showImage() {
4726
4727        let product = productsData[currentProduct];
4728        let images = product.photos || [];
4729
4730        let imgPrev = document.getElementById('prevProductImg');
4731        let imgNext = document.getElementById('nextProductImg');
4732        let gallery = document.querySelector('.popup-gallery');
4733
4734        let totalImages = images.length;
4735
4736        // no images
4737        if (totalImages === 0) {
4738            //gallery.style.display = 'none';
4739			gallery.style.display = 'grid';
4740
4741			imgPrev.style.display = 'none';
4742			imgNext.style.display = 'none';
4743
4744			gallery.style.gridTemplateColumns = '1fr';
4745			popupImage.src = 'https://addyp.com/pictures/logo/6a/6ab4f3321a6e8.png';
4746            return;
4747        }
4748
4749        // always show gallery if images exist
4750        gallery.style.display = 'grid';
4751
4752        if (totalImages === 1) {
4753            imgPrev.style.display = 'none';
4754            imgNext.style.display = 'none';
4755            gallery.style.gridTemplateColumns = '1fr';
4756        } else {
4757            imgPrev.style.display = 'inline-block';
4758            imgNext.style.display = 'inline-block';
4759            gallery.style.gridTemplateColumns = '50px 1fr 50px';
4760        }
4761
4762        // update image safely
4763        popupImage.src = '/pictures/products/' + images[currentImage];
4764    }
4765
4766
4767    // =========================
4768    // LOAD PRODUCT FUNCTION
4769    // =========================
4770    function loadProduct(index) {
4771
4772        currentProduct = index;
4773        currentImage = 0;
4774
4775        let product = productsData[index];
4776        let images = product.photos || [];
4777
4778        popupTitle.innerHTML = escapeAndFormatDescription(product.title);
4779        // description is already fully escaped/formatted server-side (see
4780        // listing.php's SEO entity-linking pass) - see the same note in
4781        // loadService() above
4782        popupText.innerHTML = product.description || '';
4783		popupPrice.innerHTML = product.price 
4784			? "$" + Number(product.price).toLocaleString('en-IN')
4785			: '';		
4786		popupDetailLink.href ='https://addyp.com/product/' +'savra-suit-shop-in-jaipur/' +product.product_slug;
4787
4788        showImage();
4789
4790        // link
4791        if (product.youtube_link) {
4792			let youtubeLink = product.youtube_link.trim();
4793
4794			// Add https:// if missing
4795			if(!/^https?:\/\//i.test(youtubeLink)){
4796				youtubeLink = 'https://' + youtubeLink;
4797			}
4798			popupLink.href = youtubeLink;
4799            // popupLink.href = product.youtube_link;
4800            popupLink.style.display = 'inline-block';
4801        } else {
4802            popupLink.style.display = 'none';
4803        }
4804
4805        // prev/next product buttons
4806        let prevBtn = document.getElementById('prevProduct');
4807        let nextBtn = document.getElementById('nextProduct');
4808
4809        if (productsData.length <= 1) {
4810            prevBtn.style.display = 'none';
4811            nextBtn.style.display = 'none';
4812        } else {
4813            prevBtn.style.display = 'inline-block';
4814            nextBtn.style.display = 'inline-block';
4815        }
4816    }
4817
4818
4819    // =========================
4820    // OPEN PRODUCT MODAL
4821    // =========================
4822    cards.forEach(function (card) {
4823
4824        card.addEventListener('click', function () {
4825
4826            let i = parseInt(this.dataset.index);
4827
4828            loadProduct(i);
4829
4830            $('#productModal').modal('show');
4831
4832        });
4833
4834    });
4835
4836
4837    // =========================
4838    // IMAGE NAVIGATION (FIXED)
4839    // Works even if DOM re-renders
4840    // =========================
4841    document.addEventListener('click', function (e) {
4842
4843        let product = productsData[currentProduct];
4844        let images = product.photos || [];
4845        let total = images.length;
4846
4847        if (total === 0) return;
4848
4849        // NEXT IMAGE
4850        if (e.target && e.target.id === 'nextProductImg') {
4851
4852            currentImage = (currentImage + 1) % total;
4853            showImage();
4854        }
4855
4856        // PREVIOUS IMAGE
4857        if (e.target && e.target.id === 'prevProductImg') {
4858
4859            currentImage = (currentImage - 1 + total) % total;
4860            showImage();
4861        }
4862    });
4863
4864
4865    // =========================
4866    // NEXT PRODUCT
4867    // =========================
4868    document.addEventListener('click', function (e) {
4869
4870        if (e.target && e.target.id === 'nextProduct') {
4871
4872            currentProduct++;
4873
4874            if (currentProduct >= productsData.length) {
4875                currentProduct = 0;
4876            }
4877
4878            loadProduct(currentProduct);
4879        }
4880
4881        if (e.target && e.target.id === 'prevProduct') {
4882
4883            currentProduct--;
4884
4885            if (currentProduct < 0) {
4886                currentProduct = productsData.length - 1;
4887            }
4888
4889            loadProduct(currentProduct);
4890        }
4891    });
4892
4893});
4894</script>
4894
4895
4896<script type="application/ld+json">
4897{
4898  "@context": "https://schema.org",
4899  "@type": "ItemList",
4900  "name": "Savra - Suit Shop in Jaipur Products",
4901  "itemListElement": [
4902      ]
4903}
4904</script>
4904
4905
4906<style>
4907
4908	.popup-gallery{
4909	display:grid;
4910	grid-template-columns:50px 1fr 50px;
4911	gap:15px;
4912	align-items:center;
4913	margin-bottom:20px;
4914	}
4915
4916	.popup-gallery button{
4917	width:50px;
4918	height:50px;
4919	border:none;
4920	border-radius:50%;
4921	font-size:28px;
4922	}
4923	.popup-gallery{
4924		position:relative;
4925		width:100%;
4926		display:block !important;
4927	}
4928
4929	#popupImage{
4930		width:100% !important;
4931		height:300px !important;
4932		object-fit:cover !important;
4933		border-radius:20px !important;
4934		display:block;
4935	}
4936
4937	#prevImg,
4938	#nextImg{
4939		position:absolute;
4940		top:50%;
4941		transform:translateY(-50%);
4942		z-index:10;
4943
4944		width:50px;
4945		height:50px;
4946		border-radius:50%;
4947		border:none;
4948		background:#eee;
4949		cursor:pointer;
4950	}
4951
4952	#prevImg{
4953		left:15px;
4954	}
4955
4956	#nextImg{
4957		right:15px;
4958	}
4959
4960		#productModal .popup-gallery{
4961		position:relative;
4962		width:100%;
4963	}
4964
4965	#productPopupImage{
4966		width:100% !important;
4967		height:300px !important;
4968		object-fit:cover !important;
4969		border-radius:20px !important;
4970		display:block !important;
4971	}
4972
4973	#prevProductImg,
4974	#nextProductImg{
4975		position:absolute;
4976		top:50%;
4977		transform:translateY(-50%);
4978		z-index:100;
4979
4980		width:50px;
4981		height:50px;
4982		border-radius:50%;
4983		border:none;
4984		background:#eee;
4985		cursor:pointer;
4986	}
4987
4988	#prevProductImg{
4989		left:10px;
4990	}
4991
4992	#nextProductImg{
4993		right:10px;
4994	}
4995		
4996	.popup-img{
4997	width:100%;
4998	height:300px;
4999	object-fit:cover;
5000	border-radius:20px!important;
5001	min-width: 990px;
5002	}
5003
5004	.video-wrap{
5005	margin-top:20px;
5006	text-align:right;
5007	}
5008
5009
5010
5011	/* COMMON SECTION */
5012	.common-section{
5013		margin-top:30px;
5014		overflow:visible;
5015		position:relative;
5016	}
5017
5018	#banner-ads-container{
5019		margin-top:20px;
5020	}
5021
5022	/* CARD */
5023	.common-card{
5024		background:#fff;
5025		border-radius:24px;
5026		overflow:hidden;
5027		margin:12px;
5028		max-width:100%;
5029		box-shadow:0 8px 30px rgba(0,0,0,.08);
5030		cursor:pointer;
5031		transition:.25s;
5032	}
5033
5034	@media (hover: hover) and (pointer: fine) {
5035		.common-card:hover{
5036			transform:translateY(-4px);
5037			box-shadow:0 12px 35px rgba(0,0,0,.12);
5038		}
5039	}
5040
5041	/* IMAGE */
5042	.common-img{
5043		display:block;
5044		width:100%;
5045		height:260px;
5046		object-fit:cover;
5047		border-radius:24px 24px 0 0;
5048	}
5049
5050	/* fallback business logo (no service/product photo) - contain instead of cover so it isn't cropped/zoomed */
5051	.common-img-fallback{
5052		object-fit:contain;
5053		background:#f8f9fa;
5054		padding:40px;
5055		box-sizing:border-box;
5056	}
5057
5058	/* BODY */
5059	.common-body{
5060		padding:28px;
5061		min-height:180px;
5062	}
5063
5064	/* TEXT */
5065	.common-desc{
5066		font-size:16px;
5067		line-height:1.7;
5068		color:#4b5563;
5069	}
5070
5071	/* PRICE */
5072	.common-price{
5073		font-weight:600;
5074		color:#111;
5075		margin-bottom:10px;
5076	}
5077
5078	/* SPLIDE */
5079	.common-slider .splide__slide{
5080		padding-bottom:15px;
5081		display:flex;
5082		height:auto;
5083	}
5084
5085	.common-slider{
5086		position:relative;
5087	}
5088
5089	.common-slider.has-arrows{
5090		padding:0 38px;
5091	}
5092
5093	/* ARROWS */
5094	.common-slider .splide__arrow{
5095		width:48px;
5096		height:48px;
5097		border:none;
5098		border-radius:50%;
5099		background:#fff;
5100		box-shadow:0 6px 18px rgba(0,0,0,.15);
5101		display:flex;
5102		align-items:center;
5103		justify-content:center;
5104	}
5105
5106	.common-slider .splide__arrow--prev{
5107		left:-18px;
5108	}
5109
5110	.common-slider .splide__arrow--next{
5111		right:-18px;
5112	}
5113
5114	/* MOBILE */
5115	@media(max-width:768px){
5116
5117		.common-img{
5118			height:220px;
5119		}
5120
5121		.common-body{
5122			padding:20px;
5123			min-height:auto;
5124		}
5125
5126		.common-slider.has-arrows{
5127			padding:0 50px;
5128		}
5129
5130		.common-slider .splide__arrow{
5131			width:38px;
5132			height:38px;
5133		}
5134
5135		.common-slider .splide__arrow--prev{
5136			left:5px;
5137		}
5138
5139		.common-slider .splide__arrow--next{
5140			right:5px;
5141		}
5142	}
5143	.no-underline {
5144      	text-decoration: none!important;
5145	}
5146	/* Free-listing contact/social blur - CSS-only, the real markup and
5147	   text stay in the page (crawlers still see the actual content),
5148	   this only affects how it looks/behaves for a sighted, interactive
5149	   visitor. pointer-events:none stops tap-to-call/tap-to-chat working
5150	   through the blur - the "Upgrade to unlock" button is the only way
5151	   through. */
5152	.contact-blur {
5153		filter: blur(5px);
5154		user-select: none;
5155		pointer-events: none;
5156	}
5157	.service-area-badges {
5158		margin-left: 5px !important;
5159		display: flex;
5160		flex-wrap: wrap;
5161		gap: 5px;
5162	}
5163	.splide__arrow svg path {
5164		fill: #111010 !important;
5165	}
5166
5167	/* JOBS / EVENTS - read-only cards on the listing page (adding/editing
5168	   happens on /user/my-jobs and /user/my-events, not here) */
5169	.job-event-card{
5170		background:#fff;
5171		border:1px solid #eee;
5172		border-radius:16px;
5173		padding:20px;
5174		height:100%;
5175		transition:.25s;
5176	}
5177
5178	@media (hover: hover) and (pointer: fine) {
5179		.job-event-card:hover{
5180			box-shadow:0 8px 24px rgba(0,0,0,.08);
5181		}
5182	}
5183
5184	.job-event-card h4{
5185		margin-bottom:10px;
5186	}
5187
5188	.job-event-card h4 a{
5189		color:#222 !important;
5190		text-decoration:none !important;
5191	}
5192
5193	.job-event-badges{
5194		display:flex;
5195		flex-wrap:wrap;
5196		gap:8px;
5197		margin-bottom:12px;
5198	}
5199
5200	.job-event-badges .badge{
5201		padding:6px 12px;
5202		font-weight:700;
5203		font-size:12px;
5204	}
5205
5206	.job-type-pill{
5207		background:#e7f1ff;
5208		color:#1a56c4;
5209	}
5210
5211	.salary-pill,
5212	.event-date-pill{
5213		background:#fff4cf;
5214		color:#a77900;
5215	}
5216
5217	.job-event-desc{
5218		color:#666;
5219		font-size:14px;
5220		margin-bottom:14px;
5221	}
5222</style>

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.