/*
 * 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="بستن"></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
});
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({
        right: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);