JavaScript-Toolbox
view release on metacpan or search on metacpan
Toolbox/popUpBox/Browser/DOM.pm view on Meta::CPAN
package JavaScript::Toolbox::popUpBox::Browser::DOM;
require v5.6;
use strict;
use warnings;
our $VERSION = '0.01';
use base qw(JavaScript::Toolbox::popUpBox::Browser);
sub new {
my ($proto, %args) = @_;
my $class = ref($proto) || $proto;
my $self = {};
if ($args{comply} eq 'IE') {
$self->{SCROLLOFFSET} = 'document.body.scrollTop';
} elsif ($args{comply} eq 'Opera') {
$self->{SCROLLOFFSET} = '0';
} else {
$self->{SCROLLOFFSET} = 'self.pageYOffset';
}
$self->{COMPLIANCE} = $args{comply};
bless ($self, $class);
return $self;
}
sub show {
my ($self, undef) = @_;
my $scrollOffset = $self->{SCROLLOFFSET};
my $code = qq{
// -- W3C Standards Compliance -- The JavaScript::Toolbox.
// -- DOM Level 2 JavaScript/ECMAScript language Bindings.
function showBox(event, content) {
var currentX, //mouse position on X axis
currentY, //mouse position on X axis
x, //layer target position on X axis
y, //layer target position on Y axis
docWidth, //width of current frame
docHeight, //height of current frame
layerWidth, //width of popup layer
layerHeight, //height of popup layer
popupElement; //points to the popup element
var name = 'popUpBox';
currentX = event.clientX,
currentY = event.clientY;
docHeight = document.height;
docWidth = document.width;
popupElement = document.getElementById(name);
layerWidth = popupElement.style.width;
layerHeight = popupElement.style.height;
// -- Calculate popup new position.
if ((currentX + layerWidth) > docWidth) {
x = (currentX - layerWidth);
} else {
x = currentX;
}
if ((currentY + layerHeight) >= docHeight) {
y = (currentY - layerHeight - 0);
} else {
y = currentY + 10;
}
// -- Adjust to Window Scrolling - Not part of the DOM.
y += $scrollOffset;
// -- Set content. Note: 'innerHTML' is not part of the
// -- DOM Spec. It is used here on the assumption that
// -- it will be part of it (innerText?) and because of
// -- its use since IE5 and Netscape 6 (this may change
// -- to be fully standards compliant).
//popupElement.innerHTML = self.pageYOffset;
// -- Set position and visibility.
popupElement.style.left = parseInt(x);
popupElement.style.top = parseInt(y);
popupElement.style.visibility = "visible";
}
};
return $code;
}
sub hide {
my $code = q{
function hideBox() {
var name = 'popUpBox';
document.getElementById(name).style.visibility = "hidden";
}
};
return $code;
}
sub javascript {
my ($self, %args) = @_;
my $show = $self->show();
my $hide = $self->hide();
my $code = qq{
<script language="JavaScript">
<!--
$show
$hide
//-->
</script>
};
return $code;
}
1;
__END__
=head1 NAME
JavaScript::Toolbox::popUpBox - JavaScript popUpBox using <div> tags.
=head1 SYNOPSIS
use JavaScript::Toolbox::popUpBox;
blah blah blah
=head1 DESCRIPTION
Stub documentation for JavaScript::Toolbox, created by h2xs. It looks like the
author of the extension was negligent enough to leave the stub
unedited.
Blah blah blah.
=head2 EXPORT
None by default.
( run in 1.168 second using v1.01-cache-2.11-cpan-364913b4093 )