// <!--
var drag = 0;

// инициализация и позиционирование всех объектов, которые определяют движки
function init_begun(name_obj)
{
 var obj_holder = document.getElementById('holder_begun_' + name_obj); // контейнер
 if(!obj_holder) return;
 var obj_begunok_left = document.getElementById(name_obj + '_from');  // бегунок от
 var set_x = getAbsolutePos(obj_holder).x + parseInt(obj_begunok_left.style.width)/2;
 var set_y = getAbsolutePos(obj_holder).y;
 var active_width = new  Number();
 var init_x = new String();
 var wind_wids = parseInt(document.documentElement.clientWidth);
 
 init_x = parseInt(getCookie('init_min_px_' + name_obj)); // если есть позиция в куках, ставим ее
 if(!isNaN(init_x)) { if((wind_wids - parseInt(obj_holder.width)) > init_x){set_x = init_x;} }
 obj_begunok_left.style.left = set_x + 'px';
 obj_begunok_left.style.top = set_y + 'px';
 obj_begunok_left.style.display = '';
		
 obj_begunok_right = document.getElementById(name_obj + '_to'); // бегунок до
 set_x = getAbsolutePos(obj_holder).x + parseInt(obj_holder.style.width) - parseInt(obj_begunok_left.style.width);
 set_y = getAbsolutePos(obj_holder).y;
 init_x = parseInt(getCookie('init_max_px_' + name_obj));  // если есть позиция в куках, ставим ее
 if(!isNaN(init_x)) {set_x = init_x;}
 obj_begunok_right.style.left = set_x + 'px';
 obj_begunok_right.style.top = set_y + 'px';
 obj_begunok_right.style.display = '';
 
 var obj_active_range = document.getElementById('active_range_' + name_obj);  // активный диапазон
 set_x = getAbsolutePos(obj_begunok_left).x + parseInt(obj_begunok_left.style.width)/2;
 set_y = getAbsolutePos(obj_holder).y + parseInt(obj_holder.style.height);
 active_width = getAbsolutePos(obj_begunok_right).x - getAbsolutePos(obj_begunok_left).x;
 obj_active_range.style.left = set_x + 'px';
 obj_active_range.style.top = set_y + 'px';
 obj_active_range.style.width = active_width + 'px';
 obj_active_range.style.display = '';
 
 var obj_left_limit = document.getElementById('limit_left_' + name_obj); // левая граница перемещения
 set_x = getAbsolutePos(obj_holder).x;// + parseInt(obj_begunok_left.style.width)/2
 set_y = getAbsolutePos(obj_holder).y;
 obj_left_limit.style.left = set_x + 'px';
 obj_left_limit.style.top = set_y + 'px';
 obj_left_limit.style.display = '';
 
 var obj_right_limit = document.getElementById('limit_right_' + name_obj);  // правая граница перемещения
 set_x = getAbsolutePos(obj_holder).x + parseInt(obj_holder.style.width) - parseInt(obj_begunok_left.style.width);
 set_y = getAbsolutePos(obj_holder).y;
 obj_right_limit.style.left = set_x + 'px';
 obj_right_limit.style.top = set_y + 'px';
 obj_right_limit.style.display = ''; 
}

// функция передвижение движков
function drag_object(evt, id_obj, axis, status_obj, name_obj, coll_back)
{
 drag = 1; // begin drag     
 var obj = document.getElementById(id_obj);
 // определяем какой движек - левый/правый, задаем границы перемещения
 if(status_obj == 'left') { var left_brdr_obj = document.getElementById('limit_left_' + name_obj); }
 else { var left_brdr_obj = document.getElementById(name_obj + '_from'); }
 if(status_obj == 'left') { var right_brdr_obj = document.getElementById(name_obj + '_to'); }
 else{ var right_brdr_obj = document.getElementById('limit_right_' + name_obj); }
 if (!evt) {var evt = window.event;} // for ie browser
 var limit_left = 0; // init left border
 var limit_right = parseInt(screen.width); // init right border
 if(left_brdr_obj)  { limit_left = getAbsolutePos(left_brdr_obj).x; }
 if(right_brdr_obj) { limit_right = getAbsolutePos(right_brdr_obj).x;}
 // смещение бегунков относительно друг друга в точке их соприкосновения
 if(status_obj == 'left'){limit_right = limit_right - parseInt(obj.style.width);}
 if(status_obj == 'right'){limit_left = limit_left + parseInt(obj.style.width);}
 
 // отключаем обработку событий по умолчанию, связанных с перемещением блока (это убирает глюки с выделением текста в других HTML-блоках, когда мы перемещаем объект) 
 if(window.event) {evt.returnValue = null; }
 else {evt.preventDefault();}
 
 // когда мы отпускаем кнопку мыши, убираем «проверочный флаг»
 document.onmouseup = function()
  {
	drag = 0; 
	// запись в куки текущей позиции бегунков
	var Obj_left_begun = document.getElementById(name_obj + '_from');
	var Obj_right_begun = document.getElementById(name_obj + '_to');
	if(Obj_left_begun) { setcookie('init_min_px_' + name_obj, parseInt(Obj_left_begun.style.left) ); }
	if(Obj_right_begun) { setcookie('init_max_px_' + name_obj, parseInt(Obj_right_begun.style.left) ); }
  }
  
  // обработка координат указателя мыши и изменение позиции объекта
 document.onmousemove = function(evt)
  { 
	if (!evt) {var evt = window.event;} // ie fix
    if(drag == 1)
    {
      //var initposLeft = parseInt(obj.style.left); // начальный Х бегунка
      //var initposTop = parseInt(obj.style.top); // начальнеый У бегунка
      var new_pos_x = parseInt(evt.clientX); // позиция Х, на которую его перенесет (позиция Х мыши)
      var new_pos_y = parseInt(evt.clientY); // позиция У, на которую его перенесет (позиция У мыши)
	  //alert(axis + "== 'goriz' && " + new_pos_x + " >= " + limit_left + " &&  "  + new_pos_x + "<= " +limit_right);
      if(axis == 'goriz' && new_pos_x >= limit_left && new_pos_x <= limit_right) {obj.style.left = new_pos_x + 'px';}
	  if(axis == 'vert'){obj.style.top = new_pos_y + 'px'; }
	  eval(coll_back);	// функция kоллбек, которая вызывается после перемещения
	  
	  // опять фиксим дефолтные события браузеров воизбежании глюков
	  if(window.event) {evt.returnValue = null; }
      else {evt.preventDefault();}
      if(event.stopPropagation) {event.stopPropagation();}
      else {event.cancelBubble = true;}
    }
  }
 
 function set_field_values(id_from_obj, id_to_obj)
 {
	// вычисляем границы перемещения бегунков - длинна хода в пикселях
	var obj_left_limit = document.getElementById('limit_left_' + name_obj);
	var obj_right_limit = document.getElementById('limit_right_' + name_obj);
	var limit_left_px = new Number(0);
	var limit_right_px = new Number(0);
	var min_val = new Number(0);
	var max_val = new Number(0);
    if(obj_left_limit) { limit_left_px = parseInt(obj_left_limit.style.left); }
	if(obj_right_limit) { limit_right_px = parseInt(obj_right_limit.style.left); }
	var range_px = limit_right_px - limit_left_px; // длинна хода в пикселяx
	if(range_px == 0){range_px = 0.001; } // на всякий случай, если выйдет в 0
	
	
	
	// вычисляем границы численных значений, которые меняются от перемещения бегунков
	var val_min_limit = document.getElementById('limit_min_val_' + name_obj);
	var val_max_limit = document.getElementById('limit_max_val_' + name_obj);
	if(val_min_limit) { min_val = parseFloat(val_min_limit.value); }
	if(val_max_limit) { max_val = parseFloat(val_max_limit.value); }
	var range_vals = max_val - min_val; // диапазон значений, которые могут принять числовые поля ввода
	var scale = range_vals/range_px;
	if(scale == 0){scale = 0.001; } // отношение пикселей и числовых значений численных полей
	
	
	var Min_Obj_input = document.getElementById(id_from_obj);
	var Max_Obj_input = document.getElementById(id_to_obj);
	var Obj_left_begun = document.getElementById(name_obj + '_from');
	var Obj_right_begun = document.getElementById(name_obj + '_to');
	var Position_begun_left = new Number();
	var Position_begun_left_handle = new Number();
	var Position_begun_right = new Number();
	var Position_begun_right_handle = new Number();
	// меняем значение поля от
	if(Min_Obj_input && Obj_left_begun)
	{
	 Position_begun_left = parseInt(Obj_left_begun.style.left) - limit_left_px;
	 Position_begun_left_handle = parseInt(scale*Position_begun_left) + min_val;
     if(isNaN(Position_begun_left_handle)){Position_begun_left_handle = min_val;}
	 Min_Obj_input.value = Position_begun_left_handle;
	 Min_Obj_input.setAttribute("value",Position_begun_left_handle);
	}
	// меняем значение поля до
	if(Max_Obj_input && Obj_right_begun)
	{
	 Position_begun_right = parseInt(Obj_right_begun.style.left) - limit_left_px;
	 Position_begun_right_handle = parseInt(scale*Position_begun_right) + min_val;
     if(isNaN(Position_begun_right_handle)){Position_begun_right_handle = max_val;}
	 Max_Obj_input.value = Position_begun_right_handle;
	}
    
	var obj_active_range = document.getElementById('active_range_' + name_obj);  // активный диапазон
    var set_x = getAbsolutePos(Obj_left_begun).x + parseInt(Obj_left_begun.style.width)/2;
	var active_width = new Number();
	active_width = Position_begun_right - Position_begun_left;
    //set_y = getAbsolutePos(Obj_left_begun).y + parseInt(Obj_left_begun.style.height)/2;
    obj_active_range.style.left = set_x + 'px';
    //obj_active_range.style.top = set_y + 'px';
    obj_active_range.style.width = active_width + 'px';
	
  return;
 }
  
}

// позиционирует движки относительно введенных значений в текстовые поля
function pos_begun_rel_field_val(name_obj, id_from_obj, id_to_obj)
{
 var obj_holder = document.getElementById('holder_begun_' + name_obj); // контейнер
 if(!obj_holder) return;
 check_num(id_from_obj);
 check_num(id_to_obj);
 // вычисляем границы перемещения бегунков - длинна хода в пикселях
 var obj_left_limit = document.getElementById('limit_left_' + name_obj);
 var obj_right_limit = document.getElementById('limit_right_' + name_obj);
 var limit_left_px = new Number(0);
 var limit_right_px = new Number(0);
 var min_val = new Number(0);
 var max_val = new Number(0);
 if(obj_left_limit) { limit_left_px = parseInt(obj_left_limit.style.left); }
 if(obj_right_limit) { limit_right_px = parseInt(obj_right_limit.style.left); }
 var range_px = limit_right_px - limit_left_px; // длинна хода в пикселяx
 if(range_px == 0){range_px = 0.001; } // на всякий случай, если выйдет в 0
	
 // вычисляем границы численных значений, которые меняются от перемещения бегунков
 var val_min_limit = document.getElementById('limit_min_val_' + name_obj);
 var val_max_limit = document.getElementById('limit_max_val_' + name_obj);
 if(val_min_limit) { min_val = parseFloat(val_min_limit.value); }
 if(val_max_limit) { max_val = parseFloat(val_max_limit.value); }
 var range_vals = max_val - min_val; // диапазон значений, которые могут принять числовые поля ввода
 var scale = range_vals/range_px;
 if(scale == 0){scale = 1; } // отношение пикселей и числовых значений численных полей
 var Offset_begin = Math.round(min_val/scale);
 
 var Min_Obj_input = document.getElementById(id_from_obj);
 var Max_Obj_input = document.getElementById(id_to_obj);
 var Obj_left_begun = document.getElementById(name_obj + '_from');
 var Obj_right_begun = document.getElementById(name_obj + '_to');
 var Position_begun_left = new Number();
 var Position_begun_right = new Number();
 // меняем значение поля от
 if(Min_Obj_input && Obj_left_begun)
 {
  if(parseInt(Min_Obj_input.value) < min_val) {Min_Obj_input.value = min_val; }
  if(parseInt(Min_Obj_input.value) > parseInt(Max_Obj_input.value) && parseInt(Max_Obj_input.value) > min_val) 
  {Min_Obj_input.value = Max_Obj_input.value; }
  Position_begun_left = Math.round(parseInt(Min_Obj_input.value)/scale) + getAbsolutePos(obj_holder).x - Offset_begin;
  if(isNaN(Position_begun_left)){Position_begun_left = limit_left_px;}
  Obj_left_begun.style.left = Position_begun_left + 'px';
 }
 // меняем значение поля до
 if(Max_Obj_input && Obj_right_begun)
 {
  if(parseInt(Max_Obj_input.value) > max_val) {Max_Obj_input.value = max_val; }
  if(parseInt(Max_Obj_input.value) < parseInt(Min_Obj_input.value)) {Max_Obj_input.value = Min_Obj_input.value; }
  Position_begun_right = Math.round(parseInt(Max_Obj_input.value)/scale) + getAbsolutePos(obj_holder).x - Offset_begin;
  if(isNaN(Position_begun_right)){Position_begun_right = limit_right_px;}
  Obj_right_begun.style.left = Position_begun_right + 'px';
 }
 
 var obj_active_range = document.getElementById('active_range_' + name_obj);  // активный диапазон
 var set_x = getAbsolutePos(Obj_left_begun).x + parseInt(Obj_left_begun.style.width)/2;
 var active_width = new Number();
 active_width = Position_begun_right - Position_begun_left;
 //set_y = getAbsolutePos(Obj_left_begun).y + parseInt(Obj_left_begun.style.height)/2;
 obj_active_range.style.left = set_x + 'px';
 //obj_active_range.style.top = set_y + 'px';
 obj_active_range.style.width = active_width + 'px';
 return;
}

//-->
