1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta name="description" content="cheQin, hotel booking app, bargain for hotel, bargain for stays, bargain for service apartment, bargain for resorts, travel agent bargain.What is cheQin? The cheQin app enables travelers to bargain for hotels and stays. It allows the travelers to post the request and then brings in the top 5 lowest offers by creating healthy competition among the hoteliers. The good news is that hoteliers (or property owners) may access inquiries and can set the optimal pricing taking inventory into account. Both hoteliers and travelers benefit from cheQin. Allowed properties: 2/3/4/5 star hotels, resorts, service apartments, private stays and vacation homes.Hotelier (or Property owner) Registration: Visit https://cheQin.club and select Hotelier from the menu to register. Creating an account just takes 5 minutes. There is no need for any image uploads. Simply register and have your credentials verified. It is that simple. "> 8 <title>CheQIn App - a hotel booking app - Bargain for hotels, service apartments, private homes, vacation stays and more</title> 9 <meta name="Keywords" content= "cheQin, hotel booking app, bargain for hotel, bargain for stays, bargain for service apartment, bargain for resorts, travel agent bargain."> 10 11 <!-- icofont-css-link --> 12 <link rel="stylesheet" href="/cheQinUI_v2/css/icofont.min.css"> 13 <!-- Bootstrap-Style-link --> 14 <link rel="stylesheet" href="/cheQinUI_v2/css/bootstrap.min.css"> 15 <!-- Aos-Style-link --> 16 <link rel="stylesheet" href="/cheQinUI_v2/css/aos.css"> 17 <!-- Coustome-Style-link --> 18 <link rel="stylesheet" href="/cheQinUI_v2/css/style.css"> 19 <!-- Responsive-Style-link --> 20 <link rel="stylesheet" href="/cheQinUI_v2/css/responsive.css"> 21 <link href="/assets/plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"/> 22 <!-- Favicon --> 23 <link rel="shortcut icon" href="/cheQinUI_v2/images/favicon.png" type="image/x-icon"> 24 <link rel="manifest" href="/manifest.json" /> 25
25<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
vendor: 81 bytes, lines 25-27
25 26 <script src="https://www.google.com/recaptcha/api.js" async defer></script> 27
27<script> 28 var OneSignal = window.OneSignal || []; 29 OneSignal.push(function() { 30 OneSignal.init({ 31 appId : "15104e24-c1d0-4cd5-b6a2-495a032efd61", 32 }); 33 OneSignal.showNativePrompt(); 34 }); 35 OneSignal.push(function() { 36 OneSignal.getUserId(function(userId) { 37 $.ajax({ 38 type : "GET", 39 url : "/platform/set_onesignal_player/do.json", 40 data : { 41 user_id : userId 42 }, 43 dataType : "json", 44 success : function(b) { 45 if (b.success) { 46 return false; 47 } 48 }, 49 error : function() { 50 return false; 51 } 52 }); 53 }); 54 }); 55 OneSignal.on('subscriptionChange', function(isSubscribed) { 56 if (isSubscribed) { 57 OneSignal.getUserId(function(userId) { 58 $.ajax({ 59 type : "GET", 60 url : "/platform/set_onesignal_player/do.json", 61 data : { 62 user_id : userId 63 }, 64 dataType : "json", 65 success : function(b) { 66 if (b.success) { 67 return false; 68 } 69 }, 70 error : function() { 71 return false; 72 } 73 }); 74 }); 75 } 76 }); 77 </script>
77 78 <!-- Google Tag Manager --> 79
79<script>
vendor: 420 bytes, lines 79-90
79 80 (function(w, d, s, l, i) { 81 w[l] = w[l] || []; 82 w[l].push({ 83 'gtm.start' : new Date().getTime(), 84 event : 'gtm.js' 85 }); 86 var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; 87 j.async = true; 88 j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 89 f.parentNode.insertBefore(j, f); 90 })(window, document, 'script', 'dataLayer', '
90GTM-NLPJMKLV
vendor: 6 bytes, lines 90-91
90'); 91
91</script>
91 92 <!-- End Google Tag Manager --> 93 94 <!-- Google Tag Manager (noscript) -->
vendor: 74 bytes, lines 94-96
94 95 <noscript> 96 <iframe src="https://www.googletagmanager.com/ns.html?id=
96GTM-NLPJMKLV
vendor: 91 bytes, lines 96-99
96" 97 height="0" width="0" style="display:none;visibility:hidden"></iframe> 98 </noscript> 99
99<!-- End Google Tag Manager (noscript) --> 100
100<script type="text/javascript"> 101 (function(c, l, a, r, i, t, y) { 102 c[a] = c[a] || 103 function() { 104 (c[a].q = c[a].q || []).push(arguments) 105 }; 106 t = l.createElement(r); 107 t.async = 1; 108 t.src = "https://www.clarity.ms/tag/" + i; 109 y = l.getElementsByTagName(r)[0]; 110 y.parentNode.insertBefore(t, y); 111 })(window, document, "clarity", "script", "iuwthz139t"); 112 </script>
112 113 </head> 114 115 <body> 116
116<script> 117 https://connect.facebook.net/en_US/fbevents.js 118 </script>
118 119 <!-- Page-wrapper-Start --> 120 <div class="page_wrapper"> 121 <!-- Preloader --> 122 <div id="preloader"> 123 <div id="loader"></div> 124 </div> 125 <div class="full_bg"> 126 <section class="signup_section"> 127 <div class="container"> 128 <div class="top_part"> 129 <a href="/" class="back_btn"><i class="icofont-arrow-left"></i> Back to home</a> 130 <a class="small_logo" href="/"> <img src="/cheQinUI_v2/images/logo.png" alt="image"> </a> 131 </div> 132 133 <!-- Sign In Tabs --> 134 <ul class="nav nav-tabs" id="loginTabs" role="tablist"> 135 <li class="nav-item"> 136 <a class="nav-link active" id="email-tab" data-toggle="tab" href="#email-login" role="tab" aria-controls="email-login" aria-selected="true">Login with Email</a> 137 </li> 138 <li class="nav-item"> 139 <a class="nav-link" id="phone-tab" data-toggle="tab" href="#phone-login" role="tab" aria-controls="phone-login" aria-selected="false">Login with Phone & OTP</a> 140 </li> 141 </ul> 142 143 <!-- Tab Content --> 144 <div class="tab-content" id="loginTabContent"> 145 <!-- Email Login Tab --> 146 <div class="tab-pane fade show active" id="email-login" role="tabpanel" aria-labelledby="email-tab"> 147 <div class="form_block"> 148 <div class="form_side"> 149 <div class="section_title"> 150 <span class="title_badge">Welcome Back</span> 151 <h2><span>Guest</span> Sign in</h2> 152 <p> 153 Sign in to your account 154 </p> 155 </div> 156 <div class="error-message" id="email-error-message" style="color: red; display: none;"> 157 Incorrect password or email 158 </div> 159 <br> 160 <form id="userLoginForm" name="userLoginForm" autocomplete="off" method="post" action="#"> 161 <input type="hidden" name="authenticity_token" id="authenticity_token" value="APxkKse0JdpfI+GDXIa7rMHkqMREpgEP8rO/oQDfByrQRBswyJ8G/zCxWVLzGEMZoe4kUp/3nRd7pMm67CMlgQ==" /> <input type="hidden" name="country_code" id="country_code" value="IN"/> 162 <input type="hidden" name="login_type" id="login_type" value="Guest"/> 163 <div class="form-group"> 164 <input type="email" id="email-field" name="email" class="form-control" placeholder="Email"> 165 </div> 166 <div class="input-group" id="show_hide_password"> 167 <input type="password" id="password-field" name="password" class="form-control" placeholder="Password"> 168 <div class="input-group-addon"><a href="javascript:void(0)" style="color: #333"><i class="fa fa-eye-slash form-control" aria-hidden="true"></i></a></div> 169 </div> 170 <div class="forgate_check"> 171 <div class="coustome_checkbox"> 172 <!-- <label for="remamber_check"> 173 <input type="checkbox" id="remamber_check"> 174 <span class="checkmark"></span> 175 Remember for 30 days 176 </label> --> 177 </div> 178 <a href="/platform/password_reset/guest">Forgot password ?</a> 179 </div> 180 <div class="btn_block"> 181 <button class="btn puprple_btn ml-0" id="emailLoginButton"> 182 Login 183 </button> 184 <!-- <div class="btn_bottom"></div> --> 185 </div> 186 </form> 187 <br> 188 <div class="sign_in_here"> 189 <p style="margin: 0;color: #212529;font-weight: 600;font-size: 18px;"> 190 Not registered yet? <a href="/platform/signup_guest">Sign Up here</a> 191 </p> 192 </div> 193 </div> 194 <div class="side_screen"> 195 <div class="dotes_blue"><img src="/cheQinUI_v2/images/dotes_download.png" alt="image"> 196 </div> 197 <div class="left_icon"> 198 <img src="/cheQinUI_v2/images/smallStar.png" alt="image"> 199 </div> 200 <div class="right_icon"> 201 <img src="/cheQinUI_v2/images/bigstar.png" alt="image"> 202 </div> 203 <div class="scrren"> 204 <img src="/cheQinUI_v2/images/1loginFrame.png" alt="image"> 205 </div> 206 </div> 207 </div> 208 </div> 209 210 <!-- Phone & OTP Login Tab --> 211 <div class="tab-pane fade" id="phone-login" role="tabpanel" aria-labelledby="phone-tab"> 212 <div class="form_block"> 213 <div class="form_side"> 214 <div class="section_title"> 215 <span class="title_badge">Welcome Back</span> 216 <h2><span>Guest</span> Sign in</h2> 217 <p> 218 Sign in to your account 219 </p> 220 </div> 221 <div class="error-message" id="error-message" style="color: red; display: none;"> 222 Invalid mobile number 223 </div> 224 <br> 225 <!-- Mobile number input and "Send OTP" button --> 226 <div id="mobile-login-form"> 227 <form id="userLoginOTPForm" name="userLoginOTPForm" autocomplete="off" method="post" action="#"> 228 <input type="hidden" name="authenticity_token" id="authenticity_token" value="P1KiIpgBF09sALSscX0o6WuaUTENeVAHTt/aROTAdmPv6t04lyo0agOSDH3e49BcC5Ddp9YozB/HyKxfCDxUyA==" /> <input type="hidden" name="country_code" id="country_code" value="IN"/> 229 <input type="hidden" name="login_type" id="login_type" value="Guest"/> 230 <div class="form-group"> 231 <div class="input-group"> 232 <div class="input-group-prepend"> 233 <span class="input-group-text">+91</span> 234 </div> 235 <!-- <div class="form-group"> 236 <input type="email" class="form-control" placeholder="Mobile Number"> 237 </div> --> 238 <!-- <input type="text" class="form-control" placeholder="Mobile Number"> --> 239 <input type="text" class="form-control" id="mobileNumber" name="mobile_no" onpaste="return false;" placeholder="Mobile Number" oninput="this.value = this.value.replace(/[^0-9]/g, '')"> 240 </div> 241 <div class="g-recaptcha" data-sitekey="6LeZRsIqAAAAAEFx7xc8hpMKvfANcR77yGfZR9gt" style="padding-top: 20px;text-align: center;"></div> 242 </div> 243 <div class="btn_block"> 244 <button class="btn puprple_btn ml-0" id="sendOTPButton"> 245 Send OTP 246 </button> 247 </div> 248 </form> 249 </div> 250 <!-- OTP input and "Login" button --> 251 <div id="otp-login-form" style="display: none;"> 252 <form id="OTPSbmtForm" name="OTPSbmtForm" autocomplete="off" method="post"> 253 <input type="hidden" name="authenticity_token" id="authenticity_token" value="HvXJ6xNRlXPssanJJ7zav31VPFedPEOD2BZxWlzrJCLOTbbxHHq2VoMjERiIIiIKHV+wwUZt35tRAQdBsBcGiQ==" /> <input type="hidden" name="verify_mode" id="verify_mode" value="login"/> 254 <input type="hidden" name="user_id" id="user_id" value=""/> 255 <input type="hidden" name="login_type" id="login_type" value="Guest"/> 256 <div class="form-group"> 257 <!-- <input type="text" class="form-control" placeholder="OTP"> --> 258 <input type="text" class="form-control" id="otp-field" name="otp_code" maxlength="4" placeholder="OTP" oninput="this.value = this.value.replace(/[^0-9]/g, '')"> 259 </div> 260 <div class="error-message" id="otp-error-message" style="color: red; display: none;"> 261 Invalid OTP 262 </div> 263 <div class="btn_block"> 264 <button class="btn puprple_btn ml-0" id="otpLoginButton"> 265 Login 266 </button> 267 </div> 268 </form> 269 </div> 270 </div> 271 <!-- <div class="sign_in_here"> 272 <p>Not a member yet? <a href="sign-up.html">Sign Up here</a></p> 273 </div> --> 274 <div class="side_screen"> 275 <div class="dotes_blue"><img src="/cheQinUI_v2/images/dotes_download.png" alt="image"> 276 </div> 277 <div class="left_icon"> 278 <img src="/cheQinUI_v2/images/smallStar.png" alt="image"> 279 </div> 280 <div class="right_icon"> 281 <img src="/cheQinUI_v2/images/bigstar.png" alt="image"> 282 </div> 283 <div class="scrren"> 284 <img src="/cheQinUI_v2/images/1loginFrame.png" alt="image"> 285 </div> 286 </div> 287 </div> 288 </div> 289 </div> 290 </section> 291 </div> 292 </div> 293 <!-- Page-wrapper-End --> 294 295 <!-- Jquery-js-Link --> 296
296<script src="/cheQinUI_v2/js/jquery.js"></script>
296 297 <!-- bootstrap-js-Link --> 298
298<script src="/cheQinUI_v2/js/bootstrap.min.js"></script>
298 299 <!-- aos-js-Link --> 300
300<script src="/cheQinUI_v2/js/aos.js"></script>
300 301 <!-- main-js-Link --> 302
302<script src="/cheQinUI_v2/js/main.js"></script>
302 303
303<script> 304 const mobileLoginForm = document.getElementById("mobile-login-form"); 305 const otpLoginForm = document.getElementById("otp-login-form"); 306 const sendOTPButton = document.getElementById("sendOTPButton"); 307 const otpLoginButton = document.getElementById("otpLoginButton"); 308 const emailLoginButton = document.getElementById("emailLoginButton"); 309 310 sendOTPButton.addEventListener("click", () => { 311 const mobileNumber = document.getElementById("mobileNumber").value.trim(); 312 // Get the mobile number field value 313 const errorElement = document.getElementById("error-message"); 314 if (mobileNumber.length === 0) { 315 // Display an error message for an empty mobile number 316 event.preventDefault() 317 errorElement.textContent = "Please enter a mobile number."; 318 errorElement.style.display = "block"; 319 return false; 320 } else if (mobileNumber.length !== 10) { 321 // Display an error message for an invalid mobile number 322 event.preventDefault() 323 errorElement.textContent = "Please enter a valid 10-digit mobile number."; 324 errorElement.style.display = "block"; 325 return false; 326 } else { 327 event.preventDefault() 328 $("#sendOTPButton").attr('disabled', 'disabled'); 329 var a = '<span style="font-size:18px;color:#241ddc;">Please Wait...<img src="/images/loading.gif" id="loading" alt="Loading" height="18px;" title="Loading" /></span>'; 330 $("#error-message").html(a); 331 $("#error-message").show(); 332 $.ajax({ 333 type: "POST", 334 url: "/users/login_signup.json", 335 data: $("#userLoginOTPForm").serialize(), 336 dataType: "json", 337 success: function(b) { 338 if (b.success) { 339 if(b.is_user_present && b.is_signup_complete){ 340 console.log("user is present... and sign up complete"); 341 //show enter OTP screen 342 // Valid mobile number, proceed to send OTP 343 $("#verify_mode").val("login"); 344 $("#user_id").val(b.user_id); 345 errorElement.style.display = "none"; 346 mobileLoginForm.style.display = "none"; 347 otpLoginForm.style.display = "block"; 348 return false; 349 }else{ 350 //show guest signup screen 351 window.location.href = "/platform/signup_guest/"+b.user_id 352 return false; 353 354 } 355 } else { 356 message = '<span style="font-size:18px;color:#e70505;">'; 357 message += b.msg; 358 message += '</span>'; 359 $("#error-message").html(message); 360 $("#sendOTPButton").removeAttr('disabled'); 361 return false; 362 } 363 }, 364 error: function() { 365 message = '<span style="font-size:18px;color:#e70505;">'; 366 message += 'Error while validating your mobile, Please try again.'; 367 message += '</span>'; 368 $("#error-message").html(message); 369 $("#sendOTPButton").removeAttr('disabled'); 370 return false; 371 } 372 }); 373 } 374 }); 375 otpLoginButton.addEventListener("click", () => { 376 // mobileLoginForm.style.display = "none"; 377 // otpLoginForm.style.display = "block"; 378 const otpValue = document.getElementById("otp-field").value.trim(); 379 // Get the mobile number field value 380 const errorElement = document.getElementById("otp-error-message"); 381 if (otpValue.length !== 4) { 382 // Valid mobile number, proceed to send OTP 383 event.preventDefault() 384 errorElement.textContent = "Please enter a valid OTP."; 385 errorElement.style.display = "block"; 386 } else { 387 // Successful OTP validation 388 event.preventDefault() 389 $("#otpLoginButton").attr('disabled', 'disabled'); 390 var a = '<span style="font-size:18px;color:#241ddc;">Please Wait...<img src="/images/loading.gif" id="loading" alt="Loading" height="18px;" title="Loading" /></span>'; 391 $("#otp-error-message").html(a); 392 $("#otp-error-message").show(); 393 $.ajax({ 394 type: "POST", 395 url: "/users/login_signup_action.json", 396 data: $("#OTPSbmtForm").serialize(), 397 dataType: "json", 398 success: function(b) { 399 if (b.success) { 400 //$("#signup_signin").removeAttr('disabled'); 401 message = '<span style="font-size:18px;color:#04651a;">'; 402 message += b.msg; 403 message += '</span>'; 404 $("#otp-error-message").html(message); 405 if (b.user_type == "admin") 406 window.location.href = "/admins/dashboard/dashboard" 407 else 408 window.location.href = "/user_requests" 409 } else { 410 message = '<span style="font-size:18px;color:#e70505;">'; 411 message += b.msg; 412 message += '</span>'; 413 $("#otp-error-message").html(message); 414 $("#otpLoginButton").removeAttr('disabled'); 415 return false;
416 } 417 }, 418 error: function() { 419 message = '<span style="font-size:18px;color:#e70505;">'; 420 message += 'Error while validating your mobile, Please try again.'; 421 message += '</span>'; 422 $("#otp-error-message").html(message); 423 $("#otpLoginButton").removeAttr('disabled'); 424 return false; 425 } 426 }); 427 return false; 428 } 429 }); 430 emailLoginButton.addEventListener("click", () => { 431 const errorElement = document.getElementById("email-error-message"); 432 const email = document.getElementById("email-field").value.trim(); 433 // Get the mobile number field value 434 const password = document.getElementById("password-field").value.trim(); 435 // Get the mobile number field value 436 437 if (email.length === 0 || password.length === 0) { 438 event.preventDefault() 439 // Display an error message for empty email or password fields 440 errorElement.textContent = "Please enter both email and password."; 441 errorElement.style.display = "block"; 442 } else { 443 event.preventDefault() 444 $("#emailLoginButton").attr('disabled','disabled'); 445 var a = '<span style="font-size:18px;color:#241ddc;">Please Wait...<img src="/images/loading.gif" id="loading" alt="Loading" height="18px;" title="Loading" /></span>'; 446 $("#email-error-message").html(a); 447 $("#email-error-message").show(); 448 $.ajax({ 449 type : "POST", 450 url : "/platform/login_method.json", 451 data : $("#userLoginForm").serialize(), 452 dataType : "json", 453 success : function(b) { 454 if(b.success) { 455 a = '<span style="font-size:18px;color:#241ddc;">Login Successful. Redirecting...</span>'; 456 $("#email-error-message").html(a); 457 window.location = b.url; 458 return false; 459 }else if(b.msg == "The email or password you entered is incorrect"){ 460 a = '<span style="font-size:18px;color:#e70505;">'+b.msg+' <br/>Please use <a href="#" class="reset" style="color:#007bff;" onclick="window.location.href=\'/platform/password_reset\'">Forgot Password</a></div>'; 461 $("#email-error-message").html(a); 462 $("#emailLoginButton").removeAttr('disabled'); 463 return false; 464 }else{ 465 a = '<span style="font-size:18px;color:#e70505;">'+b.msg+'</span>'; 466 $("#email-error-message").html(a); 467 $("#emailLoginButton").removeAttr('disabled'); 468 return false; 469 } 470 }, 471 error : function() { 472 a = '<span style="font-size:18px;color:#e70505;">There was an error while login.</span>'; 473 $("#email-error-message").html(a); 474 $("#emailLoginButton").removeAttr('disabled'); 475 return false; 476 } 477 }); 478 } 479 }); 480 $("#show_hide_password a").on('click', function(event) { 481 event.preventDefault(); 482 if($('#show_hide_password input').attr("type") == "text"){ 483 $('#show_hide_password input').attr('type', 'password'); 484 $('#show_hide_password i').addClass( "fa-eye-slash" ); 485 $('#show_hide_password i').removeClass( "fa-eye" ); 486 }else if($('#show_hide_password input').attr("type") == "password"){ 487 $('#show_hide_password input').attr('type', 'text'); 488 $('#show_hide_password i').removeClass( "fa-eye-slash" ); 489 $('#show_hide_password i').addClass( "fa-eye" ); 490 } 491 }); 492 $(document).ready(function(){ 493 var userAgent = navigator.userAgent || navigator.vendor || window.opera; 494 console.log("user agent: "+userAgent) 495 // Redirect to Google Play for Android devices 496 if (/android/i.test(userAgent)) { 497 window.location.href = "https://play.google.com/store/apps/details?id=com.cheqinapp.booking"; 498 } 499 // Redirect to Apple Store for iOS devices 500 else if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) { 501 window.location.href = "https://apps.apple.com/us/app/cheqin-bargain-for-hotel-stay/id6443889147"; 502 } 503 }); 504 </script>
504 505 </body> 506</html>
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.