﻿'use strict';

var mySwal = function (swalType = 'show', options) {

    let type = options.type || 'info'
    let title = options.title || ''
    let text = options.text || ''

    if (options.SW) { type = options.SW == true ? 'success' : 'warning' }
    if (options.SE) { type = options.SE == true ? 'success' : 'error' }

    let confirmButtonClass = options.confirmButtonClass || 'btn-primary'
    let cancelButtonClass = options.cancelButtonClass || 'btn-light'
    let confirmButtonText = options.confirmButtonText || 'Tamam'
    let cancelButtonText = options.cancelButtonText || 'İptal'

    let callback = options.callback || null

    switch (swalType) {

        case 'show':
        default:
            swal({
                type: type,
                title: title,
                text: text
            });
            break;

        case 'timer':

            let timer = options.timer || 1000

            swal({
                type: type,
                title: title,
                text: '<hr/>' + text
                    + '<hr/><strong class="swal-timer-count">'
                    + timer / 1000
                    + '</strong> saniye sonra otomatik kapatılacak',
                html: true,
                confirmButtonText: confirmButtonText,
                confirmButtonClass: confirmButtonClass,
                timer: timer,
                allowEscapeKey: false,

            }, (sender) => {

                if (typeof callback === "function") {

                    setTimeout(() => {
                        callback(sender);
                    }, 100)

                    swal.close()

                } else {
                    swal.close();
                }

            });

            let e = $(".sweet-alert").find(".swal-timer-count");
            let n = + e.text();
            setInterval(function () { n > 1 && e.text(--n) }, 1000);

            break;

        case 'confirm':

            let callbackConfirm = options.callbackConfirm || null
            let callbackCancel = options.callbackCancel || null

            swal({
                title: title,
                text: text,
                type: type,
                html:true,
                showCancelButton: true,
                confirmButtonClass: confirmButtonClass,
                cancelButtonClass: cancelButtonClass,
                confirmButtonText: confirmButtonText,
                cancelButtonText: cancelButtonText,
                closeOnConfirm: false,
                closeOnCancel: false,
            },
                function (isConfirm) {
                    if (isConfirm) {
                        if (typeof callbackConfirm === "function") {
                            callbackConfirm();
                            swal.close();
                        } else {
                            swal.close();
                        }
                    } else {
                        if (typeof callbackCancel === "function") {
                            callbackCancel();
                            swal.close();
                        } else {
                            swal.close();
                        }
                    }
                });

            break;

        case 'input':

            let inputPlaceholder = options.inputPlaceholder || ''
            let showInputError = options.showInputError || ''
            let defaultValue = options.defaultValue || ''

            swal({
                title: title,
                text: text,
                type: "input",
                inputValue: defaultValue,
                showCancelButton: true,
                closeOnConfirm: false,
                confirmButtonClass: confirmButtonClass,
                cancelButtonClass: cancelButtonClass,
                confirmButtonText: confirmButtonText,
                cancelButtonText: cancelButtonText,
                inputPlaceholder: inputPlaceholder
            }, function (inputValue) {
                if (inputValue === false) return false;
                if (inputValue === "") {
                    swal.showInputError(showInputError);
                    return false
                }
                if (typeof callback === "function") {
                    callback(inputValue);
                }
            });
            break;

        case 'ajax':

            swal({
                title: title,
                text: text,
                type: type,
                showCancelButton: true,
                closeOnConfirm: false,
                showLoaderOnConfirm: true
            }, function () {
                if (typeof callback === "function") { callback(); }
            });
            break;
    }

}
