/*
 * Copyright 2018-2018 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * WebSite: http://bootstrap-viewer.leftso.com
 */
$.fn.bootstrapViewer = function (options) {
    $(this).on('click', function () {
        var opts = $.extend({}, $.fn.bootstrapViewer.defaults, options);
        var viewer = $('<div class="modal fade bs-example-modal-lg text-center" id="bootstrapViewer" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" >\n' +
            '          <div class="modal-dialog modal-lg" style="display: inline-block; width: auto;">\n' +
            '            <div class="modal-content">\n' +
            '             <img' +
            '\t\t\t class="carousel-inner img-responsive img-rounded img-viewer" draggable="false"\n' +
            '\t\t\t onclick="/*$(\'#bootstrapViewer\').modal(\'hide\');setTimeout(function(){$(\'#bootstrapViewer\').remove();},200);*/"\n' +
            '\t\t\t onmouseover="this.style.cursor=\'move\';" \n' +
            '\t\t\t onmouseout="this.style.cursor=\'default\'"  \n' +
            '\t\t\t />\n' +
            '            </div>\n' +
            '          </div>\n' +
            '        </div>');
        $('body').append(viewer);
        if ($(this).attr(opts.src)) {
            $("#bootstrapViewer").find(".img-viewer").attr("src", $(this).attr(opts.src));
            $("#bootstrapViewer").modal();
        } else {
            throw "图片不存在"
        }
        $('#bootstrapViewer').on('hidden.bs.modal', function(){
          $('#bootstrapViewer').remove();
        });

        var $moveDiv = $('#bootstrapViewer .modal-dialog');
        var isMove = false;
        var div_x = $moveDiv.offset().left;
        var div_y = $moveDiv.offset().top;

        var mousedownFunc = function (e) {
          if (isMove) {
            var left = e.pageX - div_x;
            var top = e.pageY - div_y;
            if(left < 0){ left = 0}
            if(top < 0){ top = 0}
            $moveDiv.css({"left": left, "top":top});
          }
        }

        $moveDiv.mousedown(function (e) {
          $moveDiv.css({ left: $moveDiv[0].offsetLeft, top: $moveDiv[0].offsetTop, marginTop: 0, position: 'absolute' });

          isMove = true;
          div_x = e.pageX - $moveDiv.offset().left;
          div_y = e.pageY - $moveDiv.offset().top;
          $(document).mousemove(mousedownFunc);
        }).mouseup(function () {
          isMove = false;
          $(document).unbind('mousemove', mousedownFunc);
        });
    })

    $(this).on('mouseover', function () {
        $(this).css('cursor', 'zoom-in');
    })
}
$.fn.bootstrapViewer.defaults = {
    src: 'src'
}