/*
 * 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: 06/22/2008 +r12
 * 
 */
(function($) {
    $.fn.jqm=function(o){
        var _o = {
            overlay: 50,
            overlayClass: 'jqmOverlay',
            closeClass: 'jqmClose',
            minimizeClass: 'jqmMinimize',
            refreshClass: 'jqmRefresh',
            trigger: '.jqModal',
            ajax: false,
            ajaxText: '',
            ajaxParam: '',
            target: false,
            modal: false,
            toTop: false,
            onShow: false,
            onHide: false,
            onLoad: false
        };
        return this.each(
            function(){
                if(this._jqm)
                    return H[this._jqm].c=$.extend({},H[this._jqm].c,o);
                s++; 
                this._jqm=s;
                H[s]={
                    c:$.extend(_o, o),
                    a:false,
                    w:$(this).addClass('jqmID'+s),
                    s:s
                };
                if(_o.trigger)
                    $(this).jqmAddTrigger(_o.trigger);
            }
        );
    };
    $.fn.jqmAddClose=function(e){hs(this,e,'jqmHide'); return this;};
    $.fn.jqmAddMinimize=function(e){hs(this,e,'jqmMinimize'); return this;};
    $.fn.jqmAddRefresh=function(e){hs(this,e,'jqmRefresh'); return this;};
    $.fn.jqmAddTrigger=function(e){hs(this,e,'jqmShow'); return this;};
    $.fn.jqmShow=function(t){return this.each(function(){if(!H[this._jqm].a)$.jqm.open(this._jqm,t)});};
    $.fn.jqmHide=function(t){return this.each(function(){if(H[this._jqm].a)$.jqm.close(this._jqm,t)});};
    $.fn.jqmMinimize=function(t){return this.each(function(){if(H[this._jqm].a)$.jqm.minimize(this._jqm,t)});};
    $.fn.jqmRefresh=function(t){return this.each(function(){if(H[this._jqm].a)$.jqm.refresh(this._jqm,t)});};
    $.jqm = {
        hash:{},
        refresh:function(s,t){
            var h=H[s],
                myId=h.w.attr("id").replace(new RegExp("(window_)", "g"),"");
			if($("iframe", h.w).length)
				$("#window_"+myId+" .jqmAlertContent iframe").contents().prevObject[0].contentWindow.document.location.reload();
			else {
				$("#window_"+myId).jqmHide();
				$("#window_"+myId).jqmShow();
			}
            return false;
        },
        minimize:function(s,t){
            var h=H[s],
                myId=h.w.attr("id").replace(new RegExp("(window_)", "g"),"");
            if(!$("#barreTaches #Bouton_"+myId).length) {
                $('#barreTaches').append(
                    "<div id='Bouton_"+myId+"' class='boutonTache' title='"+$(".jqmAlertTitle h1", h.w).html()+"'>" + 
                        $(".jqmAlertTitle h1", h.w).html()+
                    "</div>");
                $("#Bouton_"+myId).click(
                    function() {
                        var myId = $(this).attr("id").replace(new RegExp("(Bouton_)", "g"),"");
                        $("#window_"+myId+".jqmAlert").show();
                        $("#window_"+myId+".jqmAlertWindow").show();
                        dp.focusOn(myId);
                        $(this).remove();
                    }
                );
                $("#window_"+myId+".jqmAlert").hide();
                $("#window_"+myId+".jqmAlertWindow").hide();
            }
            return false;
        },
        open:function(s,t){
            var h=H[s],
                c=h.c,
                cc='.'+c.closeClass,
                cm='.'+c.minimizeClass,
                cr='.'+c.refreshClass,
                z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,
                o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});
                h.t=t;
            h.a=true;
            h.w.css('z-index',z);
            if(c.modal) {if(!A[0])F('bind');A.push(s);o.css('cursor','wait');}
            else if(c.overlay > 0){h.w.jqmAddClose(o);h.w.jqmAddMinimize(o);h.w.jqmAddRefresh(o);}
            else o=false;
            h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):false;
            if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}}

            if(c.ajax) {
                var r=c.target||h.w,
                u=c.ajax,
                r=(typeof r == 'string')?$(r,h.w):$(r),
                u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u;
                r.html(c.ajaxText).load(
                    u, 
                    c.ajaxParam, 
                    function(){
                        if(c.onLoad) c.onLoad.call(this,h);
                        if(cc) {
                            h.w.jqmAddClose($(cc,h.w));
                            h.w.jqmAddMinimize($(cm,h.w));
                            h.w.jqmAddRefresh($(cr,h.w));
                            e(h);
                        }
                    }
                );
            }
            else if(cc) {
                h.w.jqmAddClose($(cc,h.w));
                h.w.jqmAddMinimize($(cm,h.w));
                h.w.jqmAddRefresh($(cr,h.w));
            }

            if(c.toTop&&h.o)
                h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);	
            (c.onShow)?c.onShow(h):h.w.show();
            e(h);
            return false;
        },
        close:function(s){
            var h=H[s];
                h.a=false;
            if(A[0]){A.pop();if(!A[0])F('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{
                h.w.hide();
				$(".jqmAlertContent", h.w).html('');
                if(h.o) h.o.remove();
            } 
            return false;
        }
    };
    var s=0,
        H=$.jqm.hash,
        A=[],
        ie6=$.browser.msie&&($.browser.version == "6.0"),
        i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),
        e=function(h){if(ie6)if(h.o)h.o.html('<p style="width:100%;height:100%"/>').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);},
        f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(e){}},
        F=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,e,y){
            var s=[];
            w.each(function(){s.push(this._jqm)});
            $(e).each(
                function(){
                    if(this[y]) $.extend(this[y],s);
                    else{
                        this[y]=s;
                        $(this).click(
                            function(){
                                for(var i in {jqmShow:1,jqmHide:1,jqmMinimize:1,jqmRefresh:1})
                                    for(var s in this[i])
                                        if(H[this[i][s]])
                                            H[this[i][s]].w[i](this);
                                return false;
                            }
                        );
                    }
                }
            );
        };
}
)(jQuery);
