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 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()
    {  // Подключение потока - другая версия
      /*
      if(navigator.getUserMedia)  navigator.getUserMedia(videoObj,function(stream) { videoStream = stream ;
                // получаем url поточного видео
                videoStreamUrl = window.URL.createObjectURL(stream);
                // устанавливаем как источник для video
                video.src = videoStreamUrl;
                //video.src = stream; video.play();
              },
              errBack);
       */


      // Подключение потока
      if(navigator.getUserMedia)            navigator.getUserMedia(videoObj, function(stream) { videoStream = stream ; video.src = stream; video.play(); }, errBack);
      else if(navigator.webkitGetUserMedia) navigator.webkitGetUserMedia(videoObj, function(stream) { videoStream = stream ;  video.src = window.webkitURL.createObjectURL(stream); video.play(); }, errBack); // WebKit-prefixed
      // для мобильных устройсв - mozilla на android
      else if (navigator.mediaDevices = navigator.mediaDevices || ((navigator.mozGetUserMedia || navigator.webkitGetUserMedia) ? { getUserMedia: function(c) { return new Promise(function(y, n) { (navigator.mozGetUserMedia || navigator.webkitGetUserMedia).call(navigator, c, y, n);});} } : null))
      {  var constraints = { audio: false, video:true }; //var constraints = { audio: false, video: { width: 1280, height: 720 } };
         navigator.mediaDevices.getUserMedia(constraints).then(function(stream)
          { video.src = window.URL.createObjectURL(stream);
            video.onloadedmetadata = function(e) { video.play(); };
          }).catch(function(err) {console.log(err.name + ": " + err.message);});
      }
      else { alert('getUserMedia() is not supported in your browser'); return ; }
      $j('div#capture_area').removeClass('hidden') ;
      return(false) ;
    }

  } ;