//Support Functions
//

//Returns object of selected ID
function getObj(pID){
  return (document.getElementById) ? document.getElementById(pID) : eval("document.all['" + pID + "']");
}


//Hides or displays objects according to their ID
function display_object(pID,pStatus) {
  var trObj = (document.getElementById) ? document.getElementById(pID) : eval("document.all['" + pID + "']");
  if (trObj !== null) {
    //alert("ID:"+pID+", Display:"+trObj.style.display);
    if (pStatus == 1) {
      trObj.style.display="";
    }
    else {
      trObj.style.display="none";
    }
  }
}

function set_class(pID, pClass){
  getObj(pID).className = pClass;
}


function focus_object(pID){
  getObj(pID).focus();
}


//
// 3x3Links Grid Logic
//

slast = "";

function grid_set_last(pid){
 slast = pid;
}

function edit_cancel(){
 seted(0);
 slast = "";
}

function grid_display_last(){
 if (slast !== ""){
  display_object("div_" + slast + "_edit",0);
  display_object("div_" + slast + "_drop",0);
  display_object("div_" + slast + "_question",0);
  display_object("div_" + slast + "_display",1);
 }
}

function grid_question(pid){
 seted(1);
 grid_display_last();
 dd_set(pid);
 display_object("div_" + pid + "_question",1);
 display_object("div_" + pid + "_edit",0);
 display_object("div_" + pid + "_drop",0);
 display_object("div_" + pid + "_display",0);
 grid_set_last(pid);
 getObj("btn_" + pid + "_clink").focus();
}

function grid_edit(pid){
 seted(1);
 grid_display_last();
 dd_set(pid);
 display_object("div_" + pid + "_edit",1);
 display_object("div_" + pid + "_drop",0);
 display_object("div_" + pid + "_display",0);
 display_object("div_" + pid + "_question",0);
 grid_set_last(pid);
 oCaption = getObj("form_" + pid).caption
 oURI = getObj("form_" + pid).uri;

 oCaption.focus(); //focus Caption on edit/add
 oCaption.value = oCaption.value;
 try {oURI.focus();} catch(err) {}

 oURI.value = oURI.value;
}

function grid_drop(pid){
 seted(1);
 grid_display_last();
 display_object("div_" + pid + "_edit",0);
 display_object("div_" + pid + "_drop",1);
 display_object("div_" + pid + "_display",0);
 display_object("div_" + pid + "_question",0);
 focus_object("btn_" + pid + "_drop");
 grid_set_last(pid);
}

function grid_display(pid){
 grid_display_last();
 display_object("div_" + pid + "_edit",0);
 display_object("div_" + pid + "_drop",0);
 display_object("div_" + pid + "_question",0);
 display_object("div_" + pid + "_display",1);
 grid_set_last(pid);
}


//
// DrillDown Logic
//

//      trObj.style.display="";
//      trObj.style.display="none";

function dd_set_no(pid){
  getObj("form_" + pid).is_drilldown.checked = false;
}

function dd_set_yes(pid){
  getObj("form_" + pid).is_drilldown.checked = true;
}

function dd_set(pid){
 oDD = getObj("form_" + pid).is_drilldown;
 oURI = getObj("form_" + pid).uri;
 if (oDD.checked == true) {
   oURI.style.visibility='hidden';
   try {oDD.focus();} catch(err) {}
 } else {
   oURI.style.visibility="visible";
   if (oURI.value == "") {
     oURI.value = "http://";
   }
   //oDD.focus();
 }
}


function loading(status){
  if (status == 0) {
    display_object("div_loading",0);
  } else {
    display_object("div_loading",1);
  }
}

moving_folder = false;

function move_folder(){
  moving_folder = true;
  msgdialog = getObj('div_move');
  msgdialog.style.visibility="visible";
  getObj('btn_move').focus();

}


function move_folder_cancel(){
  /*if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
    moving_folder = true;
    msgdialog = getObj('div_move');
    msgdialog.style.visibility="hidden";
  }else {*/
    //location.reload(true)
    location.href = location.href;
  /*}*/
}


//location.href='edit?id={{ link.id }}&id2={{ link.id2 }}&tmpl=grid'
function openFolder(id, id2, link_set){
  if (dragging == false){
    location.href='edit?id=' + id +'&id2=' + id2 + '&tmpl=grid&set=' + link_set;
  }
}

dragging = false;
level = 0;
level1 = 0;
level2 = 0;
level3 = 0;
link_set = 0;
from = 0;
to = 0;
gkey = "";
uri_cache = "";

function drag(plevel, id, id2, id3,key, pset){
  //getObj('debug').innerHTML = "Drag Level: " + plevel + " - IDs:" + id + "," + id2 + "," + id3 ;
  dragging = true;
  level = plevel;
  if (level == 1) {
    from = id;
  }
  if (level == 2) {
    from = id2;
  }
  if (level == 3) {
    from = id3;
  }

  gkey = "div_" + key;
  level1 = id;
  level2 = id2;
  level3 = id3;
  link_set = pset;
}

function iereload(){
 if (!moving_folder){
   //location.reload(true)
   location.href = location.href;
 }

}

function ddsupported(){
  if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
    return true;
  } else {
    return false;
  }
}

function abortdrag(object){
  //if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
    setTimeout ( 'dragging = false; ', 100 );
  //}else {
  //  setTimeout ( 'iereload();', 100 );
  //}
}

function drop(plevel, id, id2, id3,isfolder){
  if (dragging){
    //getObj('debug').innerHTML += " to IDs:" + id + "," + id2 + "," + id3 ;
    level = plevel;

    if (level == 1) {
      to = id;
      uri_add = "";
    }
    if (level == 2) {
      to = id2;
      uri_add = "&l1=" + level1;
    }
    if (level == 3) {
      to = id3;
      uri_add = "&l1=" + level1 + "&l2=" + level2;
    }

    if (from != to){
      display_object(gkey,0)
      if (isfolder == 0 || (isfolder == 1 && level > 2)){
        display_object("div_loading",1);
        uri = "move?tmpl=grid&from=" + from + "&to=" + to + "&cmd=move" + uri_add + "&set=" + link_set;
        location.href = uri;
        dragging = true;
      } else {
        move_folder();
        uri_cache = "move?tmpl=grid&from=" + from + "&to=" + to + uri_add + "&set=" + link_set;

      }
    } else {
      //getObj('debug').innerHTML = "";
      dragging = false;
    }

    level1 = 0;
    level2 = 0;
    level3 = 0;
  }
}

// 0 = switch positionsm else move
function drop_move(action){
  if (action == 0) {
    uri = uri_cache  + "&cmd=move";
  } else {
    uri = uri_cache  + "&cmd=put";
  }
  location.href = uri;
}


function drop_level(plevelup){
  if (dragging){
    //getObj('debug').innerHTML += " to IDs:" + id + "," + id2 + "," + id3 ;

    if (level == 1) {
      uri_add = "";
    }
    if (level == 2) {
      uri_add = "&l1=" + level1;
    }
    if (level == 3) {
      uri_add = "&l1=" + level1 + "&l2=" + level2;
    }
    to = plevelup;

    display_object(gkey,0)
    display_object("div_loading",1);
    uri = "move?tmpl=grid&from=" + from + "&to=" + to + "&cmd=put_up" + uri_add + "&set=" + link_set;
    location.href = uri;
    dragging = true;
    moving_folder = true;

    level1 = 0;
    level2 = 0;
    level3 = 0;
  }
}


function findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    do {
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    } while (obj = obj.offsetParent);
    return [curleft,curtop];
  }
}

//Fix it!
function fixit(pmode, pname, pid){
    obj = document.getElementById(pname);
    //alert('Width: -' + obj.style.width + '-');
    if (pmode == 1){
      aspos = findPos(obj);
      obj.style.left = aspos[0] + 'px';
      obj.style.top = aspos[1] + 'px';
      obj.style.height = (obj.offsetHeight-2) + 'px';
      obj.style.width = (obj.offsetWidth-2) + 'px';
    } else {
        switch (pid) {
          case 1:
            stop="15%";
            sleft="15%";
          break;

          case 2:
            stop="15%";
            sleft="38%";
          break;

          case 3:
            stop="15%";
            sleft="61%";
          break;

          case 4:
            stop="38%";
            sleft="15%";
          break;

          case 5:
            stop="38%";
            sleft="38%";
          break;

          case 6:
            stop="38%";
            sleft="61%";
          break;

          case 7:
            stop="61%";
            sleft="15%";
          break;

          case 8:
            stop="61%";
            sleft="38%";
          break;

          case 9:
            stop="61%";
            sleft="61%";
          break;
        }

      obj.style.left = stop;
      obj.style.top = sleft;
      obj.style.height = '22%';
      obj.style.width = '22%';
    }
}

function unfixit(pname, pid){
    obj = document.getElementById(pname);
    //alert('Width: -' + obj.style.width + '-');

}

/*
  Get Pages Support Functions
*/
  try
  { link_set = current_link_set; }
  catch(err)
  { link_set = 0;  }
  
  function get_pages() {
	get_pages('n');
  }

  function get_pages(pss) {
    //alert(params);
    getObj('div_get_pages').style.display = "block";
    var myAjax = new Ajax.Request('/get_pages?set=' + link_set + '&show_shared=' +pss,{
      method: 'get',
      //onComplete: processUpdate
      onComplete: function(transport){
          getObj('div_get_pages').innerHTML = transport.responseText;

        } //onComplete

    });
  };

  function close_pages() {
    getObj('div_get_pages').style.display = "none";
  }

  function switch_pages(tset) {
    getObj('div_get_pages').innerHTML = "Changing page...";
    location.href= location.href.replace('set='+link_set,'set='+tset);
  }
  
  
  /**/

//ajust positioning
var tile_h_max = 200;
var tile_w_max = 280;
var tile_space_max = 10;
var offset_top_min = 90;
var offset_left_min = 10;
var bar_height = 30;
var bc_h_max = 45;
var bc_h_min = 30;  
//
// POSITION TILES
//
function calcPositions(){
var w = $(window).width();
var h = $(window).height();
var offset_left = (w-(tile_w_max*3+tile_space_max*2))/2;
var offset_top = (h-(tile_h_max*3+tile_space_max*2))/2;
var bc_h = bc_h_max;


if (offset_left < 0 ){
  //make tiles smaller
   offset_left = offset_left_min;
   tile_space_w = (w-offset_left_min*2)/100*2;
   tile_w = (w-offset_left_min*2)/100*32; //TODO
   
}else{
  tile_w = tile_w_max;
  tile_space_w = tile_space_max;
}

if ((offset_top - (offset_top_min)) < 0){
  //make tiles smaller
   offset_top = offset_top_min;
   tile_space_h = (h-offset_top_min*2)/100*2;
   tile_h = (h-offset_top_min*2)/100*32; //TODO
   bc_h = bc_h_max*(tile_h/tile_h_max);
}else{
  tile_h = tile_h_max;
  tile_space_h = tile_space_max;
}

var n ='.div_grid_pos_';
$(n+'1, '+n+'4, '+n+'7, .div_bc1').css('left',offset_left);
$(n+'2, '+n+'5, '+n+'8, .div_bc2').css('left',offset_left+tile_w+tile_space_w);
$(n+'3, '+n+'6, '+n+'9, .div_bc3').css('left',offset_left+(tile_w+tile_space_w)*2);

$(n+'1, '+n+'2, '+n+'3').css('top',offset_top);
$(n+'4, '+n+'5, '+n+'6').css('top',offset_top+tile_h+tile_space_h);
$(n+'7, '+n+'8, '+n+'9').css('top',offset_top+(tile_h+tile_space_h)*2);
//size
$('.div_grid_default').css('height',tile_h);
$('.div_grid_default, .div_bc1, .div_bc2, .div_bc3').css('width',tile_w);
//breadcrumbs
$('.div_bc1, .div_bc2, .div_bc3').css('height',bc_h).css('line-height',bc_h+'px');
$('.div_bc1, .div_bc2, .div_bc3').css('top',offset_top-bc_h-tile_space_h);
//subtitle
$('.div_subtitle').css('bottom',offset_top-40);
$('.div_subtitle').css('left',offset_left);
$('.div_subtitle').css('width',w-(offset_left*2));
//additional left menu
$('.div_nav_mod').css('width',offset_left-tile_space_h);


//END 
}
