var currentLayerReorderSelected = -1;


function layerReorderCurrent(key) 
{
  currentLayerReorderSelected = key;
}

function reorderUpside()
{
  if (currentLayerReorderSelected == -1) return;

  var from = currentLayerReorderSelected;
  var to  = reorderPreviousPosition(from);
  
  var container = xGetElementById("layerReorderContainer");
  var transparency = 
    xGetElementsByClassName('layersTransparency', container, 'select');
  var indexTransparency = new Array();
  
  for (i=0 ; i < transparency.length ; i++) { 
    indexTransparency[transparency[i].name.substr(19)] 
      = transparency[i].selectedIndex;
  }    
  
  reorderLayerMove(from, to);
  
  var container = xGetElementById("layerReorderContainer");
  var transparency
    = xGetElementsByClassName('layersTransparency', container, 'select');
  
  for (i=0 ; i < transparency.length ; i++) { 
    transparency[i].selectedIndex
      = indexTransparency[transparency[i].name.substr(19)];
  }
}

function reorderDownside()
{
  if (currentLayerReorderSelected == -1)
     return;

  var from = currentLayerReorderSelected;
  var to  = reorderNextPosition(currentLayerReorderSelected); 
  
  var container 
    = xGetElementById("layerReorderContainer");
  var transparency 
    = xGetElementsByClassName('layersTransparency', container, 'select');
  var indexTransparency = new Array();
    
  for (i=0 ; i < transparency.length ; i++) { 
    indexTransparency[transparency[i].name.substr(19)]
      = transparency[i].selectedIndex;
  }    
  
  reorderLayerMove(from, to);
  
  var container = xGetElementById("layerReorderContainer");
  var transparency 
    = xGetElementsByClassName('layersTransparency', container, 'select');
    
  for (i=0 ; i < transparency.length ; i++) { 
    transparency[i].selectedIndex
      = indexTransparency[transparency[i].name.substr(19)];
  }
}

function reorderPreviousPosition(idFrom)
{
  var container = xGetElementById("layerReorderContainer");
  var layers = xGetElementsByClassName('layerReorder', container, 'div');
  
  for (i=0 ; i < layers.length ; i++) { 
    if (layers[i].id.substr(13) == idFrom) {
      if(i == 0) return layers[0].id.substr(13);
      return layers[i-1].id.substr(13);
    }
  }
}

function reorderNextPosition(idFrom)
{
  var container = xGetElementById("layerReorderContainer");
  var layers = xGetElementsByClassName('layerReorder', container, 'div');
  
  for (i=0 ; i < layers.length ; i++) { 
    if (layers[i].id.substr(13) == idFrom) {
      if(i + 2 >= layers.length) return 'last';
      return layers[i+2].id.substr(13);
    }
  }
}

function reorderLayerMove(idFrom, idTo) 
{
    if (idFrom == idTo) {
        return;
    }
    var container = xGetElementById("layerReorderContainer");
    var layers = xGetElementsByClassName('layerReorder', container, 'div');
    var from = '';
    var str ='';

    for (i=0 ; i < layers.length ; i++) { 
        if (layers[i].id.substr(13) == idFrom) {
        from = '<div id="layerReorder_' + idFrom + '" class="layerReorder">'
               + layers[i].innerHTML + '</div>';
    }
    }
        
    for (i=0 ; i < layers.length ; i++) {
        var currentId = layers[i].id.substr(13);

     if (currentId == idTo) str += from;
    
        if (currentId != idFrom) {
        str += '<div id="layerReorder_' + currentId 
               + '" class="layerReorder">' 
               + layers[i].innerHTML + '</div>';
    }
    }

    container.innerHTML = '<div id="layerReorderContainer">' + str + '</div>';
    var currentLayer
      = xGetElementById("layerReorderRadio_" + currentLayerReorderSelected);
    currentLayer.checked = true;
}

function retrieveOrder()
{
    var container = xGetElementById("layerReorderContainer");
    var layers = xGetElementsByClassName('layerReorder', container, 'div');
   
    var OrderedIds = new Array();
    for (i=0 ; i < layers.length - 1 ; i++)
        OrderedIds.push(layers[i].id.substr(13));

    document.carto_form.layersReorder.value = OrderedIds.join(",");
}
