/*
Original: Stefano Occhetti
E-mail: starnuto_di_topo@hotmil.com
Web Site: http://www.geocities.com/starnuto_di_topo_2001
*/
var ns = (document.layers)?1:0;
var imgwidth=40; // Image width
var imgheight=40; // Image height
/*
Fly:
this code provides some facilities
to show a fly moving on the screen.
The fly does not actually follow the
mouse, but a "Dot" (not shown!).
------------------------------------------------
*/
(document.layers)?window.captureEvents(Event.MOUSEMOVE):0;
(document.layers)?window.onMouseMove=getMousePosition:document.onmousemove=getMousePosition;
var Dot_Ro=60; //Dot's distance from the mouse pointer
var Dot_Theta=0; //Dot's initial angle
var Dot_Speed; //Dot's absolute Angular speed
var Dot_Direction=1; //Dot's direction (1=clockwise)
var Dot_x=0; //Dot's original position
var Dot_y=0;
var alpha; //Angle from the fly to the mouse
var mult; //Ausiliary variable to define the angle
var picX = 20; //Fly's coords.
var picY = 100;
var mouseX = 0; //Mouse coords.
var mouseY = 0;
var step = 10; //Pixels
var speed = 100;//u-seconds
// Dir specifies the right picture;
// img pre-caches images.
var dir = Array();
dir[-4]="Mosca_3.gif";
dir[-1]="Mosca_6.gif";
dir[-2]="Mosca_5.gif";
dir[-3]="Mosca_4.gif";
dir[3]="Mosca_8.gif";
dir[4]="Mosca_7.gif";
dir[1]="Mosca_2.gif";
dir[2]="Mosca_1.gif";
dir[0]="blank.png";
var img = Array();
for (var i=-4; i<5; i++){
img[i]=new Image();
img[i].src="https://x00.pw/layout/img/fly/"+dir[i];
}
// Some HTML code to show the fly.
if (ns) {
document.write(">
");
}else {
document.write("
");
document.write("

");
//document.write("");
}
// Shows the proper image for the fly.
function display(direction) { //direction must be from -4 to 4, but not 0.
if (ns) {
document.pic.src = img[direction].src;
}else{
pic.src = img[direction].src;
}
}
function getMousePosition(e) {
mouseY=(ns)?e.pageY:window.event.y + document.body.scrollTop;
mouseX=(ns)?e.pageX:window.event.x + document.body.scrollLeft;
}
//Calculate new position
function calcNewPos() {
/* All this calculations make the Dot to come near the mouse-pointer and the fly to follow the dot. */
//document.getElementById('FlyMousePos').innerHTML = 'calcNewPos mouseY = ' + mouseY + ' mouseY = ' + mouseX;
var dist=Math.sqrt(Math.pow(mouseY-picY,2) + Math.pow(mouseX-picX,2));
Dot_Speed=Math.PI/15;
Dot_Theta+=Dot_Direction*Dot_Speed;
Dot_x=mouseX+Dot_Ro*Math.cos(Dot_Theta);
Dot_y=mouseY+Dot_Ro*Math.sin(Dot_Theta);
var arg = (Dot_y-picY) / (Dot_x-picX);
mult = (Dot_x - picX < 0)? mult = -1:1;
alpha = Math.atan(arg);
var dx = mult * step * Math.cos(alpha);
var dy = mult * step * Math.sin(alpha);
picX += dx;
picY += dy;
}
// Moves the fly around the screen
function moveFly() {
// moves the fly in a new position...
calcNewPos();
var cor_pos = 0;
if (picY < 200) {
cor_pos = 200
}
//document.getElementById('FlyMousePos').innerHTML = 'moveFly mouseX = ' + mouseX + ' mouseY = ' + mouseY + ' picX = ' + picX + ' picY = ' + picY + ' cor_pos = ' + cor_pos;
if (ns) {
document.layers['FlyDiv'].left = (picX + cor_pos);
document.layers['FlyDiv'].top = (picY + cor_pos);
}else{
FlyDiv.style.left = (picX + cor_pos) - pic.width / 2;
FlyDiv.style.top = (picY + cor_pos) - pic.height / 2;
}
// ... and changes the image.
alpha=-180*alpha/Math.PI;
alpha+=22.5;
var OK=0;
for(var i=0; (i<4)&& !OK; i++){
if (alpha<-Math.PI+45*i){
display(mult*(i+1));
OK=1;
}
}
}
// Changes Dot's turning direction
function ChangeDotDirection() {
Dot_Direction=-Dot_Direction;
Dot_Theta+=Math.PI;
}
//Go!
setInterval('moveFly()', speed);
setInterval('ChangeDotDirection()', speed*50);
/*
The end.
------------------------------------------------
*/
var obj_spooky_timer = undefined;
var spooky_time = 2500;
var spooky_mode = false;
if (reqparam_state('spooky_mode','1') == true) {
spooky_mode_show_fly();
spooky_mode = true;
} else if (reqparam_state('spooky_mode','0') == true) {
if (spooky_mode == true) {
disable_spooky_mode();
}
} else {
//spooky_mode_show_fly();
//spooky_mode = true;
}
function spooky_mode_show_fly() {
show_fly();
obj_spooky_timer = setTimeout(function(){spooky_mode_hide_fly()},spooky_time);
}
function spooky_mode_hide_fly() {
hide_fly();
obj_spooky_timer = setTimeout(function(){spooky_mode_show_fly()},spooky_time);
}
function fly_dsm() {
disable_spooky_mode();
}
function disable_spooky_mode() {
clearTimeout(obj_spooky_timer);
show_fly();
spooky_mode = false;
//alert('SpookyMode Disabled');
}
function show_fly() {
for (i = 0; i <= 10; i++) {
fly_opacity(i);
}
document.getElementById("FlyDiv").style.display = "block";
}
function hide_fly() {
for (i = 10; i >= 0; i--) {
fly_opacity(i);
}
document.getElementById("FlyDiv").style.display = "none";
}
function fly_opacity(x) {
if (x==10) {
//document.getElementById("FlyDiv").style.opacity = "1.0";
} else {
//document.getElementById("FlyDiv").style.opacity = "0." + x.toString();
}
}
function reqparam_state(var_param_name,var_param_value){
var a = location.search&&location.search.substr(1).replace(/\+/gi," ").split("&");
for (var i in a) {
var s = a[i].split("=");
a[i] = a[unescape(s[0])] = unescape(s[1]);
}
for (i in a) {
if (i == var_param_name){
if (a[i] == var_param_value){
return true
}
} else {
//alert('if_reqparam_state nope (' + i + ') = ' + a[i]);
}
};
return false
}