if (!window.console || !console.firebug)
{
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];

    window.console = {};
    for (var i = 0; i < names.length; ++i)
        window.console[names[i]] = function() {}
}

var savingcount = 0
function updaterank(playerlist) {
    var sequence = playerlist.children()
		var a  = 1;

    for ( var i = 0; i < sequence.length; i++) {
//        $('#' + sequence[i].id + ' div.playerrank').html(i + 1 + '.');
				var el = $('#' + sequence[i].id);

				var num = el.attr('currank')
			  if (num != (i + 1)) {
					var str = el.html();
					var num = parseInt(str.substring(0,str.indexOf('.')));
					var endstr = str.substring(str.indexOf('.'),str.length);
					el.html((i+1).toString() + endstr);
					el.attr('currank',(i+1).toString());
      
          
          
				}
				
				var oldrank = parseInt($(sequence[i]).attr('oldrank'));
				var newrank = (i + 1);
          if (newrank > oldrank) {
              if ($('#' + sequence[i].id + ' img.lower').length == 0) {
              $('#' + sequence[i].id + ' img').remove() 
              $('#' + sequence[i].id).append('<img src="/images/down.gif" class="lower" style="display:inline;"></img>');
              }
          }
          else if (newrank < oldrank) {
              if ($('#' + sequence[i].id + ' img.higher').length == 0) {
                $('#' + sequence[i].id + ' img').remove() 
                $('#' + sequence[i].id).append('<img src="/images/up.gif" class="higher" style="display:inline;"></img>');
              }
          }
          else {
            $('#' + sequence[i].id + ' img').remove();
          }
        

/*
				if (newrank > oldrank) {
					$('#' + sequence[i].id + ' img.lower').addClass('showinline').removeClass('hideinline');
					$('#' + sequence[i].id + ' img.higher').addClass('hideinline').removeClass('showinline');
				}
				else if (newrank < oldrank) {
					$('#' + sequence[i].id + ' img.lower').addClass('hideinline').removeClass('showinline');
					$('#' + sequence[i].id + ' img.higher').addClass('showinline').removeClass('hideinline');
				}
				else {
					$('#' + sequence[i].id + ' img.lower').removeClass('showinline').addClass('hideinline');
					$('#' + sequence[i].id + ' img.higher').removeClass('showinline').addClass('hideinline');

				}
*/
        
    }
}
Array.prototype.compare = function(testArr) {
    var matches = true
    if (this.length != testArr.length) return false;
    for (var i = 0; i < testArr.length; i++) {
      if (this[i] != testArr[i]) {
        matches =  false;
      }
    }
    return matches;

}

function sortpositions(a,b) {
  return a.position - b.position
}
function saveplayerlist(id,value) {
  increasesavingcount();
  $.post('/savelistsession/',{'listid':id,'listorder':value,'pageid':pageid},decreasesavingcount);
}
function increasesavingcount() {
  savingcount = savingcount + 1
  if ($('#navlistStats li.loadingicon').length == 0) {
//  $('#navlistStats').append('<li class="loadingicon"><img class="loadingicon" src="/images/ajax-loader.gif"></img></li>');
  }

}
function decreasesavingcount() {
  if (savingcount > 0) {
    savingcount = savingcount -1
  }
  else {
    savingcount = 0
  }
  if (savingcount == 0) {
//    $('li.loadingicon').remove();
  }
}

function playerpositionschanged(e,ui) {
  /*
  playerpositionschanged.index = ++playerpositionschanged.index|| 0;
  if (playerpositionschanged.index > 0) {
    setTimeout('decreasesavingcount()',1500);   
    delete(playerpositionschanged.index);
    return false
  }
  if ((typeof(ui) != 'undefined') && (typeof(ui.element) != 'undefined')) {

  if (typeof(ui.element[0]) !='undefined') {
  updaterank($('#' + ui.element[0].id));
  var a = Array();
  children =  $('#' + ui.element[0].id).children()
  for (i = 0; i < children.length; i++) { 
      a[i] = children[i].id;
  }
  }
  
  saveplayerlist(ui.element[0].id,$.toJSON(a),playerpositionschanged)
  
  }
  */
  if (ui.el != 'undefined') {
    var el = $('#' + ui.element[0].id);
    if (el.length > 0) {
      var a = [];
      children = el.children();
      for (var i = 0; i < children.length; i++) {
        a[a.length] = children[i].id;
      }
      updaterank(el);
      saveplayerlist(el[0].id,$.toJSON(a));
    }
  }
  
}
function playercolumnschanged(e,ui) {
  headerup();
  playercolumnschanged.index = ++playercolumnschanged.index || 0;
  if (playercolumnschanged.index >= $('td.playercolumn').length) {
    delete(playercolumnschanged.index)
    return false
  }
  var column = $('td.playercolumn').get()[playercolumnschanged.index];
  var b = Array();
  var children = $(column).children()
    for (var i = 0; i < children.length; i ++) {
        b[i] = children[i].id;
    }
    saveplayerlist(column.id,$.toJSON(b),playercolumnschanged);

}

function makesortable() {
  $('div.playerlist').sortable({
        axis:'y',
        distance:3,
        stop:playerpositionschanged
        });
//      updaterank($(playerlist));
  $('td.playercolumn').sortable({
        connectWith:['.playercolumn'],
        items:'.positionsortable',
        placeholder:'playersmoving',
        handle:'.header',
        zIndex:100,
        helper:playerhelper,
        stop:playercolumnschanged
        });
playerlists = $('div.playerlist')
  for (var i = 0; i < playerlists.length; i++) {
		updaterank($(playerlists[i]))
	}

  $('.expand').click(expandplayerlist);
  $('.contract').click(contractplayerlist);
  $('.expand').bind('mousedown',function (e) {
      e.stopPropagation();
      });
  $('.contract').bind('mousedown',function(e) {
      e.stopPropagation();
      });
  $('.header').bind('mousedown',headerdown);
}
function headerdown(e) {
  $('td.playercolumn').addClass('dragging');
}
function headerup(e) {
  $('td.playercolumn').removeClass('dragging');
}
function expandplayerlist(e) {
  e.stopPropagation();
  el = e.currentTarget || window.event.srcElement.parentNode;
  $(el).hide();
  $('#position' + $(el).attr('feed') + ' .contract').show();
  $('#position' + $(el).attr('feed') + ' .playerlist').slideDown(300);
  return false;
}
function playerhelper(e) {
 $(document.body).append('<div id="helper"></div>');
  return $('#helper')
}
function contractplayerlist(e) {
  e.stopPropagation();
  el = e.currentTarget || window.event.srcElement.parentNode;
  $(el).hide();
  $('#position' + $(el).attr('feed') + ' .expand').show();
  $('#position' + $(el).attr('feed') + ' .playerlist').slideUp(300);
  return false;
}





function resortbycookie() {
  $('td.playercolumn').each(function (j,column) {
      if (listordering[column.id] != null) {
        cookie = listordering[column.id];
        els = $.evalJSON(cookie);
        for (i in els) {
          e = $('#' + els[i]).remove();
          $(column).append(e)
        }
        }
  });
        

  $('div.playerlist').each(function (j,el) {
      if (listordering[el.id] != null) {
        cookie = listordering[el.id];
        els = $.evalJSON(cookie)
        for (i in els) {
          e = $('#' + els[i]).remove();
          $(el).append(e);
        }
      updaterank($(el));
      }

    });
    
}

function savelayoutclicked(e) {
  if (savelayoutclicked.index != 1) {
    increasesavingcount();
  }
  if (savingcount > 1) {
    savelayoutclicked.index = 1;
    setTimeout(savelayoutclicked,500,e);
    return false
  }
  else {
    savelayoutclicked.index = 0;
  }
  $.post('/saveuser/',{xhr:'true',pageid:pageid},function () {
      setTimeout('decreasesavingcount()',1500);
      },decreasesavingcount
      
      );
}
function gettime() {
  var d = new Date();
  return d.getTime()/1000.0
}
function gettimediff(time1,time2) {
  return (time1-time2)
}
function resetlayoutclicked(e) {

  var a = [];
  var b = []
  sortables = $('div.positionsortable')
  for (i=0; i < sortables.length; i++) {
    a[a.length] = sortables[i]
    b[b.length] = sortables[i]
  }
   a.sort(function (a,b) {
       return parseInt($(a).attr('orposition')) - parseInt($(b).attr('orposition'))
   });
   if (b.compare(a) == false) {

  for (i = 0; i < a.length; i++) {
    d = $(a[i]);
//    d = d.remove();
    $('#playercolumn' + d.attr('orcolumn')).append(d);
  }


   }
  sortables = $('div.positionsortable')
  for ( var i = 0; i < sortables.length; i++) {
    var players = [];
    var nplayers = []
    var s = $('#' + sortables[i].id + ' .feeditem');
    for (j = 0; j < $(s).length; j++) {
      players[players.length] = s[j];
      nplayers[nplayers.length] = s[j];

    }
    nplayers.sort(function (a,b) {
        return parseInt($(a).attr('realrank')) - parseInt($(b).attr('realrank'))
    });
    if (nplayers.compare(players) == false) {
    p = $('#' + sortables[i].id + ' .playerlist').prev()
    var playerlist = $($('#' + sortables[i].id + ' .playerlist')[0])
//    playerlist.children().remove()

    var frag = document.createDocumentFragment();
    for (j = 0; j< nplayers.length; j++) {
/*      d = $(nplayers[j]).clone();
      frag.appendChild(d[0]);
      */
      frag.appendChild($(nplayers[j])[0])
    }
    playerlist.append(frag);
    updaterank(playerlist);
/*
    for (j = 0; j < nplayers.length; j++) {
      d = $(nplayers[j]).remove();
      s = '#' + $('.positionsortable')[i].id + ' .playerlist'
//      $($(s)[0]).append(d);
      playerlist.append(d);
    }
    $(p).after(playerlist)
    */
    
    //have to make it sortable again...
    // have to resave the list to the server as cached
    playerpositionschanged(0,{element:[$('#' + sortables[i].id + ' .playerlist')[0]]});
    }
  }
  playercolumnschanged();

/*  $('div.playerlist').sortable({
        axis:'y',
        distance:3,
        stop:playerpositionschanged
    });
    $('.expand').click(expandplayerlist);
  $('.contract').click(contractplayerlist);
  $('.expand').bind('mousedown',function (e) {
      e.stopPropagation();
      });
  $('.contract').bind('mousedown',function(e) {
      e.stopPropagation();
      });
  $('.header').bind('mousedown',headerdown);
  */
}
function remakeplayersort(list) {
  if ($(list).hasClass('playercolumn')) {
    $('#' + list.id + ' .playerlist').sortable('destroy'); 
    $('#' + list.id + ' .playerlist').sortable ({
        axis:'y',
        distance:3,
        stop:playerpositionschanged
    });
  }

  if ($(list).hasClass('positionsortable')) {
    $('#' + list.id + ' .playerlist').sortable('destroy');
    $('#' + list.id + ' .playerlist').sortable ({
        axis:'y',
        distance:3,
        stop:playerpositionschanged
    });
  }
  if ($(list).hasClass('playerlist')) {
    /*
    $(list).sortable('destroy');
    $(list).sortable({
        axis:'y',
        distance:3,
        stop:playerpositionschanged
    });
    */
  
    playerpositionschanged(0,{element:[$(list)[0]]}); 
   
  }
  playerlists = $('div.playerlist');
  for (var l = 0; l < playerlists.length; l++) {
    updaterank($(playerlists[l]));
  }
}
function loadlayoutclicked(e) {
  if (savingcount > 0) {
    setTimeout(loadlayoutclicked,500,e);
    return false;
  }
  increasesavingcount();
  $.getJSON('/loaduser/',{xhr:'true',pageid:pageid},function (res) {
      pc = false
      remakelists = []
      for (i = 0; i < res.lists.length; i++) {
        col = res.lists[i];
        if (col.listname != 'undefined') {
          order = eval(col.listorder);
          var list1 = []
          list = $('#' + col.listname).children()
          for (var j = 0; j < list.length; j++) {
            list1[list1.length] = list[j].id
          }
          if (list1.compare(order) == false) {
            var frag = document.createDocumentFragment();
            for (var k = 0; k < order.length; k++) {
              el = $('#' + order[k])
              if (el.length != 0) {
              frag.appendChild(el[0]);
              }
            }
//            $('#' + col.listname).children().remove();
            $('#' + col.listname).append(frag);
            remakelists[remakelists.length] = $('#' + col.listname)[0]
          }
        }
        
        
      }
      for ( var i = 0; i < remakelists.length; i ++) {
        remakeplayersort(remakelists[i]);
      }
      decreasesavingcount();
    
  }); 
  
}
$(document).ready(function () {
    $('#savelayout').bind('click',savelayoutclicked);
    $('#resetlayout').bind('click',resetlayoutclicked);
    $('#loadlayout').bind('click',loadlayoutclicked);
    $.get('/images/ajax-loader.gif');
//resortbycookie();
makesortable();
});





