function erfgetcommentattribute(o,n) // Get attribute named n from html comment before object o
{
  var a, i, v;

  if (o.previousSibling && o.previousSibling.nodeType==8 && o.previousSibling.nodeValue.indexOf('[erf]')!=-1)
  {
    a=o.previousSibling.nodeValue.replace(/\[erf\]\s+/,'').split(';');
    for (i=0;i<a.length;i++)
    {
      v=a[i].split(':');
      if (erftrim(v[0])==n)
      { 
        if (typeof v[1]=='undefined') return true;
        else return (erftrim(v[1]));
      }
    }
  }
  return undefined;
}

function erftrim (s)
{
  return s.replace(/^\s*|\s*$/g,"");
}

function erfaddevent (o,t,f) // Set Event Handler f for Event type t on object o: (window,'load',myfunction)
{
  if (o.addEventListener) o.addEventListener(t,f,false);
  else if (o.attachEvent)
  {
    o['erf'+t+f]=f;
    o.attachEvent('on'+t, function(){o['erf'+t+f](window.event)}); 
  }
}

function erfbeforeunload(e)
{
  var h,i,j,f,g,k,l,s,c=false;

  h=document.getElementsByTagName("*");
  for (i=0;i<h.length;i++)
  {
    if (h[i].nodeName=='FORM' && typeof erfgetcommentattribute(h[i],'required')!='undefined')
    {
	  f=h[i].elements;
	  l=h[i].getAttribute('lang');
	  s=document.body.getAttribute('erfsubmit');
	  for (j=0;j<f.length;j++)
	  {
		if (f[j].type=='text' || f[j].type=='textarea' || f[j].type=='password' || f[j].type=='file')
		{
          if (f[j].value!=f[j].defaultValue) { c=true; }
		}
		else if (f[j].type=='select-one' || f[j].type=='select-multiple')
		{
		  g=f[j].options;
		  for (k=0 ; k<g.length; k++ ) 
		  {
		    if (g[k].selected!=g[k].defaultSelected && (!g[k].selected || k!=0)) { c=true; }
          }
		}
		else if (f[j].type=='checkbox' || f[j].type=='radio')
		{
          if (f[j].checked!=f[j].defaultChecked) { c=true; }
		}
	  }
    }
  }

  if (c && !s) {
    if (l=='de') e.returnValue="Sie haben in einem Formular auf dieser Seite \u00c4nderungen vorgenommen. Wenn Sie die Seite jetzt verlassen, gehen die \u00c4nderungen verloren.";
    if (l=='en') e.returnValue="You have made changes to a form on this page. If you leave this page now, these changes will be lost.";
  }
}

function erfvalidate(e)
{
  var i, r, c, m;

  r=erfgetcommentattribute(this,'required').split(',');

  for (i=0;i<r.length;i++)
  {
    c=document.getElementById(erftrim(r[i]));
    if (c && ((c.type=='checkbox' && !c.checked) || erftrim(c.value)=='')) 
    {
      m=document.getElementById('erfcms_form_has_required_fields');
	  if (!m) m=document.getElementById('erfcms_guestbook_has_required_fields');
	  if (m) alert (erfgettextcontent(m));
      c.focus();

      if (e.preventDefault) e.preventDefault();
      else e.returnValue=false;
      break;
    }
  }

  document.body.setAttribute('erfsubmit','true');
}

function erfexternal(e)
{
  if (window.open(this.getAttribute('href'),'_blank'))
  {
    if (e.preventDefault) e.preventDefault();
    else e.returnValue=false;
  }
}

function erfpopup(e)
{
  var w;

  if (typeof Lightbox !='undefined' && Lightbox.show(this.getAttribute('href'),this.getAttribute('title'))==0)
  {
    //
  }
  else if (w=window.open('','_blank','width=800,height=600'))
  {
    w.document.open();
    w.document.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html style="height:100%;">'+
'<head><title>'+this.getAttribute('title')+'</title><SCRIPT type="text/javascript">'+
'function resize(){'+
'if (document.getElementsByTagName && window.resizeBy){'+
'var h=document.getElementsByTagName("img")[0].offsetHeight;'+
'var w=document.getElementsByTagName("img")[0].offsetWidth;'+
'if (window.innerHeight){'+
'window.resizeBy(w-window.innerWidth,h-window.innerHeight);'+
'}else if (window.document.documentElement && window.document.documentElement.clientHeight){'+
'window.resizeBy(w-window.document.documentElement.clientWidth,h-window.document.documentElement.clientHeight);'+
'}else if (window.document.body){'+
'window.resizeBy(w-window.document.body.clientWidth,h-window.document.body.clientHeight);'+
'}}if (document.getElementsByTagName && document.getElementsByTagName("img")[0].style) document.getElementsByTagName("img")[0].style.visibility="visible";'+
'}</SCRIPT></head>'+
'<body style="height:100%;overflow:hidden;margin:0;padding:0;background:url(/erfmodules/erfcms2/css/loading.gif) no-repeat center #ffffff;" '+
'onblur="self.close();"><img style="visibility:hidden;" onload="resize();" alt="" onClick="self.close();" style="display:block;" '+
'src="'+this.getAttribute('href')+'"></body></html>');

    w.document.close();

    if (w.focus) { w.focus(); }
  }
  else
  {
    return;
  }

  if (e.preventDefault) e.preventDefault();
  else e.returnValue=false;
}

function erfzebra(o)
{
  var c=true, j;
  if (o.tBodies.length>0)
  {
    for (j=0;j<o.tBodies[0].rows.length;j++)
    {
      o.tBodies[0].rows[j].className=((c=!c) ? 'odd' : 'even');
    }
  }
}

function erfgettextcontent (o)
{
  return erftrim((o.innerText ? o.innerText : (o.textContent ? o.textContent : '')));
}

function erfcompare(a,b)
{
  var c,d;

  c=parseFloat(a.replace(/\,/,"."));
  d=parseFloat(b.replace(/\,/,"."));

  if (!isNaN(c) && !isNaN(d))
  {
    a=c;
    b=d;
  }

  if (a<b) return -1;
  if (a>b) return 1
  return 0;
}

function erfsort(e)
{
  var minIdx, j, minVal, testVal, c, t, b, i, d;

  c=this.cellIndex;

  t=this;

  while (t.nodeName!='TABLE')
  {
    t=t.parentNode;
  }

  if (t.getAttribute('erfcol')==c)
  {
    d=-t.getAttribute('erfdir');
  }
  else {
    t.setAttribute('erfcol',c);
	d=1;
  }
  t.setAttribute('erfdir',d);

  b=t.tBodies[0];

  for (i=0; i<b.rows.length-1; i++)
  {
    minIdx=i;

    minVal=erfgettextcontent(b.rows[i].cells[c]);

    for (j=i+1; j<b.rows.length; j++)
    {
      testVal=erfgettextcontent(b.rows[j].cells[c]);

      if (d*erfcompare(minVal,testVal)>0)
      {
        minIdx=j;
        minVal=testVal;
      }
    }

    if (minIdx>i)
    {
      b.insertBefore(b.removeChild(b.rows[minIdx]),b.rows[i]);
    }
  }
  if (erfgetcommentattribute(t,'zebra'))
  {
    erfzebra(t);
  }
}

function erftoggle(e)
{
  var u;

  u=this.parentNode.getElementsByTagName('UL')[0];
  if (u.style.display=='none') u.style.display='block';
  else u.style.display='none';
  this.blur();
  if (e.preventDefault) e.preventDefault();
  else e.returnValue=false;
}

function erfmenu(o)
{
  var l,i,u,c,h;

  l=o.getElementsByTagName('LI');

  for (i=0;i<l.length;i++)
  {
    u=l[i].getElementsByTagName('UL');
    if (u.length>0)
    {
      u[0].style.display='none';
	  erfaddevent (l[i].getElementsByTagName('A')[0],'click',erftoggle);
    }
    else
    {
	  if (l[i].getElementsByTagName('A')[0].href.replace(/#.*$/,'')==self.location.href || l[i].getElementsByTagName('A')[0].href.replace(/#.*$/,'')==self.location.href+'index.php' || l[i].className=='current')
	  {
	    c=l[i];
        while (c!=o)
        {
          if (c.nodeName=='UL') c.style.display='block';
          if (c.nodeName=='LI') c.className='current '+c.className;
          c=c.parentNode;
        }
	  }
    }
  }
}

function erfaddevents()
{
  var e, i, j, o, m;

  if (document.getElementsByTagName && document.nodeName)
  {
    e=document.getElementsByTagName("*");

    for (i=0;i<e.length;i++) 
    {
  	  if (e[i].nodeName=='A' && typeof erfgetcommentattribute(e[i],'popup')!='undefined')
      {
        erfaddevent(e[i],'click',erfpopup);
      }
      if (e[i].nodeName=='A' && typeof erfgetcommentattribute(e[i],'external')!='undefined')
      {
        erfaddevent(e[i],'click',erfexternal);
      }
      if (e[i].nodeName=='UL' && typeof erfgetcommentattribute(e[i],'menu')!='undefined')
      {
        erfmenu(e[i]);
      }
	  if (e[i].nodeName=='FORM' && typeof erfgetcommentattribute(e[i],'required')!='undefined')
      {
        erfaddevent(e[i],'submit',erfvalidate);
        erfaddevent(window,'beforeunload',erfbeforeunload);
      }
	  if (e[i].nodeName=='FORM' && typeof erfgetcommentattribute(e[i],'showhint')!='undefined')
      {
        o=document.getElementById('erfcms_form_hint');
        if (o)
        {
	      m=erfgettextcontent (o);
		  if (m!='')
          {
  		    o.style.display='none';
            alert (erfgettextcontent (o));
          }
        }
      }
      if (e[i].nodeName=='TABLE' && e[i].tHead && typeof erfgetcommentattribute(e[i],'sortable')!='undefined') 
      {
        for (j=0;j<e[i].tHead.rows[0].cells.length;j++)
        {
		  erfaddevent (e[i].tHead.rows[0].cells[j],'click',erfsort);
        }
      }
      if (e[i].nodeName=='TABLE' && typeof erfgetcommentattribute(e[i],'zebra')!='undefined')
      {
        erfzebra(e[i])
      }
    }
  }
}

if (typeof Window!='undefined' && Window && Window.onDomReady)
{
  window.addEvent('domready',erfaddevents);
}
else
{
  erfaddevent (window,'load',erfaddevents);
}
