//procent centralnoy 4asti bez dvigeni9
var mp_nomove_percent=50;
//uskorenie v pixel9h za takt
var mp_uskorenie=2.0;
//maksimalna9 skorost v piksel9h za takt (vnometelno! skorost kvadrati4no vozrastaet!)
var mp_maxspeed=50.0;
//skorost sme6eni9 dl9 knopok
var mp_button_speed=10.0;
//vklu4it cikli4nost - 1, viklu4it - 0;
var mp_is_cycle=0;



//NE TROGAT!!!!!
var i=0;
var p=0;
var mp_timer;
var mp_speed=new Array(mp_numparents);
for(i=0;i<mp_numparents;i++)mp_speed[i]=0.0;

var mp_onbody_num=0; //nomer onbody
var mp_onbody=0; //flag togo 4to mi6a na body

//var mp_onbody=new Array(mp_numparents);
//for(i=0;i<mp_numparents;i++)mp_onbody[i]=0; //flag togo 4to mi6a na body

var mp_rx=new Array(mp_numparents);
for(i=0;i<mp_numparents;i++)mp_rx[i]=0.0; //sme6enie parenta otnositelno absoluta(okna naverno)
var mp_rx1=new Array(mp_numparents);
for(i=0;i<mp_numparents;i++)mp_rx1[i]=new Array(mp_numbloksX[i]); //sme6enie elementa

var mp_w=new Array(mp_numparents);
for(i=0;i<mp_numparents;i++)mp_w[i]=0; //width ownera
var mp_w1=new Array(mp_numparents);
for(i=0;i<mp_numparents;i++)mp_w1[i]=new Array(mp_numbloksX[i]); //width elementa
var mp_w_all=new Array(mp_numparents);
for(i=0;i<mp_numparents;i++)mp_w_all[i]=0; //width vsehvmeste


var mp_left_z=new Array(mp_numparents);
for(i=0;i<mp_numparents;i++)mp_left_z[i]=0; //koordinata granici levoi zoni skorosti
var mp_right_z=new Array(mp_numparents);   
for(i=0;i<mp_numparents;i++)mp_right_z[i]=0; //koordinata granici pravoi zoni skorosti
var mp_obj1=new Array(mp_numparents);
for(i=0;i<mp_numparents;i++)mp_obj1[i]=new Array(mp_numbloksX[i]); //ukazateli na objekti
var mp_obj=new Array(mp_numparents);//ukazateli na parent
//var mp_la=new Array(mp_numparents);//ukazateli na left arrow
//var mp_ra=new Array(mp_numparents);//ukazateli na right arrow

var mp_button=new Array(mp_numparents);
for(i=0;i<mp_numparents;i++)mp_button[i]=new Array(mp_numbuttons[i]); //ukazateli na buttons

var mp_target_speed=new Array(mp_numparents);
for(i=0;i<mp_numparents;i++)mp_target_speed[i]=0; //skorost k kotoroy uskor9ems9
var mp_leftobj=new Array(mp_numparents);//nomer samiy leviy i smiy praviy blok
var mp_rightobj=new Array(mp_numparents);
var mp_target_parent_num=0; //object po kotoromu provodits9 vizov

function mp_initialize()
{

 for(p=0;p<mp_numparents;p++)
 {
 
  //vinimaem objecti
  mp_obj[p]=getObj("mp_parent"+p+""); 
//  mp_la[p]=getObj("mp_r_arrow"+p+""); 
//  mp_ra[p]=getObj("mp_l_arrow"+p+""); 

//  alert("mp_obj["+p+"].id="+mp_obj[p].id);

  for(i=0;i<mp_numbloksX[p];i++)
  {
   mp_obj1[p][i]=getObj("mp_child"+p+"_"+i);
 
//   alert("mp_obj1["+p+"]["+i+"].id="+mp_obj1[p][i].id);
  }

  for(i=0;i<mp_numbuttons[p];i++)
  {
   mp_button[p][i]=getObj("mp_button"+p+"_"+i);
  }

  mp_leftobj[p]=0;
  mp_rightobj[p]=mp_numbloksX[p]-1;

  //zadaem im sobiti9
  mp_obj[p].onmousemove = mp_body;
  mp_obj[p].onmouseover = mp_body;
  mp_obj[p].onmouseout = mp_body_stop;
//  mp_la[p].onmouseover = mp_move_la;
//  mp_la[p].onmouseout = mp_stop;

  for(i=0;i<mp_numbuttons[p];i++)
  {
   mp_button[p][i].onmouseover=mp_move_button;
   mp_button[p][i].onmouseout=mp_stop;
  }

  //uznaem 6irinu objectov
  mp_w[p]=mp_obj[p].clientWidth;

  mp_w_all[p]=0;
  for(i=0;i<mp_numbloksX[p];i++)
  {
   mp_w1[p][i]=mp_obj1[p][i].clientWidth;//offsetWidth?
   mp_w_all[p]+=mp_w1[p][i];
  }

  //zadaem cord x objectov otnositelno togo 4ego nada
  mp_rx[p]=findPosX(mp_obj[p]); //global x

  var summ=0;
  for(i=0;i<mp_numbloksX[p];i++)
  {
   mp_rx1[p][i]=summ;
   summ+=mp_w1[p][i];
  }

  mp_left_z[p]=Math.floor(mp_w[p]/100*(100-mp_nomove_percent)/2);
  mp_right_z[p]=mp_w[p]-mp_left_z[p];
          
  for(i=0;i<mp_numbloksX[p];i++)
  {
   mp_obj1[p][i].style.left=Math.floor(mp_rx1[p][i]);
  }
 }
}

function mp_set_target_parent_num(mp_event)
{
 var tobj;
 var pid;

 tobj=mp_event.srcElement;
 if(!tobj) tobj=mp_event.target;

 pid= new String(tobj.id);

 if(pid.indexOf("mp_parent")!=-1){mp_target_parent_num=parseInt(pid.substr(9,1));return;}

 while(tobj.offsetParent)
 {
  tobj=tobj.offsetParent;
  pid= new String(tobj.id);
  if(pid.indexOf("mp_parent")!=-1){mp_target_parent_num=parseInt(pid.substr(9,1));return;}
 }

 alert('ERROR - no valid parent');
}

function mp_set_timer(sec)
{
// alert("set timer");
 mp_timer=window.setInterval("mp_control()",sec);
}

function mp_unset_timer()
{
// alert("stop timer");
 clearInterval(mp_timer);
 mp_onbody=0;
}


function mp_move_button(mp_event)
{
 var tobj;
 var pid;
 var bnum;

 if(!mp_event) var mp_event = window.event;
 tobj=mp_event.srcElement;
 if(!tobj) tobj=mp_event.target;
 pid= new String(tobj.id);

 mp_target_parent_num=parseInt(pid.substr(9,1));
 bnum=parseInt(pid.substr(11,1));

 mp_set_move(mp_button_speed*mp_butvectorX[mp_target_parent_num][bnum]);
}

function mp_move_la(mp_event)
{
 var tobj;
 var pid;

 if(!mp_event) var mp_event = window.event;
 tobj=mp_event.srcElement;
 if(!tobj) tobj=mp_event.target;
 pid= new String(tobj.id);

 mp_target_parent_num=parseInt(pid.substr(10,1));

 mp_set_move(mp_button_speed*-1);
}

function mp_move_ra(cursor)
{
 var tobj;
 var pid;

 if(!mp_event) var mp_event = window.event;
 tobj=mp_event.srcElement;
 if(!tobj) tobj=mp_event.target;
 pid= new String(tobj.id);
 
 mp_target_parent_num=parseInt(pid.substr(10,1));

 mp_set_move(mp_button_speed*1);
}


function mp_set_move($speed)
{                
 mp_target_speed[mp_target_parent_num]=$speed; 
 if(!mp_onbody) 
 {
  mp_set_timer(20);
  mp_onbody=1;
 }
}
//   mp_target_parent_num


function mp_control()
{   

 var delta_speed=0.0;
 var need_timer=0;

 for(p=0;p<mp_numparents;p++)
 if(mp_target_speed[p]!=0||mp_speed[p]!=0)
 {
  need_timer=1;

  //alert("target speed "+p+" = "+mp_target_speed[p]);

  delta_speed=mp_target_speed[p]-mp_speed[p];

  if(Math.abs(delta_speed) <= mp_uskorenie)
   mp_speed[p]=mp_target_speed[p];
  else
   if(delta_speed>0)
    mp_speed[p]+=mp_uskorenie;
   else
    mp_speed[p]-=mp_uskorenie; 
 
 
  for(i=0;i<mp_numbloksX[p];i++)
   mp_rx1[p][i]+=mp_speed[p];
 
 
  if(mp_is_cycle)
  {
 
   if(mp_speed[p]>=0)
   {
    if(mp_rx1[p][mp_leftobj[p]]>=0)
    {
     mp_rx1[p][mp_rightobj[p]]=mp_rx1[p][mp_leftobj[p]]-mp_w1[p][mp_rightobj[p]];
     mp_leftobj[p]=mp_rightobj[p];
     mp_rightobj[p]-=1;
     if(mp_rightobj[p]<0)mp_rightobj[p]=mp_numbloksX[p]-1;
    }
   }
   else
   {
    if(mp_rx1[p][mp_leftobj[p]]<(-mp_w1[p][mp_leftobj[p]]))
    {
     mp_rx1[p][mp_leftobj[p]]=mp_w_all[p]+mp_rx1[p][mp_leftobj[p]];
     mp_rightobj[p]=mp_leftobj[p];
     mp_leftobj[p]+=1;
     if(mp_leftobj[p]>=mp_numbloksX[p])mp_leftobj[p]=0;
    }
   }
 
  }
  else
  {
 
   if(mp_speed[p]>0)
   {
    if(mp_rx1[p][mp_leftobj[p]]>=0) //esli 1 zaehal v plus, to upiraem
    {
     var summ=0;
     for(i=0;i<mp_numbloksX[p];i++)
     {                
      mp_rx1[p][i]=summ;
      summ+=mp_w1[p][i];
     }
 
     mp_speed[p]=0;
     mp_target_speed[p]=0;
 
    }
   }
   else
   {
    if(mp_rx1[p][mp_rightobj[p]]<=mp_w[p]-mp_w1[p][mp_rightobj[p]]) 
    {
     var summ=mp_w[p]-mp_w_all[p];

//      alert(mp_w[p]);
//      alert(mp_w_all[p]);

     for(i=0;i<mp_numbloksX[p];i++)
     {
      mp_rx1[p][i]=summ;
      summ+=mp_w1[p][i];
     }
     mp_speed[p]=0;
     mp_target_speed[p]=0;
    }
   }
 
  }
 
  for(i=0;i<mp_numbloksX[p];i++)
  mp_obj1[p][i].style.left=mp_rx1[p][i];
 }

 if(need_timer==0)mp_unset_timer();
}


function mp_body(cursor)
{

 //dostaem koord x i privodim ego v x otnositelno ma6ego parenta
 if(!cursor) var cursor = window.event;
 mp_set_target_parent_num(cursor);
 

 var x=0;
 if(cursor.pageX)
 {
  x=cursor.pageX;
 }
 else if (cursor.clientX) 
 {
  x=cursor.clientX+document.body.scrollLeft;
 }

 x-=mp_rx[mp_target_parent_num];


 if(x<=mp_left_z[mp_target_parent_num]&&x>=0)
 {
  mp_target_speed[mp_target_parent_num]=(mp_left_z[mp_target_parent_num]-x)/mp_left_z[mp_target_parent_num]*mp_maxspeed;
  mp_set_move(mp_target_speed[mp_target_parent_num]);
 }
 else if(x>=mp_right_z[mp_target_parent_num]&&x<=mp_w[mp_target_parent_num])
 {
  mp_target_speed[mp_target_parent_num]=(mp_right_z[mp_target_parent_num]-x)/mp_left_z[mp_target_parent_num]*mp_maxspeed;
  mp_set_move(mp_target_speed[mp_target_parent_num]);
 }
 else mp_set_move(0);
}

function mp_stop(cursor)
{
 var tobj;
 var pid;

 if(!mp_event) var mp_event = window.event;
 tobj=mp_event.srcElement;
 if(!tobj) tobj=mp_event.target;
 pid= new String(tobj.id);

 mp_target_parent_num=parseInt(pid.substr(9,1));

 mp_set_move(0);
}


function mp_body_stop(cursor)
{
 if(!cursor) var cursor = window.event;
 mp_set_target_parent_num(cursor);

 mp_set_move(0);
}



function getObj(name) {
// функция захвата объекта, используется при инициализации
  if (document.getElementById) return document.getElementById(name);
  else if (document.all) return document.all[name];
  else if (document.layers) return document.layers[name];
  else return false;
}
function findPosX(obj) {
// X-координата слоя
  var currleft = 0;
  if (obj.offsetParent)
    while (obj.offsetParent) {
      currleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  else if (obj.x) currleft += obj.x;
  return currleft;
}

//onload
try {
  window.addEventListener("load", mp_initialize, false);
} catch(e) {
  window.onload = mp_initialize;
}

