<!DOCTYPE html>
<html lang="en" prefix="og:http://ogp.me/ns#" class="no-js">

    <head>
        <meta charset="utf-8">
        <title>Login | TICKAMS
</title>
        <!-- Viewport settings for responsive layout and fullscreen fit -->
                    <meta name="viewport" content="initial-scale=1, viewport-fit=cover, user-scalable=yes">
        
        <!-- Enable fullscreen mode on Android Chrome -->
        <meta name="mobile-web-app-capable" content="yes">

        <!-- Enable fullscreen mode on iOS Safari -->
        <meta name="apple-mobile-web-app-capable" content="yes">

        <link rel="shortcun icon" href="https://www.happytick.com/assets/img/photo_6161071668210633917_m.jpg" type="image/x-icon" />
        <link href="https://www.happytick.com/login" rel="canonical">
        <meta name="csrf-token" content="R7HgtFuE9LG0tr1gsLSagzn9zGiFvYyqzAwdUJev" />
        <link rel="alternate" href="https://www.happytick.com/login" hreflang="x-default" />

        <!-- Google Font: Source Sans Pro -->
        <link rel="stylesheet"
            href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
        <!-- Font Awesome -->
        <link rel="stylesheet" href="https://www.happytick.com/assets/plugins/fontawesome-free/css/all.min.css">
        <!-- icheck bootstrap -->
        <link rel="stylesheet" href="https://www.happytick.com/assets/plugins/icheck-bootstrap/icheck-bootstrap.min.css">
        <!-- SweetAlert2 -->
        <link rel="stylesheet" href="https://www.happytick.com/assets/plugins/sweetalert2/sweetalert2.css">
        <!-- Toastr -->
        <link rel="stylesheet" href="https://www.happytick.com/assets/plugins/toastr/toastr.min.css">
        <!-- overlayScrollbars -->
        <link rel="stylesheet" href="https://www.happytick.com/assets/plugins/overlayScrollbars/css/OverlayScrollbars.min.css">

        <!-- daterange picker -->
        <link rel="stylesheet" href="https://www.happytick.com/assets/plugins/daterangepicker/daterangepicker.css">
        <!-- Tempusdominus Bootstrap 4 -->
        <link rel="stylesheet"
            href="https://www.happytick.com/assets/plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css">

        <!-- Theme style -->
        <link rel="stylesheet" href="https://www.happytick.com/assets/css/adminlte.min.css">

        <link type="text/css" rel="stylesheet" href="https://www.happytick.com/assets/css/custom.css?v=20250928" />
        <link type="text/css" rel="stylesheet" href="https://www.happytick.com/assets/css/modal-loading.css" />
        <link type="text/css" rel="stylesheet" href="https://www.happytick.com/assets/css/modal-loading-animate.css" />

        <!-- Select2 -->
        <link rel="stylesheet" href="https://www.happytick.com/assets/plugins/select2/css/select2.min.css">
        <link rel="stylesheet" href="https://www.happytick.com/assets/plugins/select2-bootstrap4-theme/select2-bootstrap4.min.css">
        <!-- Tom Select CSS (Bootstrap 4 theme) -->
        <link href="https://cdn.jsdelivr.net/npm/tom-select@2.2.2/dist/css/tom-select.bootstrap4.min.css" rel="stylesheet">

        
        <style>
            .login-page {
                background: url("https://www.happytick.com/assets/img/tick_acc_bg_2.jpg") fixed center no-repeat !important;
                background-color: #033B51  !important;
                background-size: cover !important;
            }
        </style>
    </head>

    
    <body class="hold-transition  login-page ">








            <div class="container">
        <div class="row">
            <div class="col-md-4 col-12 float-start">
                <!-- /.login-logo -->
                <div class="card card-primary">
                                        <div class="card-header text-center login-box-background">
                        <span class="desktop-only">
                            <font class="stitle text-light">TICK</font><font class="w14 text-light">  ACCOUNT MANAGEMENT</font>
                        </span>
                        <span class="mobile-only">
                            <img src="https://www.happytick.com/assets/img/banner_logo.png" style="width: -webkit-fill-available;">
                        </span>
                    </div>
                                        <div class="card-body">
                        <div class="input-group mb-3">
                            <label class="w-100">Username</label>
                            <input type="text" class="form-control check" id="email" name="email" required="">
                            <div class="input-group-append">
                                <div class="input-group-text">
                                    <span class="fas fa-envelope"></span>
                                </div>
                            </div>
                        </div>
                        <div class="input-group mb-3">
                            <label class="w-100">Password</label>
                            <input type="password" class="form-control check" id="password" name="password" required="">
                            <div class="input-group-append">
                                <div class="input-group-text">
                                    <span class="fas fa-lock"></span>
                                </div>
                            </div>
                        </div>
                        <div class="input-group mb-3" hidden>
                            <label class="w-100">Captcha</label>
                            <input type="text" class="form-control mr-1 check" name="captcha" id="captcha" required="">
                            <div><img src="https://www.happytick.com/captcha/flat?1Q9MPI87" class="b_r_20" style="cursor: pointer; width: 100%" onclick="this.src='https://www.happytick.com/captcha/flat?SZtCdz4n'+Math.random()" id="captchaCode"></div>
                        </div>
                        <div class="row">
                            <!-- /.col -->
                            <div class="col-12">
                                <button id="loginForm" type="button" class="btn btn-primary btn-block">Login <i class="fa fa-sign-in"></i></button>
                            </div>
                            <!-- <div class="col-6">
                        <a href="https://www.happytick.com/forgot_password" class="btn btn-warning btn-block">Forgot Password</a>
                    </div> -->
                            <!-- /.col -->
                        </div>
                        <!-- /.social-auth-links -->
                    </div>
                    <!-- /.card-body -->
                </div>
                <!-- /.card -->
            </div>
        </div>
    </div>
    <div class="login-box">

    </div>
    <!-- /.login-box -->


        
        <!-- jQuery -->
        <script src="https://www.happytick.com/assets/plugins/jquery/jquery.min.js"></script>
        <!-- SweetAlert2 -->
        <script src="https://www.happytick.com/assets/plugins/sweetalert2/sweetalert2.min.js"></script>
        <!-- Bootstrap 4 -->
        <script src="https://www.happytick.com/assets/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
        <!-- Toastr -->
        <script src="https://www.happytick.com/assets/plugins/toastr/toastr.min.js"></script>
        <!-- InputMask -->
        <script src="https://www.happytick.com/assets/plugins/moment/moment.min.js"></script>
        <script src="https://www.happytick.com/assets/plugins/inputmask/jquery.inputmask.min.js"></script>
        <!-- bs-custom-file-input -->
        <script src="https://www.happytick.com/assets/plugins/bs-custom-file-input/bs-custom-file-input.min.js"></script>
        <!-- Tempusdominus Bootstrap 4 -->
        <script src="https://www.happytick.com/assets/plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js"></script>
        <!-- AdminLTE App -->
        <script src="https://www.happytick.com/assets/js/adminlte.min.js"></script>

        <!-- Select2 -->
        <script src="https://www.happytick.com/assets/plugins/select2/js/select2.full.min.js"></script>

        <script type="text/javascript" src="https://www.happytick.com/assets/js/general.js"></script>
        <script type="text/javascript" src="https://www.happytick.com/assets/js/modal-loading.js"></script>

        <!-- Tom Select JS -->
        <script src="https://cdn.jsdelivr.net/npm/tom-select@2.2.2/dist/js/tom-select.complete.min.js"></script>

        <!--Datatables js-->
        <script type="text/javascript">
            $('.setNumberOnly').on('change', function() {
                var get_price = $(this).val();
                var set_price = parseInt(get_price);
                $(this).val(set_price);
            })
            $('.setTwoNumberDecimalOnly').on('change', function() {
                var get_price = $(this).val();
                var set_price = parseFloat(get_price).toFixed(2);
                $(this).val(set_price);
            })
            
            function callDatatables(tableId, dataUrl, columnIds, disableSearchIndex, search = true, lengthChange = false, paging = true, pageLength = 20, searchObj = []) {
                $('#' + tableId).DataTable({
                    "dom": '<"tableContentWidth"<"lengthPos"l><"searchPos"f>r<"tablePos"ti>p>',
                    "processing": true,
                    "serverSide": true,
                    "ordering": false,
                    "responsive": true,
                    "lengthChange": lengthChange,
                    "pageLength": pageLength,
                    "searching": search,
                    "language": {
                        "search": 'Search',
                    },
                    "info": true,
                    "autoWidth": false,
                    "paging"        : paging,
                    "ajax" : ({
                        url: dataUrl,
                        data: searchObj
                    }),
                    "columnDefs": [{
                        "searchable": false,
                        "targets": disableSearchIndex
                    }],
                    "columns": columnIds,
                });
            }

            function reportCallDatatables(tableId, dataUrl, columnIds, disableSearchIndex, searchObj = false) {
                $('#'+tableId).DataTable({
                    "dom": '<"tableContentWidth"<"lengthPos"l><"searchPos"f>r<"tablePos"ti>p>',
                    "processing"    : true,
                    "serverSide"    : true,
                    "ordering"      : false,
                    "searching"     : true,
                    "language": {
                        "search": 'Search',
                    },
                    "paging"        : false,

                    "ajax"          : ({
                        url: dataUrl,
                        data: searchObj
                    }),
                    "columnDefs"    : [{ "searchable": false, "targets": disableSearchIndex }],
                    "columns": columnIds,
                    "footerCallback": function (row, data, start, end, display) {
                        let api = this.api();

                        var total_bal_b_f = 0;
                        var total_game = 0;
                        var total_transaction = 0;
                        var total_balance = 0;

                        for (const element of data) {
                            total_bal_b_f = total_bal_b_f + parseFloat(element['bal_b_f_amt']);
                            total_game = total_game + parseFloat(element['game_amt']);
                            total_transaction = total_transaction + parseFloat(element['transaction_amt']);
                            total_balance = total_balance + parseFloat(element['balance_amt']);
                        }

                        api.column(1).footer().innerHTML = total_bal_b_f.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
                        api.column(2).footer().innerHTML = total_game.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
                        api.column(3).footer().innerHTML = total_transaction.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
                        api.column(4).footer().innerHTML = total_balance.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});

                    }
                });
            }
            function reportCallDatatables2(tableId, dataUrl, columnIds, disableSearchIndex, searchObj = false) {
                $('#'+tableId).DataTable({
                    "dom": 'Bfrtip',
                    "buttons": ["excel",
                        {
                            extend: 'print',
                            text: 'Print',
                            customize: function (win) {
                                const $body = $(win.document.body);
                                const $table = $body.find('table');

                                // Clone and append the original footer
                                $table.append($('#' + tableId + ' tfoot').clone());

                                // Copy inline styles from each cell
                                $('#' + tableId + ' td').each(function (i) {
                                const bg = $(this).css('background-color');
                                const color = $(this).find('p').css('color');
                                const font = $(this).css('font-family');
                                const weight = $(this).css('font-weight');
                                const align = $(this).css('text-align');

                                $table.find('td').eq(i).css({
                                    'background-color': bg,
                                    'color': color,
                                    'font-family': font,
                                    'font-weight': weight,
                                    'text-align': align
                                });
                                });
                            }
                        }
                    ],
                    "processing"    : true,
                    "serverSide"    : true,
                    "ordering"      : false,
                    "searching"     : true,
                    "language": {
                        "search": 'Search',
                    },
                    "paging"        : false,
                    "ajax"          : ({
                        url: dataUrl,
                        data: searchObj
                    }),
                    "columnDefs"    : [{ "searchable": false, "targets": disableSearchIndex }],
                    "columns": columnIds,
                    "footerCallback": function (row, data, start, end, display) {
                        let api = this.api();

                        var total_credit = 0;
                        var total_debit = 0;
                        var total_balance = 0;

                        for (const element of data) {
                            total_credit = total_credit + parseFloat(element['credit_raw'].replace(/,/g, ""));
                            total_debit = total_debit + parseFloat(element['debit_raw'].replace(/,/g, ""));
                            total_balance = element['balance_raw'];
                        }

                        const total_credit_show = total_credit.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const total_debit_show = total_debit.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const total_balance_show = total_balance;

                        if(total_credit < 0){
                            api.column(2).footer().innerHTML = '<p class="text-danger">' + total_credit_show + '</p>';
                        }
                        else{
                            api.column(2).footer().innerHTML = total_credit_show;
                        }

                        if(total_debit < 0){
                            api.column(3).footer().innerHTML = '<p class="text-danger">' + total_debit_show + '</p>';
                        }
                        else{
                            api.column(3).footer().innerHTML = total_debit_show;
                        }

                        if(parseFloat(total_balance.replace(/,/g, "")) < 0){
                            api.column(4).footer().innerHTML = '<p class="text-danger">' + total_balance_show + '</p>';
                        }
                        else{
                            api.column(4).footer().innerHTML = '<p class="text-primary">' +total_balance_show + '</p>';
                        }
                    }
                }).buttons().container().appendTo('#custReport_wrapper .col-md-6:eq(0)');
            }
            function reportCallDatatables3(tableId, dataUrl, columnIds, disableSearchIndex, searchObj = false, name = '') {
                $('#'+tableId).DataTable({
                    "dom": 'Bfrtip',
                    "buttons": [
                        {
                            extend: 'excel',
                            title: "Login | TICKAMS" + ' - ' + name,
                        },
                        {
                            extend: 'print',
                            text: 'Print',
                            title: "Login | TICKAMS" + ' - ' + name,
                            customize: function (win) {
                                const $body = $(win.document.body);
                                const $table = $body.find('table');

                                // Clone and append the original footer
                                $table.append($('#' + tableId + ' tfoot').clone());

                                // Copy inline styles from each cell
                                $('#' + tableId + ' td').each(function (i) {
                                const bg = $(this).css('background-color');
                                const color = $(this).find('span').css('color');
                                const font = $(this).css('font-family');
                                const weight = $(this).css('font-weight');
                                const align = $(this).css('text-align');

                                $table.find('td').eq(i).css({
                                    'background-color': bg,
                                    'color': color,
                                    'font-family': font,
                                    'font-weight': weight,
                                    'text-align': align
                                });
                                });
                            }
                        }
                    ],
                    "processing"    : true,
                    "serverSide"    : true,
                    "ordering"      : false,
                    "searching"     : false,
                    "language": {
                        "search": 'Search',
                    },
                    "paging"        : false,

                    "ajax"          : ({
                        url: dataUrl,
                        data: searchObj
                    }),
                    "columnDefs"    : [{ "searchable": false, "targets": disableSearchIndex }],
                    "columns": columnIds,
                    "footerCallback": function (row, data, start, end, display) {
                        let api = this.api();

                        let total_credit = 0;
                        let total_debit = 0;
                        let total_balance = 0;

                        for (const element of data) {
                            total_credit = total_credit + parseFloat(element['credit_raw'].replace(/,/g, ""));
                            total_debit = total_debit + parseFloat(element['debit_raw'].replace(/,/g, ""));
                            total_balance = element['balance_raw'];
                        }

                        const total_credit_show = total_credit.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const total_debit_show = total_debit.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const total_balance_show = total_balance;

                        if(total_credit < 0){
                            api.column(2).footer().innerHTML = '<span class="text-danger">' + total_credit_show + '</span>';
                        }
                        else{
                            api.column(2).footer().innerHTML = total_credit_show;
                        }

                        if(total_debit < 0){
                            api.column(3).footer().innerHTML = '<span class="text-danger">' + total_debit_show + '</span>';
                        }
                        else{
                            api.column(3).footer().innerHTML = total_debit_show;
                        }

                        if(parseFloat(total_balance.replace(/,/g, "")) < 0){
                            api.column(4).footer().innerHTML = '<span class="text-danger">' + total_balance_show + '</span>';
                        }
                        else{
                            api.column(4).footer().innerHTML = '<span class="text-primary">' + total_balance_show + '</span>';
                        }
                    }
                }).buttons().container().appendTo('#custReport_wrapper .col-md-6:eq(0)');
            }
            function reportCallDatatables4(tableId, dataUrl, columnIds, disableSearchIndex, searchObj = false) {
                $('#'+tableId).DataTable({
                    "dom": 'Blfrtip',
                    "buttons": ["excel",
                        {
                            extend: 'print',
                            text: 'Print',
                            customize: function (win) {
                                const $body = $(win.document.body);
                                const $table = $body.find('table');

                                // Clone and append the original footer
                                $table.append($('#' + tableId + ' tfoot').clone());

                                // Copy inline styles from each cell
                                $('#' + tableId + ' td').each(function (i) {
                                    const bg = $(this).css('background-color');
                                    const color = $(this).find('a').css('color');
                                    const font = $(this).css('font-family');
                                    const weight = $(this).css('font-weight');
                                    const align = $(this).css('text-align');

                                    $table.find('td').eq(i).css({
                                        'background-color': bg,
                                        'color': color,
                                        'font-family': font,
                                        'font-weight': weight,
                                        'text-align': align
                                    });
                                });
                            }
                        }
                    ],
                    "processing"    : true,
                    "serverSide"    : true,
                    "ordering"      : true,
                    "searching"     : true,
                    "language": {
                        "search": 'Search',
                    },
                    "paging"        : true,
                    "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
                    "pageLength": 20,
                    "ajax"          : ({
                        url: dataUrl,
                        data: searchObj
                    }),
                    "columnDefs"    : [
                        { "searchable": false, "targets": disableSearchIndex },
                        {
                            "targets": 12,
                            "orderable": false
                        }
                    ],
                    "columns": columnIds,
                    "footerCallback": function (row, data, start, end, display) {
                        let api = this.api();

                        let bal_b_f = 0;
                        let four_d = 0;
                        let toto = 0;
                        let cas = 0;
                        let racing = 0;
                        let sports = 0;
                        let others = 0;
                        let win_lose = 0;
                        let game = 0;
                        let transaction = 0;
                        let bank_in_out = 0;
                        let balance = 0;

                        for (const element of data) {
                            bal_b_f = bal_b_f + element['bal_b_f'];
                            four_d = four_d + element['four_d'];
                            toto = toto + element['toto'];
                            cas = cas + element['cas'];
                            racing = racing + element['racing'];
                            sports = sports + element['sports'];
                            others = others + element['others'];
                            win_lose = win_lose + element['win_lose'];
                            game = game + element['game'];
                            transaction = transaction + element['transaction'];
                            //bank_in_out = bank_in_out + element['bank_in_out'];
                            balance = balance + element['balance'];
                        }

                        const bal_b_f_show = bal_b_f.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const four_d_show = four_d.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const toto_show = toto.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const cas_show = cas.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const racing_show = racing.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const sports_show = sports.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const others_show = others.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const win_lose_show = win_lose.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const game_show = game.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const transaction_show = transaction.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        //const bank_in_out_show = bank_in_out.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
                        const balance_show = balance.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });

                        api.column(1).footer().innerHTML = `<p class="${bal_b_f < 0 ? 'text-danger' : 'text-primary'}">${bal_b_f_show}</p>`;
                        api.column(2).footer().innerHTML = `<p class="${four_d < 0 ? 'text-danger' : 'text-primary'}">${four_d_show}</p>`;
                        api.column(3).footer().innerHTML = `<p class="${toto < 0 ? 'text-danger' : 'text-primary'}">${toto_show}</p>`;
                        api.column(4).footer().innerHTML = `<p class="${cas < 0 ? 'text-danger' : 'text-primary'}">${cas_show}</p>`;
                        api.column(5).footer().innerHTML = `<p class="${racing < 0 ? 'text-danger' : 'text-primary'}">${racing_show}</p>`;
                        api.column(6).footer().innerHTML = `<p class="${sports < 0 ? 'text-danger' : 'text-primary'}">${sports_show}</p>`;
                        api.column(7).footer().innerHTML = `<p class="${others < 0 ? 'text-danger' : 'text-primary'}">${others_show}</p>`;
                        api.column(8).footer().innerHTML = `<p class="${win_lose < 0 ? 'text-danger' : 'text-primary'}">${win_lose_show}</p>`;
                        api.column(9).footer().innerHTML = `<p class="${game < 0 ? 'text-danger' : 'text-primary'}">${game_show}</p>`;
                        api.column(10).footer().innerHTML = `<p class="${transaction < 0 ? 'text-danger' : 'text-primary'}">${transaction_show}</p>`;
                        //api.column(11).footer().innerHTML = `<p class="${bank_in_out < 0 ? 'text-danger' : 'text-primary'}">${bank_in_out_show}</p>`;
                        api.column(11).footer().innerHTML = `<p class="${balance < 0 ? 'text-danger' : 'text-primary'}">${balance_show}</p>`;
                    }
                }).buttons().container().appendTo('#custReport_wrapper .col-md-6:eq(0)');
            }
        </script>
        <!--End of datatables js-->

        
<script>
    $(document).ready(function () {
        var check = 0;
        $('.check').keypress(function (e) {
            if(e.which == 13 && check == 0) $("#loginForm").click();
        });
        $("#loginForm").click(function(event){
            check = 1;
            //var obj = {captcha:"captcha",password: "password", email:"email"};
            var obj = {password: "password", email:"email"};
            var final = { Id : obj};
            var Id = JSON.stringify(final);
            var ans = checkValue(Id);

            if(ans!=0){
                return false;
            }
            var url = "https://www.happytick.com/post_login";
            var form = new FormData();
            //form.append('captcha', $('#captcha').val());
            form.append('password', $('#password').val());
            form.append('email', $('#email').val());
            var disable = loadingDisable();

            $.ajax({
                url     :   url,
                data    :   form,
                cache   : false,
                contentType: false,
                processData: false,
                type: 'POST',
                headers :   {'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')},
                success : function(response){
                    disable.out();
                    check = 0;
                    //$('#captchaCode').click();
                    if (response.status == 1) {
                        document.location.href = response.returnUrl;
                    } else {
                        Swal.fire({
                            title: response.message,
                            text: response.msgtext,
                            icon: "error",
                            buttonsStyling: false,
                            customClass: {
                                confirmButton: "btn btn-danger mr-3",
                                cancelButton: "btn btn-secondary",
                            },
                        }).then(function () {
                            if (response.returnUrl)
                                document.location.href = response.returnUrl;
                            if (response.onPageReload) document.location.reload();
                        });
                    }
                    //swalReturn(response);
                }
            });
        });
    });
</script>
    </body>

</html>
