/*
Autor:   Thomas Konrad
Version: 1.5b
Datum:   09.01.2011
*/


var meldung, watch_pe;

function initialize()
{
  gm_initialize();
  $R(1, 3).each(function (n)
  {
    $('container' + n).style.visibility = 'visible';
  });
  meldung = new Meldung;

  //Event Handlers
  meldung.getDataKeys().each(function (e)
  {
    Event.observe(e, 'keyup', function (event)
    {
      meldung.updateData(e);
      if (e == 'artname')
      {
        $('vogel_' + meldung.currentId).update(displayArtname($F(e)));
        autoComplete($(e), $('liste_artname'), 'text', true, event, function () { meldung.updateData('artname'); $('vogel_' + meldung.currentId).update(displayArtname($F('artname'))); });
      }
      if (e == 'anzahl_q')
        autoComplete($(e), $('liste_anzahl_q'), 'text', true, event, function () { meldung.updateData('anzahl_q'); });
      if (e == 'kreis')
        autoComplete($(e), $('liste_kreis'), 'text', true, event, function () { meldung.updateData('kreis'); });
    });

    Event.observe(e, 'focus', function (event)
    {
      meldung.updateInfo(e, 1);
    });

    //Datepicker
    if (e != 'datum')
    {
      Event.observe(e, 'focus', function (event)
      {
        hideDatePicker();
      });

      Event.observe(e, 'click', function (event)
      {
        hideDatePicker();
      });
    }
    else
    {
      Event.observe(e, 'focus', function (event)
      {
        if (!dateJustHidden)
          displayDatePicker('datum');

        dateJustHidden = false;
      });

      Event.observe(e, 'click', function (event)
      {
        if ($(datePickerDivID).style.display == 'none')
        {
          displayDatePicker('datum');
        }
      });
    }

    //Autocomplete
    if (e != 'artname')
    {
      Event.observe(e, 'focus', function (event)
      {
        $('liste_popup_artname').style.display = 'none';
      });

      Event.observe(e, 'click', function (event)
      {
        $('liste_popup_artname').style.display = 'none';
      });
    }
    else
    {
      Event.observe(e, 'focus', function (event)
      {
        $('liste_popup_artname').style.display = 'block';
      });

      Event.observe(e, 'click', function (event)
      {
        $('liste_popup_artname').style.display = 'block';
      });
    }
    if (e != 'anzahl_q')
    {
      Event.observe(e, 'focus', function (event)
      {
        $('liste_popup_anzahl_q').style.display = 'none';
      });

      Event.observe(e, 'click', function (event)
      {
        $('liste_popup_anzahl_q').style.display = 'none';
      });
    }
    else
    {
      Event.observe(e, 'focus', function (event)
      {
        $('liste_popup_anzahl_q').style.display = 'block';
      });

      Event.observe(e, 'click', function (event)
      {
        $('liste_popup_anzahl_q').style.display = 'block';
      });
    }
    if (e != 'kreis')
    {
      Event.observe(e, 'focus', function (event)
      {
        $('liste_popup_kreis').style.display = 'none';
      });

      Event.observe(e, 'click', function (event)
      {
        $('liste_popup_kreis').style.display = 'none';
      });
    }
    else
    {
      Event.observe(e, 'focus', function (event)
      {
        $('liste_popup_kreis').style.display = 'block';
      });

      Event.observe(e, 'click', function (event)
      {
        $('liste_popup_kreis').style.display = 'block';
      });
    }
  });

  Event.observe($(document), 'click', checkMouse);

  Event.observe('gemeinde', 'blur', function (event)
  {
    var options =
    {
      address: $F('gemeinde')
    };
    gm_geocoder.geocode(options, function(results, status)
    {
      if (status == google.maps.GeocoderStatus.OK)
      {
        gm_map.setCenter(results[0].geometry.location);
        gm_map.setZoom(13);
      }
    });
  });

  Event.observe('next', 'click', function (event)
  {
    if (meldung.validateMaxVogel())
      meldung.addVogel();
  });

  Event.observe('delete', 'click', function (event)
  {
    meldung.deleteVogel();
  });

  Event.observe('abbruch', 'click', function (event)
  {
    meldung.breakMeldung();
  });

  Event.observe('further', 'click', function (event)
  {
    if (meldung.validateMaxVogel())
      meldung.progress(1);
  });

  Event.observe('back', 'click', function (event)
  {
    meldung.progress(-1);
  });

  Event.observe('sendit', 'click', function (event)
  {
    meldung.finish();
  });

  Event.observe('liste_artname', 'change', function (event)
  {
    $('artname').value = $F('liste_artname');
    $('artname').focus();
    $('vogel_' + meldung.currentId).update(displayArtname($F('artname')));
    meldung.updateData('artname');
    window.setTimeout(function (e) { $('liste_popup_artname').style.display = 'none'; }, 5);
  });

  Event.observe('liste_anzahl_q', 'change', function (event)
  {
    $('anzahl_q').value = $F('liste_anzahl_q');
    $('anzahl_q').focus();
    meldung.updateData('anzahl_q');
    window.setTimeout(function (e) { $('liste_popup_anzahl_q').style.display = 'none'; }, 5);
  });

  Event.observe('liste_kreis', 'change', function (event)
  {
    $('kreis').value = $F('liste_kreis');
    $('kreis').focus();
    meldung.updateData('kreis');
    window.setTimeout(function (e) { $('liste_popup_kreis').style.display = 'none'; }, 5);
  });

  Event.observe(window, 'unload', function (event)
  {
    watch_pe.stop();
    window.clearTimeout(gm_timeout);
  });

  watch_pe = new PeriodicalExecuter(function () { watchLoader(new Array(meldung.taskFinished), function () { meldung.setLoading(1); }); }, 0.1);
}

//Hilfsfunktionen
Array.prototype.indexOfX = function (needle)
{
  for (var i = 0; i < this.length; i++)
    if(this[i][0] == needle)
      return i;
  return -1;
}

function logins()
{
  try {
    if ($F('username') == '')
    {
      $('username').value = 'Benutzername';
      $('username').style.color = '#babab9';
      Event.observe('username', 'focus', function (event)
      {
        if ($F('username') == 'Benutzername')
        {
          $('username').value = '';
          $('username').style.color = '#000000';
        }
      });
      Event.observe('username', 'blur', function (event)
      {
        if ($F('username') == '')
        {
          $('username').value = 'Benutzername';
          $('username').style.color = '#babab9';
        }
      });
    }
    if ($F('password') == '')
    {
      if (!Prototype.Browser.IE) $('password').type = 'text';
      $('password').value = 'Passwort';
      $('password').style.color = '#babab9';
      Event.observe('password', 'focus', function (event)
      {
        if ($F('password') == 'Passwort')
        {
          if (!Prototype.Browser.IE) $('password').type = 'password';
          $('password').value = '';
          $('password').style.color = '#000000';
        }
      });
      Event.observe('password', 'blur', function (event)
      {
        if ($F('password') == '')
        {
          if (!Prototype.Browser.IE) $('password').type = 'text';
          $('password').value = 'Passwort';
          $('password').style.color = '#babab9';
        }
      });
    }
  } catch (e) {}
}

function checkMouse(e)
{
  var succes;
  var el = $(e.target);
  var cal = [$(datePickerDivID), $('liste_popup_anzahl_q'), $('liste_popup_artname'), $('liste_popup_kreis'), $('datum'), $('artname'), $('anzahl_q'), $('kreis')];

  while (true)
  {
    succes = false;
    cal.each(function (ele)
    {
      if (ele == el)
        succes = true;
    });

    if (succes)
    {
      return true;
    }
    else if (el == document)
    {
      hideDatePicker();
      $('liste_popup_anzahl_q').style.display = 'none';
      $('liste_popup_artname').style.display = 'none';
      $('liste_popup_kreis').style.display = 'none';
      return false;
    }
    else
    {
      try {
        el = $(el).up();
      } catch (e) { return true; }
    }
  }
};


function datePickerClosed(e)
{
  meldung.updateData(e);
}

function hideDatePicker()
{
  if ($(datePickerDivID))
  {
    $(datePickerDivID).style.display = 'none';
    $(datePickerDivID).style.visibility = "hidden";
    adjustiFrame();
  }
}

function displayArtname (v)
{
  return (v.length > 11) ? v.substr(0, 11) + '...' : v;
}

function watchLoader (watch, f)
{
  try
  {
    if (!$('floatbox'))
      fb_show('page_content');
  }
  catch (e) {  }

  var doit = true;
  watch.each(function (e)
  {
    if (!e)
      doit = false;
  });

  if (doit)
  {
    watch_pe.stop();
    fb_hide();
    if (f) f();
  }
}

//Global Ajax-TimeOut
function callInProgress (xmlhttp)
{
  switch (xmlhttp.readyState)
  {
    case 1:
    case 2:
    case 3:

      return true;
      break;

    // Case 4 and 0
    default:

      return false;
      break;
  }
}

// Register global responders that will occur on all AJAX requests
Ajax.Responders.register(
{
  onCreate: function(request)
  {
    request['timeoutId'] = window.setTimeout(function()
    {
      if (callInProgress(request.transport))
      {
        request.transport.abort();
        fb_alert('Netzwerkfehler [10]', 'Die Verbindung zum Server wurde unterbrochen. Bitte &uuml;berpr&uuml;fen Sie Ihre Internetverbindung, sollte dort kein Fehler zu finden sein, versuchen Sie es bitte sp&auml;ter erneut. Sie werden nun zur Startseite weitergeleitet, alle bereits gespeicherten V&ouml;gel k&ouml;nnen beim n&auml;chsten Aufruf des Meldezentrums wieder geladen werden.<br />Sollte der Fehler h&auml;ufiger auftreten, benachrichtigen Sie bitte den <a href="index.php?page=kontakt">Administrator</a>.', 'Verstanden', 'window.location.href = \'index.php\';');
        if (request.options['onFailure'])
          request.options['onFailure'](request.transport, request.json);
      }
    },
    10000
    );
  },
  onComplete: function(request)
  {
    // Clear the timeout, the request completed ok
    window.clearTimeout(request['timeoutId']);
  }
});


//IE, IE, IE, I'm loving It -.-
function ie_style_foc_on ()
{
  Event.stopObserving($(Event.element(ie_style_foc_on.arguments[0])), 'mouseout', ie_style_hov_off);
  Element.setStyle($(Event.element(ie_style_foc_on.arguments[0])),
  {
    backgroundColor: '#e6e8f4',
    border: '1px solid #3347c2'
  });
}

function ie_style_foc_off ()
{
  Event.observe($(Event.element(ie_style_foc_off.arguments[0])), 'mouseout', ie_style_hov_off);
  Element.setStyle($(Event.element(ie_style_foc_off.arguments[0])),
  {
    backgroundColor: '',
    border: '1px solid #888888'
  });
}

function ie_style_hov_on ()
{
  Element.setStyle($(Event.element(ie_style_hov_on.arguments[0])),
  {
    backgroundColor: '#e6e8f4',
    border: '1px solid #3347c2'
  });
}

function ie_style_hov_off ()
{
  Element.setStyle($(Event.element(ie_style_hov_off.arguments[0])),
  {
    backgroundColor: '',
    border: '1px solid #888888'
  });
}

function testBrowser()
{
  if (Prototype.Browser.IE6)
  {
    document.write('<br /><br /><br /><span style="color: #ff0000">Sie nutzen Internet Explorer 6. Bitte updaten Sie Ihren Browser. <a href="#" style="display: inline;" onclick="fb_alert(\'Meiden Sie Internet Explorer 6\', \'Internet Explorer 6 ist mit einem Alter von &uuml;ber 8 Jahren sehr unsicher, fehlerbehaftet, langsam und nicht standardkonform. Wir empfehlen Ihnen dringend, auf einen der folgenden aktuellen Browser umzusteigen, damit Sie neuere Webseiten in vollem Umfang nutzen k&ouml;nnen: <br /><br /><a href=http://www.mozilla-europe.org/de/firefox/ title=Firefox><img src=gfx/firefox.gif alt=Firefox /></a><a href=http://www.google.com/chrome title=Chrome><img src=gfx/chrome.gif alt=Chrome /></a><a href=http://www.apple.com/safari/ title=Safari><img src=gfx/safari.gif alt=Safari /></a><a href=http://www.microsoft.com/windows/Internet-explorer/default.aspx title=InternetExplorer><img src=gfx/ie.gif alt=Internet Explorer /></a><a href=http://www.opera.com/ title=Opera><img src=gfx/opera.gif alt=Opera /></a>\', \'Verstanden\', \'fb_hide(1);\');">Warum?</a></span>');
  }
}
