//Prefijo para los id's de los selects
SELECT_PREF="id_select_";
//Prefijo para los id's de los divs
DIV_PREF="sorted_";
//Id del contenedor de los divs ordenables
DIVS_CONTAINER="sorted";
//Id del formulario a enviar
SAVE_FORM='sort_gallery';

/*Evento llamado cada vez que cambia un select
  select -> elemento select correspondiente
*/
function change_list(select){
    
      select_id=select.id;
      select_position=select.selectedIndex;
                        
      id=select_id.split(SELECT_PREF)[1];
      id_div=DIV_PREF+id;
      
      selected_div = document.getElementById(id_div);
      container_div= document.getElementById(DIVS_CONTAINER);
      children = container_div.children;      
      
      //Necesitamos saber el antiguo valor para ver cómo insertar 
      old_selected=select.getAttribute('old_selected');
      new_pos=children[select_position];
      if (old_selected && select_position >= old_selected){
            new_pos=children[select_position+1];
      }
      container_div.insertBefore(selected_div, new_pos);
                        
      //Actualizamos id's y selects
      for(var c=0; c < children.length; c++) {
            div_id=children[c].id;
            select_id=SELECT_PREF+div_id.split(DIV_PREF)[1];
            sel=document.getElementById(select_id);
            sel.selectedIndex=c;            
            sel.setAttribute('old_selected',c+1);
      }
}

/* Borra el div cuyo id sea div_id contenido en DIVS_CONTAINER*/
function delete_element(div_id){
    document.getElementById(DIVS_CONTAINER).removeChild(document.getElementById(div_id));
    
    //Añadimos a la lista de borrados
    save_form=document.forms[SAVE_FORM];
    
    just_id=div_id.split(DIV_PREF)[1].split('_')[1];
    save_form.delete_ids.value=save_form.delete_ids.value + just_id + ",";

    container_div= document.getElementById(DIVS_CONTAINER);
    children = container_div.children;      
                              
    //Actualizamos id's y selects
    for(var c=0; c < children.length; c++) {
            div_id=children[c].id;
            select_id=SELECT_PREF+div_id.split(DIV_PREF)[1];
            sel=document.getElementById(select_id);
            sel.selectedIndex=c;
            sel.onChange=function(){
                change_list(select,c);
            };
            //Borramos la última opción del select
            sel.remove(sel.options.length-1);
    }
}
     
/* Rellena correctamente el formulario con los id's a reordenar y hace submit*/            
function save_sort(){

    save_form=document.forms[SAVE_FORM];
    children = document.getElementById(DIVS_CONTAINER).children;      
                             
    //Actualizamos id's y selects
    for(var c=0; c < children.length; c++) {
            div_id=children[c].id;
            select_id=SELECT_PREF+div_id.split(DIV_PREF)[1];
            sel=document.getElementById(select_id);

            just_id=div_id.split(DIV_PREF)[1].split('_')[1];

            save_form.update_ids.value=save_form.update_ids.value + just_id + ",";
            save_form.update_pos.value=save_form.update_pos.value + (sel.selectedIndex+1) + ",";
    }
    
    save_form.submit();

}

