var videoStream = null;
function stop_video_capture() {if (videoStream!=null) videoStream.stop(); }

$j.fn.webcamera_capture = function(options)
  { var settings = $j.extend(
      { // 'bookmark_tag' : '.btitle'//,
        'zerkalo' :false,
        'snap_title' : 'Идет обработка изображения',
        'dir_sounds' : ''
      }, options);

    var canvas = $j("#canvas")[0] ;
    var context = canvas.getContext("2d") ;
    var video = $j("#video")[0] ;
    var videoObj = { "video": true } ;
    var errBack = function(error) {console.log("Ошибка видео захвата: ", error.code); 	};
    var photo_num=1 ;
    var jcrop_api  ;
    var mySound_responses = new buzz.sound(settings.dir_sounds+"sounds-958-thin.mp3");

    start_camera() ;

    // Получение и отправка изображения
    $j('#snap').click(function()
    { if (!video.src) { alert('То-ли вы не нажали "разрешить" в верху окна, то-ли что-то не так с вашим видео стримом') ; return ; }
      // переворачиваем canvas зеркально по горизонтали (см. описание внизу статьи)
      if (settings['zerkalo'])
      { context.translate(canvas.width, 0);
        context.scale(-1, 1);
      }
      // отрисовываем на канвасе текущий кадр видео
      context.drawImage(video, 0, 0, 640, 480);
      // получаем data: url изображения c canvas
      var base64dataUrl = canvas.toDataURL('image/jpeg');
      // убираем все кастомные трансформации canvas
      context.setTransform(1, 0, 0, 1, 0, 0);
      // уведомление о обоработке изображения
      new jBox('Notice', {content: settings.snap_title,color:'green'});
      mySound_responses.play();
      // отправляем на сервер
      $j.ajax({url:'/ajax.php',type:'POST',dataType:'xml',success:exec_ajax_cmd_success_JQ,data:{check_id:$j(this).attr('check_id'),
          cmd:'rmt/fixed_photo_capture',
          save_cmd:$j(this).attr('save_cmd'),
          to_id:$j(this).attr('to_id'),
          param_id:$j(this).attr('param_id'),
          photo_num:photo_num,
          img:base64dataUrl

        }
      });
      photo_num++ ;
      video.pause(); // Пауза
      //videoStream.stop(); // Стоп - устарело, надо использоать jquery.webcamera_capture.js
      //videoStream.active=false ;
    }) ;

    $j('button#repeat').click(start_camera) ;

    function start_camera()
    {

      var constraints = { audio: false, video:true }; 
      navigator.mediaDevices.getUserMedia(constraints).then(function(stream)
            { 
              // video.src = window.URL.createObjectURL(stream);
              // video.onloadedmetadata = function(e) { video.play(); };
              var videoTracks = stream.getVideoTracks();
              console.log('Got stream with constraints:', constraints);
              console.log('Using video device: ' + videoTracks[0].label);
              stream.onended = function() {
                console.log('Stream ended');
              };
              window.stream = stream; // make variable available to browser console
              video.srcObject = stream;
              video.src = stream;
            }
          )
          .catch(function(err) {console.log(err.name + ": " + err.message);});

      $j('div#capture_area').removeClass('hidden') ;
      $j('div#preview_area').addClass('hidden') ;
      $j('img#capture_img').attr('src','') ;
      if (jcrop_api!=null) jcrop_api.destroy() ;
      return(false) ;
    }
  } ;