function getIframeDocument(iframeNode) // FIXME: move in the right place
 {
  if (iframeNode.contentDocument)    return iframeNode.contentDocument;
  else if (iframeNode.contentWindow) return iframeNode.contentWindow.document;
  else                               return iframeNode.document;
 }

function MNC_addEventListener(oElement,sEvent,oFunction) // FIXME: move in the right place
 {
  if (sEvent.match(/^on.*/ig))
   {
    if (!(window.attachEvent)) oElement.addEventListener(sEvent.substr(2), oFunction, false);
    else oElement.attachEvent(sEvent,oFunction);
   }
 }

function appendCheckForForm(form_id,beforeSubmitCall)
 {
  var oForm = $$(form_id);

  function showMess(mess_text,oInput)
   {
    if (oInput.getAttribute('error_message'))
     {
      mess_text = oInput.getAttribute('error_message');
     }

    alert(mess_text);
   }

  function checkForm(e)
   {
    if (typeof(beforeSubmitCall) == 'function')
     {
      if (!beforeSubmitCall())
       {
        CancelEvent(e);
        return false;
       }
     }

    for (var i=0;i<listEl.length;i++)
     {
      if (listEl[i].getAttribute('min_value') && listEl[i].getAttribute('max_value'))
       {
        if      (parseInt(listEl[i].value) > parseInt(listEl[i].getAttribute('max_value')))
         {
          showMess('Value exceeds restriction!',listEl[i]);

          listEl[i].focus();
          CancelEvent(e);
          return false;
         }
        else if (parseInt(listEl[i].value) < parseInt(listEl[i].getAttribute('min_value')))
         {
          showMess('Value exceeds restriction!',listEl[i]);

          listEl[i].focus();
          CancelEvent(e);
          return false;
         }
       }
      else if (listEl[i].getAttribute('min_value'))
       {
        if (parseInt(listEl[i].value) < parseInt(listEl[i].getAttribute('min_value')))
         {
          showMess('Value exceeds restriction!',listEl[i]);

          listEl[i].focus();
          CancelEvent(e);
          return false;
         }
       }

      if (listEl[i].getAttribute('max_strlen'))
       {
        if (listEl[i].value.length > parseInt(listEl[i].getAttribute('max_strlen')))
         {
          showMess('Value exceeds restriction!\r\nNo more than '+listEl[i].getAttribute('max_strlen')+' characters',listEl[i]);

          listEl[i].focus();
          CancelEvent(e);
          return false;
         }
       }

      if (listEl[i].getAttribute('no_empty') == 'true' && listEl[i].value.length < 1)
       {
          showMess('Value exceeds restriction!\r\nValue can not be empty.',listEl[i]);

        listEl[i].focus();
        CancelEvent(e);
        return false;
       }
     }
   }

  MNC_addEventListener(oForm,'onsubmit',checkForm);

  var list_used_attr = ['min_value','max_value','max_strlen'];
  var list = oForm.elements;
  var listEl = [];

  for(var i=0;i<list.length;i++)
   {
    for(var i_attr=0;i_attr<list_used_attr.length;i_attr++)
     {
      list[i][list_used_attr[i_attr]] = list[i].getAttribute(list_used_attr[i_attr]);
     }

    listEl[listEl.length] = list[i];
   }
 }

function isNumber(obj)
 {
  if (typeof(obj) == "number") return true;
  return false;
 }

function isString(obj)
 {
  if (typeof(obj) == "string") return true;
  return false;
 }

function isObject(obj)
 {
  if ((obj instanceof Object) || (typeof(obj) == "object")) return true;
  return false;
 }

function isArray(obj)
 {
  if (obj instanceof Array) return true;
  return false;
 }

function isUndefined(property)
 {
  return (typeof property == 'undefined');
 }

function isEmpty(obj)
 {
  if ((isString(obj) || isArray(obj)) && obj.length > 0) return false;
  else if (isObject(obj) && obj.count() > 0) return false;
  else return true;
 }

function isEven(iVal)
 {
  return !(iVal%2);
 }
