﻿
;(function($){
if(/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery)||/^1.1/.test($.fn.jquery)){
alert('blockUI requires jQuery v1.2.3 or later!  You are using v'+$.fn.jquery);
return;
}
$.fn._fadeIn=$.fn.fadeIn;
var mode=document.documentMode||0;
var setExpr=$.browser.msie&&(($.browser.version<8&&!mode)||mode<8);
var ie6=$.browser.msie&&/MSIE 6.0/.test(navigator.userAgent)&&!mode;
$.blockUI=function(opts){install(window,opts);};
$.unblockUI=function(opts){remove(window,opts);};
$.growlUI=function(title,message,timeout,onClose){
var $m=$('<div class="growlUI"></div>');
if(title)$m.append('<h1>'+title+'</h1>');
if(message)$m.append('<h2>'+message+'</h2>');
if(timeout==undefined)timeout=3000;
$.blockUI({
message:$m,fadeIn:700,fadeOut:1000,centerY:false,
timeout:timeout,showOverlay:false,
onUnblock:onClose,
css:$.blockUI.defaults.growlCSS
});
};
$.fn.block=function(opts){
return this.unblock({fadeOut:0}).each(function(){
if($.css(this,'position')=='static')
this.style.position='relative';
if($.browser.msie)
this.style.zoom=1;
install(this,opts);
});
};
$.fn.unblock=function(opts){
return this.each(function(){
remove(this,opts);
});
};
$.blockUI.version=2.23;
$.blockUI.defaults={
message:'<h1>Please wait...</h1>',
css:{
padding:0,
margin:0,
width:'30%',
top:'40%',
left:'35%',
textAlign:'center',
color:'#000',
border:'3px solid #aaa',
backgroundColor:'#fff',
cursor:'wait'
},
overlayCSS:{
backgroundColor:'#000',
opacity:0.6,
cursor:'wait'
},
growlCSS:{
width:'350px',
top:'10px',
left:'',
right:'10px',
border:'none',
padding:'5px',
opacity:0.6,
cursor:null,
color:'#fff',
backgroundColor:'#000',
'-webkit-border-radius':'10px',
'-moz-border-radius':'10px'
},
iframeSrc:/^https/i.test(window.location.href||'')?'javascript:false':'about:blank',
forceIframe:false,
baseZ:1000,
centerX:true,
centerY:true,
allowBodyStretch:true,
bindEvents:true,
constrainTabKey:true,
fadeIn:200,
fadeOut:400,
timeout:0,
showOverlay:true,
focusInput:true,
applyPlatformOpacityRules:true,
onUnblock:null,
quirksmodeOffsetHack:4
};
var pageBlock=null;
var pageBlockEls=[];
function install(el,opts){
var full=(el==window);
var msg=opts&&opts.message!==undefined?opts.message:undefined;
opts=$.extend({},$.blockUI.defaults,opts||{});
opts.overlayCSS=$.extend({},$.blockUI.defaults.overlayCSS,opts.overlayCSS||{});
var css=$.extend({},$.blockUI.defaults.css,opts.css||{});
msg=msg===undefined?opts.message:msg;
if(full&&pageBlock)
remove(window,{fadeOut:0});
if(msg&&typeof msg!='string'&&(msg.parentNode||msg.jquery)){
var node=msg.jquery?msg[0]:msg;
var data={};
$(el).data('blockUI.history',data);
data.el=node;
data.parent=node.parentNode;
data.display=node.style.display;
data.position=node.style.position;
if(data.parent)
data.parent.removeChild(node);
}
var z=opts.baseZ;
var lyr1=($.browser.msie||opts.forceIframe)
?$('<iframe class="blockUI" style="z-index:'+(z++)+';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>')
:$('<div class="blockUI" style="display:none"></div>');
var lyr2=$('<div class="blockUI blockOverlay" style="z-index:'+(z++)+';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
var lyr3=full?$('<div class="blockUI blockMsg blockPage" style="z-index:'+z+';display:none;position:fixed"></div>')
:$('<div class="blockUI blockMsg blockElement" style="z-index:'+z+';display:none;position:absolute"></div>');
if(msg)
lyr3.css(css);
if(!opts.applyPlatformOpacityRules||!($.browser.mozilla&&/Linux/.test(navigator.platform)))
lyr2.css(opts.overlayCSS);
lyr2.css('position',full?'fixed':'absolute');
if($.browser.msie||opts.forceIframe)
lyr1.css('opacity',0.0);
$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full?'body':el);
var expr=setExpr&&(!$.boxModel||$('object,embed',full?null:el).length>0);
if(ie6||expr){
if(full&&opts.allowBodyStretch&&$.boxModel)
$('html,body').css('height','100%');
if((ie6||!$.boxModel)&&!full){
var t=sz(el,'borderTopWidth'),l=sz(el,'borderLeftWidth');
var fixT=t?'(0 - '+t+')':0;
var fixL=l?'(0 - '+l+')':0;
}
$.each([lyr1,lyr2,lyr3],function(i,o){
var s=o[0].style;
s.position='absolute';
if(i<2){
full?s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"')
:s.setExpression('height','this.parentNode.offsetHeight + "px"');
full?s.setExpression('width','jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"')
:s.setExpression('width','this.parentNode.offsetWidth + "px"');
if(fixL)s.setExpression('left',fixL);
if(fixT)s.setExpression('top',fixT);
}
else if(opts.centerY){
if(full)s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
s.marginTop=0;
}
else if(!opts.centerY&&full){
var top=(opts.css&&opts.css.top)?parseInt(opts.css.top):0;
var expression='((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
s.setExpression('top',expression);
}
});
}
if(msg){
lyr3.append(msg);
if(msg.jquery||msg.nodeType)
$(msg).show();
}
if(($.browser.msie||opts.forceIframe)&&opts.showOverlay)
lyr1.show();
if(opts.fadeIn){
if(opts.showOverlay)
lyr2._fadeIn(opts.fadeIn);
if(msg)
lyr3.fadeIn(opts.fadeIn);
}
else{
if(opts.showOverlay)
lyr2.show();
if(msg)
lyr3.show();
}
bind(1,el,opts);
if(full){
pageBlock=lyr3[0];
pageBlockEls=$(':input:enabled:visible',pageBlock);
if(opts.focusInput)
setTimeout(focus,20);
}
else
center(lyr3[0],opts.centerX,opts.centerY);
if(opts.timeout){
var to=setTimeout(function(){
full?$.unblockUI(opts):$(el).unblock(opts);
},opts.timeout);
$(el).data('blockUI.timeout',to);
}
};
function remove(el,opts){
var full=el==window;
var $el=$(el);
var data=$el.data('blockUI.history');
var to=$el.data('blockUI.timeout');
if(to){
clearTimeout(to);
$el.removeData('blockUI.timeout');
}
opts=$.extend({},$.blockUI.defaults,opts||{});
bind(0,el,opts);
var els=full?$('body').children().filter('.blockUI'):$('.blockUI',el);
if(full)
pageBlock=pageBlockEls=null;
if(opts.fadeOut){
els.fadeOut(opts.fadeOut);
setTimeout(function(){reset(els,data,opts,el);},opts.fadeOut);
}
else
reset(els,data,opts,el);
};
function reset(els,data,opts,el){
els.each(function(i,o){
if(this.parentNode)
this.parentNode.removeChild(this);
});
if(data&&data.el){
data.el.style.display=data.display;
data.el.style.position=data.position;
if(data.parent)
data.parent.appendChild(data.el);
$(data.el).removeData('blockUI.history');
}
if(typeof opts.onUnblock=='function')
opts.onUnblock(el,opts);
};
function bind(b,el,opts){
var full=el==window,$el=$(el);
if(!b&&(full&&!pageBlock||!full&&!$el.data('blockUI.isBlocked')))
return;
if(!full)
$el.data('blockUI.isBlocked',b);
if(!opts.bindEvents||(b&&!opts.showOverlay))
return;
var events='mousedown mouseup keydown keypress';
b?$(document).bind(events,opts,handler):$(document).unbind(events,handler);
};
function handler(e){
if(e.keyCode&&e.keyCode==9){
if(pageBlock&&e.data.constrainTabKey){
var els=pageBlockEls;
var fwd=!e.shiftKey&&e.target==els[els.length-1];
var back=e.shiftKey&&e.target==els[0];
if(fwd||back){
setTimeout(function(){focus(back)},10);
return false;
}
}
}
if($(e.target).parents('div.blockMsg').length>0)
return true;
return $(e.target).parents().children().filter('div.blockUI').length==0;
};
function focus(back){
if(!pageBlockEls)
return;
var e=pageBlockEls[back===true?pageBlockEls.length-1:0];
if(e)
e.focus();
};
function center(el,x,y){
var p=el.parentNode,s=el.style;
var l=((p.offsetWidth-el.offsetWidth)/2)-sz(p,'borderLeftWidth');
var t=((p.offsetHeight-el.offsetHeight)/2)-sz(p,'borderTopWidth');
if(x)s.left=l>0?(l+'px'):'0';
if(y)s.top=t>0?(t+'px'):'0';
};
function sz(el,p){
return parseInt($.css(el,p))||0;
};
})(jQuery);