package eu.dnetlib.client;

import com.github.gwtbootstrap.client.ui.Modal;
import com.github.gwtbootstrap.client.ui.constants.BackdropType;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Style;
import com.google.gwt.query.client.Function;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import eu.dnetlib.goldoa.domain.Help;

import static com.google.gwt.query.client.GQuery.$;

/**
 * Created by stefania on 4/17/15.
 */
public abstract class MyWidgetHelper {

    private static DataServiceAsync dataService = GWT.create(DataService.class);

    public static void loadHelp(final SidebarPanel sidebarPanel, final String helpId) {

        dataService.getHelpById(helpId, new AsyncCallback<Help>() {

            @Override
            public void onFailure(Throwable throwable) {

            }

            @Override
            public void onSuccess(Help help) {

                if(help!=null) {

                    HTML html = new HTML();
                    html.setHTML(help.getText());

                    sidebarPanel.clearContent();
                    sidebarPanel.addContent(html);

                    MyWidgetHelper.showSidebar();
                    RootPanel.get("sidebar").add(sidebarPanel.asWidget());

                    $(".contactUs").click(new Function() {

                        public boolean f(Event e) {

                            final Modal contactUsModal = new Modal();

                            contactUsModal.addStyleName("contactModal");
                            contactUsModal.setTitle("Contact Us");
                            contactUsModal.setAnimation(true);
                            contactUsModal.setBackdrop(BackdropType.STATIC);
                            contactUsModal.setDynamicSafe(true);

                            ContactForm contactForm = new ContactForm();
                            ContactForm.ContactSubmittedListener contactSubmittedListener = new ContactForm.ContactSubmittedListener() {
                                @Override
                                public void contactSubmitted() {
                                    contactUsModal.hide();
                                }
                            };
                            contactForm.setContactSubmittedListener(contactSubmittedListener);

                            contactUsModal.add(contactForm.asWidget());

                            contactUsModal.show();

                            return true;
                        }
                    });
                }
            }
        });
    }

    public static void showSidebar() {

        Document.get().getElementById("content").removeClassName("uk-width-medium-1-1");
        Document.get().getElementById("content").addClassName("uk-width-medium-3-4");
        Document.get().getElementById("sidebar").getStyle().setDisplay(Style.Display.BLOCK);
    }

    public static void hideSidebar() {

        Document.get().getElementById("content").removeClassName("uk-width-medium-3-4");
        Document.get().getElementById("content").addClassName("uk-width-medium-1-1");
        Document.get().getElementById("sidebar").getStyle().setDisplay(Style.Display.NONE);
    }
}
