(
function
($) {
$.fn.fixedSidebar =
function
(options) {
var
defaults = {
width: 100,
height: 20,
horizontalType:
'left'
,
horizontalValue:20,
verticalType:
'top'
,
verticalValue:30,
berth:
'browser'
,
wrapWidth:960,
isHide:
false
,
scrollTop:120,
content:
''
};
var
opts = $.extend(defaults, options);
var
floatBlock =
'floatBlock_'
+ Math.round(Math.random() * 10000);
var
positiontype =
'undefined'
==
typeof
(document.body.style.maxHeight) ?
"absolute"
:
"fixed"
;
if
(opts.horizontalType !=
'left'
&& opts.horizontalType !=
'right'
) {
opts.horizontalType =
'left'
;
}
if
(opts.verticalType !=
'top'
&& opts.verticalType !=
'bottom'
) {
opts.verticalType =
'top'
;
}
var
horizontalValue=0;
var
verticalValue=0;
setHorizontalValue();
setVerticalValue();
$(
"body"
).append(
'<div id="'
+ floatBlock +
'" style="width:'
+opts.width+
'px;height:'
+opts.height+
'px;position:'
+ positiontype +
';top:'
+ verticalValue +
'px;'
+ opts.horizontalType +
':'
+ horizontalValue +
'px;z-index:999;overflow:hidden;">'
+opts.content+
'</div>'
);
if
(opts.isHide) { $(
"#"
+ floatBlock +
""
).hide(); }
$(window).scroll(
function
() {
if
(
'undefined'
==
typeof
(document.body.style.maxHeight)) {
setVerticalValue();
$(
"#"
+ floatBlock +
""
).css(
'top'
, verticalValue +
"px"
);
}
if
(opts.isHide)
{
if
($(window).scrollTop()>opts.scrollTop)
{ $(
"#"
+ floatBlock +
""
).slideDown(); }
else
{ $(
"#"
+ floatBlock +
""
).slideUp(); }
}
})
$(window).resize(
function
() {
setHorizontalValue();
$(
"#"
+ floatBlock +
""
).css(opts.horizontalType, horizontalValue +
"px"
);
setVerticalValue();
$(
"#"
+ floatBlock +
""
).css(
'top'
, verticalValue +
"px"
);
})
function
setHorizontalValue()
{
horizontalValue = opts.berth ==
'wrap'
? ($(window).width()-opts.wrapWidth)/2-opts.width-opts.horizontalValue : opts.horizontalValue;
}
function
setVerticalValue()
{
if
(
'undefined'
==
typeof
(document.body.style.maxHeight)) {
verticalValue = opts.verticalType ==
'top'
? $(window).scrollTop()+opts.verticalValue : $(window).scrollTop()+$(window).height()-opts.verticalValue;
}
else
{
verticalValue = opts.verticalType ==
'top'
? opts.verticalValue : $(window).height()-opts.verticalValue;
}
}
};
})(jQuery)