// Common JavaScript
function LoadOnConfirm(spText, spURL, spTarget)
{
  if (window.confirm(spText))
  {
    if (spTarget == "")
    {
      window.location = spURL;
    }
    else
    {
      window.open(spURL, spTarget);
    }
  }
}

function Reload()
{
  window.document.location.reload();
}

var igReloadTimer = 0;

function TestXYZ()
{
  window.alert("Hallo? Wie gehts denn heute so?");
}
function SetReload(ipTimeOut)
{
  if (igReloadTimer != 0)
  {
    clearTimeout(igReloadTimer);
  }
  igReloadTimer = setTimeout("Reload()", ipTimeOut * 1000);
}

var igLoadTimer = 0;
var sgLoadURL = new String();
var sgLoadTarget = new String();

function TextAreaGetSelectedText(sInputID)
{
  var hInput = document.getElementById(sInputID);
  
        if (hInput.selectionEnd > hInput.selectionStart)
    {
      return hInput.value.substr(hInput.selectionStart, hInput.selectionEnd - hInput.selectionStart);
    }
    else
    {
      return "";
    }
  }

function TextAreaInsertText(sInputID, sText)
{
  var hInput = document.getElementById(sInputID);
  
        var sBefore = hInput.value.substr(0, hInput.selectionStart);
    var sAfter = hInput.value.substr(hInput.selectionEnd, hInput.value.length - hInput.selectionEnd);
    var iScrollPosY = hInput.scrollTop;
    var iScrollPosX = hInput.scrollLeft;
    
    var sOut = sBefore + sText + sAfter;
    hInput.value = sOut;
    hInput.setSelectionRange(sBefore.length + sText.length, sBefore.length + sText.length);
    hInput.focus();
    hInput.scrollTop = iScrollPosY;
    hInput.scrollLeft = iScrollPosX;
  }

function Load()
{
  if (sgLoadTarget == "")
  {
    window.location = sgLoadURL;
  }
  else
  {
    window.open(sgLoadURL, sgLoadTarget);
  }
}

function SetLoad(ipTimeOut, spURL, spTarget)
{
  if (igLoadTimer != 0)
  {
    clearTimeout(igLoadTimer);
  }
  sgLoadURL = spURL;
  sgLoadTarget = spTarget;
  igLoadTimer = setTimeout("Load()", ipTimeOut * 1000);
}

function PathToURL(sPath)
{
  var sOut = sPath.replace(/\\/g, "/");
  
  sOut = "file://" + sOut;
  
  return sOut;
}

function MoveSelectedEntries(sSource, sTarget)
{
  var Source = document.getElementById(sSource);
  var Target = document.getElementById(sTarget);
  var iIdx;
    
  Target.selectedIndex = -1;
  for (iIdx = 0; iIdx < Source.length; iIdx++)
  {
    if (Source.options[iIdx].selected)
    {
      var Option = document.createElement("option");
      var iPosition = null;
      
      iPosition = Target.length;
      Option.text = Source.options[iIdx].text;
      Option.value = Source.options[iIdx].value;
      Option.selected = true;
      
      var nPos = 0;
      while ((nPos < Target.options.length) &&
             (Target.options[nPos].text < Option.text))
      {
        nPos++;
      }
              Target.add(Option, Target.options[nPos]);
            Source.remove(iIdx);
      iIdx--;
    }
  }
}
function SelBoxToInput(sSource, sTarget, sSeparator)
{
  var Source = document.getElementById(sSource);
  var Target = document.getElementById(sTarget);
  var iIdx;
  var sOut = "";

  Target.selectedIndex = -1;
  for (iIdx = 0; iIdx < Source.length; iIdx++)
  {
    if (sOut != "")
    {
      sOut += sSeparator;
    }
    sOut += Source.options[iIdx].value;
  }
  Target.value = sOut;
}    
function ShiftSelectedEntries(sObject, iMoveBy)
{
  var Object = document.getElementById(sObject);
  var iIdx;
  var iTargetIdx;

  if (iMoveBy < 0)
  {
    for (iIdx = 0; iIdx < Object.length; iIdx++)
    {
      if (Object.options[iIdx].selected)
      {
        iTargetIdx = iIdx + iMoveBy;
        if (iTargetIdx < 0)
        {
          iTargetIdx = 0;
        }
        MoveEntry(sObject, iIdx, iTargetIdx);
      }
    }
  }      
  else if (iMoveBy > 0)
  {
    for (iIdx = (Object.length - 1); iIdx >= 0; iIdx--)
    {
      if (Object.options[iIdx].selected)
      {
        iTargetIdx = iIdx + iMoveBy;
        if (iTargetIdx >= Object.length)
        {
          iTargetIdx = Object.length - 1;
        }
        MoveEntry(sObject, iIdx, iTargetIdx);
      }
    }
  }      
}
function MoveEntry(sObject, iFrom, iTo)
{
  var Object = document.getElementById(sObject);
  var Option = document.createElement("option");
  var iIdx;
  
  Option.value = Object.options[iFrom].value;
  Option.text = Object.options[iFrom].text;
  Option.selected = Object.options[iFrom].selected;
  if (iFrom < iTo)
  {
    for (iIdx = iFrom; iIdx < iTo; iIdx++)
    {
      Object.options[iIdx].value = Object.options[iIdx + 1].value;
      Object.options[iIdx].text = Object.options[iIdx + 1].text;
      Object.options[iIdx].selected = Object.options[iIdx + 1].selected;
    }
  }
  else (iFrom > iTo)
  {
    for (iIdx = iFrom; iIdx > iTo; iIdx--)
    {
      Object.options[iIdx].value = Object.options[iIdx - 1].value;
      Object.options[iIdx].text = Object.options[iIdx - 1].text;
      Object.options[iIdx].selected = Object.options[iIdx - 1].selected;
    }
  }
  Object.options[iTo].value = Option.value;
  Object.options[iTo].text = Option.text;
  Object.options[iTo].selected = Option.selected;
}

function CheckInput(sID, obj)
{
  iPos = 0;
  Array = eval(sID + "_InputCheck");
  
  for (iPos = 0; iPos < Array.length; iPos++)
  {
    Array[iPos][1].style.border = "none";
  }
  
  for (iPos = 0; iPos < Array.length; iPos++)
  {
    var checkRes = eval(Array[iPos][0]);
    
    if (checkRes.length > 0)
    {
      var element = Array[iPos][1];
      var pos = 0;
      element.style.border = "solid 3px red";
      while (element)
      {
        pos += element.offsetTop;
        element = element.offsetParent;
      }
      window.scrollTo(0, pos);
      alert("Sie haben einen Fehler bei der Eingabe gemacht:\n\n" + checkRes);
      return false;
    }
  }

  return true;
}

// STDFORM JavaScript
function STDFORM_CheckTextInputNotEmpty(sName)
{
  iTextLen = document.getElementById("stdform_text_" + sName).value.length;
  
  if (iTextLen < 1)
  {
    return "Das Feld darf nicht leer sein";
  }
  return "";
}

function STDFORM_CheckDateInput(sName)
{
  iDay = parseInt(document.getElementById("stdform_date_" + sName + "_day").value, 10);
  iMonth = parseInt(document.getElementById("stdform_date_" + sName + "_month").value, 10);
  iYear = parseInt(document.getElementById("stdform_date_" + sName + "_year").value, 10);
  
  if ((iMonth < 1) || (iMonth > 12) || isNaN(iMonth))
  {
    return "Ungültiger Monat";
  }
  
  if ((iDay < 1) || isNaN(iDay))
  {
    return "Ungültiger Tag";
  }
  
  switch (iMonth)
  {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      if (iDay > 31)
      {
        return "Ungültiger Tag";
      }
      break;

    case 4:
    case 6:
    case 9:
    case 10:
      if (iDay > 30)
      {
        return "Ungültiger Tag";
      }
      break;
      
    case 2:
      if ((iYear % 4) == 0)
      {
        if (iDay > 29)
        {
          return "Ungültiger Tag";
        }
      }
      else
      {
        if (iDay > 28)
        {
          return "Ungültiger Tag";
        }
      }
      break;
  }
  if (isNaN(iYear))
  {
    return "Ungültiges Jahr";
  }
  
  return "";
}

function STDFORM_CheckTimeInput(sName)
{
  iHour = parseInt(document.getElementById("stdform_date_" + sName + "_hour").value, 10);
  iMinute = parseInt(document.getElementById("stdform_date_" + sName + "_minute").value, 10);
  iSecond = parseInt(document.getElementById("stdform_date_" + sName + "_second").value, 10);
  
  if ((iHour < 0) || (iHour > 23))
  {
    return "Ungültige Stunde";
  }
  
  if ((iMinute < 0) || (iMinute > 59))
  {
    return "Ungültige Minute";
  }
  
  if ((iSecond < 0) || (iSecond > 59))
  {
    return "Ungültige Sekunde";
  }
  
  return "";
}

function STDFORMTextBoxCheckKeyDown(sInputName, iKey)
{
  if (iKey == 9)
  {
    TextAreaInsertText("stdform_textbox_" + sInputName, "\t");
    return false;
  }
  else
  {
    return true;
  }
}

function STDFORMTextBoxCheckKeyPress(sInputName, iKey)
{
  if (iKey == 9)
  {
    return false;
  }
  else
  {
    return true;
  }
}

function STDFORMTextBoxCheckKeyUp(sInputName, iKey)
{
  if (iKey == 9)
  {
    return false;
  }
  else
  {
    return true;
  }
}

function STDFORMTextBoxInsertLink(sInputName, sURI)
{
  var sRealURI = sURI;
  var sOldText = TextAreaGetSelectedText("stdform_textbox_" + sInputName);
  
  if (sRealURI == "")
  {
    if (sOldText.search(/\@/) != -1)
    {
      sRealURI = "mailto:" + sOldText;
    }
    else
    {
      sRealURI = "http://www.";
    }
  }
  TextAreaInsertText("stdform_textbox_" + sInputName, "[" + sOldText + "|" + sRealURI + "]");
}
function STDFORMTextBoxMakeBold(sInputName)
{
  var sOldText = TextAreaGetSelectedText("stdform_textbox_" + sInputName);
  
  TextAreaInsertText("stdform_textbox_" + sInputName, "[b]" + sOldText + "[/b]");
}

function STDFORMTextBoxMakeUnderline(sInputName)
{
  var sOldText = TextAreaGetSelectedText("stdform_textbox_" + sInputName);
  
  TextAreaInsertText("stdform_textbox_" + sInputName, "[u]" + sOldText + "[/u]");
}

