/* common */
if(document.captureEvents)document.captureEvents(Event.KEYPRESS);

function getFieldNamed(fieldname)
{
    for (var i = 0; i < document.forms[0].elements.length; i++ )
    {
       if (document.forms[0].elements[i].name == fieldname) {
            return  document.forms[0].elements[i];
       }
    }
  //  alert ("fieldname: " + fieldname + " not found");
    return null;
}

function getFieldNamedZuFormName(fieldname,formname)
{
   // alertAllFormNames ();
    var searchform = document.forms[formname];

    for (var i = 0; i < searchform.elements.length; i++ )
    {
       if (searchform.elements[i].name == fieldname) {
            return  searchform.elements[i];
       }
    }
    alert ("fieldname: " + fieldname + " not found");
    return null;
}

function alertAllFormNames()
{
 for (var j = 0; j < 10; j++ )
   if ( document.forms[j])
       alert(j + "  " + document.forms[j].name);
 return true;
}

function getRadioNamedZuFormNameWithValue(radioname, formname, radiovalue)
{
     var searchform = document.forms[formname];
    for (var i = 0; i < searchform.elements.length; i++ )
    {
       if (searchform.elements[i].name == radioname && searchform.elements[i].value == radiovalue) {
             return  searchform.elements[i];
       }
    }
  //  alert ("radioname: " + radioname +  " with value " + radiovalue + " not found");
    return null;
}

function alertNoBackButton()
{
     alert(jsNoBackButtonText);
     return true;
}

/* zoom */
 function doZoomMouseControl(event,zoomImage)
 {
      var zoomValue = 999;
      if (window.event) /* e.g. navigator.appName == "MicroSky Internet Explorer" */
      {
            zoomValue =event.offsetX;
      }
      else if (event.target) /* e.g. navigator.appName == "Mozilla" */
      {
         var coords = {x: 0, y: 0 };
         var el = event.target;
         do {
             coords.x += el.offsetLeft;
             }
         while ((el = el.offsetParent));
         
         var offsetX = event.clientX - coords.x;
         zoomValue =offsetX;
      }
      else if (event.layerX != null) /* e.g. navigator.appName == "Netscape" */
      {
          zoomValue =event.layerX;
      }
      if (zoomValue != 999)
      {
         if (zoomValue < 2)
            zoomValue = 2;
         if (zoomValue % 2 != 0)
            zoomValue++;

         window.status= Math.round(zoomValue/2).toString() + "°";
      }
      return true;
}

function leaveZoomMouseControl(zoomImage)
 {
     window.status='';
     return true;
}

/* logon */
function logonSetFocus()
{
      getFieldNamed('submit.confirm').focus();
}

function logonSubmitFormOnEnter(event)
{
     var keyCode = document.all? window.event.keyCode : event.which;
     if (keyCode == 13)
     {
          getFieldNamed('submit.confirm').click();
          return false;
     }
     return true;
}

/* registration */
function registrationSetFocus()
{
      getFieldNamed('submit.save').focus();
}

 function registrationSubmitFormOnEnter(event)
{
     var keyCode = document.all? window.event.keyCode : event.which;
     if (keyCode == 13)
     {
          getFieldNamed('submit.save').click();
          return false;
     }
      return true;
}

/* settingbundle */
function settingbundleSetFocus()
{
    if (getFieldNamed('submit.apply'))
         getFieldNamed('submit.apply').focus();
    else if (getFieldNamed('submit.confirm'))
         getFieldNamed('submit.confirm').focus();

    if (getFieldNamed('settingbundle.saved').value == "Nein")
         getFieldNamed('settingbundle.name').focus();

    if (getFieldNamed('submit.centerObject'))
       {
        if (getFieldNamed('settingbundle.objectName').value == "" )
           getFieldNamed('submit.centerObject').disabled = true;

       }
    if (getFieldNamed('submit.centerConstellation'))
         getFieldNamed('submit.centerConstellation').disabled = true;

    if (getFieldNamed('submit.centerSolarsystemObject'))
         getFieldNamed('submit.centerSolarsystemObject').disabled = true;

    if (!getFieldNamed('settingbundle.useSpecialDate').checked)
       {
          getFieldNamed('settingbundle.inputSpecialDate.year').disabled = true;
          getFieldNamed('settingbundle.inputSpecialDate.month').disabled = true;
          getFieldNamed('settingbundle.inputSpecialDate.day').disabled = true;
          getFieldNamed('settingbundle.inputSpecialDate.hours').disabled = true;
          getFieldNamed('settingbundle.inputSpecialDate.minutes').disabled = true;
          getFieldNamed('settingbundle.inputSpecialDate.seconds').disabled = true;
       }
    return true;
}

function settingbundleSubmitFormOnEnter(event)
{
     var keyCode = document.all? window.event.keyCode : event.which;
     if (keyCode == 13)
     {
          getFieldNamed('submit.apply').click();
          return false;
     }
      return true;
}

function settingbundleGetSettingvalueNamed(settingvaluename)
{
  for (var i = 0; i < settingvalueArray.length; i++)
    {
      if (settingvalueArray[i] == settingvaluename)
           return getFieldNamed('settingbundle.settingvalues[' + i + '].settingvalue');
    }

   alert('Settingvalue: ' + settingvaluename + 'nicht gefunden');
   return null;
}


function settingbundleOkularChanged()
{
     settingbundleGetSettingvalueNamed('angle').value = 0;
     return true;
}

function settingbundleUseSpecialDateChanged()
{
  if (getFieldNamed('settingbundle.useSpecialDate').checked)
    {
     getFieldNamed('settingbundle.inputSpecialDate.year').disabled = false;
     getFieldNamed('settingbundle.inputSpecialDate.month').disabled = false;
     getFieldNamed('settingbundle.inputSpecialDate.day').disabled = false;
     getFieldNamed('settingbundle.inputSpecialDate.hours').disabled = false;
     getFieldNamed('settingbundle.inputSpecialDate.minutes').disabled = false;
     getFieldNamed('settingbundle.inputSpecialDate.seconds').disabled = false;
    }
     else {
        getFieldNamed('settingbundle.inputSpecialDate.year').disabled = true;
        getFieldNamed('settingbundle.inputSpecialDate.month').disabled = true;
        getFieldNamed('settingbundle.inputSpecialDate.day').disabled = true;
        getFieldNamed('settingbundle.inputSpecialDate.hours').disabled = true;
        getFieldNamed('settingbundle.inputSpecialDate.minutes').disabled = true;
        getFieldNamed('settingbundle.inputSpecialDate.seconds').disabled = true;
     }
     return true;
}

function settingbundleShowObjectsClicked()
{
   if (settingbundleGetSettingvalueNamed('showObjects').checked)
              settingbundleGetSettingvalueNamed('showOnlySelectedObject').checked = false;
   return true;
}

function settingbundleShowOnlySelectedObjectClicked()
{
   if (settingbundleGetSettingvalueNamed('showOnlySelectedObject').checked)
           settingbundleGetSettingvalueNamed('showObjects').checked = false;
    return true;
}

function settingbundleImageClicked()
 {
       return (getFieldNamed('settingbundle.saved').value == "Ja" )
}

function settingbundleObjectSelected()
{
 var selectedObjectIndex = getFieldNamed('settingbundle.objectName').selectedIndex;
   if ( selectedObjectIndex > -1)
    {
      getFieldNamed('settingbundle.objectDescription').value = descriptionArray[selectedObjectIndex];

      getFieldNamed('settingbundle.constellationName').selectedIndex = -1;
      getFieldNamed('settingbundle.solarsystemObjectName').selectedIndex = -1;

      getFieldNamed('submit.centerObject').disabled = false;
      getFieldNamed('submit.centerConstellation').disabled = true;
      getFieldNamed('submit.centerSolarsystemObject').disabled = true;
   }
   return true;
 }

function settingbundleSolarsystemObjectSelected()
{
   if (getFieldNamed('settingbundle.solarsystemObjectName').selectedIndex > -1)
    {
      getFieldNamed('settingbundle.objectDescription').value = '';

      getFieldNamed('settingbundle.objectName').selectedIndex = -1;
      getFieldNamed('settingbundle.constellationName').selectedIndex = -1;

      getFieldNamed('submit.centerObject').disabled = true;
      getFieldNamed('submit.centerConstellation').disabled = true;
      getFieldNamed('submit.centerSolarsystemObject').disabled = false;
   }
   return true;
}

function settingbundleConstellationSelected()
{
   if (getFieldNamed('settingbundle.constellationName').selectedIndex > -1)
    {
      getFieldNamed('settingbundle.objectDescription').value = '';

      getFieldNamed('settingbundle.objectName').selectedIndex = -1;
      getFieldNamed('settingbundle.solarsystemObjectName').selectedIndex = -1;

      getFieldNamed('submit.centerObject').disabled = true;
      getFieldNamed('submit.centerConstellation').disabled = false;
      getFieldNamed('submit.centerSolarsystemObject').disabled = true;
   }
   return true;
}

function settingbundleSubmitSearchCatalogOnEnter(event)
{
     var keyCode = document.all? window.event.keyCode : event.which;
     if (keyCode == 13)
     {
          getFieldNamed('submit.searchCatalog').click();
          return false;
     }
      return true;
}

function settingbundleSubmitSearchCatalogOnEnterOnlyInteger(event)
{
    var keyCode = document.all? window.event.keyCode : event.which;
    if (!settingbundleSubmitSearchCatalogOnEnter(event))
        return false;

     if (keyCode > 31 && (keyCode < 48 || keyCode > 57))
                  return false;

     return true;
}

/* animationAdmin */
 function animationAdminSetFocus()
{
    if (getFieldNamed('person.userIsReadOnly').value == "false"){
        getFieldNamed('actualObject.name').focus();
        getFieldNamed('submitAnimate').disabled=true;
    }
}

function animationAdminSubmitFormOnEnter(event)
{
     var keyCode = document.all? window.event.keyCode : event.which;
     if (keyCode == 13)
     {
          getFieldNamed('submitChange').click();
          return false;
     }
     return true;
}

function animationAdminSubmitFormOnEnterChange(event)
{
     var keyCode = document.all? window.event.keyCode : event.which;
     if (keyCode == 13)
     {
          getFieldNamed('submitAnimate').click();
          return false;
     }
     return true;
}

function animationAdminCountImagesToAnimateChanged()
{
     if (getFieldNamed('actualObject.countImagesToAnimate').value != actualSize)
        getFieldNamed('submitAnimate').disabled=false;
     else
        getFieldNamed('submitAnimate').disabled=true;
     return true;
}

/* Common for easy AdminSites */
function commonAdminSetFocus()
{
     if (getFieldNamed('person.userIsReadOnly').value == "false")
        getFieldNamed('actualObject.name').focus();
}

 function commonAdminSubmitFormOnEnter(event)
{
     var keyCode = document.all? window.event.keyCode : event.which;
     if (keyCode == 13)
     {
          getFieldNamed('submitChange').click();
          return false;
     }
      return true;
}

function commonAdminSubmitFormOnEnterOnlyInteger(event)
{
    var keyCode = document.all? window.event.keyCode : event.which;
    if (!commonAdminSubmitFormOnEnter(event))
        return false;
    if (keyCode > 31 && (keyCode < 48 || keyCode > 57))
        return false;
     return true;
}

function commonAdminSubmitFormOnEnterOnlyDezimal(event, fieldname)
{
    var keyCode = document.all? window.event.keyCode : event.which;
    if (keyCode == 46  || keyCode == 44)
            return ((getFieldNamed(fieldname).value.indexOf(',') < 0) && (getFieldNamed(fieldname).value.indexOf('.') < 0)) ;
    if (!commonAdminSubmitFormOnEnterOnlyInteger(event))
        return false;
    return true;
}

/* okularAdmin */
function okularAdminCalculateViewAngle()
{
    var telescopeFocallength = parseFloat(getFieldNamed('actualObject.telescopeFocallength').value);
  	var okularFocallength = parseFloat(getFieldNamed('actualObject.okularFocallength').value);
  	
  	var barlowRounded1 = parseFloat(getFieldNamed('actualObject.humanBarlow').value).toFixed(1);
  	getFieldNamed('actualObject.humanBarlow').value = barlowRounded1;
  	
  	var humanAngleRounded2 = parseFloat(getFieldNamed('actualObject.humanAngle').value).toFixed(2);
  	getFieldNamed('actualObject.humanAngle').value =  humanAngleRounded2;
  	
		var viewAngleRounded2 = ((humanAngleRounded2/(telescopeFocallength/okularFocallength))/barlowRounded1).toFixed(2);
 	
		getFieldNamed('actualObject.viewAngle').value = viewAngleRounded2;
}

/* starlitSkyJSF */
 function starlitSkySearchObjectSetFocus()
{
    getFieldNamedZuFormName('searchObject:searchObjectForm:searchText','searchObject:searchObjectForm').focus();
    return true;
}

function starlitSkySearchObjectCatalogChanged()
{
    starlitSkyCleanSearchObjectText();
    getFieldNamedZuFormName('searchObject:searchObjectForm:searchText','searchObject:searchObjectForm').focus();

    return true;
}

function starlitSkyCleanSearchObjectText()
{
   var searchText = getFieldNamedZuFormName('searchObject:searchObjectForm:searchText','searchObject:searchObjectForm');
   var newText = '';

   if (!getRadioNamedZuFormNameWithValue('searchObject:searchObjectForm:catalogTypeId','searchObject:searchObjectForm','ANY').checked)
     {
        for ( var i=0; i < searchText.value.length; i++ )
           if (!isNaN(searchText.value.charAt(i)) && searchText.value.charAt(i)!= ' ')
                  newText = newText + searchText.value.charAt(i);
     }
     
   else
    {
     newText = searchText.value;

      /* leadingBlanks entfernen */
      var found = false;
      for ( var i=0; i < newText.length && !found; i++ )
        {
           if (newText.charAt(i) != ' ')
           {
               newText = newText.substring(i,newText.length);
               found = true;
           }
        }

       /* trailing blanks entfernen */
       found= false;
       for ( var j=newText.length - 1; j >= 0 && !found; j-- )
         {
           if (newText.charAt(j) != ' ')
           {
               newText = newText.substring(0,j+1);
               found = true;
           }
         }


       if (newText.length > 0)
         {
          /* Mehrfach-blanks entfernen */
          var newTextWithoutLeadingAndTrailingBlanks = newText;
          newText= '';
          for ( var k=0; k < newTextWithoutLeadingAndTrailingBlanks.length; k++ )
            {
             var actChar = newTextWithoutLeadingAndTrailingBlanks.charAt(k);
             var prevChar = newTextWithoutLeadingAndTrailingBlanks.charAt(k - 1);
             if (actChar != ' ' || (actChar == ' ' && prevChar != ' '))
                 newText = newText + actChar;
            }
        }

      }
     searchText.value = newText;
     return true;
}

function starlitSkySearchObjectSubmitFormOnEnter()
{
  var keyCode = document.all? window.event.keyCode : event.which;

    if (keyCode == 13) {
        getFieldNamedZuFormName('searchObject:searchObjectForm:searchObject','searchObject:searchObjectForm').click();
        return false;
    }
    
    return true;
}

function starlitSkySearchObjectKeypressed(event)
{
    var keyCode = document.all? window.event.keyCode : event.which;

    /* enter */
    if (!starlitSkySearchObjectSubmitFormOnEnter)
        return false;


    /* integer  */
    if (!getRadioNamedZuFormNameWithValue('searchObject:searchObjectForm:catalogTypeId','searchObject:searchObjectForm','ANY').checked)
          if (keyCode > 31 && (keyCode < 48 || keyCode > 57))
            return false;


   return true;
}

/* vielleicht für später ...*/
function onlyDigits(evt) {
    var keycode;

    if (evt)
        ;
    else if (window.event)
        evt = window.event;
    else if (event)
        evt = event;
    else
        return true;

    if (evt.charCode)
        keycode = evt.charCode;
    else if (evt.keyCode)
        keycode = evt.keyCode;
    else if (evt.which)
        keycode = evt.which;
    else
        keycode = 0;

    return (keycode >= 13 && keycode <= 57);
}
