var dx = 0;
var objList = new Array();
var current = null;
var zIndexTop = 0;
var WorkingPercentFieldName = "";
var RulerName = "";
var WorkingStatusName = "";


// ===============================================================================================================================
// Wenn in Aufgabenlisten ein Aufruf mittels Checkbox an den teamWorks-Client gesendet wird, dann sollen alle anderen Checkboxen
// disabled werden
// ===============================================================================================================================
function disabledallCheckboxes() {
  lLength = document.getElementsByTagName('input').length -1;

  while(lLength != -1) {
    document.getElementsByTagName('input')[lLength].disabled = true;
    lLength--;
  }
}

// ===============================================================================================================================
// SetWorkingStatusName
// ===============================================================================================================================
function SetWorkingStatusName(aname) {
  WorkingStatusName = aname;
}

// ===============================================================================================================================
// SetRulerName
// ===============================================================================================================================
function SetRulerName(aname) {
  RulerName = aname;
}

// ===============================================================================================================================
// SetWorkingPercentFieldName
// ===============================================================================================================================
function SetWorkingPercentFieldName(aname) {
  WorkingPercentFieldName = aname;
}

// ===============================================================================================================================
// init
// ===============================================================================================================================
function init() {
  // Event Capturing
  if (isW3C) {
    document.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP);
    document.onmousedown = startDrag;
    this.onmouseout = endDrag;
  }
  else {
    document.onmousedown = startDrag;
    document.onmouseup = endDrag;
  }
}

// ===============================================================================================================================
// startDrag
// ===============================================================================================================================
function startDrag(e) {
  var found = false;
  var i = objList.length;
  var lworkingpercentfield = "";

  if (isW3C) {
    var obj = e.target;
    if  ((obj.parentNode.id != null) && (obj.parentNode.id.indexOf(RulerName) != -1)) {
      current = obj.parentNode.style;
      
      dx = e.clientX - parseInt(current.left);

      // Setze Objekt nach oben
      zIndexTop++;
      current.zIndex = zIndexTop;
      
      document.captureEvents(Event.MOUSEMOVE);
      document.onmousemove = drag;
      return false;
    }
    else {
      lworkingpercentfield = GetObjDiv(WorkingPercentFieldName);
      this.form.lworkingpercentfield.focus();
    }
  }
  if ( (isIE) || (isOpera) ) {
    var obj = window.event.srcElement;
    if ((obj.parentElement != null) && (obj.parentElement.id.indexOf(RulerName) != -1)) {
      current = obj.parentElement.style;
      
      dx = window.event.clientX - current.pixelLeft;
		
      // Setze Objekt nach oben
      zIndexTop++;
      current.zIndex = zIndexTop;
      
      document.onmousemove = drag;
      return false;
    }
  }

  // Benutzer hat auf kein Objekt geklickt
  current = null;
  return false;
}

// ===============================================================================================================================
// drag
// ===============================================================================================================================
function drag(e) {
  if (current != null) {
    if (isW3C) {
      if ((parseInt(e.clientX) - dx <= 100) && (parseInt(e.clientX) - dx >= 0)) {
        current.left = moduloRuler(parseInt(e.clientX) - dx);
      }
    }

    if ( (isIE) || (isOpera) ) {
      if ((window.event.clientX - dx <= 100) && (window.event.clientX - dx >= 0)) {
        current.pixelLeft = moduloRuler(window.event.clientX - dx);
      }
    }
  }
  return false;
}

// ===============================================================================================================================
// moduloRuler -> Berechnet den jeweils 5 Schritt beim Schieberegler
// ===============================================================================================================================
function moduloRuler(x) {
  if (x % 5 == 0) {
    return x;
  }
  else if (x % 5 >= 3) {
    return x + ( 5 - x % 5 );
  }
  else {
    return x - x % 5;
  }
}

// ===============================================================================================================================
// endDrag
// ===============================================================================================================================
function endDrag(e) {
  if ((isNav4) || (isW3C)) {
    document.releaseEvents(Event.MOUSEMOVE);
  }

  currentPixel()
  current = null;
  document.onmousemove = null;
  
  return false;
}

// ===============================================================================================================================
// currentPixel
// ===============================================================================================================================
function currentPixel() {
  if (current != null){
    var objStatus = GetObjDiv(WorkingStatusName);
    divobj = GetObjDiv(WorkingPercentFieldName);
    if (isW3C) {
      divobj.value = parseInt(current.left, 10);
      if ( objStatus != null ) {
        SetWorkingStatus(divobj.value, objStatus);
      }
    }
    if ( (isIE) || (isOpera) ) {
      divobj.value = parseInt(current.pixelLeft, 10);
      if ( objStatus != null ) {
        SetWorkingStatus(divobj.value, objStatus);
      }
    }
  }
}

// ===============================================================================================================================
// setRuler
// ===============================================================================================================================
function setRuler(aRulerName, aWorkingPercentName){
  var lruler = GetObjDiv(aRulerName);
  var Workingpercent = GetObjDiv(aWorkingPercentName); 
  if ((isNaN(Workingpercent.value)) || (Workingpercent.value < 0) || (Workingpercent.value > 100) || (Workingpercent.value == null)) {
    Workingpercent.value = parseInt(lruler.style.left);
    return false;
  }
  else {
    lruler.style.left = parseInt(Workingpercent.value,10);
  }
}

// ===============================================================================================================================
// Aufgaben aus der Liste auf erledigt setzen          /////////
// ===============================================================================================================================
function SetTodoOnChecked( aStatus, aDialogMsg, AGuid ) {
var lChecked;

  if (aStatus.checked == false) {
    lChecked = "no";
    Check = confirm(aDialogMsg);
  }
  else {
    lChecked = "yes";
    Check = confirm(aDialogMsg);
  }

  if(Check == true){
    aStatus.disabled = true;
    location.href = AGuid + "&SetTodoOnChecked=" + lChecked;
    return true;
  }
  else {
    aStatus.checked = !aStatus.checked;
    return false;
  }
}

// ===============================================================================================================================
// SetWorkingStatus
// ===============================================================================================================================
function SetWorkingStatus( intPercent, objStatus) {
  if ( objStatus != null ) {
    if ( objStatus.selectedIndex == 3 ) {
    }
    else {
      if ( intPercent == 0 ) {
        objStatus.options[0].selected = true;
      }
      else if ( intPercent == 100 ) {
        objStatus.options[2].selected = true;
      }
      else if ( ( intPercent > 0 ) && ( intPercent < 100 ) ) {
        objStatus.options[1].selected = true;
      }
    }
  }
  return;
}

// ===============================================================================================================================
// SetWorkingPercent
// ===============================================================================================================================
function SetWorkingPercent( objStatus, aWorkingPercentName, aRulerName ) {
  var strStatus = objStatus.value;
  var objPercent = GetObjDiv(aWorkingPercentName); 
  var BrowserVersion = (navigator.appVersion).toUpperCase();

  if ( strStatus.indexOf("erledigt") > -1 ) {
    objPercent.value = 100;
    if (BrowserVersion.indexOf("MAC") == -1) {
      setRuler(aRulerName, aWorkingPercentName);
    }
  }
  else if ( strStatus.indexOf("noch nicht begonnen") > -1 ) {
    objPercent.value = 0;
    if (BrowserVersion.indexOf("MAC") == -1) {
      setRuler(aRulerName, aWorkingPercentName);
    }
  }
  return;
}

// ===============================================================================================================================
// CheckDisplayModus
// ===============================================================================================================================
function CheckDisplayModus(AStyleObject, AValue) {
  if (AValue.indexOf('nicht in Bearbeitung')>-1) {
    AStyleObject.style.display = "inline";
  }
  else {
    AStyleObject.style.display = "none";
  }
}

// ===============================================================================================================================
// changeCheckedStatus
// ===============================================================================================================================
function changeCheckedStatus(aObj,aListID) {
  // Hier wird die Konsistenz der Prioritaets-Alle-Box gewaehrleistet
    var cbTodoPriorityA   = GetObjDiv("TodoPriorityA"+aListID);
    var cbTodoPriorityB   = GetObjDiv("TodoPriorityB"+aListID);
    var cbTodoPriorityC   = GetObjDiv("TodoPriorityC"+aListID);

  if ((aObj.value == "TodoPriorityA") || (aObj.value == "TodoPriorityB") || (aObj.value == "TodoPriorityC")) {
    if ((cbTodoPriorityA.checked == false) && (cbTodoPriorityB.checked == false) && (cbTodoPriorityC.checked == false)) {
      cbTodoPriorityA.checked = true;
    }
  }

  // Hier wird die Konsistenz der Datums-Alle-Box gewaehrleistet
    var cbTodoDateAll        = GetObjDiv("TodoDateAll"+aListID);
    var cbTodoDateToday      = GetObjDiv("TodoDateToday"+aListID);
    var cbTodoDateNextWeek   = GetObjDiv("TodoDateNextWeek"+aListID);
    var cbTodoDateNextMonth  = GetObjDiv("TodoDateNextMonth"+aListID);
  if (aObj.value == "TodoDateAll") {
    cbTodoDateToday.checked = false;
    cbTodoDateNextWeek.checked = false;      
    cbTodoDateNextMonth.checked = false;      
  }  
  if (aObj.value == "TodoDateToday") {
    cbTodoDateAll.checked = false;
    cbTodoDateNextWeek.checked = false;      
    cbTodoDateNextMonth.checked = false;      
  }  
  if (aObj.value == "TodoDateNextWeek") {
    cbTodoDateAll.checked = false;      
    cbTodoDateToday.checked = false;
    cbTodoDateNextMonth.checked = false;      
  }    
  if (aObj.value == "TodoDateNextMonth") {
    cbTodoDateAll.checked = false;      
    cbTodoDateToday.checked = false;
    cbTodoDateNextWeek.checked = false;      
  }    
  
  // Hier wird die Konsistenz der Status-Alle-Box gewaehrleistet
  var cbTodoStatusAll    = GetObjDiv("TodoStatusAll"+aListID);
  var cbTodoStatusOpen   = GetObjDiv("TodoStatusOpen"+aListID);
  var cbTodoStatusClosed = GetObjDiv("TodoStatusClosed"+aListID);
  if (aObj.value == "TodoStatusAll") {
    cbTodoStatusOpen.checked = false;
    cbTodoStatusClosed.checked = false;
  }  
  if (aObj.value == "TodoStatusOpen") {
    cbTodoStatusAll.checked = false;
    cbTodoStatusClosed.checked = false;
  }  
  if (aObj.value == "TodoStatusClosed") {
    cbTodoStatusAll.checked = false;
    cbTodoStatusOpen.checked = false;
  }  
}
