function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=620,height=400,left=20,top=20');
}

function MM_openNeuWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,'toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=780,height=250,left=106,top=250');
}

function get_mail(str)
{
  var i = 0;
  var step = 3;
  var s = "";
  while ( (i + step) <= str.length )
  {
    s += String.fromCharCode(str.substr(i, step));
    i += step;
  }
  window.location.href = "mailto:" + s;
}

/* Formularcheck */
function eufFormCheck(frm,check)
{
  try {
    
    var obj = document.forms[frm];
    eval("var arrParam = " + obj.elements[check].value);
    var arrCheck = arrParam.fields;
    var fstate="-";
    var varmsg="";
    
    //check hnp-field
    if ( obj.elements['hnp'].value != "" )
    {
      return false;
    }
    
    //field
    var f; 

    var result = function(res, fld, e)
    {
      if (res)
      {
        if ( fstate == "-" ) fstate = e;
        if ( fld.className.indexOf(" error") == -1 ) fld.className += " error";
      }
      else if ( fld.className.indexOf(" error") > -1 )
      {
        fld.className = fld.className.replace(/ error/, "");
      }
    
    };

    for ( var e = 0; e < arrCheck.length; e++ )
    {
      f = obj.elements[arrCheck[e].index];

      switch ( arrCheck[e].type )
      {
        case "text":
          switch ( arrCheck[e].check )
          {
            case "required":
              result((f.value == ""), f, e);
              break;
            case "email":
              if (f.value != "")
              {
                // Check whether the current value is a valid e-mail address
                //var regexp = /^\w[\-\.\w]*\w@\w[\-\.\w]*\w\.\w{2,6}$/i;
                var regexp = /^\w+([!#\$%&\'\*\+\-\/=\?^_`\.\{\|\}~]*\w+)*@\w+([_\.-]*\w+)*\.[a-z]{2,6}$/i;
                var res = regexp.test(f.value);
      					result(!res, f, e);
              }
              break;
            case "phone":
              if (f.value != "")
              {
                // Check whether the current value is a valid e-mail address
                //var regexp = /^\w[\-\.\w]*\w@\w[\-\.\w]*\w\.\w{2,6}$/i;
                var regexp = /^[\+\d]{1}[\-\/\.\d ]+[\d]{1}$/;
                var res = regexp.test(f.value);
      					result(!res, f, e);
              }
              break;
            case "password":
              /* regeln: mind. 1 alpha + mind. 1 num + 8-12 char */
              var ok = false;
              var pw = f.value;
              if ( pw != "" )
              {
                ok = ( pw.length > 7 && pw.length < 13 );
                if ( ok )
                {
                  var regexp = /\d+/;//numerisch
                  ok = regexp.test(pw);
                }
                if ( ok )
                {
                  var regexp = /[a-zA-Z]+/;//alpha auch: [[alpha]]
                  ok = regexp.test(pw);
                }
      					result(!ok, f, e);
              }
              break;
            case "equal":
              result((f.value != obj.elements[arrCheck[e].field].value), f, e);
              break;
          }
          break;

        case "select":
          switch ( arrCheck[e].check )
          {
            case "required":
              if (obj.elements[arrCheck[e].index].options[obj.elements[arrCheck[e].index].selectedIndex].value == "")
              {
                if ( fstate == "-" ) fstate = e;
                if ( obj.elements[arrCheck[e].index].className.indexOf(" error") == -1 ) obj.elements[arrCheck[e].index].className += " error";
              }
              else if ( obj.elements[arrCheck[e].index].className.indexOf(" error") > -1 )
              {
                obj.elements[arrCheck[e].index].className = obj.elements[arrCheck[e].index].className.replace(/ error/, "");
              }
              break;
          }
          break;
      }
    }

    if ( fstate != "-" )
    {
      //alert("Bitte geben Sie " + arrCheck[fstate].errmsg + " ein !");
      alert("Bitte überprüfen Sie die markierten Felder auf vollständige/korrekte Eingabe."); 
      obj.elements[arrCheck[fstate].index].focus();
      return false;
    }
    
    switch ( arrParam.method.toLowerCase() )
    {
      case 'ajax':
        if ( !$chk(obj.elements["eufRequest"]) )
        {
          $(obj).grab(new Element("input", {'type': 'hidden', 'name': 'eufRequest', 'value': 'ajax'}));
        }
        $(obj).set('send', 
        {
          url: obj.action, 
          method: 'post',
          onSuccess: function(txt){eufDialog.innerHTML(txt);},
          onFailure: function(){eufDialog.innerHTML('Entschuldigung, die Email konnte leider nicht verschickt werden. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal.');}
        });
        $(obj).send();
        return false;
        break;
      
      case 'submit':
        obj.submit();
        return false;
        
      case 'register':
        eufDialog.open({title: 'Register', url: 'registertext', width: 400, height: 150, source: 'div', target: 'div', empty: 1});
        return false;
        break;
      
      default:
        return true;
    }
  } 
  catch(e) {alert(e);return false;}
  
}

/* quicksearch */
function doSearch(str)
{
  document.forms["quicksearch"].elements["sSearch"].value = str;
  document.forms["quicksearch"].submit();
}

//window.addEvent('domready', function() {eufOverlay.init();eufDialog.init();});

var eufOverlay =  
{
  options: {}, 
  wasInit: false,
    
	init: function(_options) 
  {
    if ( this.wasInit ) return;
    
		this.options = $extend
    ({
      overlayOpacity: 0.8
			
		}, _options || {});
		
		$(document.body).grab(new Element('div', {id: 'eufOverlay'}));
    $('eufOverlay').addEvent('click', this.close);
    $('eufOverlay').set('opacity', 0);

		if ((Browser.Engine.gecko) && (Browser.Engine.version<19))	// Fixes Firefox 2 and Camino 1.6 incompatibility with opacity + flash
		{
			this.options.overlayOpacity = 1;
			$('eufOverlay').className = 'eufOverlayFF';
		}

    this.wasInit = true;
  },

  open: function()
  {
    if ( !this.wasInit ) 
    {
      this.init();
      this.open.delay(300,this);
      return;
    }
    size = window.getScrollSize();
		$('eufOverlay').setStyles({top: 0, height: size.y, left: 0, width: size.x, display: 'block'});
    $('eufOverlay').fade(this.options.overlayOpacity);
  },
  
  close: function()
  {
    $('eufOverlay').fade(0);
    (function(){$('eufOverlay').setStyle('display','none');}).delay(300);
  },
  
  enable: function()
  {
    this.close();
    $('eufOverlay').addEvent('click', eufOverlay.close);
    $('eufOverlay').setStyle('cursor', 'pointer');
  },

  disable: function()
  {
    $('eufOverlay').removeEvent('click', eufOverlay.close);
    $('eufOverlay').setStyle('cursor', 'default');
    this.open();
  }

};

var eufDialog =  
{
  options:  
    {
			source: 'div', //div, request
			target: 'div', //div, frame
			url: '', //div-id, request-uri
			empty: 0, //wether to empty and copy back the source; to handle forms
			title: 'Dialogbox', //boxtitle
      width: 600, //pos: width, neg: margin
			height: 300, //pos: width, neg: margin
			_started:0
		},
  wasInit: false,
  dragger: null,
  
	init: function(_options) 
  {
    if ( this.wasInit ) return;
    eufOverlay.init();
    
		this.set(_options);
		
		$(document.body).grab(new Element('div', {id: 'eufDialog'}));
		$('eufDialog').set('opacity', 0);
		//$('eufDialog').addEvent('click', this.close);
    $('eufDialog').adopt
    ([
      new Element('div', {id: 'eufDialog_header'}).adopt
      ([
        new Element('div', {id: 'eufDialog_topleft'}),
        new Element('div', {id: 'eufDialog_top'}),
        new Element('div', {id: 'eufDialog_topright'})
      ]),
      new Element('div', {id: 'eufDialog_middle'}).adopt
      ([
        new Element('div', {id: 'eufDialog_sideleft'}),
        new Element('div', {id: 'eufDialog_content'}).adopt
        ([
          new Element('div', {id: 'eufDialog_titlebar'}).adopt
          ([
            new Element('div', {id: 'eufDialog_icons'}),
            new Element('div', {id: 'eufDialog_title'})
          ]),
          new Element('div', {id: 'eufDialog_innerContent'})
        ]),
        new Element('div', {id: 'eufDialog_sideright'}),
      ]),
      new Element('div', {id: 'eufDialog_footer'}).adopt
      ([
        new Element('div', {id: 'eufDialog_bottomleft'}),
        new Element('div', {id: 'eufDialog_bottom'}),
        new Element('div', {id: 'eufDialog_bottomright'})
      ])
    ]);
    
    $('eufDialog_icons').innerHTML = '<a href="javascript:eufDialog.close();" title="Dialog schliessen"><img src="system/plugins/euf/img/dialog_close_win_big.png" alt="Dialog schliessen" /></a>';

    this.dragger = new Drag('eufDialog').detach();
    $('eufDialog_titlebar').addEvent('mousedown', function(){$('eufDialog_titlebar').setStyle('cursor', 'move');eufDialog.dragger.attach()});
    $('eufDialog_titlebar').addEvent('mouseup', function(){$('eufDialog_titlebar').setStyle('cursor', 'default');eufDialog.dragger.detach()});

    this.wasInit = true;
  },

  open: function(new_options)
  {
    if ( !this.wasInit ) 
    {
      this.init();
      this.open.delay(300,this);
      return;
    }
    
    this.set(new_options);
    this._started = 1;
    
    if ( this.options.url != '' )
    {
      if ( this.options.source == 'div' ) //target must be 'div'
      {
        $('eufDialog_innerContent').setStyle('overflow', 'auto');
        $('eufDialog_innerContent').set('html', $(this.options.url).get('html'));
        if ( this.options.empty ) $(this.options.url).empty();
      }
      else //source==request
      {
        $('eufDialog_innerContent').setStyle('overflow', 'auto');
        if ( this.options.target == 'div' )
        {
        	var req = new Request.HTML({
            url: this.options.url,
            method: 'post',
            data: 'eufRequest=ajax',
        		onSuccess: function(html) 
            {
        			//Clear the text currently inside the results div.
        			$('eufDialog_innerContent').set('text', '');
        			//Inject the new DOM elements into the results div.
        			$('eufDialog_innerContent').adopt(html);
        		},
        		onFailure: function() 
            {
        			$('eufDialog_innerContent').set('text', 'Entschuldigung, die Abfrage konnte leider nicht ausgeführt werden.');
        		}
        	});
        	req.send();
        }
        else //target==frame
        {
          $('eufDialog_innerContent').grab(new Element('iframe', {id: 'eufDialog_innerContentIFrame', src: this.options.url, frameborder: 0}));
          $('eufDialog_innerContent').setStyle('overflow', 'hidden');
          $('eufDialog_innerContentIFrame').setStyles({width: '100%', height: '98%'});
        }
      }
    }
    if ( this.options.title )
    {
      $('eufDialog_title').set('html', this.options.title);
    }
    
    var dHeight = this.options.height;
    var dWidth = this.options.width;
    if ( dHeight < 0 ) dHeight = window.getHeight() + (2 * dHeight);
    if ( dWidth < 0 ) dWidth = window.getWidth() + (2 * dWidth);
    //var dTop = window.getScrollTop() + ((window.getHeight()-dHeight)/3);
		//var dLeft = window.getScrollLeft() + ((window.getWidth()-dWidth)/2);
    var dTop = (window.getHeight()-dHeight)/3;
		var dLeft = (window.getWidth()-dWidth)/2;
		//$('eufDialog').setStyles({height: dHeight, width: dWidth});
		
    /*$('eufDialog_sideleft').setStyle('height', dHeight-20);
		$('eufDialog_sideright').setStyle('height', dHeight-20);
		$('eufDialog_content').setStyle('height', dHeight-20);*/

		$('eufDialog_middle').setStyle('height', dHeight-20);
		$('eufDialog_top').setStyle('width', dWidth-20);
		$('eufDialog_content').setStyle('width', dWidth-20);
		$('eufDialog_bottom').setStyle('width', dWidth-20);

		var cor = ( Browser.Engine.trident ) ? 0 : 2 * (parseInt($('eufDialog_innerContent').getStyle('padding')));
    $('eufDialog_innerContent').setStyle('height', dHeight-45-cor);
		//$('eufDialog_title').setStyle('width', dWidth-100);
		$('eufDialog').setStyles({top: dTop, left: dLeft, visibility: 'visible'});
		eufOverlay.disable();
		$('eufDialog').fade(1);
    //(function(){$('eufDialog').fade('in');}).delay(300);
  },
  
  close: function()
  {
    $('eufDialog').fade(0);
    eufOverlay.enable();
    this._started = 0;
    if ( this.options.target == 'frame' )
    {
      $('eufDialog_innerContentIFrame').destroy();
    }
    else if ( this.options.empty ) 
    {
      $(this.options.url).set('html', $('eufDialog_innerContent').get('html'));
      $('eufDialog_innerContent').empty();
    }
  },
  
  set: function(new_options)
  {
		this.options = $extend(this.options, new_options || {});
		if ( this.options.target == 'frame' ) this.options.source = 'request';
  },
  
  innerHTML: function(html)
  {
    $('eufDialog_innerContent').set('html', html);
  }
 
};

window.addEvent("domready", function() {
	var links = $$("a").filter(function(el) {
		return el.rel && el.rel.test(/^window$/i);
	});
	$$(links).setProperty('target', '_blank');
});

