(function($, undefined) {
    $.widget('incore.dictionary', {
        version: '0.0.1',
        options: {
            //jsonPath: 'http://do.incore.lt/dictionary/index.php',
            jsonPath: 'http://193.219.137.9/smp_dorinis2/dictionary/index.php',
            dataAttribute: 'data-id'
        },
        _create: function() {
            $('a[' + this.options.dataAttribute + ']').tooltip().tooltip('close').tooltip('destroy'); //clear tooltip 
            this._createPopups();
        },
        _createPopups: function() {
            var widget = this;
            var linksIds = [];
            var links = this.element.find('a[' + widget.options.dataAttribute + ']');

            $.each(links, function(i, link) {
                var dataId = $(link).attr(widget.options.dataAttribute);
                linksIds.push(dataId);
            });

            if (linksIds.length > 0) {
                $.getJSON(widget.options.jsonPath, {id: linksIds}, function(info) {
                    $.each(info.data, function(key, val) {
                        if (val.active === '1') {
                            var ln = $('a[data-id="' + val.entry_id + '"]');

                            ln.addClass("popup_link");

                            ln.bind("click", function(e) {
                                e.preventDefault();

                            });

                            ln.attr("title", val.answer);

                            ln.tooltip({
                                show: 300,
                                content: function() {
                                    var currSlider = $("<div id='slider' class='scroll-slider' />");
                                    var currWrap = $("<div class='slider_wrapper' />");
                                    var holder = $("<div>").text(val.question).addClass("popupHeader").clone().wrap('<div>').parent().html();

                                    currWrap.append(holder);


                                    if ($.isTouchCapable()) { //add close button if mobile
                                        currWrap.append("<div class='cl_bt'><img src='./img/shape_close.png' /></div>");
                                        
                                        currWrap.find(".cl_bt").bind("click", function() {                                                                             
                                            ln.tooltip("close");
                                        });                                        
                                    }

                                    currWrap.append("<div style='clear:both;width:300px'></div>");                                    
                                    
                                    var currSlideCont = $("<div class='slider_container' />");

                                    var scrollCont = $("<div class='scroll-content' />");

                                    currWrap.append(currSlideCont);

                                    currSlideCont.append(scrollCont);

                                    currWrap.append(currSlider);

                                    //var element = $( this );
                                    // var s = element.attr('title');

                                    //var holder = $("<div>").text(val.question).addClass("popupHeader").clone().wrap('<div>').parent().html();


                                    //holder = $(holder);

                                    //scrollCont.append(holder);                           

                                    scrollCont.append("<div class='pop_cont'>" + $(this).prop('title') + "</div>");
                                    //scrollCont.append("<div class='pop_cont'><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo,</p><p>Ahimsa (sanskrito k.), nekenkimas gyvoms Ahimsa (sanskrito k.), nekenkimas gyvoms būtybėms – budizmo, džainizmo ir hinduizmo123</p></div>");

                                    var scrollPane = currWrap.find(".slider_container");
                                    var scrollContent = currWrap.find(".scroll-content");

                                    //currCont.append("<div style='float:left' class='scroll-slider'></div>");                                  

                                   // $("body").append(scrollContent.clone());
                                   //alert(scrollPane.height());

                                    currWrap.find('#slider').slider({
                                        orientation: "vertical",                                       
                                        min: 0,
                                        max: 100,
                                        value: 100,
                                        slide: function(event, ui) {
                                            //console.log("value:", ui.value);
                                            //console.log("scrollPaneHeight:", scrollPane.height());
                                            //alert("scrollContent.height():"+scrollContent.height()+"/scrollPane.height():"+scrollPane.height());                                 
                                            
                                           //console.log("height:",scrollPane.height());
                                            
                                            if (scrollContent.height() > scrollPane.height()) {    
                                                var formula = (Math.round(((100 - ui.value) / 100) * (scrollPane.height() - scrollContent.height()))) + "px";
                                                //console.log("formula",formula);
                                                //scrollContent.css("margin-top", (-1 * (scrollPane.height() - ((scrollPane.height() * ui.value) / 100))) + "px");
                                                scrollContent.css( "margin-top", formula );      
                                            
                                            } else {
                                                scrollContent.css("margin-top", 0);
                                            }
                                        }
                                    });

                                    //var d = "<div align=right'><a href='javascript:$(\"a[data-id=" + val.entry_id + "]\").tooltip(\"close\");' class='ipadTooltipHack'>close</a></div>";
                                    return currWrap;
                                },
                                position: {
                                    my: "center bottom-10",
                                    at: "center top",
                                    using: function(position, feedback) {
                                        $(this).css(position);
                                        $("<div>").addClass("arrow")
                                                .addClass(feedback.vertical)
                                                .addClass(feedback.horizontal)
                                                .appendTo(this);
                                    }
                                },
                                close: function(event, ui)
                                {
                                    //ui.tooltip.preventDefault();
                                    // event.stopImmediatePropagation();
                                    //$(this).stop(true);

                                    if (!$.isTouchCapable()) { // if not mobile
                                        ui.tooltip.hover(function()
                                        {
                                            $(this).stop(true).fadeTo(300, 1);
                                        },
                                                function()
                                                {
                                                    $(this).fadeOut('300', function()
                                                    {
                                                        $(this).remove();
                                                    });
                                                });
                                    }
                                }
                                , open: function(event, ui) {

                                    // alert(section+ slide);

                                    if ($.isTouchCapable()) { // if mobile close all
                                        var sec = "#" + section + slide;
                                        $(sec + " .popup_link").each(function() {
                                            if ($(this).data("id") != ln.data("id")) {
                                                $(this).tooltip("close");
                                            }
                                        });
                                    }

                                    var scrollPane = ui.tooltip.find(".slider_container");
                                    var scrollContent = ui.tooltip.find(".scroll-content");
                                    var currSlider = ui.tooltip.find("#slider");

                                    //alert("scrollContent.height():"+scrollContent.height()+"/scrollPane.height():"+scrollPane.height());
                                    if (scrollContent.height() > scrollPane.height()) {
                                        currSlider.css("display", "block");
                                        scrollPane.css({height: "300px"});
                                    }else{
                                        //scrollContent.css("width","auto");
                                        //ln.tooltip( "option", "content", "Awesome title!" );//tooltip( "option", "position", { my: 500,at: 500 } );
                                        
                                    }

                                    //alert("scrollContent.height():"+scrollContent.height()+"/scrollPane.height():"+scrollPane.height());

                                    //ui.tooltip.find(".scroll-slider");



                                    //console.log("too:", ui.tooltip.find(".scroll-slider"));
                                    //alert("ss");

                                }



                            });

                            if ($.isTouchCapable()) { //dont close popup if mobile
                                ln.bind("mouseout", function(event) {
                                    event.stopImmediatePropagation();
                                });
                            }

                            /*  ln.on("mouseleave", function(e) {
                             e.stopImmediatePropagation();
                             ln.tooltip( "close" );
                             //setTimeout(function(){
                             //   ln.tooltip( "close" );
                             // }, 5000);
                             });
                             
                             
                             
                             $('body').on('mouseenter', '.ui-tooltip',
                             function(e)
                             {
                             ln.tooltip('open');
                             });*/
                        }
                    });

                });
            }
        },
        _setOptions: function(options) {
            this._superApply(arguments);
        },
        _setOption: function(key, val) {
            this._super(key, val);
        }
    });
}(jQuery));