var snapshot = '';
var submitted = false;
Event.observe(window, 'load', externalLinks);
Event.observe(window, 'load', formSnapshot);
Event.observe(window, 'load', function()
{
  var forms = $$('form.public');
  if (forms.length == 0) return;
  Event.observe(forms[0], 'submit', function()
  {
    submitted = true;
  });
});

Event.observe(window, 'beforeunload', confirmExit.bindAsEventListener());

// http://www.sitepoint.com/article/standards-compliant-world
function externalLinks()
{
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++)
 {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
     anchor.target = "gallery";
   if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external_blank")     anchor.target = "_blank";
 }
}

function formSnapshot()
{
  var forms = $$('form.public');
  if (forms.length == 0) return;
  snapshot = Form.serialize(forms[0]);
}

function confirmExit(e)
{
  if ($$('body')[0].id == 'login') return;
  if (submitted) return;
  var forms = $$('form.public');
  if (forms.length == 0) return;
  var snap2 = Form.serialize(forms[0]);
  if (snap2 != snapshot)
  {
    e.returnValue = 'You have not saved your changes';
  }
}

function allowSubmit(prompt)
{
  return window.confirm(prompt);
}

function allowImageDelete(form)
{
  var inputs = form.getElementsByTagName('input');
  var deletions = 0;
  for (var i=0; i<inputs.length; i++)
  {
    if (inputs[i].checked) deletions++;
  }
  if (deletions < 1) return true;
  if (deletions == 1) return window.confirm('Deleting ' + deletions + ' image');
  return window.confirm('Deleting ' + deletions + ' images');
}