// DF1.1 :: domFunction 
// *****************************************************
// DOM scripting by brothercake -- http://www.brothercake.com/
// GNU Lesser General Public License -- http://www.gnu.org/licenses/lgpl.html
//******************************************************

//DOM-ready watcher
function domFunction(f, a)
{
	//initialise the counter
	var n = 0;
	
	//start the timer
	var t = setInterval(function()
	{
		//continue flag indicates whether to continue to the next iteration
		//assume that we are going unless specified otherwise
		var c = true;

		//increase the counter
		n++;
	
		//if DOM methods are supported, and the body element exists
		//(using a double-check including document.body, for the benefit of older moz builds [eg ns7.1] 
		//in which getElementsByTagName('body')[0] is undefined, unless this script is in the body section)
		if(typeof document.getElementsByTagName != 'undefined' && (document.getElementsByTagName('body')[0] != null || document.body != null))
		{
			//set the continue flag to false
			//because other things being equal, we're not going to continue
			c = false;

			//but ... if the arguments object is there
			if(typeof a == 'object')
			{
				//iterate through the object
				for(var i in a)
				{
					//if its value is "id" and the element with the given ID doesn't exist 
					//or its value is "tag" and the specified collection has no members
					if
					(
						(a[i] == 'id' && document.getElementById(i) == null)
						||
						(a[i] == 'tag' && document.getElementsByTagName(i).length < 1)
					) 
					{ 
						//set the continue flag back to true
						//because a specific element or collection doesn't exist
						c = true; 

						//no need to finish this loop
						break; 
					}
				}
			}

			//if we're not continuing
			//we can call the argument function and clear the timer
			if(!c) { f(); clearInterval(t); }
		}
		
		//if the timer has reached 60 (so timeout after 15 seconds)
		//in practise, I've never seen this take longer than 7 iterations [in kde 3 
		//in second place was IE6, which takes 2 or 3 iterations roughly 5% of the time]
		if(n >= 60)
		{
			//clear the timer
			clearInterval(t);
		}
		
	}, 250);
};


// Start of the fading script from http://www.brainerror.net

// delay before fading
var delay = 2000;

function opacity(id, opacStart, opacEnd, millisec) {
// speed for each frame
var speed = Math.round(millisec / 100);
var timer = 100;

if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } 
}

function changeOpac(opacity,id) {

	  var myid = document.getElementById(id);
	  
// addons from Richard Rutter (clagnut.com)
	  opacity = (opacity == 100)?99.999:opacity;	  
	  // IE/Win
	  myid.style.filter = "alpha(opacity:"+opacity+")";	  
	  // Safari<1.2, Konqueror
	  myid.style.KHTMLOpacity = opacity/100;  
	  // Older Mozilla and Firefox
	  myid.style.MozOpacity = opacity/100; 
	  // Safari 1.2, newer Firefox and Mozilla, CSS3
	  myid.style.opacity = opacity/100;
}

//  check dom from brothercake.com
var mycheck = new domFunction(function()
{
if (!window.external) { // kill IE
	// make the logo invisible
	changeOpac(0,'logo');
	// fade the logo in
	// opacity('logo', 0, 100, 50);
	setTimeout("opacity('logo','" + 0 + "','" + 100 + "','" + 500 +"')",(delay));
}
}, { 'logo' : 'id' });	

