﻿$(document).ready(function(){$("*[data-floatbox-top], *[data-floatbox-bottom]").each(function(){var a=parseInt($(this).attr('data-floatbox-top'));var b=parseInt($(this).attr('data-floatbox-bottom'));$(this).floatBox(a,b)})});(function($){$.fn.margin=function(b){if(b){for(var c in["top","left","bottom","right"]){if(b[c]!==undefined){this.css('margin-'+c,b[c])}}return this}else{var d=function(a){return parseInt(a,10)||0};return{top:d(this.css('margin-top')),bottom:d(this.css('margin-bottom')),left:d(this.css('margin-left')),right:d(this.css('margin-right'))}}};$.fn.floatBox=function(c,d){$.fn.floatBox.global={};$.fn.floatBox.global.mantinelTop=c;$.fn.floatBox.global.mantinelBottom=d;$.fn.floatBox.global.mantinelTopWindow=true;$.fn.floatBox.global.targets=this;this.each(function(){var a=$(this);var b=$('<div></div>');b.css({position:'absolute',top:a.position().top,left:a.position().left,width:'1px',height:'1px'});a.before(b);a.data({positioner:b,initCssPosition:a.css('position'),initCssTop:a.css('top'),initCssLeft:a.css('left')});$.fn.floatBox.internal.setState($.fn.floatBox.internal.states.Free,a)});$.fn.floatBox.internal.update();$(window).resize(function(){$.fn.floatBox.internal.update()}).scroll(function(){$.fn.floatBox.internal.update()}).mousedown(function(a){if(a.clientX>$(window).width()||a.clientY>$(window).height()){$.fn.floatBox.internal.update()}});return this};$.fn.floatBox.internal={states:{Ignored:-1,Free:0,FixTop:1,AbsBottom:2},setState:function(a,b){b.data('state',a);if(a==$.fn.floatBox.internal.states.Ignored){return}switch(a){case $.fn.floatBox.internal.states.Free:b.css({position:b.data('initCssPosition'),top:b.data('initCssTop'),left:b.data('initCssLeft')});break;case $.fn.floatBox.internal.states.AbsBottom:b.css({position:'absolute',top:$.fn.floatBox.global.mantinelTopWindow?$(document).height()-$.fn.floatBox.global.mantinelBottom-b.height()-b.parent().offset().top:$(document).height()-$.fn.floatBox.global.mantinelBottom-b.height()-200,left:b.data('positioner').offset().left-b.parent().offset().left});break;case $.fn.floatBox.internal.states.FixTop:b.css({position:'fixed',top:$.fn.floatBox.global.mantinelTopWindow?$.fn.floatBox.global.mantinelTop-b.margin().top:b.data('positioner').offset().top-$.fn.floatBox.global.mantinelTop-b.margin().top,left:b.data('positioner').offset().left-$(window).scrollLeft()-b.margin().left});break}},update:function(){$.fn.floatBox.global.targets.each(function(){var a=$(this);switch(a.data('state')){case $.fn.floatBox.internal.states.Free:if($.fn.floatBox.internal.checkMantinelTop(a)){$.fn.floatBox.internal.setState($.fn.floatBox.internal.states.FixTop,a)}break;case $.fn.floatBox.internal.states.FixTop:if(!$.fn.floatBox.internal.checkMantinelTop(a)){$.fn.floatBox.internal.setState($.fn.floatBox.internal.states.Free,a);break}if($.fn.floatBox.internal.checkMantinelBottom(a)){$.fn.floatBox.internal.setState($.fn.floatBox.internal.states.AbsBottom,a);break}a.css({left:a.data('positioner').offset().left});break;case $.fn.floatBox.internal.states.AbsBottom:if(!$.fn.floatBox.internal.checkMantinelBottom(a)){$.fn.floatBox.internal.setState($.fn.floatBox.internal.states.FixTop,a);break}break}})},checkMantinelTop:function(a){if($.fn.floatBox.global.mantinelTop<0){return false}if($.fn.floatBox.global.mantinelTopWindow){return a.data('positioner').offset().top-$(window).scrollTop()<=$.fn.floatBox.global.mantinelTop}else{return $(window).scrollTop()>$.fn.floatBox.global.mantinelTop}},checkMantinelBottom:function(a){if($.fn.floatBox.global.mantinelBottom<0){return false}var b=$(document).height()-$.fn.floatBox.global.mantinelTop-a.height()-$(window).scrollTop();if(!$.fn.floatBox.global.mantinelTopWindow){b-=a.data('positioner').offset().top+a.margin().top}return b<=$.fn.floatBox.global.mantinelBottom}}})(jQuery);
