/*
 * SimpleModal 1.3.5 - jQuery Plugin
 * http://www.ericmmartin.com/projects/simplemodal/
 * Copyright (c) 2010 Eric Martin (http://twitter.com/EricMMartin)
 * Dual licensed under the MIT and GPL licenses
 * Revision: $Id: jquery.simplemodal.js 245 2010-03-25 20:41:15Z emartin24 $
 */
;(function($){
  var ie6=$.browser.msie&&parseInt($.browser.version)==6&&typeof window['XMLHttpRequest']!="object",ieQuirks=null,w=[];
  $.modal=function(data,options){
    return $.modal.impl.init(data,options);
  };
  $.modal.close=function(){
    $.modal.impl.close();
  };
  $.fn.modal=function(options){
    return $.modal.impl.init(this,options);
  };
  $.modal.defaults={
    appendTo:'body',
    focus:true,
    opacity:50,
    overlayId:'simplemodal-overlay',
    overlayCss:{},
    containerId:'simplemodal-container',
    containerCss:{},
    dataId:'simplemodal-data',
    dataCss:{},
    minHeight:null,
    minWidth:null,
    maxHeight:null,
    maxWidth:null,
    autoResize:false,
    autoPosition:true,
    zIndex:1000,
    close:true,
    closeHTML:'<a class="modalCloseImg" title="Close"></a>',
    closeClass:'simplemodal-close',
    escClose:true,
    overlayClose:false,
    position:null,
    persist:false,
    modal:true,
    onOpen:null,
    onShow:null,
    onClose:null
  };
  
  $.modal.impl={
    o:null,
    d:{},
    init:function(data,options){
      var s=this;
      if(s.d.data){return false;}
      ieQuirks=$.browser.msie&&!$.boxModel;
      s.o=$.extend({},$.modal.defaults,options);
      s.zIndex=s.o.zIndex;
      s.occb=false;
      if(typeof data=='object'){
	data=data instanceof jQuery?data:$(data);
	s.d.placeholder=false;
	if(data.parent().parent().size()>0){
	  data.before(
	    $('<span></span>').attr('id','simplemodal-placeholder').css({display:'none'})
	  );
	  s.d.placeholder=true;
	  s.display=data.css('display');
	  if(!s.o.persist){
	    s.d.orig=data.clone(true);	  
	  }
	}
      }
      else if(typeof data=='string'||typeof data=='number'){
	data=$('<div></div>').html(data);
      }
      else{
	alert('SimpleModal Error: Unsupported data type: '+typeof data);
	return s;
      }
      s.create(data);
      data=null;
      s.open();
      if($.isFunction(s.o.onShow)){
	s.o.onShow.apply(s,[s.d]);
      }
      return s;
    },
    create:function(data){
      var s=this;
      w=s.getDimensions();
      if(s.o.modal&&ie6){
	s.d.iframe=$('<iframe src="javascript:false;"></iframe>').css($.extend(s.o.iframeCss,{display:'none',opacity:0,position:'fixed',height:w[0],width:w[1],zIndex:s.o.zIndex,top:0,left:0})).appendTo(s.o.appendTo);
      }
      s.d.overlay=$('<div></div>').attr('id',s.o.overlayId).addClass('simplemodal-overlay').css($.extend(s.o.overlayCss,{display:'none',opacity:s.o.opacity/100,height:s.o.modal?w[0]:0,width:s.o.modal?w[1]:0,position:'fixed',left:0,top:0,zIndex:s.o.zIndex+1})).appendTo(s.o.appendTo);
      s.d.container=$('<div></div>').attr('id',s.o.containerId).addClass('simplemodal-container').css($.extend(s.o.containerCss,{display:'none',position:'fixed',zIndex:s.o.zIndex+2})).append(s.o.close&&s.o.closeHTML?$(s.o.closeHTML).addClass(s.o.closeClass):'').appendTo(s.o.appendTo);
      s.d.wrap=$('<div></div>').attr('tabIndex',-1).addClass('simplemodal-wrap').css({height:'100%',outline:0,width:'100%'}).appendTo(s.d.container);
      s.d.data=data.attr('id',data.attr('id')||s.o.dataId).addClass('simplemodal-data').css($.extend(s.o.dataCss,{display:'none'})).appendTo('body');
      data=null;
      s.setContainerDimensions();
      s.d.data.appendTo(s.d.wrap);
      if(ie6||ieQuirks){s.fixIE();}
    },
    bindEvents:function(){
      var s=this;
      $('.'+s.o.closeClass).bind('click.simplemodal',function(e){
	e.preventDefault();
	s.close();
      });
      if(s.o.modal&&s.o.close&&s.o.overlayClose){
	s.d.overlay.bind('click.simplemodal',function(e){
	  e.preventDefault();
	  s.close();
	});
      }
      $(document).bind('keydown.simplemodal',function(e){
	if(s.o.modal&&s.o.focus&&e.keyCode==9){
	  s.watchTab(e);
	}
	else if((s.o.close&&s.o.escClose)&&e.keyCode==27){
	  e.preventDefault();
	  s.close();
	}

      });

      $(window).bind('resize.simplemodal',function(){
	w=s.getDimensions();
	s.setContainerDimensions(true);
	if(ie6||ieQuirks){
	  s.fixIE();
	}
	else if(s.o.modal){
	  s.d.iframe&&s.d.iframe.css({height:w[0],width:w[1]});
	  s.d.overlay.css({height:w[0],width:w[1]});
	}
      });

    },
    unbindEvents:function(){
      $('.'+this.o.closeClass).unbind('click.simplemodal');
      $(document).unbind('keydown.simplemodal');
      $(window).unbind('resize.simplemodal');
      this.d.overlay.unbind('click.simplemodal');
    },
    fixIE:function(){
      var s=this,p=s.o.position;
      $.each([s.d.iframe||null,!s.o.modal?null:s.d.overlay,s.d.container],function(i,el){
	if(el){
	  var bch='document.body.clientHeight',bcw='document.body.clientWidth',bsh='document.body.scrollHeight',bsl='document.body.scrollLeft',bst='document.body.scrollTop',bsw='document.body.scrollWidth',ch='document.documentElement.clientHeight',cw='document.documentElement.clientWidth',sl='document.documentElement.scrollLeft',st='document.documentElement.scrollTop',s=el[0].style;s.position='absolute';
	  if(i<2){
	    s.removeExpression('height');
	    s.removeExpression('width');
	    s.setExpression('height',''+bsh+' > '+bch+' ? '+bsh+' : '+bch+' + "px"');
	    s.setExpression('width',''+bsw+' > '+bcw+' ? '+bsw+' : '+bcw+' + "px"');
	  }
	  else{
	    var te,le;
	    if(p&&p.constructor==Array){
	      var top=p[0]?typeof p[0]=='number'?p[0].toString():p[0].replace(/px/,''):el.css('top').replace(/px/,'');
	      te=top.indexOf('%')==-1?top+' + (t = '+st+' ? '+st+' : '+bst+') + "px"':parseInt(top.replace(/%/,''))+' * (('+ch+' || '+bch+') / 100) + (t = '+st+' ? '+st+' : '+bst+') + "px"';
	      if(p[1]){
		var left=typeof p[1]=='number'?p[1].toString():p[1].replace(/px/,'');le=left.indexOf('%')==-1?left+' + (t = '+sl+' ? '+sl+' : '+bsl+') + "px"':parseInt(left.replace(/%/,''))+' * (('+cw+' || '+bcw+') / 100) + (t = '+sl+' ? '+sl+' : '+bsl+') + "px"';
	      }
	    }
	    else{
	      te='('+ch+' || '+bch+') / 2 - (this.offsetHeight / 2) + (t = '+st+' ? '+st+' : '+bst+') + "px"';le='('+cw+' || '+bcw+') / 2 - (this.offsetWidth / 2) + (t = '+sl+' ? '+sl+' : '+bsl+') + "px"';
	    }
	    s.removeExpression('top');
	    s.removeExpression('left');
	    s.setExpression('top',te);
	    s.setExpression('left',le);
	  }
	}
      });
    },
    focus:function(pos){
      var s=this,p=pos||'first';var input=$(':input:enabled:visible:'+p,s.d.wrap);input.length>0?input.focus():s.d.wrap.focus();
    },
    getDimensions:function(){
      var el=$(window);
      var h=$.browser.opera&&$.browser.version>'9.5'&&$.fn.jquery<='1.2.6'?document.documentElement['clientHeight']:$.browser.opera&&$.browser.version<'9.5'&&$.fn.jquery>'1.2.6'?window.innerHeight:el.height();
      return[h,el.width()];
    },
    getVal:function(v){
      return v=='auto'?0:v.indexOf('%')>0?v:parseInt(v.replace(/px/,''));
    },
    setContainerDimensions:function(resize){
      var s=this;
      if(!resize||(resize&&s.o.autoResize)){
	var ch=$.browser.opera?s.d.container.height():s.getVal(s.d.container.css('height')),cw=$.browser.opera?s.d.container.width():s.getVal(s.d.container.css('width')),dh=s.d.data.outerHeight(true),dw=s.d.data.outerWidth(true);
	var mh=s.o.maxHeight&&s.o.maxHeight<w[0]?s.o.maxHeight:w[0],mw=s.o.maxWidth&&s.o.maxWidth<w[1]?s.o.maxWidth:w[1];
	if(!ch){
	  if(!dh){
	    ch=s.o.minHeight;
	  }
	  else{
	    if(dh>mh){
	      ch=mh;
	    }
	    else if(dh<s.o.minHeight){
	      ch=s.o.minHeight;
	    }
	    else{
	      ch=dh;
	    }
	  }
	}
	else{
	  ch=ch>mh?mh:ch;
	}
	if(!cw){
	  if(!dw){
	    cw=s.o.minWidth;
	  }
	  else{
	    if(dw>mw){
	      cw=mw;
	    }
	    else if(dw<s.o.minWidth){
	      cw=s.o.minWidth;
	    }
	    else{
	      cw=dw;
	    }
	  }
	}
	else{
	  cw=cw>mw?mw:cw;
	}
	s.d.container.css({height:ch,width:cw});
	
	/* entfernt am 06.04.11. um zu gewährleisten, dass beim IE keine Scrollbalken erscheinen */
// 	if(dh>ch||dw>cw){
// 	  s.d.wrap.css({overflow:'auto'});
// 	}
      }
      if(s.o.autoPosition){
	s.setPosition();
      }
    },
    setPosition:function(){
      var s=this,top,left,hc=(w[0]/2)-(s.d.container.outerHeight(true)/2),vc=(w[1]/2)-(s.d.container.outerWidth(true)/2);
      if(s.o.position&&Object.prototype.toString.call(s.o.position)==="[object Array]"){
	top=s.o.position[0]||hc;left=s.o.position[1]||vc;
      }
      else{
	top=hc;left=vc;
      }
      s.d.container.css({left:left,top:top});
    },
    watchTab:function(e){
      var s=this;
      if($(e.target).parents('.simplemodal-container').length>0){
	s.inputs=$(':input:enabled:visible:first, :input:enabled:visible:last',s.d.data[0]);
	if((!e.shiftKey&&e.target==s.inputs[s.inputs.length-1])||(e.shiftKey&&e.target==s.inputs[0])||s.inputs.length==0){
	  e.preventDefault();
	  var pos=e.shiftKey?'last':'first';
	  setTimeout(function(){
	    s.focus(pos);
	  },10);
	}
      }
      else{
	e.preventDefault();
	setTimeout(function(){s.focus();},10);
      }
    },
    open:function(){
      var s=this;s.d.iframe&&s.d.iframe.show();
      if($.isFunction(s.o.onOpen)){
	s.o.onOpen.apply(s,[s.d]);
      }
      else{
	s.d.overlay.show();
	s.d.container.show();
	s.d.data.show();
      }
      s.focus();
      s.bindEvents();
    },
    close:function(){
      var s=this;
      if(!s.d.data){
	return false;
      }
      s.unbindEvents();
      if($.isFunction(s.o.onClose)&&!s.occb){
	s.occb=true;s.o.onClose.apply(s,[s.d]);
      }
      else{
	if(s.d.placeholder){
	  var ph=$('#simplemodal-placeholder');
	  if(s.o.persist){
	    ph.replaceWith(s.d.data.removeClass('simplemodal-data').css('display',s.display));
	  }
	  else{
	    s.d.data.hide().remove();
	    ph.replaceWith(s.d.orig);
	  }
	}
	else{
	  s.d.data.hide().remove();
	}
	s.d.container.hide().remove();
	s.d.overlay.hide().remove();
	s.d.iframe&&s.d.iframe.hide().remove();
	s.d={};
      }
    }
  };
})(jQuery);


	function show_box(da_url, da_height, da_width , da_close, da_type) {
		if (typeof da_height == 'undefined' || da_height == '') var da_height=504;
		if ( typeof da_width == 'undefined' || da_width == '') var da_width=732;
		if ( typeof da_close == 'undefined' || da_close == '') var da_close=true;
		if ( typeof da_type == 'undefined' || da_type == '') var da_type="iframe";

		if ( da_type == "iframe" ) {
			/* Breite des iframes angepasst, damit die Box auch für den IE passt */
			$.modal('<iframe src="' + da_url + '" height="' + (da_height) + '" width="' + (da_width) + '" style="border:0">', {
				closeHTML:"",
				opacity:30,
				containerCss:{
					height:da_height,
					padding:2,
					width:da_width
				},
				overlayClose:da_close
			});
		}

		if ( da_type == "content" ) {
			$.modal(''+ da_url +'', {
				closeHTML:"",
				opacity:30,
				containerCss:{
					height:da_height,
					padding:2,
					width:da_width
				},
				overlayClose:da_close
			});
		}

		if ( da_type == "div" ) {
			
			$("#"+da_url+"").modal({
				closeHTML:"",
				opacity:30,
				containerCss:{
					height:da_height,
					padding:2,
					width:da_width
				},
				overlayClose:da_close
			});
		}

	}
