farridav
03-20-2010, 02:07 PM
Im sort of new to all this, anyway im trying to create a simple notification box (like windows messenger or avast etc.) that pops up to give the user a message, i have it working, moving up, and down and fading in and out etc. but im struggling to make individual instances of it???
if you invoke it again before it has finished fading out and moving down it messes up.. i was trying to think of an object orientated way to do it, so if anyones got any ideas, please help!!!... thanks in advance, heres code.. apoligies for how messy it is
<html>
<head>
<title>testing</title>
<meta http-equiv="Content-Type" content="text/php; charset=UTF-8" />
<!-- CSS -->
<style type="text/css">
body {overflow: hidden;}
.alert{
clip: auto;
padding: 10px;
border: 4px solid white;
position: absolute;
right: 10px;
bottom: -208px;
width: 210px;
height: 180px;
font-size: 16pt;
}
</style>
<!-- JAVASCRIPT -->
<script type="text/javascript">
//---------------------globals & initialiser functions-----------------//
var fader, fadeTimer, moveUp, moveDown;
var alertNo = 0;
var moveCount = -212;
var TimeToFade = 500.0;
var fadeDuration = 500;
var fadeSteps = 30;
var i = 0;
var container;
function newAlert(text){
container = document.getElementById("all");
var obj = boxAlert(text);
container.appendChild(obj);
fadeIn(obj.id);
moveUp = setInterval("movement('"+obj.id+"', 'up')", 10);
setTimeout("fadeOut('"+obj.id+"')", 4500);
}
function boxAlert(text){
var newAlert=document.createElement("div");
newAlert.className="alert";
newAlert.id = "alert"+alertNo;
newAlert.style.backgroundColor="red";
newAlert.innerHTML = text;
alertNo++;
return newAlert;
}
//--------------FADER START------------------//
function setOpacity(obj, level, state){
var element = document.getElementById(obj);
element.style.visibility = "visible";
element.style.opacity = level;
element.style.MozOpacity = level;
element.style.KhtmlOpacity = level;
element.style.filter = "alpha(opacity=" + (level * 100) + ");"; //for old IE
if (state == "in") {if (element.style.opacity > 0.9 || element.style.MozOpacity > 0.9 || element.style.KhtmlOpacity > 0.9){clearTimeout(fadeTimer);}}
if (state == "out"){if (element.style.opacity < 0.01 || element.style.MozOpacity < 0.01 || element.style.KhtmlOpacity < 0.01){element.style.visibility = "hidden";clearTimeout(fadeTimer);}}
}
function fadeIn(element) {clearTimeout(fadeTimer); for (var i=0; i<=1; i+=(1/fadeSteps)){fadeTimer = setTimeout('setOpacity(\''+element+'\','+i+',"in")', i * fadeDuration);}}
function fadeOut(element){clearTimeout(fadeTimer); for (var i=0; i<=1; i+=(1/fadeSteps)){fadeTimer = setTimeout('setOpacity(\''+element+'\','+(1-i)+',"out")', i * fadeDuration);}}
//--------------FADER END------------------//
//------------MOVEMENT BEGIN---------------//
function movement(obj, direction){
var element = document.getElementById(obj);
if(direction=="up"){
element.style.bottom = moveCount;
moveCount+=4;
if (moveCount == 0){clearInterval(moveUp); setTimeout('moveDown = setInterval(\'movement(\"'+obj+'"\,\"down\")\', 10)', 4000);}
}
if(direction=="down"){
element.style.bottom = moveCount;
moveCount-=4;
if (moveCount == -212){clearInterval(moveDown);}
}
}
</script>
<!-- HTML -->
</head>
<body>
<div id="all"><div onclick ='newAlert("testing");'>Make Notification</div></div>
</body>
</html>
if you invoke it again before it has finished fading out and moving down it messes up.. i was trying to think of an object orientated way to do it, so if anyones got any ideas, please help!!!... thanks in advance, heres code.. apoligies for how messy it is
<html>
<head>
<title>testing</title>
<meta http-equiv="Content-Type" content="text/php; charset=UTF-8" />
<!-- CSS -->
<style type="text/css">
body {overflow: hidden;}
.alert{
clip: auto;
padding: 10px;
border: 4px solid white;
position: absolute;
right: 10px;
bottom: -208px;
width: 210px;
height: 180px;
font-size: 16pt;
}
</style>
<!-- JAVASCRIPT -->
<script type="text/javascript">
//---------------------globals & initialiser functions-----------------//
var fader, fadeTimer, moveUp, moveDown;
var alertNo = 0;
var moveCount = -212;
var TimeToFade = 500.0;
var fadeDuration = 500;
var fadeSteps = 30;
var i = 0;
var container;
function newAlert(text){
container = document.getElementById("all");
var obj = boxAlert(text);
container.appendChild(obj);
fadeIn(obj.id);
moveUp = setInterval("movement('"+obj.id+"', 'up')", 10);
setTimeout("fadeOut('"+obj.id+"')", 4500);
}
function boxAlert(text){
var newAlert=document.createElement("div");
newAlert.className="alert";
newAlert.id = "alert"+alertNo;
newAlert.style.backgroundColor="red";
newAlert.innerHTML = text;
alertNo++;
return newAlert;
}
//--------------FADER START------------------//
function setOpacity(obj, level, state){
var element = document.getElementById(obj);
element.style.visibility = "visible";
element.style.opacity = level;
element.style.MozOpacity = level;
element.style.KhtmlOpacity = level;
element.style.filter = "alpha(opacity=" + (level * 100) + ");"; //for old IE
if (state == "in") {if (element.style.opacity > 0.9 || element.style.MozOpacity > 0.9 || element.style.KhtmlOpacity > 0.9){clearTimeout(fadeTimer);}}
if (state == "out"){if (element.style.opacity < 0.01 || element.style.MozOpacity < 0.01 || element.style.KhtmlOpacity < 0.01){element.style.visibility = "hidden";clearTimeout(fadeTimer);}}
}
function fadeIn(element) {clearTimeout(fadeTimer); for (var i=0; i<=1; i+=(1/fadeSteps)){fadeTimer = setTimeout('setOpacity(\''+element+'\','+i+',"in")', i * fadeDuration);}}
function fadeOut(element){clearTimeout(fadeTimer); for (var i=0; i<=1; i+=(1/fadeSteps)){fadeTimer = setTimeout('setOpacity(\''+element+'\','+(1-i)+',"out")', i * fadeDuration);}}
//--------------FADER END------------------//
//------------MOVEMENT BEGIN---------------//
function movement(obj, direction){
var element = document.getElementById(obj);
if(direction=="up"){
element.style.bottom = moveCount;
moveCount+=4;
if (moveCount == 0){clearInterval(moveUp); setTimeout('moveDown = setInterval(\'movement(\"'+obj+'"\,\"down\")\', 10)', 4000);}
}
if(direction=="down"){
element.style.bottom = moveCount;
moveCount-=4;
if (moveCount == -212){clearInterval(moveDown);}
}
}
</script>
<!-- HTML -->
</head>
<body>
<div id="all"><div onclick ='newAlert("testing");'>Make Notification</div></div>
</body>
</html>