var old;
if( !document.set ) {
  old = window.onload;
  window.onload = goinit;
}
document.set = 1;
function goinit() {
  init();
  if(old) old();
}

function addbefore( sl ) {
  //var sl = this;
  if( sl.cur == 1 ) return;
  sl.cur--;
  fixarrows( sl );
  if( sl.pos != 0 ) {
    sl.pos--;
    return;
  }
  addbefore1( sl );
  
}
function addbefore1( sl ) {
  sl.pos--;
  sl.start--;
  sl.end--;
  sl.moving = 1;
  sl.dir = 1;
  move( sl );
  go( sl );
}
function addafter( sl ) {
  //var sl = this;
  if( sl.cur == ( sl.numimgs - ( sl.num - 1 ) ) ) return;
  sl.cur++;
  fixarrows( sl );
  if( sl.pos != 0 ) {
    sl.pos++;
    return;
  }
  addafter1( sl );
}
var _galimgp = '/template/wcm/imgs/galscroll/';
function fixarrows( sl ) {
  var r = _getel(sl.rid);
  var l = _getel(sl.lid);
  if( sl.cur == 1 ) {
    l.src = _galimgp+'gol8d.png';
  }
  else { l.src= _galimgp+'gol8.png'; }
  if( sl.cur == ( sl.numimgs - ( sl.num - 1 ) ) || sl.smush ) {
    r.src = _galimgp+'go8d.png'; r.onclick = '';
  }
  else {
    r.src =_galimgp+'go8.png'; r.onclick= addafter.bind( 0,sl );
  }
}
function addafter1( sl ) {
  sl.pos++;
  sl.start++;
  sl.end++;
  sl.moving = 1;
  sl.dir    = -1;
  move( sl );
  go( sl );
}

function move( sl ) {
  sl.off += sl.dir * 7;
  _getel(sl.contentid).style.left = ( sl.off - sl.width2 ) + 'px';
  if( sl.off * sl.dir <= sl.width2 ) {
    setTimeout( move.bind(0,sl), 15 );
  }
  else {
    sl.moving = 0;
    sl.off = 0;
    _getel(sl.contentid).style.left = '-'+sl.width2+'px';
    done(sl);
  }
}
function init() {
  var sliders = document.sliders;
  for( var i=0;i<sliders.length;i++ ) {
    var sl = sliders[i];
    
    sl.uid = i;
    sl.end = sl.num + 1;
    sl.cur    = 1;
    sl.start  = 0;
    sl.items  = [];
    sl.moving = 0;
    sl.pos    = 0;
    sl.smush = 0;
    sl.off = 0;
    sl.dir = 0;
    sl.cnt;
    sl.needed;
    sl.needfile = [];
    
    if( sl.end > sl.numimgs ) {
      sl.smush = 1;
      sl.end = sl.numimgs;
    }
    
    _getel(sl.lid).onclick = addbefore.bind(0,sl);
    _getel(sl.rid).onclick = addafter.bind(0,sl);
    
    _getel(sl.boxid).style.width = ( sl.width * ( sl.num ) + sl.gap * ( sl.num ) ) + 'px';
    _getel(sl.contentid).style.width = ( sl.width2 * ( sl.num + 2 ) ) + 'px';
    fixarrows( sl );
    go( sl );
  }
}
function go( sl ) {
  getneeded( sl, done );
}
function done( sl ) {
  if( sl.moving ) return;
  var before = _getel(sl.uid+'im'+(sl.start-1));
  var after = _getel(sl.uid+'im'+(sl.end+1));
  if( before ) _del( before );
  if( after ) _del( after );
  var second = _getel(sl.uid+'im'+(sl.start+1));
  
  var prev = 0;
  
  //new config
  var c = _getel(sl.contentid);
  c.style.height = sl.pxheight +'px';
  //end new config
  
  for( var i = sl.start; i <= sl.end; i++ ) {
    var l = ( i ) * ( sl.width + sl.gap ) - sl.start * ( sl.width + sl.gap ) + sl.gap / 2;
    var p;
    //if( p = _getel(sl.uid+'im'+i) ) _del(p);
    if( p = _getel(sl.uid+'im'+i) ) {
      fixdiv( p, l, i );
      continue;
    }
    
    var item = sl.items[i];
    if( !item ) continue;
    var img  = item.img.value;
    var link = item.link.value;
    var im   = _newimg( img );
    var name = item.name.value || 'untitled';
    var namet= _newtext( name );
    im.style.marginRight = sl.gap+'px';
    im.width  = sl.width;
    im.height = sl.height;
    
    var a = p = newdiv( sl, sl.folder +'/'+ link, sl.width, sl.height, l, i, im, namet );
    
    _insertafter( _getel(sl.startid), a )
  }
  sl.pos += sl.dir;
  if( sl.pos == 0 ) return;
  if( sl.pos < 0 ) {
    sl.pos++;
    addbefore1( sl );
  }
  if( sl.pos > 0 ) {
    sl.pos--;
    addafter1( sl );
  }
}

function fixdiv( div, l, i ) {
  div.style.left = l +'px';
}

function newdiv( sl, link, width, height, l, i, im, namet ) {
  var div = _newel('div');
  div.className = 'item';
  div.style.left = l +'px';
  div.style.width = width + 'px';
  div.id = sl.uid+ 'im' + i;
  
  div.style.position = 'absolute';
  div.style.overflow = 'hidden';
  var a = _newhref( link );
  if( sl.target ) a.target = sl.target;
  else {
    a.href = 'javascript:popfile("'+link+'",'+sl.popw+','+sl.poph+');';
  }
  a.style.border = 0;
  _append( a, im );
  im.style.border = 0;
  if( sl.textunder ) {
    var nametd = _newel('div');
    nametd.className = 'title';
    _append( nametd, namet );
    _append( a, _newbr(), nametd );
  }
  _append( div, a );
  return div;
}


function getneeded( sl, func ) {
  sl.needed = 0;
  for( var i = sl.start; i <= sl.end; i++ ) need( sl, i );
  sl.cnt = 0;
  if( sl.needed == 0 ) func( sl );
  for( var i = 0; i < sl.needfile.length; i++ ) {
    if( sl.needfile[ i ] == 1 ) {
      var k = i;
      if( !k ) k = '';
      else k++;
      sl.needfile[ i ] = 2;
      loadfile( sl.basepath+k+'.xml', gotxml.bind( sl, func ), failxml.bind(sl,func) );
    }
  }
}
function need( sl, i ) {
  if( i > sl.numimgs ) return; //!i || 
  var filenum = ( i - ( i % 5 ) ) / 5;
  if( !sl.needfile[ filenum ] ) {
    sl.needfile[ filenum ] = 1;
    sl.needed++;
  }
}
function gotxml( func, xml ) {
  var sl = this;
  var xitems = xml.item;
  for( var i = 0; i < xitems.length; i++ ) {
    var item = xitems[i];
    var j = item.i.value;
    sl.items[ j ] = item;
  }
  sl.cnt++;
  if( sl.cnt >= sl.needed ) func(sl);
}

function failxml( func, xml ) {
  var sl = this;
  //var xitems = xml.item;
  //for( var i = 0; i < xitems.length; i++ ) {
  //  var item = xitems[i];
  //  var j = item.i.value;
  //  sl.items[ j ] = item;
  //}
  sl.cnt++;
  if( sl.cnt >= sl.needed ) func(sl);
}
