var hideElements =
  ['shadowtop', 'header', 'infobar', 'footer', 'shadowbottom', 'navigation'];
var hideSelectors =
  ['form'];
var alterElements =
  ['wrapper', 'container', 'content', 'contentbody'];
var alterSelectors =
  ['.contentbox', '.contentboxheader', '.contentboxbody', '.contentboxfooter'];

document.observe('dom:loaded', function(e) {
  if ($('toprint')) {
    $('toprint').setStyle({ display: 'block' });
  }
  if ($('shortcuts')) {
    $('shortcuts').setStyle({bottom: '-3px'});
    $('shortcuts').observe('mouseout', function(e) {
      $('shortcuts').writeAttribute('style', '').removeAttribute('style');
      $('shortcuts').stopObserving('mouseout');
    });
    $('searchquery').onfocus = function(e) {
      $('shortcuts').setStyle({bottom: '-3px'});
    };
    $('searchquery').onblur = function(e) {
      $('shortcuts').writeAttribute('style', '').removeAttribute('style');
    };
  }
/*  $$('input').each(function(element) {
    element.setAttribute('autocomplete', 'off');
  }); */
  $$('input').invoke('setAttribute', 'autocomplete', 'off');
  $$('a').invoke('setAttribute', 'tabindex', '-1');
});
document.observe('keydown', function(e) {
  var formElements = [
    'input', 'textarea', 'select-one', 'select-multiple',
    'select', 'button', 'checkbox', 'file', 'hidden',
    'image', 'password', 'radio', 'reset', 'submit', 'text'
  ];
  var element = Event.element(e);
  var keyCode = e.keyCode;
  switch (keyCode) {
    case 9:
      if (formElements.indexOf(element.type) == -1 || element.descendantOf('header')) {
        e.stop();
      } else {
        var form = element.up('form');
        var elements = form.getElements();
        var usable = new Array();
        var tabs = new Array();
        var next = 0;
        elements.each(function(el) {
          if (el.readAttribute('disabled') != 'disabled' && el.tabIndex > 0) {
            usable[el.tabIndex] = el;
            tabs[tabs.length] = el.tabIndex;
            if (element.tabIndex == el.tabIndex) {
              next = tabs.length - 1;
            }
          }
        });
        var mod = (e.shiftKey ? -1 : 1);
        next = next + mod;
        if (next < 0 || next >= tabs.length) {
          if (next < 0) {
            next = tabs.length - 1;
          } else {
            next = 0;
          }
        }
        usable[tabs[next]].activate();
        e.stop();
      }
      break;
    case 13:
      if (!element.descendantOf('header') && ['button', 'image', 'reset', 'submit', 'textarea'].indexOf(element.type) == -1 || e.shiftKey) {
        var form = element.up('form');
        var elements = form.getElements();
        var usable = new Array();
        var tabs = new Array();
        var next = 0;
        elements.each(function(el) {
          if (el.readAttribute('disabled') != 'disabled' && el.tabIndex > 0) {
            usable[el.tabIndex] = el;
            tabs[tabs.length] = el.tabIndex;
            if (element.tabIndex == el.tabIndex) {
              next = tabs.length - 1;
            }
          }
        });
        var mod = (e.shiftKey ? -1 : 1);
        next = next + mod;
        if (next < 0 || next >= tabs.length) {
          if (next < 0) {
            next = tabs.length - 1;
          } else {
            next = 0;
          }
        }
        usable[tabs[next]].activate();
        e.stop();
      }
      break;
  }
});

function toggleWAI() {
  myAjax = new Ajax.Request(
    'core/togglewai.ajax.php',
    {
      method: 'get',
      onSuccess: function(transport) {
        window.location.reload(true);
      }
    }
  );
}

function checkForm(formId) {
  var formElements = [
    'input', 'textarea', 'select-one', 'select-multiple',
    'select', 'password', 'text'
  ];
  var emailRegExp = new RegExp('^[a-z0-9!#$%&\'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2}|biz|cat|com|edu|gov|int|mil|net|org|pro|tel|xxx|aero|arpa|asia|coop|info|jobs|mobi|name|museum|travel)$', 'i');
  var emailIdRegExp = new RegExp('^(?:[a-z0-9]+(?:\\.[a-z0-9]+)*)$', 'i');
  var retValue = false;
  if ($(formId)) {
    var elements = $(formId).getElements();
    var empty = 0;
    var tooShort = 0;
    var invalidEmail = 0;
    var firstWrong = null;
    elements.each(function(element) {
      if (formElements.indexOf(element.type) > -1) {
        if (element.hasClassName('wrong')) {
          element.removeClassName('wrong');
        }
        var classNames = $w(element.className);
        classNames.each(function(className) {
          switch (className) {
            case 'required':
              if (element.value.strip() == '') {
                empty++;
                if (!element.hasClassName('wrong')) {
                  element.addClassName('wrong');
                }
                if (!firstWrong) {
                  firstWrong = element;
                }
              }
              break;
            case 'emailid':
              if (!emailIdRegExp.test(element.value.strip())) {
                invalidEmail++;
                if (!element.hasClassName('wrong')) {
                  element.addClassName('wrong');
                }
                if (!firstWrong) {
                  firstWrong = element;
                }
              }
              break;
            case 'email':
              if (!emailRegExp.test(element.value.strip())) {
                invalidEmail++;
                if (!element.hasClassName('wrong')) {
                  element.addClassName('wrong');
                }
                if (!firstWrong) {
                  firstWrong = element;
                }
              }
              break;
            default:
              var data = className.split(':');
              if (data.size() == 2) {
                var key = data[0];
                var value = data[1];
                switch (key) {
                  case 'minsize':
                    var minSize = parseInt(value, 10);
                    if (minSize > 0 && element.value.strip().length < minSize) {
                      tooShort++;
                      if (!element.hasClassName('wrong')) {
                        element.addClassName('wrong');
                      }
                      if (!firstWrong) {
                        firstWrong = element;
                      }
                    }
                    break;
                }
              }
              break;
          }
        });
      }
    });
    $(formId + 'error').innerHTML = '';
    if (empty > 0) {
      $(formId + 'error').innerHTML += 'Nem töltött ki minden kötelezően kitöltendő mezőt!<br />';
    }
    if (invalidEmail > 0) {
      $(formId + 'error').innerHTML += 'Nem megfelelő e-mail címet adott meg!<br />';
    }
    if (tooShort > 0) {
      $(formId + 'error').innerHTML += 'Túl rövid tartalmat adott meg!<br />';
    }
    if (!firstWrong) {
      retValue = true;
    } else {
      firstWrong.activate();
    }
  }
  return retValue;
}

function makePrintable() {
  hideElements.each(function(element) { $(element).hide(); });
  hideSelectors.each(function(selector) {
/*    $$(selector).each(function(element) {
      element.hide();
    }); */
    $$(selector).invoke('hide');
  });
  if ($('toprint')) {
    $('toprint').setStyle({ display: 'none' });
  }
  if ($('tonormal')) {
    $('tonormal').setStyle({ display: 'block' });
  }
  document.body.setStyle({background: 'none'});
  alterElements.each(function(element) {
    $(element).setStyle({
      background: 'none', color: '#000000', border: '0',
      width: 'auto', margin: '0', padding: '0',
      cssFloat: 'none'
    });
  });
  alterSelectors.each(function(selector) {
    $$(selector).each(function(element) {
      element.setStyle({
        background: 'none', color: '#000000', border: '0',
        width: 'auto', margin: '0', padding: '0',
        cssFloat: 'none'
      });
    });
  });
  $$('a:not([class^=pic])').each(function(element) {
    element.setStyle({
      backgroundColor: 'transparent', color: '#000000', border: '0',
      padding: '0'
    });
  });
}
function makeNormal() {
  document.body.writeAttribute('style', '').removeAttribute('style');
  alterElements.each(function(element) {
    $(element).writeAttribute('style', '').removeAttribute('style');
  });
  alterSelectors.each(function(selector) {
    $$(selector).each(function(element) {
      element.writeAttribute('style', '').removeAttribute('style');
    });
  });
  $$('a:not([class^=pic])').each(function(element) {
    element.writeAttribute('style', '').removeAttribute('style');
  });
  $('tonormal').hide();
  hideElements.each(function(element) { $(element).show(); });
  hideSelectors.each(function(selector) {
/*    $$(selector).each(function(element) {
      element.show();
    }); */
    $$(selector).invoke('show');
  });
  if ($('toprint')) {
    $('toprint').setStyle({ display: 'block' });
  }
  if ($('tonormal')) {
    $('tonormal').setStyle({ display: 'none' });
  }
}


