• header0
  • header1
  • header2
  • header3
  • header4
  • header5
  • header6
  • header7
  • header8

CNC ماسک پزشکی چوب  فلزی  منبت  سنگ  واترجت آموزشی روباتیک

  • CNC سه محور، CNC چهارمحور 10 کله، CNC پنچ محور 21 کله
  • CNC سیبک جمع کن (مونتاژ سیبک) اتوماتیک
  • CNC گوی زن سازه های فضاکار
  • CNC فوم مدل های ریخته گری
  • CNC ماشین مخصوص قطعات خودرو
  • CNC برش و حکاکی و منبت کاری چوب
  • CNC واترجت و CNC منبت سنگ
  • CNC برش هواگاز، پلاسما و لیزر
  • CNC مخصوص مونتاژ سیبک اتوموبیل
  • CNC مخصوص ساخت اتوماتیک ماسک های پزشکی
  • CNC سه محور آموزشی و تجهیزات آموزش های کاربری
  • تجهیز و بروزرسانی آزمایشگاه‌های دانشکده مکانیک ساخت و تولید دانشگاه تبریز
علامت CE اروپا  تمام ماشین آلات CNC شرکت ضمن دارا بودن علامت CE اروپا، دارای کیفیت لازم برای صادرات به کشورهای اروپایی و کشورهای خارجی میباشد که در چند کشور همجوار هم راه اندازی شده و در حال کار میباشند.
- CNC سه محور - CNC چهارمحور 10 کله - CNC پنچ محور 21 کله
- ماشین CNC گوی زن سازه های فضایی - ماشین CNC مخصوص قطعات خودرو - ماشین های ترانسفر
ماشین های مخصوص تولید قطعات خودروئی - طبق پراید - طبق پژو 206 - سیبک فرمان - قطعات جلوبندی
CNC واترجت
ماشین های واتر جت - برش انواع سنگ - برش انواع فلزات - منبت انواع سنگ

شرکت کنترل ماشین سرو (دانش بنیان) مجموعه ای متشکل از متخصصین و مدرسین دانشگاهی می باشد که در زمینه الکترونیک، اتوماسیون صنعتی، تاسیسات برق صنعتی، و ماشین الات CNC در کارگروه های ویژه هر بخش در جهت تجاری سازی پژوهش و تحقیقات علمی و صنعتی فعالیت می کند. کنترل ماشین سَرو توسط کارگروه ارزیابی و تشخیص صلاحیت شرکتهای دانش بنیان معاونت علمی و فن آوری ریاست جمهوری به عنوان شرکت دانش بنیان مورد تایید قرار گرفته و ثبت گردیده است. این موفقیت بزرگ به لطف الهی مرهون فعالیتهای نوآورانه علمی و صنعتی تاثیر گذار مهندسین فرهیخته و مجرب شرکت می باشد.

تولید گوی و المان های سازه های فضاکار

تولید گوی و المان های سازه های فضاکار

برش قطعات سنگ و فلز به شکل های مختلف

برش قطعات سنگ و فلز به شکل های مختلف

CNC برش سنگ (واترجت)

CNC برش سنگ (واترجت)

CNC منبت چوب

CNC منبت چوب

سیبک جمع کن نیمه اتوماتیک

دستگاه سیبک جمع کن نیمه اتوماتیک


تغذیه اتوماتیک بال پین
تغذیه اتوماتیک کفشک
تغذیه اتوماتیک پولکی
گریسکار

تست و راه اندازی کامل ماژول MAX30100
.vjs-skin-colors-blue {
  color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-control-bar, .vjs-skin-colors-blue .vjs-big-play-button, .vjs-skin-colors-blue .vjs-menu-content {
  background-color: #000000;
  background-color: rgba(0, 0, 0, 0.7);
}
.vjs-skin-colors-blue .vjs-load-progress {
  background-color: #66A8CC;
  background-color: rgba(102, 168, 204, 0.5);
}
.vjs-skin-colors-blue .vjs-play-progress {
  background-color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-slider {
  background-color: #66A8CC;
  background-color: rgba(102, 168, 204, 0.4);
}
.vjs-skin-colors-blue .vjs-volume-level {
  background-color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-big-play-button,
.vjs-skin-colors-blue .vjs-big-play-button:focus, .vjs-skin-colors-blue:hover .vjs-big-play-button {
  border-color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-menu-button ul li.vjs-selected {
  background-color: #000000;
}
.vjs-skin-colors-blue .vjs-menu-button ul li:focus,
.vjs-skin-colors-blue .vjs-menu-button ul li:hover,
.vjs-skin-colors-blue .vjs-menu-button ul li.vjs-selected:focus,
.vjs-skin-colors-blue .vjs-menu-button ul li.vjs-selected:hover {
  color: #000000;
  background-color: #66A8CC;
  background-color: rgba(102, 168, 204, 0.75);
}
.vjs-skin-colors-blue {
  color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-control-bar, .vjs-skin-colors-blue .vjs-big-play-button, .vjs-skin-colors-blue .vjs-menu-content {
  background-color: #000000;
  background-color: rgba(0, 0, 0, 0.7);
}
.vjs-skin-colors-blue .vjs-load-progress {
  background-color: #66A8CC;
  background-color: rgba(102, 168, 204, 0.5);
}
.vjs-skin-colors-blue .vjs-play-progress {
  background-color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-slider {
  background-color: #66A8CC;
  background-color: rgba(102, 168, 204, 0.4);
}
.vjs-skin-colors-blue .vjs-volume-level {
  background-color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-big-play-button,
.vjs-skin-colors-blue .vjs-big-play-button:focus, .vjs-skin-colors-blue:hover .vjs-big-play-button {
  border-color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-menu-button ul li.vjs-selected {
  background-color: #000000;
}
.vjs-skin-colors-blue .vjs-menu-button ul li:focus,
.vjs-skin-colors-blue .vjs-menu-button ul li:hover,
.vjs-skin-colors-blue .vjs-menu-button ul li.vjs-selected:focus,
.vjs-skin-colors-blue .vjs-menu-button ul li.vjs-selected:hover {
  color: #000000;
  background-color: #66A8CC;
  background-color: rgba(102, 168, 204, 0.75);
}




<?php
 /**
 * @package HTML5 Media Player module for Joomla! 3.X
 * @version $Id: default.php 2015-19-12 11:00:00Z  $
 * @author Glimlag.gr
 * @copyright (C) 2015- Glimlag.gr
 * @license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html
**/

defined( '_JEXEC' ) or die( 'Restricted access' );


$mediatype = $params->get('media');
$id	= $GLOBALS['mod_nvisionplayer'];
$defaultVolume = $params->get('defaultVolume');

echo $video;
?>


<script type="text/javascript">
var mediatype = '<?php echo $mediatype; ?>';
if (mediatype == 1) {
      AudioJS.setup();
}
else {
	videojs("mod_nvisionplayer"+'<?php echo $id; ?>').ready(function(){
var vol = '<?php echo $defaultVolume; ?>';
this.volume(vol);
});
}
</script>


; Copyright (C) 2015 Glimlag.gr
; license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html

COM_MODULES_BASIC_SETTINGS_FIELDSET_LABEL = "Basic player settings"
COM_MODULES_VIDEO_SETTINGS_FIELDSET_LABEL = "Video settings"
COM_MODULES_VIDEO_SOURCE_FIELDSET_FIELDSET_LABEL = "Video source"
COM_MODULES_AUDIO_SOURCE_FIELDSET_FIELDSET_LABEL = "Audio source"
COM_MODULES_WATERMARK_FIELDSET_FIELDSET_LABEL = "Watermark"
COM_MODULES_RIGHTCLICK_FIELDSET_FIELDSET_LABEL = "Right Click options"
MEDIA_CHOOSE = "Choose media"
MEDIA_PLAYLIST = "Playlist"

VIDEO_VIDEO_MP4="Video [mp4]"
VIDEO_VIDEO_WEBM="Video [webm]"
VIDEO_VIDEO_OGG="Video [ogg]"
VIDEO_FLASH="Flash Fallback [mp4]"
VIDEO_IMAGE="Image"
VIDEO_IMAGE_VISIBILITY="Image visible"
VIDEO_HOST = "Host"
VIDEO_PLAYLIST = "Playlist"
VIDEO_SOURCE = "Video source"
AUDIO_SOURCE = "Audio source"

TOOLTIP_MEDIACHOOSE = "Choose what you want to play (video or audio)"
TOOLTIP_VIDEOHOST = "Choose where the video is hosted"
TOOLTIP_VIDEOPLAYLIST = "Are you going to add a playlist or a single video?"
TOOLTIP_VIDEOSOURCE = "Add the URL. If you want to add playlist seperate the URL's with a comma"
TOOLTIP_MEDIAPLAYLIST = "Are you going to add a playlist or a single video - audio?"
TOOLTIP_VIDEO_MP4="Path to the video [mp4]. Type in 0 for no Video."
TOOLTIP_VIDEO_WEBM="Path to the video [webm]. Type in 0 for no Video."
TOOLTIP_VIDEO_OGG="Path to the video [ogg]. Type in 0 for no Video."
TOOLTIP_FLASH="If video cannot display in HTML5, here you can set a default fallback video for flash. Type in 0 for no flash video."
TOOLTIP_IMAGE="Poster image. Types: gif, jpg, png."
TOOLTIP_IMAGE_VISIBILITY="Hide/display the poster image."

VIDEO_WIDTH="Width"
VIDEO_HEIGHT="Height"
VIDEO_SKIN="Skin"
AUDIO_SKIN="Skin"
VIDEO_AUTOPLAY="Autoplay"
VIDEO_PRELOAD="Preload"
VIDEO_LOOP="Loop"
VIDEO_DEFAULT_VOLUME="Default Volume"
VIDEO_PLAYER_FALLBACK_ORDER="Player Fallback Order"
VIDEO_WMODE="WMode"
VIDEO_FLASH_PLAYER_VERSION="Flash Player Version"
VIDEO_STARTUP_IMAGE="Startup image/poster"
VIDEO_ENABLE_CAPTIONS="Enable captions"
VIDEO_CAPTIONS="Captions"
VIDEO_ENABLE_SUBTITLES="Enable subtitles"
VIDEO_SUBTITLES="Subtitles"
VIDEO_WATERMARK_IMAGE="Watermark image"
VIDEO_WATERMARK_POSITION="Watermark position"
VIDEO_WATERMARK_CLICKABLE="Clickable"
VIDEO_WATERMARK_URL="Url"
VIDEO_WATERMARK_OPACITY="Opacity"
VIDEO_RIGHTCLICK_DISABLE="Disable right click"
VIDEO_RIGHTCLICK_ENABLE="Enable custom right click"
VIDEO_RIGHTCLICK_MENUSPEED="Menu speed"
VIDEO_RIGHTCLICK_MENU="Custom menu"
VIDEO_MENU_ID="Menu ID"

TOOLTIP_WIDTH="Width."
TOOLTIP_HEIGHT="Height."
TOOLTIP_SKIN="Choose skin."
TOOLTIP_AUTOPLAY="Autoplay the video."
TOOLTIP_PRELOAD="Preload the video."
TOOLTIP_LOOP="Loops the video. Actually it works only in HTML."
TOOLTIP_CONTROLS_BELOW="Display control bar below video instead in front of."
TOOLTIP_CONTROLS_AT_START="Make controls visible when page loads."
TOOLTIP_CONTROLS_HIDING="Hide controls when mouse is not over the video."
TOOLTIP_DEFAULT_VOLUME="Will be overridden by local volume if available."
TOOLTIP_PLAYER_FALLBACK_ORDER="Players and order to use them."
TOOLTIP_WMODE="Here you can choose the wmode for flash player (e.g. opaque, to place elements above flash)."
TOOLTIP_FLASH_PLAYER_VERSION="Required flash version for fallback."
TOOLTIP_STARTUP_IMAGE="Choose an image that will display before the video starts"
TOOLTIP_ENABLE_CAPTIONS="Enable the captions button in the player"
TOOLTIP_CAPTIONS="Select the captions.The name of the files must be language.videoid.vtt e.g. english.video1.vtt. You shall upload them on folder /modules/mod_nvisionplayer/data"
TOOLTIP_ENABLE_SUBTITLES="Enable the subtitles button in the player"
TOOLTIP_SUBTITLES="Select the subtitles.The name of the files must be language.videoid.vtt e.g. english.video1.vtt. You shall upload them on folder /modules/mod_nvisionplayer/data"
TOOLTIP_AUDIOSOURCE="Add the url of the audio file"
TOOLTIP_WATERMARK_IMAGE="Select an image that will be added as watermark"
TOOLTIP_WATERMARK_POSITION="Select the position where the watermark will be displayed over the video"
TOOLTIP_WATERMARK_CLICKABLE="Whether the watermark image will be clickable or not"
TOOLTIP_WATERMARK_URL="Where do you want to send the user after clicking the watermark"
TOOLTIP_WATERMARK_OPACITY="It must be something between 0 and 1"
TOOLTIP_RIGHTCLICK_DISABLE="Just disable right click in the video"
TOOLTIP_RIGHTCLICK_ENABLE="Enable right click and define what will be displayed"
TOOLTIP_RIGHTCLICK_MENUSPEED="Menu popup speed in ms"
TOOLTIP_RIGHTCLICK_MENU="HTML5 menu.This is what will show on right click. For info check in our manual on www.glimlag.gr"
TOOLTIP_MENU_ID="It must be unique e.g. video1"

/*
This file is part of AudioJS. Copyright 2010 Zencoder, Inc.

Modified for html5 audio tag by dz0ny

AudioJS is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

AudioJS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with AudioJS.  If not, see <http://www.gnu.org/licenses/>.
*/

// Store a list of players on the page for reference
var audioJSPlayers = new Array();

// Using jresig's Class implementation http://ejohn.org/blog/simple-javascript-inheritance/
(function(){var initializing=false, fnTest=/xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/; this.Class = function(){}; Class.extend = function(prop) { var _super = this.prototype; initializing = true; var prototype = new this(); initializing = false; for (var name in prop) { prototype[name] = typeof prop[name] == "function" && typeof _super[name] == "function" && fnTest.test(prop[name]) ? (function(name, fn){ return function() { var tmp = this._super; this._super = _super[name]; var ret = fn.apply(this, arguments); this._super = tmp; return ret; }; })(name, prop[name]) : prop[name]; } function Class() { if ( !initializing && this.init ) this.init.apply(this, arguments); } Class.prototype = prototype; Class.constructor = Class; Class.extend = arguments.callee; return Class;};})();

// Audio JS Player Class
var AudioJS = Class.extend({

  // Initialize the player for the supplied audio tag element
  // element: audio tag
  // num: the current player's position in the audioJSPlayers array
  init: function(element, setOptions){

    this.audio = element;

    // Default Options
    this.options = {
      num: 0, // Optional tracking of audioJSPLayers position
      defaultVolume: 0.85, // Will be overridden by localStorage volume if available
      linksHiding: true
    };
    
    // Override default options with set options
    if (typeof setOptions == "object") _V_.merge(this.options, setOptions);

    this.box = this.audio.parentNode;
    this.percentLoaded = 0;

    if (this.options.controlsBelow) {
      _V_.addClass(this.box, "vjs-controls-below");
    }


    // Hide default controls
    this.audio.controls = false;

    this.buildController();
    this.showController();

    // Position & show controls when data is loaded
    this.audio.addEventListener("loadeddata", this.onLoadedData.context(this), false);

    // Listen for when the audio is played
    this.audio.addEventListener("play", this.onPlay.context(this), false);
    // Listen for when the audio is paused
    this.audio.addEventListener("pause", this.onPause.context(this), false);
    // Listen for when the audio ends
    this.audio.addEventListener("ended", this.onEnded.context(this), false);
    // Listen for a volume change
    this.audio.addEventListener('volumechange',this.onVolumeChange.context(this),false);
    // Listen for audio errors
    this.audio.addEventListener('error',this.onError.context(this),false);
    // Listen for Audio Load Progress (currently does not if html file is local)
    this.audio.addEventListener('progress', this.onProgress.context(this), false);
    // Set interval for load progress using buffer watching method
    this.watchBuffer = setInterval(this.updateBufferedTotal.context(this), 33);

    // Listen for clicks on the play/pause button
    this.playControl.addEventListener("click", this.onPlayControlClick.context(this), false);
    // Make a click on the audio act like a click on the play button.
    this.audio.addEventListener("click", this.onPlayControlClick.context(this), false);
    // Make a click on the poster act like a click on the play button.
    if (this.poster) this.poster.addEventListener("click", this.onPlayControlClick.context(this), false);

    // Listen for drags on the progress bar
    this.progressHolder.addEventListener("mousedown", this.onProgressHolderMouseDown.context(this), false);
    // Listen for a release on the progress bar
    this.progressHolder.addEventListener("mouseup", this.onProgressHolderMouseUp.context(this), false);

    // Set to stored volume OR 85%
    this.setVolume(localStorage.volume || this.options.defaultVolume);
    // Listen for a drag on the volume control
    this.volumeControl.addEventListener("mousedown", this.onVolumeControlMouseDown.context(this), false);
    // Listen for a release on the volume control
    this.volumeControl.addEventListener("mouseup", this.onVolumeControlMouseUp.context(this), false);
    // Set the display to the initial volume
    this.updateVolumeDisplay();

    this.onWindowResize = function(event){
      this.positionController();
    }.context(this);

    // Support older browsers that used autobuffer
    this.fixPreloading()
  },
  
  // Support older browsers that used "autobuffer"
  fixPreloading: function(){
    if (typeof this.audio.hasAttribute == "function" && this.audio.hasAttribute("preload")) {
      this.audio.autobuffer = true;
    }
  },

  buildController: function(){

    /* Creating this HTML
      <ul class="vjs-controls">
        <li class="vjs-play-control vjs-play">
          <span></span>
        </li>
        <li class="vjs-progress-control">
          <ul class="vjs-progress-holder">
            <li class="vjs-load-progress"></li>
            <li class="vjs-play-progress"></li>
          </ul>
        </li>
        <li class="vjs-time-control">
          <span class="vjs-current-time-display">00:00</span><span> / </span><span class="vjs-duration-display">00:00</span>
        </li>
        <li class="vjs-volume-control">
          <ul>
            <li></li><li></li><li></li><li></li><li></li><li></li>
          </ul>
        </li>
      </ul>
    */

    // Create a list element to hold the different controls
    this.controls = _V_.createElement("ul", { className: "vjs-controls" });
    // Add the controls to the audio's container
    this.audio.parentNode.appendChild(this.controls);

    // Build the play control
    this.playControl = _V_.createElement("li", { className: "vjs-play-control vjs-play", innerHTML: "<span></span>" });
    this.controls.appendChild(this.playControl);

    // Build the progress control
    this.progressControl = _V_.createElement("li", { className: "vjs-progress-control" });
    this.controls.appendChild(this.progressControl);

    // Create a holder for the progress bars
    this.progressHolder = _V_.createElement("ul", { className: "vjs-progress-holder" });
    this.progressControl.appendChild(this.progressHolder);

    // Create the loading progress display
    this.loadProgress = _V_.createElement("li", { className: "vjs-load-progress" });
    this.progressHolder.appendChild(this.loadProgress)

    // Create the playing progress display
    this.playProgress = _V_.createElement("li", { className: "vjs-play-progress" });
    this.progressHolder.appendChild(this.playProgress);

    // Create the progress time display (00:00 / 00:00)
    this.timeControl = _V_.createElement("li", { className: "vjs-time-control" });
    this.controls.appendChild(this.timeControl);

    // Create the current play time display
    this.currentTimeDisplay = _V_.createElement("span", { className: "vjs-current-time-display", innerHTML: "00:00" });
    this.timeControl.appendChild(this.currentTimeDisplay);

    // Add time separator
    this.timeSeparator = _V_.createElement("span", { innerHTML: " / " });
    this.timeControl.appendChild(this.timeSeparator);

    // Create the total duration display
    this.durationDisplay = _V_.createElement("span", { className: "vjs-duration-display", innerHTML: "00:00" });
    this.timeControl.appendChild(this.durationDisplay);

    // Create the volumne control
    this.volumeControl = _V_.createElement("li", {
      className: "vjs-volume-control",
      innerHTML: "<ul><li></li><li></li><li></li><li></li><li></li><li></li></ul>"
    });
    this.controls.appendChild(this.volumeControl);
    this.volumeDisplay = this.volumeControl.children[0]

  },

  // Show the controller
  showController: function(){
    this.controls.style.display = "block";
    this.positionController();
  },

  // Place controller relative to the audio's position
  positionController: function(){
    // Make sure the controls are visible
    if (this.controls.style.display == 'none') return;
    this.controls.style.height = this.audio.offsetHeight + this.controls.offsetHeight + "px";
    this.controls.style.width = "100px";

    this.sizeProgressBar();
  },


  canPlaySource: function(){
    var children = this.audio.children;
    for (var i=0; i<children.length; i++) {
      if (children[i].tagName.toUpperCase() == "SOURCE") {
        var canPlay = this.audio.canPlayType(children[i].type);
        if(canPlay == "probably" || canPlay == "maybe") {
          return true;
        }
      }
    }
    return false;
  },

  // When the audio is played
  onPlay: function(event){
    this.playControl.className = "vjs-play-control vjs-pause";
    this.trackPlayProgress();
  },

  // When the audio is paused
  onPause: function(event){
    this.playControl.className = "vjs-play-control vjs-play";
    this.stopTrackingPlayProgress();
  },

  // When the audio ends
  onEnded: function(event){
    this.audio.pause();
    this.onPause();
  },

  onVolumeChange: function(event){
    this.updateVolumeDisplay();
  },

  onError: function(event){
    console.log(event);
    console.log(this.audio.error);
  },

  onLoadedData: function(event){
    this.showController();
  },

  // When the audio's load progress is updated
  // Does not work in all browsers (Safari/Chrome 5)
  onProgress: function(event){
    if(event.total > 0) {
      this.setLoadProgress(event.loaded / event.total);
    }
  },

  // Buffer watching method for load progress.
  // Used for browsers that don't support the progress event
  updateBufferedTotal: function(){
    if (this.audio.buffered) {
      if (this.audio.buffered.length >= 1) {
        this.setLoadProgress(this.audio.buffered.end(0) / this.audio.duration);
        if (this.audio.buffered.end(0) == this.audio.duration) {
          clearInterval(this.watchBuffer);
        }
      }
    } else {
      clearInterval(this.watchBuffer);
    }
  },

  setLoadProgress: function(percentAsDecimal){
    if (percentAsDecimal > this.percentLoaded) {
      this.percentLoaded = percentAsDecimal;
      this.updateLoadProgress();
    }
  },

  updateLoadProgress: function(){
    if (this.controls.style.display == 'none') return;
    this.loadProgress.style.width = (this.percentLoaded * (_V_.getComputedStyleValue(this.progressHolder, "width").replace("px", ""))) + "px";
  },

  // React to clicks on the play/pause button
  onPlayControlClick: function(event){
    if (this.audio.paused) {
      this.audio.play();
    } else {
      this.audio.pause();
    }
  },

  // Adjust the play position when the user drags on the progress bar
  onProgressHolderMouseDown: function(event){
    this.stopTrackingPlayProgress();

    if (this.audio.paused) {
      this.audioWasPlaying = false;
    } else {
      this.audioWasPlaying = true;
      this.audio.pause();
    }

    _V_.blockTextSelection();
    document.onmousemove = function(event) {
      this.setPlayProgressWithEvent(event);
    }.context(this);

    document.onmouseup = function(event) {
      _V_.unblockTextSelection();
      document.onmousemove = null;
      document.onmouseup = null;
      if (this.audioWasPlaying) {
        this.audio.play();
        this.trackPlayProgress();
      }
    }.context(this);
  },

  // When the user stops dragging on the progress bar, update play position
  // Backup for when the user only clicks and doesn't drag
  onProgressHolderMouseUp: function(event){
    this.setPlayProgressWithEvent(event);
  },

  // Adjust the volume when the user drags on the volume control
  onVolumeControlMouseDown: function(event){
    _V_.blockTextSelection();
    document.onmousemove = function(event) {
      this.setVolumeWithEvent(event);
    }.context(this);
    document.onmouseup = function() {
      _V_.unblockTextSelection();
      document.onmousemove = null;
      document.onmouseup = null;
    }.context(this);
  },

  // When the user stops dragging, set a new volume
  // Backup for when the user only clicks and doesn't drag
  onVolumeControlMouseUp: function(event){
    this.setVolumeWithEvent(event);
  },

  // Adjust the width of the progress bar to fill the controls width
  sizeProgressBar: function(){
    // this.progressControl.style.width =
    //   this.controls.offsetWidth 
    //   - this.playControl.offsetWidth
    //   - this.volumeControl.offsetWidth
    //   - this.timeControl.offsetWidth
    //   - this.fullscreenControl.offsetWidth
    //   - (this.getControlsPadding() * 6) 
    //   - this.getControlBorderAdjustment() 
    //   + "px";
    // this.progressHolder.style.width = (this.progressControl.offsetWidth - (this.timeControl.offsetWidth + 20)) + "px";
    this.updatePlayProgress();
    this.updateLoadProgress();
  },
  
  // Get the space between controls. For more flexible styling.
  getControlsPadding: function(){
    return _V_.findPosX(this.playControl) - _V_.findPosX(this.controls)
  },
  
  // When dynamically placing controls, if there are borders on the controls, it can break to a new line.
  getControlBorderAdjustment: function(){
    var leftBorder = parseInt(_V_.getComputedStyleValue(this.playControl, "border-left-width").replace("px", ""));
    var rightBorder = parseInt(_V_.getComputedStyleValue(this.playControl, "border-right-width").replace("px", ""));
    return leftBorder + rightBorder;
  },

  // Track & display the current play progress
  trackPlayProgress: function(){
    this.playProgressInterval = setInterval(function(){ this.updatePlayProgress(); }.context(this), 33);
  },

  // Turn off play progress tracking (when paused)
  stopTrackingPlayProgress: function(){
    clearInterval(this.playProgressInterval);
  },

  // Ajust the play progress bar's width based on the current play time
  updatePlayProgress: function(){
    if (this.controls.style.display == 'none') return;
    this.playProgress.style.width = ((this.audio.currentTime / this.audio.duration) * (_V_.getComputedStyleValue(this.progressHolder, "width").replace("px", ""))) + "px";
    this.updateTimeDisplay();
  },

  // Update the play position based on where the user clicked on the progresss bar
  setPlayProgress: function(newProgress){
    this.audio.currentTime = newProgress * this.audio.duration;
    this.playProgress.style.width = newProgress * (_V_.getComputedStyleValue(this.progressHolder, "width").replace("px", "")) + "px";
    this.updateTimeDisplay();
  },

  setPlayProgressWithEvent: function(event){
    var newProgress = _V_.getRelativePosition(event.pageX, this.progressHolder);
    this.setPlayProgress(newProgress);
  },

  // Update the displayed time (00:00)
  updateTimeDisplay: function(){
    this.currentTimeDisplay.innerHTML = _V_.formatTime(this.audio.currentTime);
    if (this.audio.duration) this.durationDisplay.innerHTML = _V_.formatTime(this.audio.duration);
  },

  // Set a new volume based on where the user clicked on the volume control
  setVolume: function(newVol){
    this.audio.volume = parseFloat(newVol);
    localStorage.volume = this.audio.volume;
  },

  setVolumeWithEvent: function(event){
    var newVol = _V_.getRelativePosition(event.pageX, this.volumeControl.children[0]);
    this.setVolume(newVol);
  },

  // Update the volume control display
  // Unique to these default controls. Uses borders to create the look of bars.
  updateVolumeDisplay: function(){
    var volNum = Math.ceil(this.audio.volume * 6);
    for(var i=0; i<6; i++) {
      if (i < volNum) {
        _V_.addClass(this.volumeDisplay.children[i], "vjs-volume-level-on")
      } else {
        _V_.removeClass(this.volumeDisplay.children[i], "vjs-volume-level-on");
      }
    }
  },

})

// Convenience Functions (mini library)
// Functions not specific to audio or AudioJS and could be replaced with a library like jQuery
var _V_ = {
  addClass: function(element, classToAdd){
    if (element.className.split(/\s+/).lastIndexOf(classToAdd) == -1) element.className = element.className == "" ? classToAdd : element.className + " " + classToAdd;
  },

  removeClass: function(element, classToRemove){
    if (element.className.indexOf(classToRemove) == -1) return;
    var classNames = element.className.split(/\s+/);
    classNames.splice(classNames.lastIndexOf(classToRemove),1);
    element.className = classNames.join(" ");
  },

  merge: function(obj1, obj2){
    for (attrname in obj2) { obj1[attrname] = obj2[attrname]; }
    return obj1;
  },

  createElement: function(tagName, attributes){
    return _V_.merge(document.createElement(tagName), attributes);
  },

  // Attempt to block the ability to select text while dragging controls
  blockTextSelection: function(){
    document.body.focus();
    document.onselectstart = function () { return false; };
  },

  // Turn off text selection blocking
  unblockTextSelection: function(){
    document.onselectstart = function () { return true; };
  },

  // Return seconds as MM:SS
  formatTime: function(seconds) {
    seconds = Math.round(seconds);
    minutes = Math.floor(seconds / 60);
    minutes = (minutes >= 10) ? minutes : "0" + minutes;
    seconds = Math.floor(seconds % 60);
    seconds = (seconds >= 10) ? seconds : "0" + seconds;
    return minutes + ":" + seconds;
  },

  // Return the relative horizonal position of an event as a value from 0-1
  getRelativePosition: function(x, relativeElement){
    return Math.max(0, Math.min(1, (x - _V_.findPosX(relativeElement)) / relativeElement.offsetWidth));
  },

  // Get an objects position on the page
  findPosX: function(obj) {
    var curleft = obj.offsetLeft;
    while(obj = obj.offsetParent) {
      curleft += obj.offsetLeft;
    }
    return curleft;
  },
  
  getComputedStyleValue: function(element, style){
    return window.getComputedStyle(element, null).getPropertyValue(style);
  }
  
}

// Class Methods

// Add audio-js to any audio tag with the class
AudioJS.setup = function(options){
  var audioCount = document.getElementsByTagName("audio").length
  for (var i=0;i<audioCount;i++) {
    audioTag = document.getElementsByTagName("audio")[i];
    if (audioTag.className.indexOf("audio-js") != -1) {
      options = (options) ? _V_.merge(options, { num: i }) : options;
      audioJSPlayers[i] = new AudioJS(audioTag, options);
    }
  }
}

// Check if the browser supports audio.
AudioJS.browserSupportsAudio = function() {
  return !!document.createElement('audio').canPlayType;
}

AudioJS.isIpad = function(){
  return navigator.userAgent.match(/iPad/i) != null;
}

AudioJS.isIE = function(){
  return !+"\v1";
}

// Allows for binding context to functions
// when using in event listeners and timeouts
Function.prototype.context = function(obj) {
  var method = this
  temp = function() {
    return method.apply(obj, arguments)
  }
 return temp
}

.vjs-skin-colors-blue {
  color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-control-bar, .vjs-skin-colors-blue .vjs-big-play-button, .vjs-skin-colors-blue .vjs-menu-content {
  background-color: #000000;
  background-color: rgba(0, 0, 0, 0.7);
}
.vjs-skin-colors-blue .vjs-load-progress {
  background-color: #66A8CC;
  background-color: rgba(102, 168, 204, 0.5);
}
.vjs-skin-colors-blue .vjs-play-progress {
  background-color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-slider {
  background-color: #66A8CC;
  background-color: rgba(102, 168, 204, 0.4);
}
.vjs-skin-colors-blue .vjs-volume-level {
  background-color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-big-play-button,
.vjs-skin-colors-blue .vjs-big-play-button:focus, .vjs-skin-colors-blue:hover .vjs-big-play-button {
  border-color: #66A8CC;
}
.vjs-skin-colors-blue .vjs-menu-button ul li.vjs-selected {
  background-color: #000000;
}
.vjs-skin-colors-blue .vjs-menu-button ul li:focus,
.vjs-skin-colors-blue .vjs-menu-button ul li:hover,
.vjs-skin-colors-blue .vjs-menu-button ul li.vjs-selected:focus,
.vjs-skin-colors-blue .vjs-menu-button ul li.vjs-selected:hover {
  color: #000000;
  background-color: #66A8CC;
  background-color: rgba(102, 168, 204, 0.75);
}

شرکت دانش بنیان کنترل ماشین سرو تولیدکننده ماشین های CNC مخصوص تولید قطعات خودروئی و صنعتی مانند طبق پراید، طبق پرو 206 و قطعات جلوبندی انواع خودروها میباشد.
تمام ماشین های CNC این شرکت دارای استانداردهای بالای بین المللی و ضمانت نامه های چند ساله و خدمات پشتیبانی و تامین قطعات یدکی به مدت ده سال میباشند.

با ما در تماس باشید

در هر مورد سوالی در مورد دستگاه ها دارید با ما مطرح نمایید.

09144114310