(function($){$.tools=$.tools||{version:{}};$.tools.version.expose='1.0.3';function getWidth(){var w=$(window).width();if($.browser.mozilla){return w;}
var x;if(window.innerHeight&&window.scrollMaxY){x=window.innerWidth+window.scrollMaxX;}else if(document.body.scrollHeight>document.body.offsetHeight){x=document.body.scrollWidth;}else{x=document.body.offsetWidth;}
return x<w?x+20:w;}
function Expose(els,opts){var self=this,mask=null,loaded=false,origIndex=0;function bind(name,fn){$(self).bind(name,function(e,args){if(fn&&fn.call(this)===false&&args){args.proceed=false;}});return self;}
$.each(opts,function(name,fn){if($.isFunction(fn)){bind(name,fn);}});$(window).bind("resize.expose",function(){if(mask){mask.css({width:getWidth(),height:$(document).height()});}});$.extend(this,{getMask:function(){return mask;},getExposed:function(){return els;},getConf:function(){return opts;},isLoaded:function(){return loaded;},load:function(){if(loaded){return self;}
origIndex=els.eq(0).css("zIndex");if(opts.maskId){mask=$("#"+opts.maskId);}
if(!mask||!mask.length){mask=$('<div/>').css({position:'absolute',top:0,left:0,width:getWidth(),height:$(document).height(),display:'none',opacity:0,zIndex:opts.zIndex});if(opts.maskId){mask.attr("id",opts.maskId);}
$("body").append(mask);var bg=mask.css("backgroundColor");if(!bg||bg=='transparent'||bg=='rgba(0, 0, 0, 0)'){mask.css("backgroundColor",opts.color);}
if(opts.closeOnEsc){$(document).bind("keydown.unexpose",function(evt){if(evt.keyCode==27){self.close();}});}
if(opts.closeOnClick){mask.bind("click.unexpose",function(){self.close();});}}
var p={proceed:true};$(self).trigger("onBeforeLoad",p);if(!p.proceed){return self;}
$.each(els,function(){var el=$(this);if(!/relative|absolute|fixed/i.test(el.css("position"))){el.css("position","relative");}});els.css({zIndex:opts.zIndex+1});var h=mask.height();if(!this.isLoaded()){mask.css({opacity:0,display:'block'}).fadeTo(opts.loadSpeed,opts.opacity,function(){if(mask.height()!=h){mask.css("height",h);}
$(self).trigger("onLoad");});}
loaded=true;return self;},close:function(){if(!loaded){return self;}
var p={proceed:true};$(self).trigger("onBeforeClose",p);if(p.proceed===false){return self;}
mask.fadeOut(opts.closeSpeed,function(){$(self).trigger("onClose");els.css({zIndex:$.browser.msie?origIndex:null});});loaded=false;return self;},onBeforeLoad:function(fn){return bind("onBeforeLoad",fn);},onLoad:function(fn){return bind("onLoad",fn);},onBeforeClose:function(fn){return bind("onBeforeClose",fn);},onClose:function(fn){return bind("onClose",fn);}});}
$.fn.expose=function(conf){var el=this.eq(typeof conf=='number'?conf:0).data("expose");if(el){return el;}
var opts={maskId:null,loadSpeed:'slow',closeSpeed:'fast',closeOnClick:true,closeOnEsc:true,zIndex:9998,opacity:0.5,color:'#456',api:false};if(typeof conf=='string'){conf={color:conf};}
$.extend(opts,conf);this.each(function(){el=new Expose($(this),opts);$(this).data("expose",el);});return opts.api?el:this;};})(jQuery);