var container_label = "container_";
var mover_label = "_mover";
var nb_container = 4;
var nb_by_line = 4;
var spred_box = 15;
var size_container = 300;
var size_box_width = screen.width * 0.254;
var size_box_height = screen.height * 0.185;
var tab_container = new Array(nb_container);
var div_label = "div_";
var box_label = "box_";
var tab_boxes = new Array();
var tab_boxes_static = new Array();

var tab_pos_container = new Array(nb_container);

var dragging_id = 0;
var mouse_x;
var mouse_y;
var drag_spred_x = 0;
var drag_spred_y = 0;
var z_index = 0;
var last_pos = new Array(2);
var last_highlight_id = 0;
var id_box_from = 0;
var setting_box_color = 0;

var btn_what_do = 0;

document.onmouseup = secure_drag_and_drop;

function secure_drag_and_drop(evt)
{
  if (id_box_from)
  {
     stable_me_line(id_box_from);
  }
  id_box_from = 0;
}

function set_dragging(id)
{

  if (checking_keycode)
    return (0);
  dragging_id = id;
  document.getElementById("more_add").style.zIndex = ++MB_zindex;
  document.getElementById("no_more_add").style.zIndex = ++MB_zindex;
  document.getElementById(id).style.zIndex = ++MB_zindex;
  get_spred_obj();
  last_pos = find_pos(id);  
}

var timeout_drag_line;
var d_or_c = 0;

function set_dragging_line(id, id_box)
{

  var pos_obj = new Array(2);
  var pos_parrent = new Array(2);
  var mask;
  var obj;
  var obj_left;
  var obj_right;
  var box;
  var id_num;
  var tab_id = new Array(2);
  
  if (checking_keycode)
    return (0);
  tab_id = id.split("_");
  id_num = tab_id[1];
  if (d_or_c == 0)
  {
    timer_working = 1;
    dragging_id = id;
    d_or_c = 1;
    timeout_drag_line = setTimeout("set_dragging_line('"+id+"', '"+id_box+"')", 200);
  }
  else if (d_or_c == 1 && dragging_id)
  {
    document.getElementById("more_add").style.zIndex = ++MB_zindex;
    document.getElementById("no_more_add").style.zIndex = ++MB_zindex;
    box = get_obj("box_"+id_box_from);
    obj_left = get_obj("left_line_"+id_num);
    obj_right = get_obj("right_line_"+id_num);
    box.style.zIndex = ++MB_zindex;
    pos_obj = find_pos(id);
    pos_parrent = find_pos(id_box);
    obj = get_obj(id);
    obj.style.width = MB_width_box - 10;
    obj.className = "line_dragging_js";
    obj.style.background = "url(/templates/dark/images/background_task.png) center repeat-x";
    obj_left.style.background = "url(/templates/dark/images/left.png) center repeat-x";
    obj_right.style.background = "url(/templates/dark/images/right.png) center repeat-x";
    document.body.style.cursor = "move";
    drag_spred_x = pos_parrent['x'] + (mouse_x - pos_obj['x']);
    drag_spred_y = pos_parrent['y'] + (mouse_y - pos_obj['y']);
    mask = document.getElementById("mask_task");
    mask.style.height = screen.height + document.body.scrollTop;
    mask.style.width = screen.width + document.body.scrollLeft;
    mask.style.display = "block";
    mask.style.zIndex = ++MB_zindex;
    document.getElementById(id).style.zIndex = ++MB_zindex;
    last_pos = find_pos(id);
    d_or_c = 0;
    timer_working = 0;
  }
  else if (!dragging_id && d_or_c)
  {
    d_or_c = 0;
    timer_working = 0;
    show_popup_task(id);
  }
}

function  drag_me()
{
    elem = document.getElementById(dragging_id);
    if (!elem)
      return (0);
    elem.style.position = "absolute";
    elem.style.top = (mouse_y - drag_spred_y)+"px";
    elem.style.left = (mouse_x - drag_spred_x)+"px";
    manage_other_box();

}

function manage_other_box()
{
  var id = 0;
  var i;
  var nb_box;
  var obj_dragging;
  var obj = new Array(2);
  var cur = new Array(2);
  var current_obj;
  var pos_abs = new Array(2);
  pos_box = new Array(2);
  
  obj_dragging = document.getElementById(dragging_id);
  obj['x'] = remove_px_pos(obj_dragging.style.left);
  obj['y'] = remove_px_pos(obj_dragging.style.top);
  obj['x'] = parseInt(obj['x']);
  obj['y'] = parseInt(obj['y']);
  
  id = is_onover_box();
  if (id)
  {
    last_highlight_id = id;
    i = 0;
    nb_box = my_count(tab_boxes);
    while (i < nb_box)
    {
      if (tab_boxes[i] == id && id)
      {
        i++;
        continue;
      }
      pos_box = find_pos(id);
      if (!is_user(tab_boxes[i]))
        document.getElementById("more_add").style.display = "none";
      else
        document.getElementById("more_add").style.display = "none";
      i++;
    }
    if (is_user(id))
    {
      document.getElementById("more_add").style.display = "block";
      document.getElementById("more_add").style.position = "absolute";
      pos_abs['y'] = pos_box['y'];
      pos_abs['x'] = pos_box['x'];    
      document.getElementById("more_add").style.top = ""+pos_abs['y']+"px";
      document.getElementById("more_add").style.left = ""+pos_abs['x']+"px";
      document.getElementById("no_more_add").style.display = "none";
    }
    else if (is_box(id) && !is_static_box(id))
    {
      document.getElementById("more_add").style.display = "block";
      document.getElementById("more_add").style.position = "absolute";
      pos_abs['y'] = pos_box['y'] + (MB_height_box / 2) - 18;
      pos_abs['x'] = pos_box['x'] + (MB_width_box / 2)  - 18;    
      document.getElementById("more_add").style.top = ""+pos_abs['y']+"px";
      document.getElementById("more_add").style.left = ""+pos_abs['x']+"px";
       document.getElementById("no_more_add").style.display = "none";
    }
    else if (is_box(id) && is_static_box(id))
    {
      document.getElementById("no_more_add").style.display = "block";
      document.getElementById("no_more_add").style.position = "absolute";
      pos_abs['y'] = pos_box['y'] + (MB_height_box / 2) - 18;
      pos_abs['x'] = pos_box['x'] + (MB_width_box / 2)  - 18;    
      document.getElementById("no_more_add").style.top = ""+pos_abs['y']+"px";
      document.getElementById("no_more_add").style.left = ""+pos_abs['x']+"px";
    }
  }
  else if (last_highlight_id)
  {
    if (!is_user(last_highlight_id))
    {
      document.getElementById("more_add").style.display = "none";
      document.getElementById("no_more_add").style.display = "none";
    }
    else
    {
         document.getElementById("more_add").style.display = "none";
         document.getElementById("no_more_add").style.display = "none";
    }
  }
}

function is_onover_box()
{
  var obj_dragging;
  var obj_x;
  var obj_y;
  var i;
  var current_id;
  var tab_cur = new Array(2);
  var current_x;
  var current_y;
  var nb_box;
  
  obj_dragging = document.getElementById(dragging_id);
  obj_x = remove_px_pos(obj_dragging.style.left);
  obj_y = remove_px_pos(obj_dragging.style.top);
  obj_x = parseInt(obj_x);
  obj_y = parseInt(obj_y);
  i = 0;
  nb_box = my_count(tab_boxes);
  while (i < nb_box)
  {

    current_id = tab_boxes[i];
    tab_cur = find_pos(current_id);
    current_x = tab_cur['x'];
    current_y = tab_cur['y'];

    if (is_box(tab_boxes[i]))
    {
     
      if (mouse_x >= current_x && mouse_x <= current_x + MB_width_box &&
        mouse_y >= current_y && mouse_y <= current_y + MB_height_box &&
      current_id != dragging_id)
      return (current_id);
    
    }
    if (is_user(tab_boxes[i]))
    {
      
      if (mouse_x >= current_x && mouse_x <= current_x + 200 &&
         mouse_y >= current_y && mouse_y <= current_y + 60 &&
        current_id != dragging_id)
       return (current_id);
    }
    i++; 
  }
  return (0);
}

function  is_box(str)
{
  var tab = new Array();

  tab = str.split('_');
  if (tab[0] == "box")
    return (1);
  return (0);
}

function  is_static_box(id)
{
  var i;
  
  i = 0;

  while (tab_boxes_static[i])
  {
    if (tab_boxes_static[i] == id)
    {
      return (1);
    }
    i++;
  }
  return (0);
}

function  is_user(str)
{
  var tab = new Array();

  tab = str.split('_');
  if (tab[0] == "user")
    return (1);
  return (0);
}

function load_tab_boxes(page)
{

  var xxhr=null; 
  var req;
  
  req = "/ajax/load_tab_boxes.php?page="+page;
    
    if (window.XMLHttpRequest) { 
        xxhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
    {
        xxhr = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    
    xxhr.onreadystatechange = function() {  parse_tab_boxes(xxhr); };
    xxhr.open("GET", req, true);
    xxhr.send(null);
    


  load_static_tab_boxes();
}

function  parse_tab_boxes(xhr)
{
    var result_tab;

    if (xhr.readyState==4) 
    {
      result_tab = xhr.responseText;
      tab_boxes = result_tab.split(' ');
    }
}

function load_static_tab_boxes()
{
  var str;
  
  str = ajax_req_s("/ajax/load_static_tab_boxes.php?");
  tab_boxes_static = str.split(' ');
}

function  stable_me_what_done()
{
  
  var i;
  var nb_box;
  var saved_id;
  var id_box;
  var obj;
  
  saved_id = dragging_id;
  document.getElementById("no_more_add").style.display = "none";
  if (id = is_onover_box())
  {
    if (is_box(id) && !is_static_box(id))
    {
      id_box = get_id_of_elem(id);
      add_item(id);
      set_new_line_to_normal("line_new", "line");
      set_new_line_to_normal("left_line_new", "left_line_out");
      set_new_line_to_normal("right_line_new", "right_line_out");
      change_page(0, id_box, );
    }
    if (is_user(id))
      send_line_to_other(id);
    document.getElementById("more_add").style.display = "none";
  }
  else
  {
    skip_item(); 
  }
  dragging_id = 0;
  return (0);
}

function  stable_me_line(id_box_from)
{
 
  if (checking_keycode)
    return (0);
  var i;
  var nb_box;
  var id;
  var current_obj;
  var db_id_box;
  var db_id_line;
  var reg_box = new RegExp("(box_)", "g");
  var reg_line = new RegExp("(line_)", "g");
  var elem;
  
  if (!dragging_id)
    return (0);
  document.body.style.cursor = "auto";
  current_obj = document.getElementById(dragging_id);
  current_obj.style.display = "none";
  if (id = is_onover_box())  
  {
    db_id_box = id.replace(reg_box, "");  
    if (db_id_box != id_box_from)
    {
      if (is_box(id) && !is_static_box(id))
      {
        move_item(id, current_obj.id);
        current_obj.style.display = "none";
        db_id_line = current_obj.id.replace(reg_line, "");
        document.getElementById(id).style.background = "#FFFFFF";
        document.getElementById("more_add").style.display = "none";
        set_new_line_to_normal("line_new", "line");
        set_new_line_to_normal("left_line_new", "left_line_out");
        set_new_line_to_normal("right_line_new", "right_line_out");
        dragging_id = 0;
        hide_div("mask_task");
        change_page(0, db_id_box, );
        return (0);
      }
      else if (is_static_box(id))
      {
         show_content_box(id_box_from);
         document.getElementById("no_more_add").style.display = "none";
      }
      else if (is_user(id))  
      {
        send_item_to_user(dragging_id, id_box_from, id);
      }
    }
    else
    {
      show_content_box(id_box_from);
      document.getElementById("box_"+id_box_from).style.background = "#FFFFFF";
    }
  }
  else
    show_content_box(id_box_from);
  current_obj.style.display = "none";
  dragging_id = 0;
  document.getElementById("more_add").style.display = "none";
  hide_div("mask_task");
  return (0);
}

function  move_item(id, item)
{
  var obj;
  var id_line;
  var tab_id = new Array(2);
  var content;
  var from_id_user;
  var status;
  var get_line;
  var save_content;
  
  tab_id = item.split("_");
  id_line = tab_id[1];
  obj = document.getElementById(""+id+"_content");
  content = ajax_req_s("/ajax/get_line.php?id_line="+id_line);
  from_id_user = ajax_req_s("/ajax/get_from_id_user.php?id_line="+id_line);
  status = ajax_req_s("/ajax/get_status_task.php?id_line="+id_line);

  ajax_req_z("/ajax/move_task_box.php?id_box="+id+"&id_line="+id_line, id+"_content");
}

function set_new_line_to_normal(class_name_from, class_name_to)
{
  var done = 0;
  var timeout;


  timeout = setTimeout("set_new_line_to_normal('"+class_name_from+"', '"+class_name_to+"')", 1000);
  for (i=0; i<document.getElementsByTagName("*").length; i++) 
  {
    if (document.getElementsByTagName("*").item(i).className == class_name_from){
    document.getElementsByTagName("*").item(i).className = class_name_to;
    done = 1;
    clearTimeout(timeout);
    }
  }
  return (done);
}

function  hasClass(one, two)
{
  if (one.className == two)
    return (1);
  return (0);
}

function  send_item_to_user(id_item, id_box_from, id_user)
{
  var req;
  var real_id;
  var tab_id = new Array(2);
  set_notification_sent(id_user);
  tab_id = id_item.split("_");
  real_id = tab_id[1];
  req = "/ajax/send_item_to_user.php?id_item="+real_id+"&id_box="+id_box_from+"&id_user="+id_user;
  ajax_req_a(req, "box_"+id_box_from+"_content", "");
  document.getElementById("more_add").style.display = "none";
}

function  send_line_to_other(id)
{
  var item;
  
  item = buffer_tmp;
  
  set_notification_sent(id);
  document.getElementById("more_add").style.display = "none";
  ajax_req_s("/ajax/send_line_to_other.php?id_user="+id+"&content_line="+item+"");
}

function  set_obj_to_original_pos(obj)
{
  obj.style.position = "absolute";
  obj.style.top = last_pos['y']+"px";
  obj.style.left = last_pos['x']+"px";
}

function add_item(id, id_btn)
{
  var item;
  var id_btn;
  
  id_btn = "btn_update";
  item = document.getElementById("dragbox").innerHTML;
  set_obj_to_initial_pos(last_pos['x'], last_pos['y']);
  ajax_req_a("/ajax/add_item.php?id_box="+id+"&item="+buffer_tmp+"", ""+id+"_content", "");
  document.getElementById(id).style.background = "#FFFFFF";
  document.getElementById("around_drag_box").innerHTML = "<table class=\"what_box\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"input_task_top\">&nbsp;</td></tr><tr><td class=\"input_task_middle\"><textarea id=\"textbox\" class=\"statut_box_input\" onClick=\"free_text('Start typing...', this.id)\">Start typing...</textarea></td></tr><tr><td class=\"input_task_bottom\" onclick=\"what_do('textbox')\">&nbsp;</td></tr></table>";
  buffer_tmp = "";
}

function rebuild_btn()
{
  var id_btn;
  id_btn = "btn_update";

   btn = document.getElementById(id_btn);
   btn.style.display = "block";
  btn.style.width = "auto";
  btn.style.height = "auto";
}

function cancel_add_item()
{

  var item;
  var id_btn;
  var cancel;
  
  id_btn = "btn_update";
  item = document.getElementById("dragbox").innerHTML;
    document.getElementById("around_drag_box").innerHTML = "<table class=\"what_box\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"input_task_top\">&nbsp;</td></tr><tr><td class=\"input_task_middle\"><textarea id=\"textbox\" class=\"statut_box_input\" onClick=\"free_text('Start typing...', this.id)\">Start typing...</textarea></td></tr><tr><td class=\"input_task_bottom\" onclick=\"what_do('textbox')\">&nbsp;</td></tr></table>";
 rebuild_btn();
}

function  skip_item()
{
    var i;
    var nb_box;
    
   i = 0;
    nb_box = my_count(tab_boxes);
    while (i < nb_box)
    {
      if (!is_user(tab_boxes[i]))
        document.getElementById(tab_boxes[i]).style.background = "#FFFFFF";
       i++;
      }
      set_obj_to_initial_pos(last_pos['x'], last_pos['y']);

}

function delete_all_items(id_box_html, id_box_sql)
{
  if (confirm("Do you want to empty this box ?"))
    ajax_req_a("/ajax/empty_box.php?id_box="+id_box_sql+"", "box_"+id_box_html+"_content", "");
}

function change_page(page, id_box, id_user)
{
    var result;
    
    page_box["box_"+id_box] = page;
    result = ajax_req_s("/ajax/generate_change_page_btn.php?id_box="+id_box+"&page="+page+"&id_user="+id_user);
    ajax_req_z("/ajax/change_page.php?id_box="+id_box+"&page="+page+"&id_user="+id_user, "box_"+id_box+"_content");
    document.getElementById("change_page_"+id_box+"").innerHTML = result;
}

function find_pos(id)
{
    AObject = document.getElementById(id);
    
    var posX = 0, posY = 0;
    do
    {
        posX += AObject.offsetLeft;
        posY += AObject.offsetTop;
        AObject = AObject.offsetParent;
    }
    while( AObject != null );
    var pos = [];
    pos['x'] = posX;
    pos['y'] = posY;
    return pos;
}

function  get_spred_obj()
{  
  var obj;
  if (!dragging_id)
  {
    //alert("You are trying to get a bad position");
    return (0);
  }
  obj = find_pos(dragging_id);
  drag_spred_x = (mouse_x - obj['x']);
  drag_spred_y = (mouse_y - obj['y']);
  return (0);
}


function remove_px_pos(str)
{
  var i;
  var new_str;
  
  var reg=new RegExp("(px)", "g");
  new_str = str.replace(reg, "");
  return (new_str);
}

function set_obj_to_initial_pos(x, y)
{
  var obj;
  
  obj = document.getElementById(dragging_id);
  obj.style.top = y+"px";
  obj.style.left = x+"px";
}

/*
** call inital functions
*/

