/*
 *************************************
 JjQueryUERY SCRIPT FOR jQueryARLEV TEjQueryPLATE jQueryANAGER - LAYOUT ADjQueryIN PANEL JOOjQueryLA TEjQueryPLATE
 *************************************
 Copyright http://marlev.it
 *************************************
 GPL License
 *************************************
 */
jQuery.ifmobile = function(){
    if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || jQuery(window).width() < 768 ) {
        return true;
    }
    return false;
}
jQuery.openItemMenu = function openItemMenu() {
    var curent = JM(".tm-active-menu").val();

    JM(".marlev-ulmenu").find("li").each(function () {
        var menudata = JM(this).attr("data");
        if (curent == menudata)
            JM(this).click();
        return true;
    });
    // JM(".marlev-ulmenu").find("li").click(function(){
    //     if(jQuery.ifmobile() == true){
    //         jQuery.close_menu();
    //     }
    // });

}
//funzione serve per vedere quanti checkbox sono stati selezionati, se piu di 1 pilsate carica si disabilita
jQuery.loading_wait = function loading_wait(title,mess) {
    jQuery("body").append('<div id="waitbox" class="modal-backdrop fade show "><div class="waitbox"><div class="wait"><span class="wait-load">'+title+'</span><br/>' +
        '<div class="container"><div class="row justify-content-center"><div class="col-sm-7 " style="margin-top:40px;"><div class="progress" style="height: 30px;">\n' +
        '  <div class="progress-bar" role="progressbar" data-percent="0" style="width: 0%; height: 30px;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>\n' +
        '</div></div>' +
        '<div class="col-sm-7 " style="margin-top:50px;">'+mess+'</div>' +
        '</div>' +
        '</div></div><div>');

};

jQuery.presetsChecked = function presetsChecked(element) {


    var checked = jQuery(".tm-preset-action:checked").length;
    if (checked == 1) {
        jQuery(".load-preset, .delete-presets").removeClass("disabled");

    } else if (checked > 1) {
        jQuery(".load-preset").addClass("disabled");
    } else {
        jQuery(".load-preset, .delete-presets").addClass("disabled");
    }

};


jQuery.show_alert_message = function show_alert_message() {


    // setTimeout(function () {
    var timer = 500;

    jQuery("#alert-box").find(".alert").each(function () {
        if (!jQuery(this).hasClass("alert-show")) {
            var element = jQuery(this);
            var this_height = jQuery(element).innerHeight() + 10;
            jQuery(this).addClass("alert-show").data("height", this_height);
            jQuery(element).data("height", this_height);
            //  setTimeout(function () {
//             if (jQuery(element).hasClass("install-layout")) {
//                jQuery(element).show();
//                setTimeout(function () {
//                    jQuery.hide_alert_message(jQuery(element));
//                }, 2500);
//            } else {
            var setint = setInterval(function () {
                var get_height = jQuery("#alert-box").data("height");
                if (get_height == 0) {
                    clearInterval(setint);
                    get_height = this_height + get_height;
                    jQuery("#alert-box").animate({"height": get_height}, 500);
                    jQuery(element).show("slide", {direction: "up"}, 500);
                    jQuery("#alert-box").data("height", get_height);
                    jQuery(jQuery(element).find(".close")).one("click", function () {
                        jQuery.hide_alert_message(jQuery(element));
                    });

                    if (jQuery(element).hasClass("alert-success")) {

                        setTimeout(function () {
                          jQuery.hide_alert_message(jQuery(element));
                        }, 2500);
                    } else {
                        setTimeout(function () {
                            jQuery.hide_alert_message(jQuery(element));
                        }, 7000);
                    }
                }
            }, 800);

            //}, timer);
            // timer = timer + 1500;

        }
    });

    // }, 500);
};
jQuery.hide_alert_message = function hide_alert_message(element) {
    var ths_height = jQuery(element).data("height");
    var ths_whidth = jQuery(element).width();
    var box_height = jQuery("#alert-box").data("height");
    var new_height = box_height - ths_height;
    var new_height_adapt = new_height;


    jQuery(element).css({"z-index": 1}).animate({"marginTop": -ths_height, "opacity": 0, "opacity": 0}, 300).promise().done(function () {
        jQuery(element).remove();
    });
    jQuery("#alert-box").animate({"height": new_height_adapt}, 300).promise().done(function () {
        if (new_height == 25) {
            new_height = 0;

        }
        jQuery("#alert-box").data("height", new_height);

    });


}
jQuery.width_tms = function width_tms() {
    var home_width = jQuery(".tm-home").width();
    jQuery("#alert-box").css({"width": home_width});
    jQuery(".marlev-ulmenu").find("li").each(function () {
        var get_class = jQuery(this).attr("data");
        jQuery("." + get_class).css({"width": home_width}).data("width", home_width);
    });
};

// jQuery.create_tabs_script = function create_tabs_script(data) {
//     var ul = jQuery("#myTab-minifierTabs");
//     jQuery(data).find(".tab-pane").each(function () {
//         var params = jQuery(this).find(".params-block");
//         var type = params.data("type");
//         var active = params.data("active");
//         var id = jQuery(this).attr("id");
//         jQuery(ul).append(jQuery("<li class=\"" + active + "\"><a href=\"#" + id + "\" data-toggle=\"tab\">" + type + "<\/a><\/li>"));
//     });
// };

jQuery.bootstrap_button_after_ajax = function bootstrap_button_after_ajax(element) {
    var attr_for = jQuery(element).attr("for");

    if (!jQuery("#" + attr_for).is(":checked")) {
        jQuery(element).addClass("btn active btn-success working");
        jQuery("#" + attr_for).attr("checked", true);
        jQuery(element).parents(".btn-group").find("label").each(function () {
            if (!jQuery(this).hasClass("working")) {
                jQuery(this).removeClass("btn active btn-success").addClass("btn");
                var this_for = jQuery(this).attr("for");
                jQuery("#" + this_for).attr("checked", false);
            }
        });
        jQuery(element).removeClass("working");
    }

};
jQuery.marlev_show_buttons = function show_buttons(element) {
    if (jQuery(element).hasClass("btns-closed")) {
        jQuery(element).toggle("slide", {direction: "right"}, 300);
        jQuery(element).removeClass("btns-closed");

    }
};
jQuery.marlev_hide_buttons = function hide_buttons(element) {

    if (!jQuery(element).hasClass("btns-closed")) {
        jQuery(element).toggle("slide", {direction: "right"}, 150);
    }
    jQuery(element).addClass("btns-closed");
};

jQuery.button_save_fixed = function button_save_fixed() {

    function run() {
        var scroll_top = jQuery(window).scrollTop();

        if (scroll_top > 160) {
            jQuery.marlev_show_buttons("#ml-save-fixed");
        } else if (scroll_top < 140) {
            jQuery.marlev_hide_buttons("#ml-save-fixed");
        }
    }
    jQuery(window).scroll(function () {
        run();
    });
    run();

    //ml-save-fixed
};
jQuery.run_fixed_menu = function run_fixed_menu(){
    if(jQuery.ifmobile() == false) {
        var ws = jQuery(window).scrollTop();
        var active = jQuery(".marlev-ulmenu").find(".m-active").attr("data");
        var active_h = jQuery("." + active).outerHeight() + jQuery("." + active).offset().top;

        var header_h = jQuery(".header_mmenu").data("height");
        if (ws >= 111 && active_h > jQuery(window).height()) {
            jQuery(".header_mmenu").css({"height": header_h + 37});
            jQuery(".marlev_menu").css({"position": "fixed", "top": "0px", "height": 1200}).addClass("positioned");
        } else if (active_h <= jQuery(window).height()) {
            jQuery(".header_mmenu").css({"height": header_h});
            jQuery(".marlev_menu").removeAttr("style").css({
                "position": "relative",
                "width": jQuery(".marlev_menu").data("width"),
                "height": jQuery(window).height() - 80
            });
        } else if (ws <= 111 && jQuery(".marlev_menu").hasClass("positioned")) {
            jQuery(".header_mmenu").css({"height": header_h});
            jQuery(".marlev_menu").removeAttr("style").css({
                "position": "relative",
                "height": 1200,
                "width": jQuery(".marlev_menu").data("width")
            }).removeClass("positioned");
            // jQuery(".marlev_menu").removeClass("header_mmenu_fixed");

        }
    }
};

jQuery.fixed_menu = function fixed_menu() {
    if(jQuery.ifmobile() == true){
        var window_width = jQuery(window).width();
        var h = jQuery(window).height()-150;
        jQuery("#tms-container").css({"margin-left": 0, "width": "100%"});
        jQuery(".menu-container").css({"width": window_width,"top":"108px"});
        jQuery(".marlev_menu").css({"width": window_width});
        jQuery(".header_mmenu").css({"height": h, "width": window_width}).data("height", h).data("width", window_width);
        var ul_height = jQuery(".header_mmenu").find("ul").height() + 50
        if (ul_height > h) {
            jQuery(".header_mmenu").css({"overflow-y": "scroll"});
        }
    }
    else {
        //var h = jQuery(document).height();
        var wh = jQuery(window).height() - 97;
        var menu_width = jQuery(".marlev_menu").width();
        var tms = jQuery(window).width() - menu_width;
        jQuery("#tms-container").css({"width": tms - 50, "margin-left": menu_width});
        jQuery(".menu-container").css({"width": menu_width,"top":jQuery("#header").height()+jQuery("#ml-head").outerHeight() - 1});
        jQuery(".header_mmenu").css({"height": wh, "width": menu_width}).data("height", wh).data("width", menu_width);
        var ul_height = jQuery(".header_mmenu").find("ul").height() + 50
        if (ul_height > wh) {
            jQuery(".header_mmenu").css({"overflow-y": "scroll"});
        }
        jQuery(".marlev_menu").css({"width": jQuery(".header_mmenu").find(".marlev-ulmenu").width()}).data("width", jQuery(".header_mmenu").find(".marlev-ulmenu").width());

        // function run() {
        //     //var qa = 30 + jQuery("#ml-head").height();
        //
        // }
    }
    jQuery.run_fixed_menu();
    jQuery(window).scroll(function () {
        if (!jQuery(".menu-action").hasClass("closed")){
            jQuery.run_fixed_menu();
    }
    });


};
jQuery.rgb_colors = function rgb_colors() {
    setTimeout(function () {
        jQuery(".mlrgb-color").each(function () {
            jQuery(this).minicolors({theme: "bootstrap", opacity: true, control: 'hue', format: 'rgb'});
        });
    }, 1000);

};
jQuery.close_menu = function(){
    var h = jQuery(".menu-container").width();
    jQuery(".menu-action").addClass("closed worked");
    jQuery(".menu-container").animate({"margin-left":-h+10}).promise().done(function(){
        jQuery(this).hide();
        jQuery(".menu-action").removeClass("worked")
    });
    if(jQuery.ifmobile() == false) {
        jQuery("#tms-container").animate({"margin-left": 0, "width": "100%"});
    }
}
jQuery.menu_actions = function () {
    jQuery(".menu-action").click(function(){

        if(jQuery(this).hasClass("worked")){
            return true;
        }
        if(jQuery(this).hasClass("closed")){

            jQuery(this).addClass("worked");
            jQuery(".menu-container").show().animate({"margin-left":0}).promise().done(function(){
                jQuery(".menu-action").removeClass("worked closed")
            });
            if(jQuery.ifmobile() == false) {
                var menu_width = jQuery(".marlev_menu").width();
                var tms = jQuery(window).width() - menu_width;
                jQuery("#tms-container").animate({"width": tms - 50, "margin-left": menu_width});
            }
        }
        else {
            jQuery.close_menu();

        }
    });
}
jQuery.resize_tms_container = function(){
    var w = jQuery(window).width();
    var mw = jQuery(".menu-container").width();
    jQuery("#tms-container").css({"width":w-mw -50,"margin-left":mw});
}
jQuery.get_serialized = function(get_task) {
    if (get_task === "template.cancellpresets" || get_task === "template.loadpresets") {
        var s = jQuery("#presets-block").find('.load-table :input').serializeArray();
    } else {
        var editors_pages = ['#error-modules-config', '#offline-modules-config'];
        jQuery(editors_pages).each(function (key, value) {
            jQuery(value).find("iframe").each(function () {
                var lang = jQuery(this).parents(".modules-config").data("lang");
                if (value === '#error-modules-config') {
                    var ed = 'params_errortext_' + lang + '_';
                } else {
                    var ed = 'params_offlinetext_' + lang + '_';
                }
                var content = tinymce.get(ed).getContent();
                jQuery(this).parents(".modules-config").find("textarea").val(content);
            });
        });
        var s = jQuery("#adminForm").serializeArray();
    }
    var out = '';
    jQuery.each(s, function (i, a) {
        if (a.value !== '') {
            out = out + '{{-|-}}' + a.name + '=' + a.value + '';
        }
    });
    return out;
}
jQuery.submit_form = function submit_form() {

    function savepresets(data) {
        var responseval = jQuery(data).find('.load-table');
        jQuery(responseval).find("tr").each(function () {
            var thisid = jQuery(this).attr("id");
            if (!jQuery('#presets-block').find("#" + thisid).length) {

                jQuery("#presets-block").find(".load-table").prepend(jQuery(this)).promise().done(function () {
                    var element = jQuery('#presets-block').find("#" + thisid);
                    jQuery.run_fixed_menu();
                    jQuery(jQuery(element).find(".tm-preset-action")).on("click", function () {
                        jQuery.presetsChecked();
                    });
                    jQuery(element).addClass("pos-just-added");
                    setTimeout(function () {
                        jQuery(element).addClass("pos-just-added-remove-presets");
                    }, 700);
                    setTimeout(function () {
                        jQuery(element).removeClass("pos-just-added-remove-presets pos-just-added");
                    }, 1700);
                });

            }
        });
    }

    function loadpresets(data) {

        if (jQuery(data).find('.reload-page').length) {
            var url = jQuery(location).attr('href') + '&task=template.reloadpresets';
            window.location.replace(url);
        }

    }

    function cancellpresets(data) {
        var responseval = jQuery(data).find('.load-table');
        jQuery(jQuery('#presets-block .load-table')).find("tr").each(function () {
            var thisid = jQuery(this).attr("id");
            if (!jQuery(responseval).find("#" + thisid).length) {

                jQuery(this).hide("fade", 800).promise().done(function () {
                    jQuery(this).remove().promise().done(function () {
                        jQuery.run_fixed_menu();
                    });
                });
            }
        });
    }



    jQuery('.ml-submit').click(function (e) {
        e.preventDefault();
        if (jQuery(this).hasClass("disabled")) {
            return;
        }
        var stored_text = jQuery(this).data("lang");
        var thisbutton = jQuery(this);
        var button_width = jQuery(this).outerWidth();
        //serve per non inserire immagine quando si salva la configurazione dopo installazione del template
        if (!jQuery(this).hasClass("working")) {
            var uri = jQuery("#ml-uri").val() + "components/com_tmarlevv2/images/spinner.gif";
            var load_image = '<img  src="' + uri + '" />';
            jQuery(this).css({"width": button_width}).html(load_image);
        }
        var get_task = jQuery(this).data("task");
        if (get_task === "template.cancel") {
            var redirect = jQuery("#ml-uri").val() + "index.php?option=com_templates";
            window.location.replace(redirect);
        }
        var out = jQuery.get_serialized(get_task);
        var token = jQuery('#hidden-token').find("input").attr("name");

        jQuery.ajax({
            url: jQuery(location).attr('href') + '&' + token + '=1',
            dataType: "html",
            type: 'POST',
            cache: false,
            data: {task: get_task, postdata: out},
            success: function (data) {
                var alert_response = jQuery(data).find('#system-message-container').find("noscript").html();
                jQuery(alert_response).each(function () {
                    jQuery(this).hide();
                    jQuery(this).find(".close").removeAttr("data-dismiss");
                    jQuery(this).find(".alert-heading, .alert-message").removeAttr("class");
                    jQuery(this).appendTo("#alert-box").promise().done(function () {

                        jQuery.show_alert_message();
                    });

                });
                if (get_task === "template.apply" && !jQuery("#ml-save-fixed").hasClass("btns-closed")) {
                    jQuery(thisbutton).html("Saved");
                    setTimeout(function () {
                        jQuery(thisbutton).html(stored_text);
                    }, 1500);
                }
                else if (get_task === "template.clearcache" ) {
                    setTimeout(function () {
                        jQuery(thisbutton).html(stored_text);
                    }, 1500);
                }
                else {
                    jQuery(thisbutton).html(stored_text);
                }
                if (get_task === "template.savepresets") {
                    setTimeout(function () {
                        savepresets(data);
                    }, 300);
                }
                if (get_task === "template.cancellpresets") {
                    setTimeout(function () {
                        cancellpresets(data);
                    }, 300);

                }
                if (get_task === "template.loadpresets") {
                    setTimeout(function () {
                        loadpresets(alert_response);
                    }, 2500);

                }
                if (get_task === "template.apply") {
                    // var yrminifier = jQuery(data).find('.tm-prestazioni');
                    // //if menu is active or no
                    // if(jQuery(".yrminifier-config").hasClass("m-active")){
                    //     jQuery(yrminifier).addClass("m-active");
                    // }
                    // else {
                    //     jQuery(yrminifier).hide();
                    // }
                    // //end if active or no menu
                    // jQuery(".yrminifier-config").html(yrminifier);
                    // jQuery(".yrminifier-config").find(".yrminifier-config").unwrap();
                    //
                    // Joomla.initialiseTabs("#myTab-minifier", {
                    //     "active": "yrminifier-config",
                    //     "isJoomla": true
                    // });
                    // jQuery(".yrminifier-config").find("select").jchosen();
                    //
                    // jQuery(jQuery(".yrminifier-config").find(".radio").find("label")).on("click", function () {
                    //     jQuery.bootstrap_button_after_ajax(jQuery(this));
                    // });
                    // jQuery(".yrminifier-config").find(".radio").find("label").each(function () {
                    //     jQuery.bootstrap_button_after_ajax(jQuery(this));
                    // });

                }

                jQuery.openItemMenu();
            }


        });

    });
};
jQuery.install_newinstallation = function(){
    if (jQuery(".install-layout").length || jQuery("#ultimateinstall").val() == "1") {
            jQuery(".ml-apply").addClass("working").promise().done(function () {
                jQuery(".ml-apply").click();
                jQuery(".ml-apply").removeClass("working");
                jQuery("#ultimateinstall").val(0);
            });
}
}
jQuery(document).ready(function () {
    if(jQuery("#tm-layout").length > 0) {
        //jQuery.loading_wait();
    }
    else{
        jQuery.submit_form();
        jQuery.show_alert_message();
        jQuery.install_newinstallation();
    }
    jQuery.fixed_menu();

    jQuery(window).resize(function () {
        if(jQuery.ifmobile() == false) {
            jQuery.resize_tms_container();
        }
        jQuery.fixed_menu();
    });
    //jQuery.width_tms();

    jQuery(".tm-preset-action").on("click", function () {
        jQuery.presetsChecked(jQuery(this));
    });
    jQuery.button_save_fixed();
    jQuery.rgb_colors();
    jQuery.menu_actions();

});