/** Name    ::  FadeBlink */
/** Version :: 0.5 */
/** Copyright (c) Ixquick.com */


/**
Usage Example:

<html>
<head>
<link rel="stylesheet" type="text/css" href="fadeblink.css" />
<script language="JavaScript" src="fadeblink.js"></script>
</head>
<body>
This is text HTML page for demo of fade effect <BR> <BR>
<div class="fadeblink_box" id="blinkThis"><b>Please wait while we process your request ...</b></div>
</body>

<script>
// start blinking                                                                                                        
fadeBlink('blinkThis');
// let's stop after seconds = 5;                                                                       
//setTimeout("fadeBlink_status=0;", 5000);                                                                                  
</script>
</html>
**/

/** FadeBlink Configuration **/
var fadeBlink_status    = 1;
var fadeBlink_timeDelay = 80;  // mseconds per step
var fadeBlink_fadeDir   = 0;   // fading in, or out, direction
var fadeBlink_fadeStep  = 5;   // % step size
var fadeBlink_max       = 100;
var fadeBlink_min       = 0;
var fadeBlink_opac      = fadeBlink_max;


/** fadeBlink */
function fadeBlink(objectID) {
  
	if (document.getElementById(objectID)) {
    
    /** Getting Object 'objectID' */
		var divObj = document.getElementById(objectID).style;    
  
		/** Check, if we still needs 'fadeBlink-ing effect */
		if (fadeBlink_status) {
      
      /** Setting 'fadeBlink_fadeStep' */
			(fadeBlink_fadeDir == 1) ? fadeBlink_opac += fadeBlink_fadeStep : fadeBlink_opac -= fadeBlink_fadeStep;
      
      /** Setting 'fadeBlink_fadeDir' */
			if ( (fadeBlink_opac == fadeBlink_max) || (fadeBlink_opac == fadeBlink_min) ) {
				fadeBlink_fadeDir = (fadeBlink_fadeDir == 0) ? 1: 0;
			}
      
      /** Setting 'fadeBlink_opac' */
			var myFilter = 'alpha(opacity='+fadeBlink_opac+')';

      /** Setting 'divObj' opacity */
			divObj.opacity = (fadeBlink_opac/100);

      /** Setting 'divObj' Opacity */
			if (fadeBlink_opac == 100) {
				divObj.MozOpacity = ((fadeBlink_opac - 1) / 100);
			} else { 
				divObj.MozOpacity = (fadeBlink_opac/100);
			}

      /** Setting 'filter' and calling 'SELF' */
			divObj.filter = myFilter;
			setTimeout('fadeBlink(\''+objectID+'\')', fadeBlink_timeDelay);
      
		} else {
      /** We need to stop 'fadeBlink'-ing effect */
			fadeBlink_opac = fadeBlink_max; fadeBlink_fadeDir = 0;
			divObj.opacity = (fadeBlink_opac/100);
			if (fadeBlink_opac == 100) {
				divObj.MozOpacity = ((fadeBlink_opac - 1) / 100);
			} else { 
				divObj.MozOpacity = (fadeBlink_opac/100);
			}
			divObj.filter = myFilter;
      /** We need to stop 'fadeBlink'-ing effect */
		}

	}

}


/** Fade */
var fade_TimeToFade = 1000.0;
function fade(eid) {
	var element = document.getElementById(eid);
	if(element == null)
		return;
   
	if(element.FadeState == null) {
		if(element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1') 
        {
			element.FadeState = 2;
        }
    else
		{
			element.FadeState = -2;
		}
    }
   
	if(element.FadeState == 1 || element.FadeState == -1)
    {
		element.FadeState = element.FadeState == 1 ? -1 : 1;
		element.FadeTimeLeft = fade_TimeToFade - element.FadeTimeLeft;
    }
  else
    {
		element.FadeState = element.FadeState == 2 ? -1 : 1;
		element.FadeTimeLeft = fade_TimeToFade;
		setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
    }  
}



function animateFade(lastTick, eid) {  
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;
 
	var element = document.getElementById(eid);
 
	if(element.FadeTimeLeft <= elapsedTicks)
    {
		element.style.opacity = element.FadeState == 1 ? '1' : '0';
		element.style.filter = 'alpha(opacity = '
			+ (element.FadeState == 1 ? '100' : '0') + ')';
		element.FadeState = element.FadeState == 1 ? 2 : -2;
		return;
    }
 
	element.FadeTimeLeft -= elapsedTicks;
	var newOpVal = element.FadeTimeLeft/fade_TimeToFade;
	if(element.FadeState == 1)
		newOpVal = 1 - newOpVal;

	element.style.opacity = newOpVal;
	element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
 
	setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}

