/*
 * jqModal - Minimalist Modaling with jQuery
 *   (http://dev.iceburg.net/jquery/jqModal/)
 *
 * Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 * 
 * $Version: 03/01/2009 +r14 - modified
 */
(function($) {
	$.fn.jqm=function(conf){
		var defaultConf={
			overlay: 50,
			overlayClass: 'jqmOverlay',
			closeClass: 'jqmClose',
			trigger: '.jqModal',
			width: 700,
			height: 500,
			modal: F,
			onShow: F,
			onHide: F,
			onLoad: F,
			Speed: 400,
			closebtn:false,
			closebtnimg:''
		};
			return this.each(function(){
				if(this._jqm) {
					return H[this._jqm].c=$.extend({},H[this._jqm].c,conf);
				}
				else {
					s++;
					this._jqm=s;
					H[s]={c:$.extend(defaultConf,$.jqm.params,conf),a:F,w:$(this).addClass('jqmID'+s),s:s};
					if(defaultConf.trigger) {
						$(this).jqmAddTrigger(defaultConf.trigger);
					}
				}
			});
	};



	$.fn.jqmAddClose=function(e){
		return hs(this,e,'jqmHide');
	};

	$.fn.jqmAddTrigger=function(e){
		return hs(this,e,'jqmShow');
	};

	$.fn.jqmShow=function(t) {
		return this.each(function(){
				t=t||window.event;
				$.jqm.open(this._jqm,t);
		});
	};


	$.fn.jqmHide=function(t){
		return this.each(function(){
				t=t||window.event;
				$.jqm.close(this._jqm,t);
		});
	};

	$.jqm = {
		hash:{},
		open:function(s,t){
			var h=H[s],
				c=h.c,
				cc='.'+c.closeClass,
				z=(parseInt(h.w.css('z-index'))),
				z=(z>0)?z:5000,
				o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});
			if(h.a) {
				return F;
			}
				h.t=t;
				$.extend(h.c, t);
				h.a=true;
				sus=( (($(window).height() / 2) - ( h.c.height / 2 ) ));
				stanga=( (($(window).width() / 2) - ( h.c.width / 2 ) ));
				h.w.css({zIndex:z, height: h.c.height+'px', width: h.c.width+'px', top: sus+ 'px', left: stanga+ 'px' });
				if(h.c.closebtn) {
					instanga=(parseInt(h.c.width)-18);
					btn_close='<div class="jqmClose" style="width:30px;height:30px;position: absolute; top: -10px; left: '+instanga+'px; cursor: pointer; display: block; z-index: 3010;"><img src="'+h.c.closebtnimg+'" alt="" /></div>';
					h.w.append(btn_close);
				}

		if(c.modal) {
			if(!A[0]) {
				L('bind');
			}
			A.push(s);
		}
		else if(c.overlay > 0) {
			h.w.jqmAddClose(o);
		}
		else o=F;

		h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;

		if(cc) {
			h.w.jqmAddClose($(cc,h.w));
		}

		if(c.toTop&&h.o){
			h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);	
		}
		if (h.c.Speed>0&&h.c.orig) {
			dimOri=$.extend({},{width:$(h.c.orig).width(),height:$(h.c.orig).height(),'opacity':0.5}, {left:$(h.c.orig).offset().left,top:$(h.c.orig).offset().top});
			dimBoxTarget=$.extend({},{width:h.c.width,height:h.c.height,'opacity':1}, {left:stanga,top:sus});
			h.w.css(dimOri).animate(dimBoxTarget,h.c.Speed);
		}
		else {
			(c.onShow)?c.onShow(h):h.w.show();
		}
		return F;

	},

	close:function(s){
		var h=H[s];if(!h.a)return F;h.a=F;
		if(A[0]){A.pop();if(!A[0])L('unbind');}
		if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();
		if(h.c.onHide) {
			h.c.onHide(h);
		}
		else{
			if (h.c.Speed>0&&h.c.orig) {
				dimOri=$.extend({},{width:$(h.c.orig).width(),height:$(h.c.orig).height(),'opacity':0.5}, {left:$(h.c.orig).offset().left,top:$(h.c.orig).offset().top});
				dimBoxTarget=$.extend({},{width:h.c.width,height:h.c.height,'opacity':1}, {left:stanga,top:sus});
				h.w.empty();
				h.w.css(dimBoxTarget).animate(dimOri,h.c.Speed, function(){$(this).hide()});
			}
			else {
				h.w.empty();
				h.w.hide();
			}
				if(h.o)h.o.remove();
		}
		return F;
	},

	params:{}};
	var s=0,
		H=$.jqm.hash,
		A=[],
		F=false,
	i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),


	f=function(h){
		try{$(':input:visible',h.w)[0].focus();}
		catch(_){}
	},
	L=function(t){
		$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);
	},
	m=function(e){
		var h=H[A[A.length-1]],
			r=(!$(e.target).parents('.jqmID'+h.s)[0]);
		if(r){
			f(h);
		}
		return !r;
	},
	hs=function(w,t,c){
		return w.each(function(){
			var s=this._jqm;
			$(t).each(function() {
				if(!this[c]){
					this[c]=[];
					$(this).click(function(){
						for(var i in {jqmShow:1,jqmHide:1}) {
							for(var s in this[i]) {
								if(H[this[i][s]]) {
									H[this[i][s]].w[i](this);
									return F;
								}
							}
						}
					});
					this[c].push(s);
				}
			});
		});
	};

})(jQuery);
