Help
RSS
API
Feed
Maltego
Contact
Domain > sakberally.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2023-12-21
115.187.37.25
(
ClassC
)
2026-01-08
111.118.212.46
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Thu, 08 Jan 2026 05:26:12 GMTServer: nginx/1.23.4Content-Type: text/html; charsetiso-8859-1Content-Length: 231Location: https://sakberally.com/X-Server-Cache: trueX-Proxy-Cache: EXPIRED !DOCTYPE HTML PUBLIC -//IETF//DTD HTML 2.0//EN>html>head>title>301 Moved Permanently/title>/head>body>h1>Moved Permanently/h1>p>The document has moved a hrefhttps://sakberally.com/>here/a>./p>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Thu, 08 Jan 2026 05:26:14 GMTServer: nginx/1.23.4Content-Type: text/html; charsetUTF-8Vary: Accept-EncodingX-Server-Cache: trueX-Proxy-Cache: EXPIREDTransfer-Encoding: chunked html langen>head> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1> title>S Akberally & Co. – Home/title> link relstylesheet hrefassets/css/style.css> link hrefassets/images/fav.png relicon typeimage/png> script srchttps://cdn.tailwindcss.com>/script> link hrefhttps://cdn.jsdelivr.net/npm/sweetalert2@11.4.16/dist/sweetalert2.min.css relstylesheet>style>*, ::before, ::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::after,::before{--tw-content:}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where(title){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where(typebutton),input:where(typereset),input:where(typesubmit){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}typesearch{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}rolebutton,button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}hidden:where(:not(hiddenuntil-found)){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0px}.inset-x-0{left:0px;right:0px}.-bottom-7{bottom:-1.75rem}.left-0{left:0px}.left-1\/2{left:50%}.right-auto{right:auto}.top-0{top:0px}.top-full{top:100%}.bottom-5{bottom:1.25rem}.right-5{right:1.25rem}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-2{margin-bottom:0.5rem}.mb-6{margin-bottom:1.5rem}.ml-3{margin-left:0.75rem}.mt-2{margin-top:0.5rem}.mt-6{margin-top:1.5rem}.mb-3{margin-bottom:0.75rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-28{height:7rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-12{height:3rem}.h-32{height:8rem}.w-14{width:3.5rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-full{width:100%}.w-12{width:3rem}.w-auto{width:auto}.max-w-7xl{max-width:80rem}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-none{-webkit-user-select:none;user-select:none}.grid-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr))}.grid-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:0.25rem}.gap-2{gap:0.5rem}.gap-3{gap:0.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-8{gap:2rem}.gap-x-6{column-gap:1.5rem}.gap-y-2{row-gap:0.5rem}.space-y-1 > :not(hidden) ~ :not(hidden){--tw-space-y-reverse:0;margin-top:calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0.25rem * var(--tw-space-y-reverse))}.space-y-3 > :not(hidden) ~ :not(hidden){--tw-space-y-reverse:0;margin-top:calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0.75rem * var(--tw-space-y-reverse))}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:0.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:0.5rem}.rounded-md{border-radius:0.375rem}.border{border-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-white\/20{border-color:rgb(255 255 255 / 0.2)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-white\/80{background-color:rgb(255 255 255 / 0.8)}.bg-black\/40{background-color:rgb(0 0 0 / 0.4)}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21 / var(--tw-bg-opacity, 1))}.bg-\url\(\assets\/images\/home_bg2\.jpg\\)\{background-image:url(assets/images/home_bg2.jpg)}.p-2{padding:0.5rem}.p-3{padding:0.75rem}.px-3{padding-left:0.75rem;padding-right:0.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:0.25rem;padding-bottom:0.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:0.5rem;padding-bottom:0.5rem}.py-3{padding-top:0.75rem;padding-bottom:0.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-2{padding-bottom:0.5rem}.pl-3{padding-left:0.75rem}.pt-\112px\{padding-top:112px}.text-center{text-align:center}.font-serif{font-family:ui-serif, Georgia, Cambria, Times New Roman, Times, serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-sm{font-size:0.875rem;line-height:1.25rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-6{line-height:1.5rem}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-gray-100\/90{color:rgb(243 244 246 / 0.9)}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.opacity-90{opacity:0.9}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0 / 0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.drop-shadow-lg{--tw-drop-shadow:drop-shadow(0 10px 8px rgb(0 0 0 / 0.04)) drop-shadow(0 4px 3px rgb(0 0 0 / 0.1));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.duration-200{transition-duration:200ms}.ease-out{transition-timing-function:cubic-bezier(0, 0, 0.2, 1)}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:opacity-90:hover{opacity:0.9}.focus\:border-red-500:focus{--tw-border-opacity:1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000)}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68 / var(--tw-ring-opacity, 1))}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:opacity-100{opacity:1}@media (min-width: 640px){.sm\:gap-6{gap:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width: 768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-24{width:6rem}.md\:w-auto{width:auto}.md\:grid-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr))}.md\:flex-row{flex-direction:row}.md\:gap-8{gap:2rem}.md\:py-14{padding-top:3.5rem;padding-bottom:3.5rem}.md\:py-16{padding-top:4rem;padding-bottom:4rem}.md\:pt-\112px\{padding-top:112px}.md\:text-left{text-align:left}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width: 1024px){.lg\:grid-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr))}.lg\:gap-4{gap:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}}/style>/head>body classbg-white> !-- Header --> header classfixed top-0 inset-x-0 z-50> !-- Main Nav --> nav classbackdrop-blur-md bg-white/80 shadow-sm> div classmax-w-7xl mx-auto px-4 sm:px-6 lg:px-8> div classh-28 flex items-center justify-between> !-- Logo left --> a hrefindex classflex items-center gap-2> img srcassets/images/3X7BIXE3MB-20180613-101023.jpg altS Akberally Co. classh-15 w-full> span classsr-only>S Akberally Co./span> /a> !-- RIGHT: Contact on top, Menu below --> div classflex flex-col items-end w-full md:w-auto> !-- TOP ROW: Contact (desktop) --> !-- CONTACT ROW (top-right) --> div classhidden md:flex items-center gap-5 mb-2 px-3 py-1 rounded-md> a hrefmailto:sakberally@gmail.com classflex items-center gap-2 hover:opacity-90 > span classinline-flex items-center justify-center w-8 h-8 rounded-full bg-red-600 > svg classw-6 h-6 text-white fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM3 7l8.25 5.5a2 2 0 002.5 0L22 7M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z>/path> /svg> /span> span classwhitespace-nowrap>sakberally@gmail.com/span> /a> a hreftel:+919831724830 classflex items-center gap-2 hover:opacity-90> span classinline-flex items-center justify-center w-8 h-8 rounded-full bg-red-600 > svg classw-6 h-6 text-white fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM3 5a2 2 0 012-2h2.6a1 1 0 01.95.69l1.2 3.6a1 1 0 01-.45 1.17l-1.9 1.1a12.05 12.05 0 006.08 6.08l1.1-1.9a1 1 0 011.17-.45l3.6 1.2a1 1 0 01.69.95V19a2 2 0 01-2 2h-1C9.94 21 3 14.06 3 6V5z>/path> /svg> /span> span classwhitespace-nowrap>9831724830/span> /a> !-- Search toggle --> button idsearchToggle typebutton aria-expandedfalse classflex items-center gap-2 hover:opacity-90> span classinline-flex items-center justify-center w-8 h-8 rounded-full bg-red-600 > svg classw-6 h-6 text-white fillnone strokecurrentColor viewBox0 0 24 24 aria-hiddentrue> path stroke-linecapround stroke-linejoinround stroke-width2 dM21 21l-4.35-4.35M10 18a8 8 0 100-16 8 8 0 000 16z>/path> /svg> /span> span classwhitespace-nowrap>Search/span> /button> /div> !-- ABSOLUTE DROPDOWN: keeps other links untouched --> div idsearchPanel classabsolute right-auto top-full mt-2 hidden z-40> div classw-80 bg-white text-gray-700 border border-gray-200 rounded-lg shadow-lg p-3 relative> form action# methodGET onsubmitreturn false;> label forq classsr-only>Search/label> input idq nameq typetext placeholderSearch products… classw-full border border-gray-300 rounded px-3 py-2 text-sm focus:outline-none focus:border-red-500 focus:ring-1 focus:ring-red-500> /form> div idsearchResults classabsolute right-auto bg-white border border-gray-200 rounded shadow-lg mt-1 z-50>/div> /div> /div> !-- BOTTOM ROW: Menu --> div classflex items-center gap-2> !-- Desktop menu (your original links) --> div classhidden md:flex items-center gap-2 lg:gap-4> a data-linkindex.php classpx-4 py-4 rounded nav-link hrefindex> HOME /a> a data-linkabout.php classpx-4 py-4 rounded nav-link hrefabout> ABOUT US /a> !-- Products dropdown (desktop hover) --> div classrelative group/products> button data-linkproducts.php hrefproducts classpx-4 py-4 rounded nav-link flex items-center gap-1 text-gray-700 hover:text-red-600> PRODUCTS svg classw-4 h-4 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM19 9l-7 7-7-7>/path> /svg> /button> !-- IMPORTANT: use group-hover/products here --> div iddesktopProductsDropdown classabsolute left-0 w-64 bg-white border border-gray-200 rounded-md shadow-lg opacity-0 invisible group-hover/products:opacity-100 group-hover/products:visible transition duration-200 ease-out z-20 py-2> !-- filled by JS --> /div> /div> a data-linkbrands.php classpx-4 py-4 rounded nav-link hrefbrands>BRANDS/a> a data-linkinquiry_form.php classpx-4 py-4 rounded nav-link hrefinquiry_form>INQUIRY FORM/a> a data-linkcontact_us.php classpx-4 py-4 rounded nav-link hrefcontact_us>CONTACT US/a> /div> !-- Mobile menu button (unchanged) --> button idmenuBtn classmd:hidden p-2 rounded hover:bg-gray-100 aria-labelOpen menu aria-expandedfalse> svg classw-6 h-6 text-gray-700 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM4 6h16M4 12h16M4 18h16>/path> /svg> /button> /div> /div> /div> /div> !-- Mobile panel --> div idmobilePanel classhidden md:hidden border-t border-gray-200 bg-white> div classpx-4 py-3 space-y-1> a data-linkindex.php classblock px-3 py-3 rounded nav-link hrefindex>HOME/a> a data-linkabout.php classblock px-3 py-3 rounded nav-link hrefabout>ABOUT US/a> !-- Products accordion (mobile) --> button idmobileProductsBtn classw-full flex items-center justify-between px-3 py-3 rounded nav-link> span>PRODUCTS/span> svg idmobileChevron classw-4 h-4 transition fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM19 9l-7 7-7-7>/path> /svg> /button> div idmobileProductsList classhidden ml-3 border-l border-gray-200 pl-3 space-y-1 pb-2>/div> a classblock px-3 py-3 rounded nav-link hrefbrands>BRANDS/a> a classblock px-3 py-3 rounded nav-link hrefinquiry_form>INQUIRY FORM/a> a classblock px-3 py-3 rounded nav-link hrefcontact_us>CONTACT US/a> /div> /div> /nav> /header> script> // Your base URL const searchInputs document.getElementById(q); const searchResults document.getElementById(searchResults); let searchTimeout null; searchInputs.addEventListener(input, () > { const query searchInputs.value.trim(); // Hide results if 3 characters if (query.length 3) { searchResults.innerHTML ; searchResults.classList.add(hidden); return; } // Debounce to avoid too many requests clearTimeout(searchTimeout); searchTimeout setTimeout(() > { fetch(`https://sakberally.com/apis/products/fetch.php`, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ name: query }) }) .then(res > res.json()) .then(data > { if (data.success && data.data.products.length > 0) { searchResults.innerHTML data.data.products.map(product > ` a hrefproduct_detail.php?id${product.id} classblock px-4 py-2 hover:bg-gray-100> ${product.name.length > 40 ? product.name.slice(0, 40) + ... : product.name} /a> `).join(); searchResults.classList.remove(hidden); } else { searchResults.innerHTML div classpx-4 py-2 text-gray-500>No products found/div>; searchResults.classList.remove(hidden); } }) .catch(err > { console.error(err); searchResults.innerHTML div classpx-4 py-2 text-red-500>Error fetching results/div>; searchResults.classList.remove(hidden); }); }, 300); // 300ms debounce }); // Hide dropdown when clicking outside document.addEventListener(click, (e) > { if (!searchResults.contains(e.target) && !searchInputs.contains(e.target)) { searchResults.classList.add(hidden); } });/script>script>(function() { const BASE_URL https://sakberally.com/apis; const desktopDD document.getElementById(desktopProductsDropdown); const mobileList document.getElementById(mobileProductsList); const mobileBtn document.getElementById(mobileProductsBtn); const mobileChevron document.getElementById(mobileChevron); if (!desktopDD || !mobileList) return; const esc (s) > String(s).replace(/&>/g, m > ({&:&,:<,>:>,:",:'}m)); const parentLink (id) > `sub_categories.php?category_id${encodeURIComponent(id)}`; const childLink (name) > `products?category${encodeURIComponent(String(name).toLowerCase())}`; // DESKTOP: parent row + fly-out children (hidden until hover of THIS parent)// const buildDesktopParent (parent) > {// const hasChildren Array.isArray(parent.children) && parent.children.length > 0;// if (!hasChildren) {// // plain parent link (no flyout)// return `// a href${parentLink(parent.id)}// classblock px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 whitespace-nowrap>// ${esc(parent.name)}// /a>`;// }// const childrenHtml parent.children// .sort((a,b) > (a.sort_no ?? 0) - (b.sort_no ?? 0))// .map(ch > `// a href${childLink(ch.name)}// classblock px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 whitespace-nowrap>// ${esc(ch.name)}// /a>// `).join();// return `// div classrelative group>// !-- parent row (click goes to sub_categories) -->// a href${parentLink(parent.id)}// classflex items-center justify-between px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 whitespace-nowrap>// span>${esc(parent.name)}/span>// svg classw-4 h-4 text-gray-500 fillnone strokecurrentColor viewBox0 0 24 24>// path stroke-linecapround stroke-linejoinround stroke-width2 dM9 5l7 7-7 7>/path>// /svg>// /a>// !-- flyout: only visible while hovering THIS parent -->// div classabsolute top-0 left-full ml-0 w-64 bg-white border border-gray-200 rounded-md shadow-lg// opacity-0 invisible group-hover:opacity-100 group-hover:visible transition duration-200 ease-out z-20 py-2>// ${childrenHtml}// /div>// /div>`;// };const buildDesktopParent (parent) > { const hasChildren Array.isArray(parent.children) && parent.children.length > 0; if (!hasChildren) { // simple parent link (no flyout) return ` a hrefsub_categories.php?category_id${encodeURIComponent(parent.id)} classblock px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 whitespace-nowrap> ${esc(parent.name)} /a>`; } const childrenHtml parent.children .sort((a,b) > (a.sort_no ?? 0) - (b.sort_no ?? 0)) .map(ch > ` a hrefproducts?category${encodeURIComponent(String(ch.name).toLowerCase())} classblock px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 whitespace-nowrap> ${esc(ch.name)} /a> `).join(); return ` !-- each parent is its own hover group --> div classrelative group/item> !-- clicking parent goes to sub_categories --> a hrefsub_categories.php?category_id${encodeURIComponent(parent.id)} classflex items-center justify-between px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 whitespace-nowrap> span>${esc(parent.name)}/span> svg classw-4 h-4 text-gray-500 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM9 5l7 7-7 7>/path> /svg> /a> !-- flyout only when THIS parent is hovered --> div classabsolute top-0 left-full ml-0 w-64 bg-white border border-gray-200 rounded-md shadow-lg opacity-0 invisible group-hover/item:opacity-100 group-hover/item:visible transition duration-200 ease-out z-20 py-2> ${childrenHtml} /div> /div>`;}; // MOBILE: parents list collapsed; tap PRODUCTS to show list; each parent with children gets its own mini-toggle const buildMobileParent (parent, idx) > { const hasChildren Array.isArray(parent.children) && parent.children.length > 0; if (!hasChildren) { return `a href${parentLink(parent.id)} classblock py-2 text-sm>${esc(parent.name)}/a>`; } const cid `mch-${idx}`; const childrenHtml parent.children .sort((a,b) > (a.sort_no ?? 0) - (b.sort_no ?? 0)) .map(ch > `a href${childLink(ch.name)} classblock py-2 text-sm>${esc(ch.name)}/a>`) .join(); return ` div classborder-l border-gray-200 pl-3> button typebutton data-toggle${cid} classw-full flex items-center justify-between py-2 text-sm> span classtext-left>${esc(parent.name)}/span> svg classw-4 h-4 transition data-chevron${cid} fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM19 9l-7 7-7-7>/path> /svg> /button> div id${cid} classhidden ml-3> !-- parent click behavior on mobile: also offer parent link --> a href${parentLink(parent.id)} classblock py-2 text-sm font-medium>View all ${esc(parent.name)}/a> ${childrenHtml} /div> /div>`; }; // Fetch categories fetch(`${BASE_URL}/categories/fetch.php`, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ wise: all, limit: 100, offset: 0 }) }) .then(r > r.json()) .then(json > { if (!json?.success) throw new Error(json?.message || API error); const parents Array.isArray(json?.data?.parents) ? json.data.parents : ; parents.sort((a,b) > (a.sort_no ?? 0) - (b.sort_no ?? 0)); // DESKTOP: only parents visible; children appear in flyout on hover of that parent desktopDD.innerHTML parents.map(buildDesktopParent).join() || ` div classpx-4 py-2 text-sm text-gray-500>No categories/div> `; // MOBILE: list parents; each with its own mini-toggle for children mobileList.innerHTML parents.map((p,i) > buildMobileParent(p,i)).join() || ` div classpx-3 py-2 text-sm text-gray-500>No categories/div> `; // attach mobile per-parent toggles mobileList.addEventListener(click, (e) > { const btn e.target.closest(buttondata-toggle); if (!btn) return; const id btn.getAttribute(data-toggle); const panel document.getElementById(id); const chev mobileList.querySelector(`data-chevron${id}`); if (!panel) return; const hidden panel.classList.contains(hidden); panel.classList.toggle(hidden, !hidden); if (chev) chev.style.transform hidden ? rotate(180deg) : ; }); }) .catch(err > { console.error(err); desktopDD.innerHTML `div classpx-4 py-2 text-sm text-red-600>Failed to load categories/div>`; mobileList.innerHTML `div classpx-3 py-2 text-sm text-red-600>Failed to load categories/div>`; }); // Existing mobile PRODUCTS accordion (your outer toggle) if (mobileBtn && mobileList && mobileChevron) { mobileBtn.addEventListener(click, () > { const isHidden mobileList.classList.contains(hidden); mobileList.classList.toggle(hidden, !isHidden); mobileChevron.style.transform isHidden ? rotate(180deg) : ; }); }})();/script> !-- Slider --> !-- Slider -->section classpt-10 md:pt-32> div classrelative overflow-hidden slider-outer> !-- Track --> div idsliderTrack classslider-track> div classslide stylebackground-image:url(assets/images/slider/NTRJ8ITQPF-20181003-045040.jpg);>/div> div classslide stylebackground-image:url(assets/images/slider/G1RPGIZVDY-20181005-082627.jpg);>/div> div classslide stylebackground-image:url(assets/images/slider/X3UU1X5GQ3-20181005-082717.jpg);>/div> /div> !-- Arrows --> div classabsolute inset-0 flex items-center justify-between px-3 sm:px-6> button classbg-white/70 hover:bg-white p-2 rounded-full shadow onclickprevSlide()>‹/button> button classbg-white/70 hover:bg-white p-2 rounded-full shadow onclicknextSlide()>›/button> /div> !-- Dots --> div classabsolute bottom-4 left-1/2 -translate-x-1/2 flex gap-2> span classw-2.5 h-2.5 rounded-full bg-white/80 iddot0>/span> span classw-2.5 h-2.5 rounded-full bg-white/40 iddot1>/span> span classw-2.5 h-2.5 rounded-full bg-white/40 iddot2>/span> /div> /div>/section>!-- Slider CSS -->script srcinc/slider.js>/script> br> !-- Categories (round icons) -->section idhome-categories classpy-12 md:py-16> div classmax-w-7xl mx-auto px-4 sm:px-6 lg:px-8> div idcatGrid classgrid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-8 place-items-center> !-- loading state --> div idcatLoading classcol-span-full text-center text-gray-600>Loading categories…/div> /div> /div>/section>script> // Set this once on your page (or replace with your actual base URL) window.BASE_URL https://sakberally.com/apis; // Local placeholder for missing category images const CATEGORY_PLACEHOLDER assets/images/placeholder-product.png; // Resolve category image path with safe fallbacks function getCategoryImage(cat) { const src cat?.category_image_path || ; if (!src) return CATEGORY_PLACEHOLDER; // Already absolute or data URI? if (/^(https?:)?\/\//i.test(src) || /^data:/i.test(src)) return src; // Relative path → join with BASE_URL const BASE window.BASE_URL + /; const cleaned src.replace(/^(\.\.\/)+|^\.\/+/, ); return BASE.replace(/\/+$/, ) + / + cleaned.replace(/^\/+/, ); } // Optional: truncate long category names function truncate(text , max 26) { return text.length > max ? text.slice(0, max) + … : text; } async function loadCategories() { const grid document.getElementById(catGrid); const loading document.getElementById(catLoading); try { const res await fetch(`${window.BASE_URL}/categories/fetch.php`, { method: POST, headers: { Content-Type: application/json }, // ✅ Required body body: JSON.stringify({ wise: category, limit: 100, offset: 0 }) }); const json await res.json(); const categories Array.isArray(json?.data?.categories) ? json.data.categories : ; // Clear loading loading?.remove(); if (!categories.length) { grid.innerHTML `p classcol-span-full text-center text-gray-600>No categories found./p>`; return; } // ✅ Sort by sort_no ASC (null/undefined go last) categories.sort((a, b) > { const as (a?.sort_no ?? Number.POSITIVE_INFINITY); const bs (b?.sort_no ?? Number.POSITIVE_INFINITY); return as - bs; }); // Render const frag document.createDocumentFragment(); categories.forEach(cat > { const name (cat?.name || ).trim(); const img getCategoryImage(cat); const a document.createElement(a); a.href `products?category${encodeURIComponent(name)}`; a.className group flex flex-col items-center text-center select-none; a.setAttribute(aria-label, name); a.innerHTML ` span classrelative inline-flex items-center justify-center> img src${img} alt${name} classw-32 h-32 sm:w-52 sm:h-52 rounded-full object-cover border-6px border-gray-300 shadow-sm transition duration-200 group-hover:scale-105 onerrorthis.onerrornull; this.src${CATEGORY_PLACEHOLDER}> /span> span classmt-4 font-serif text-base sm:text-sm tracking-wide uppercase text-gray-700 transition group-hover:text-red-600> ${truncate(name, 26)} /span> `; frag.appendChild(a); }); grid.appendChild(frag); } catch (e) { loading?.remove(); grid.innerHTML `p classcol-span-full text-center text-red-600>Failed to load categories./p>`; console.error(Categories fetch error:, e); } } document.addEventListener(DOMContentLoaded, loadCategories);/script> br> !-- About + Mission (mobile-first, responsive) -->section idabout classhome_about relative isolate text-white overflow-x-clip bg-url(assets/images/about/about.jpg) bg-center bg-cover bg-no-repeat py-10 sm:py-12 md:py-16> !-- Overlay for readability --> div classabsolute inset-0 bg-black/40 sm:bg-black/30 -z-10>/div> div classrelative z-10 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8> div classgrid gap-10 lg:grid-cols-2 items-start> !-- LEFT: Image + About text --> div classflex flex-col gap-6 max-w-4xl> !-- Heading --> h2 classfont-serif font-semibold text-2xl sm:text-2xl md:text-3xl lg:text-4xl> About S Akberally & Co /h2> div classflex flex-col sm:flex-row gap-6 items-start> img srcassets/images/about/about_content.jpg altS Akberally & Co brochure classw-full sm:w-210px md:w-230px lg:w-250px h-auto rounded-xl shadow-lg object-cover flex-shrink-0 /> div classtext-gray-100 text-base sm:text-sm md:text-sm leading-5 sm:leading-6 md:leading-6> p> 137, B.R.B Basu Road, (Canning Street) Kolkata-700001, West Bengal, India. S. Akberally & Co is a leading trading company in Kolkata, West Bengal, India. It has a huge product lineup in Power Tools, Wood Working Machinery, Workshop Machinery, Sheet Metal Machinery, Garage Machinery, and Lifting Tackles. /p> p classmt-3> It offers professional users, engineers and artisans a wide range of products and services. The company was started by a visionary, Sk. Saifuddinbhai Akberally Johar, under whose leadership a 1500 sqft showroom was set up in Kolkata in 1987. Since then, our firm has grown steadily, climbing the ladder with leaps and bounds. /p> /div> /div> /div> !-- RIGHT: Mission --> div classrelative max-w-3xl> !-- Title with background image --> div classmb-4 sm:mb-6> div classinline-block bg-url(assets/images/right_bg.png) bg-center bg-cover bg-no-repeat rounded-tl-3xl shadow-lg w-full> span classtext-center block px-5 sm:px-6 md:px-8 py-2.5 sm:py-3.5 md:py-4 font-serif font-semibold text-2xl sm:text-4xl> Our Mission /span> /div> /div> div classrelative text-gray-100 text-base sm:text-lg md:text-lg leading-5 sm:leading-6 md:leading-7> !-- Watermark (hidden on small screens) --> p> S. Akberally & Co is committed to providing superior customer service and the best possible value in quality products and services. We strive to meet the needs of our broad customer and supplier base through long-term relationships and proactively identifying opportunities for expansion. /p> p classmt-4> We believe in providing our valuable customers all their industrial needs under ONE ROOF. Our success relies on the attitude, ability and integrity of our people. Their progress and well-being is our main concern. /p> /div> /div> /div> /div>/section> !-- RANDOM PRODUCTS SECTION -->section idrandom-products classpy-12 md:py-16> div classmax-w-7xl mx-auto px-4 sm:px-6 lg:px-8> !-- Title --> div classrelative flex justify-center mb-8 md:mb-12> img srcassets/images/35RW72DCDJ-20180613-150311.png alt aria-hiddentrue classhidden md:block w-16 lg:w-20 absolute -top-14 pointer-events-none select-none> !-- Brush Title --> div classw-full flex justify-center> h2 classinline-block bg-url(assets/images/title_bg2.png) bg-center bg-contain bg-no-repeat> span classblock text-white font-serif font-semibold leading-none px-5 sm:px-6 md:px-8 py-2.5 sm:py-3.5 md:py-4 text-2xl sm:text-3xl md:text-4xl rounded-tr-2xl> S Akberally Products /span> /h2> /div> /div> !-- Grid for random products --> div idrandomProductsGrid classgrid gap-4 sm:gap-6 md:gap-8 grid-cols-2 lg:grid-cols-4>/div> !-- Load more --> div classmt-6 text-center> a hrefproducts?categorywood working classtext-sm md:text-base tracking-wide text-gray-700 hover:text-red-600> LOAD MORE ... /a> /div> /div>/section>!-- script> // CONFIG const API_URL https://sakberally.com/apis/products/fetch.php; // Grid element const randomProductsGrid document.getElementById(randomProductsGrid); // Fetch only 8 products randomly async function fetchRandomProducts() { const payload { name: , // no filter category: , // no filter limit: 8, // fetch only 8 products offset: 0 // offset not required for random products }; try { const res await fetch(API_URL, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(payload) }); if (!res.ok) throw new Error(`HTTP ${res.status}`); const json await res.json(); const data json?.data || {}; const products Array.isArray(data.products) ? data.products : ; if (products.length > 0) { products.forEach(p > { randomProductsGrid.appendChild(createRandomProductCard(p)); }); } } catch (e) { console.error(Failed to fetch random products:, e); randomProductsGrid.innerHTML ` div classcol-span-full text-center text-red-600> Failed to load random products. Please try again. /div>`; } } // Create product card function createRandomProductCard(item) { const card document.createElement(article); card.className group border border-gray-200 bg-white overflow-hidden rounded cursor-pointer; const imgWrap document.createElement(div); imgWrap.className h-40 sm:h-48 md:h-60 lg:h-72 flex items-center justify-center p-4 sm:p-6; const img document.createElement(img); img.src item.upload_path || item.upd_link || assets/images/placeholder-product.png; img.alt item.name || ; img.className max-h-full w-auto object-contain transition-transform duration-300 group-hover:scale-1.03; img.onerror () > { img.src assets/images/placeholder-product.png; }; imgWrap.addEventListener(click, () > { // Navigate to product detail page with product ID const productId item.id; window.location.href `product_detail?id${productId}`; }); imgWrap.appendChild(img); const title document.createElement(div); title.className h-20 title bg-red-600 text-white text-center uppercase tracking-wide font-serif font-semibold text-xs sm:text-sm md:text-base leading-tight flex items-center justify-center px-2; title.textContent item.name.length > 20 ? item.name.substring(0, 20) + ... : item.name; // Truncate if more than 20 chars card.appendChild(imgWrap); card.appendChild(title); return card; } // Fetch random products when page loads fetchRandomProducts();/script> -->script>(() > { // CONFIG (scoped) const RANDOM_API_URL https://sakberally.com/apis/products/fetch.php; const randomProductsGrid document.getElementById(randomProductsGrid); // Helpers function getPrimaryImage(item) { // Prefer uploads0.upload_path per your API const firstUpload Array.isArray(item.uploads) && item.uploads0?.upload_path ? item.uploads0.upload_path : null; const src firstUpload || item.upload_path || item.file_path || item.upd_link || ; if (!src) return assets/images/placeholder-product.png; // Already absolute or data URI? if (/^(https?:)?\/\//i.test(src) || /^data:/i.test(src)) return src; // Otherwise join with BASE_URL const BASE https://sakberally.com/apis/; const cleaned src.replace(/^(\.\.\/)+|^\.\/+/, ); return BASE.replace(/\/+$/, ) + / + cleaned.replace(/^\/+/, ); } function truncate(text , max 20) { return text.length > max ? text.slice(0, max) + ... : text; } function createRandomProductCard(item) { const card document.createElement(article); card.className group border border-gray-200 bg-white overflow-hidden rounded cursor-pointer; const imgWrap document.createElement(div); imgWrap.className h-40 sm:h-48 md:h-60 lg:h-72 flex items-center justify-center p-4 sm:p-6; const img document.createElement(img); img.src getPrimaryImage(item); img.alt item.name || ; img.className max-h-full w-auto object-contain transition-transform duration-300 group-hover:scale-1.03; img.onerror () > { img.src assets/images/placeholder-product.png; }; imgWrap.addEventListener(click, () > { const productId item.id; // Use .php if that’s your actual file name: // window.location.href `product_detail.php?id${productId}`; window.location.href `product_detail?id${productId}`; }); imgWrap.appendChild(img); const title document.createElement(div); title.className h-20 title bg-red-600 text-white text-center uppercase tracking-wide font-serif font-semibold text-xs sm:text-sm md:text-base leading-tight flex items-center justify-center px-2; title.textContent truncate(item.name, 20); card.appendChild(imgWrap); card.appendChild(title); return card; } // Fetch: true-random window of 8 async function fetchRandomProducts() { try { // 1) Fetch once to get total count const headRes await fetch(RANDOM_API_URL, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ name: , category: , limit: 1, offset: 0 }) }); if (!headRes.ok) throw new Error(`HTTP ${headRes.status}`); const headJson await headRes.json(); const total Number(headJson?.data?.count || 0); // If nothing returned, show message and stop if (!total) { randomProductsGrid.innerHTML ` div classcol-span-full text-center text-gray-600>No products available./div> `; return; } // 2) Compute random offset (ensure non-negative) const maxStart Math.max(0, total - 8); const randomOffset Math.floor(Math.random() * (maxStart + 1)); // 3) Fetch 8 products starting at random offset const res await fetch(RANDOM_API_URL, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ name: , category: , limit: 8, offset: randomOffset }) }); if (!res.ok) throw new Error(`HTTP ${res.status}`); const json await res.json(); const products Array.isArray(json?.data?.products) ? json.data.products : ; // 4) Render randomProductsGrid.innerHTML ; // clear before render products.forEach(p > randomProductsGrid.appendChild(createRandomProductCard(p))); // Fallback: if backend returned fewer than 8 (e.g., near end), optionally top-up from start if (products.length 8 && total > 8) { const moreRes await fetch(RANDOM_API_URL, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ name: , category: , limit: 8 - products.length, offset: 0 }) }); if (moreRes.ok) { const moreJson await moreRes.json(); const more Array.isArray(moreJson?.data?.products) ? moreJson.data.products : ; more.forEach(p > randomProductsGrid.appendChild(createRandomProductCard(p))); } } } catch (e) { console.error(Failed to fetch random products:, e); randomProductsGrid.innerHTML ` div classcol-span-full text-center text-red-600> Failed to load random products. Please try again. /div>`; } } // Init fetchRandomProducts();})();/script> !-- Quick Inquiry -->section idhome_inquiry classrelative overflow-hidden> !-- Red base --> div classabsolute inset-0 bg-#e21e26 -z-10>/div> !-- Grid pattern overlay (repeat) --> div classabsolute inset-0 opacity-40 -z-10 stylebackground-image:url(assets/images/home_bg2.jpg); background-repeat:repeat; background-size:auto;>/div> div classmax-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-10 md:py-14> div classgrid md:grid-cols-12 gap-8 md:gap-10 items-center> !-- Left: person --> div classmd:col-span-5 flex justify-center md:justify-start> !-- Use your cutout/PNG here --> img srcassets/images/8F5YX8CKJS-20180613-150311.png altSupport professional classw-64 sm:w-72 md:w-22rem h-auto object-contain drop-shadow-xl> /div> !-- Right: form --> div classmd:col-span-7 text-white> h2 classfont-serif text-3xl sm:text-4xl md:text-5xl font-semibold mb-6> Quick Inquiry /h2> !-- Add an id so we can target it in JS --> form idinquiryForm classspace-y-4 enctypemultipart/form-data> !-- Hidden subject default --> input typehidden namesubject valueinquery /> !-- Row 1 --> div classgrid grid-cols-1 sm:grid-cols-2 gap-4> label classsr-only forfirst_name>First Name/label> input idfirst_name namefirst_name typetext placeholderFirst Name classw-full px-4 py-3 bg-white text-gray-900 border-2 border-gray-400 focus:border-black/60 focus:ring-2 focus:ring-black/30 outline-none required /> label classsr-only forlast_name>Last Name/label> input idlast_name namelast_name typetext placeholderLast Name classw-full px-4 py-3 bg-white text-gray-900 border-2 border-gray-400 focus:border-black/60 focus:ring-2 focus:ring-black/30 outline-none /> /div> !-- Row 2 --> div classgrid grid-cols-1 sm:grid-cols-2 gap-4> label classsr-only foremail>Email Id/label> input idemail nameemail typeemail placeholderEmail Id classw-full px-4 py-3 bg-white text-gray-900 border-2 border-gray-400 focus:border-black/60 focus:ring-2 focus:ring-black/30 outline-none required /> label classsr-only forphone>Phone Number/label> input idphone namephone typetel placeholderPhone Number classw-full px-4 py-3 bg-white text-gray-900 border-2 border-gray-400 focus:border-black/60 focus:ring-2 focus:ring-black/30 outline-none required /> /div> !-- Message --> label classsr-only formessage>Message/label> textarea idmessage namemessage rows4 placeholderMessage classw-full px-4 py-3 bg-white text-gray-900 border-2 border-gray-400 focus:border-black/60 focus:ring-2 focus:ring-black/30 outline-none required>/textarea> div classpt-2 flex justify-between> button idsubmitBtn typesubmit classpx-8 py-3 bg-black text-white font-semibold tracking-wide uppercase hover:bg-neutral-900 transition> Submit /button> div> label forattachment classblock mb-1>Attachment (optional)/label> input idattachment nameattachment typefile classblock text-sm text-gray-900 bg-white border-2 border-gray-400 file:mr-4 file:py-2 file:px-4 file:border-0 file:bg-black file:text-white file:uppercase file:tracking-wide hover:file:bg-neutral-900> /div> /div> /form> /div> /div> /div>/section>script> // If youre rendering base_url server-side, leave as-is; otherwise set manually: const formEl document.getElementById(inquiryForm); const submitBtn document.getElementById(submitBtn); formEl.addEventListener(submit, async (e) > { e.preventDefault(); // Gather fields const first (document.getElementById(first_name).value || ).trim(); const last (document.getElementById(last_name).value || ).trim(); const email (document.getElementById(email).value || ).trim(); const phone (document.getElementById(phone).value || ).trim(); const msg (document.getElementById(message).value || ).trim(); const subject inquiry; // default as required const fileInput document.getElementById(attachment); // Build FormData as required by API const fd new FormData(); fd.append(name, first, last.filter(Boolean).join( ).trim()); // combine first + last fd.append(mobile, phone); fd.append(email, email); fd.append(subject, subject); fd.append(messege, msg); // API expects messege (spelling) if (fileInput.files && fileInput.files0) { fd.append(attachment, fileInput.files0); // API expects attachment } // UI state submitBtn.disabled true; submitBtn.classList.add(opacity-60, cursor-not-allowed); try { const res await fetch(`https://sakberally.com/apis/query/create.php`, { method: POST, body: fd }); const data await res.json(); if (!res.ok || data.success ! true) { const errMsg (data && data.message) ? data.message : Something went wrong.; throw new Error(errMsg); } // Success: show SweetAlert for 2 seconds, then refresh const userName (data.data && data.data.name) ? data.data.name : (first || User); const userMsg (data.data && data.data.messege) ? data.data.messege : msg; await Swal.fire({ icon: success, title: `Thanks for Response ${userName}`, html: `Your messege is: b>${escapeHtml(userMsg)}/b>`, timer: 2000, showConfirmButton: false, timerProgressBar: true, didOpen: () > { const b Swal.getHtmlContainer().querySelector(b); if (b) b.style.wordBreak break-word; } }); // Refresh page window.location.reload(); } catch (err) { console.error(err); Swal.fire({ icon: error, title: Submission Failed, text: err.message || Unable to submit your inquiry right now. }); } finally { submitBtn.disabled false; submitBtn.classList.remove(opacity-60, cursor-not-allowed); } }); // Basic HTML escaper to prevent HTML injection inside the popup function escapeHtml(str) { return String(str) .replaceAll(&, &) .replaceAll(, <) .replaceAll(>, >) .replaceAll(, ") .replaceAll(, '); }/script>!-- BRANDS: 4-at-a-time slider -->section idbrands classbg-white> div classh-1 bg-red-600>/div> div classmax-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8> !-- h2 classsr-only>/h2> --> div classrelative flex justify-center mb-8 md:mb-12> img srcassets/images/35RW72DCDJ-20180613-150311.png alt aria-hiddentrue classhidden md:block w-16 lg:w-20 absolute -top-14 pointer-events-none select-none> !-- Brush Title --> div classw-full flex justify-center> h2 classinline-block bg-url(assets/images/title_bg2.png) bg-center bg-contain bg-no-repeat> span classblock text-white font-serif font-semibold leading-none px-5 sm:px-6 md:px-8 py-2.5 sm:py-3.5 md:py-4 text-2xl sm:text-3xl md:text-4xl rounded-tr-2xl> Our Brands /span> /h2> /div> /div> div classrelative> !-- arrows --> button idbrandPrev classabsolute left-0 top-1/2 -translate-y-1/2 z-10 grid place-items-center w-9 h-9 rounded-full bg-white shadow hover:bg-gray-50 aria-labelPrevious>‹/button> button idbrandNext classabsolute right-0 top-1/2 -translate-y-1/2 z-10 grid place-items-center w-9 h-9 rounded-full bg-white shadow hover:bg-gray-50 aria-labelNext>›/button> !-- viewport --> div idbrandViewport classoverflow-hidden px-12> !-- padding leaves space for arrows --> !-- track (JS fills) --> div idbrandTrack classflex items-center gap-8 transition-transform duration-500 ease-out>/div> /div> /div> /div>/section>!-- Styles specific to logos -->style> .brand-card { flex: 0 0 auto; /* width set via JS based on visible count */ display: grid; place-items: center; } .brand-logo { height: 60px; width: auto; object-fit: contain; filter: saturate(0) opacity(.9); transition: filter .15s, transform .15s; } .brand-logo:hover { filter: none; transform: translateY(-1px); } @media (max-width: 767.98px){ .brand-logo { height: 48px; } }/style>script> (function(){ // Set your base URL once const ABASE_URL https://sakberally.com/apis; // e.g. https://yourdomain.com const API `${ABASE_URL}/brands/fetch.php`; const viewport document.getElementById(brandViewport); const track document.getElementById(brandTrack); const prevBtn document.getElementById(brandPrev); const nextBtn document.getElementById(brandNext); let items ; // DOM nodes for slides let start 0; // index of first visible item let visible 6; // how many to show at once (desktop default) let gapPx 0; // computed from CSS gap function resolvePath(p){ if (!p) return null; if (/^https?:\/\//i.test(p)) return p; return `${ABASE_URL}/${p.replace(/^(\.\.\/)+/, )}`; } // Build one slide function makeItem(b){ const card document.createElement(div); card.className brand-card; const link document.createElement(b.brand_catalouge_path ? a : span); if (b.brand_catalouge_path){ link.href resolvePath(b.brand_catalouge_path); link.target _blank; link.rel noopener; link.title b.name ? `${b.name} – Catalogue` : Catalogue; } const img document.createElement(img); img.className brand-logo; img.alt b.name || Brand; img.src resolvePath(b.brand_logo_path); link.appendChild(img); card.appendChild(link); return card; } // Calculate how many to show (2 on small screens, 4 otherwise) function computeVisible(){ return window.innerWidth 768 ? 2 : 4; // you asked for 4 showing; this keeps it usable on mobile } // Read the gap between items (from computed style) function computeGapPx(){ const style getComputedStyle(track); return parseFloat(style.columnGap || style.gap || 0) || 0; } // Apply widths and move to current page function layout(){ visible computeVisible(); gapPx computeGapPx(); // Each item width in pixels so that exactly `visible` items fit in the viewport including gaps const vpWidth viewport.clientWidth; const totalGap gapPx * (visible - 1); const itemWidth (vpWidth - totalGap) / visible; items.forEach(el > { el.style.width `${itemWidth}px`; }); // Clamp start so we never show empty space at the end const maxStart Math.max(0, items.length - visible); if (start > maxStart) start maxStart; // Translate track const offset start * (itemWidth + gapPx); track.style.transform `translateX(-${offset}px)`; // Button states prevBtn.classList.toggle(opacity-40, start 0); prevBtn.classList.toggle(pointer-events-none, start 0); nextBtn.classList.toggle(opacity-40, start maxStart); nextBtn.classList.toggle(pointer-events-none, start maxStart); } function nextPage(){ const maxStart Math.max(0, items.length - visible); if (start maxStart){ start Math.min(start + visible, maxStart); layout(); } } function prevPage(){ if (start > 0){ start Math.max(start - visible, 0); layout(); } } // Touch swipe (simple) let touchX null, baseStart 0; viewport.addEventListener(touchstart, e > { touchX e.touches0.clientX; baseStart start; }, {passive:true}); viewport.addEventListener(touchend, e > { if (touchX null) return; const dx e.changedTouches0.clientX - touchX; const threshold 40; // px if (dx -threshold) nextPage(); else if (dx > threshold) prevPage(); touchX null; }, {passive:true}); prevBtn.addEventListener(click, prevPage); nextBtn.addEventListener(click, nextPage); window.addEventListener(resize, () > layout()); async function init(){ try{ const res await fetch(API, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ limit: 50, offset: 0 }) }); const json await res.json(); const brands json?.data?.brands || ; if (!brands.length){ document.getElementById(brands).classList.add(hidden); return; } // add slides const frag document.createDocumentFragment(); brands.forEach(b > { const el makeItem(b); items.push(el); frag.appendChild(el); }); track.appendChild(frag); layout(); }catch(err){ console.error(Failed to load brands:, err); } } document.addEventListener(DOMContentLoaded, init); })();/script> footer classrelative text-white stylebackground-image:url(assets/images/footer_bg.jpg); background-size:cover; background-position:center;> !-- overlay for readability --> div classabsolute inset-0 bg-black/40>/div> div classrelative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-10> !-- top row: logo | address | contact --> div classgrid grid-cols-1 md:grid-cols-3 gap-8 items-start> !-- Left: Company logo --> div classflex items-start> img srcassets/images/footer_png.png altS Akberally & Co. classh-32 w-auto> /div> !-- Middle: Address --> div> h3 classtext-2xl font-semibold mb-3>Address/h3> div classflex items-start gap-3> svg classw-6 h-6 text-red-500 flex-shrink-0 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM12 11c1.657 0 3-1.343 3-3S13.657 5 12 5 9 6.343 9 8s1.343 3 3 3zm0 0c-4 0-7 3-7 7 3 1 7 1 7 1s4 0 7-1c0-4-3-7-7-7z>/path> /svg> p classtext-gray-100/90 leading-6> 137, B.R.B Basu Road (Canning Street) Kolkata 700001, West Bengal, India. /p> /div> /div> !-- Right: Contact Us --> div> h3 classtext-2xl font-semibold mb-3>Contact Us/h3> div classspace-y-3> div classflex items-center gap-3> svg classw-6 h-6 text-red-500 flex-shrink-0 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM3 5a2 2 0 012-2h2.6a1 1 0 01.95.69l1.2 3.6a1 1 0 01-.45 1.17l-1.9 1.1a12.05 12.05 0 006.08 6.08l1.1-1.9a1 1 0 011.17-.45l3.6 1.2a1 1 0 01.69.95V19a2 2 0 01-2 2h-1C9.94 21 3 14.06 3 6V5z>/path> /svg> div> div classtext-gray-200>Phone:/div> a hreftel:+919831724830 classtext-white hover:text-red-400 font-medium>+91 9831724830/a> /div> /div> div classflex items-center gap-3> svg classw-6 h-6 text-red-500 flex-shrink-0 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM3 7l8.25 5.5a2 2 0 002.5 0L22 7M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z>/path> /svg> div> div classtext-gray-200>Email:/div> a hrefmailto:sakberally@gmail.com classtext-white hover:text-red-400 font-medium>sakberally@gmail.com/a> /div> /div> /div> /div> /div> !-- divider --> div classmt-8 border-t border-white/20>/div> !-- footer nav --> nav classrelative mt-6> ul classflex flex-wrap items-center justify-center gap-x-6 gap-y-2 text-gray-200> li>a hrefindex classhover:text-red-400>Home/a>/li> li>a hrefabout classhover:text-red-400>About Us/a>/li> !-- li>a hrefproducts classhover:text-red-400>Products/a>/li> --> li>a hrefbrands classhover:text-red-400>Brands/a>/li> li>a hrefinquiry_form classhover:text-red-400>Inquiry Form/a>/li> li>a hrefcontact classhover:text-red-400>Contact Us/a>/li> /ul> /nav> !-- divider --> div classmt-6 border-t border-white/20>/div> !-- bottom bar: copyright + Designed & Developed by image --> div classmt-4 flex flex-col md:flex-row items-center justify-between gap-3 text-gray-200> div classtext-center md:text-left> !-- use © to avoid odd encoding like © --> © 2025 S Akberally Co. Ltd. All rights reserved. /div> !-- div classflex items-center gap-2> span>Designed & Developed by –/span> a href# aria-labelDesigned by> img srcassets/images/aslog.png altDesigner Logo classh-6 w-auto> /a> /div> --> /div> /div> /footer> !-- Sticky Back-to-Top button --> button idbackToTop classfixed bottom-5 right-5 w-12 h-12 rounded-full bg-yellow-400 text-gray-900 shadow-lg flex items-center justify-center transition-opacity duration-200 opacity-0 pointer-events-none aria-labelBack to top> svg classw-6 h-6 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM5 15l7-7 7 7>/path> /svg> /button>script> // Show/Hide back-to-top & smooth scroll (function() { const btn document.getElementById(backToTop); const onScroll () > { if (window.scrollY > 200) { btn.classList.remove(opacity-0, pointer-events-none); } else { btn.classList.add(opacity-0, pointer-events-none); } }; window.addEventListener(scroll, onScroll, { passive: true }); btn.addEventListener(click, () > window.scrollTo({ top: 0, behavior: smooth })); onScroll(); // initialize })();/script>script> /* set active nav by current filename */ document.addEventListener(DOMContentLoaded, () > { // get current filename (e.g., about.html, -> index.html) let current location.pathname.split(/).pop(); if (!current || current /) current index.php; document.querySelectorAll(.nav-linkdata-link).forEach(a > { if (a.getAttribute(data-link) current) { a.classList.add(is-active); a.setAttribute(aria-current, page); // accessibility & CSS hook } }); }); // mobile menu const menuBtn document.getElementById(menuBtn); const mobilePanel document.getElementById(mobilePanel); menuBtn.addEventListener(click, () > mobilePanel.classList.toggle(hidden)); // mobile products accordion const mobileProductsBtn document.getElementById(mobileProductsBtn); const mobileProductsList document.getElementById(mobileProductsList); const mobileChevron document.getElementById(mobileChevron); mobileProductsBtn.addEventListener(click, () > { mobileProductsList.classList.toggle(hidden); mobileChevron.classList.toggle(rotate-180); });/script>!-- Toggle script (lightweight) -->script> document.addEventListener(DOMContentLoaded, () > { const btn document.getElementById(searchToggle); const panel document.getElementById(searchPanel); function closePanel(e) { if (!panel.classList.contains(hidden)) { if (!panel.contains(e.target) && !btn.contains(e.target)) { panel.classList.add(hidden); btn.setAttribute(aria-expanded, false); } } } btn.addEventListener(click, () > { panel.classList.toggle(hidden); btn.setAttribute(aria-expanded, panel.classList.contains(hidden) ? false : true); if (!panel.classList.contains(hidden)) { panel.querySelector(input)?.focus(); } }); document.addEventListener(click, closePanel); document.addEventListener(keydown, (e) > { if (e.key Escape) panel.classList.add(hidden); }); });/script>script srchttps://cdn.jsdelivr.net/npm/sweetalert2@11.4.16/dist/sweetalert2.all.min.js>/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]