var ColorFade_hextable = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' ]; // used for RGB to Hex and Hex to RGB conversions
var ColorFade_elemTable = new Array( ); // global array to keep track of faded elements
var ColorFade_t = new Array( ); // global array to keep track of fading timers
function ColorfadeBg( elementId, startBgColor, endBgColor, fadeTime )
{
	var timeBetweenSteps = Math.round( Math.max( fadeTime / 300, 30 ) );
	var ColorFade_elemTableId = ColorFade_elemTable.indexOf( elementId );
	if( ColorFade_elemTableId > -1 )
	{
		for( var i = 0; i < ColorFade_t[ColorFade_elemTableId].length; i++ )
			clearTimeout( ColorFade_t[ColorFade_elemTableId][i] );
	}
	else
	{
		ColorFade_elemTable.push( elementId );
		ColorFade_elemTableId = ColorFade_elemTable.indexOf( elementId );
	}
	var startBgColorRGB = hexToRGB( startBgColor );
	var endBgColorRGB = hexToRGB( endBgColor );
	var diffRGB = new Array( );
	for( var i = 0; i < 3; i++ )
		diffRGB[i] = endBgColorRGB[i] - startBgColorRGB[i];
	var steps = Math.ceil( fadeTime / timeBetweenSteps );
	var ColorFade_s = new Array( );
	for( var i = 1; i <= steps; i++ )
	{
		var changes = new Array( );
		for( var j = 0; j < diffRGB.length; j++ )
			changes[j] = startBgColorRGB[j] + Math.round( ( diffRGB[j] / steps ) * i );
		if( i == steps )
			ColorFade_s[i - 1] = setTimeout( 'document.getElementById("'+elementId+'").style.backgroundColor = "'+endBgColor+'";', 

timeBetweenSteps*(i-1) );
		else
			ColorFade_s[i - 1] = setTimeout( 'document.getElementById("'+elementId+'").style.backgroundColor = "'+RGBToHex( changes )+'";', 

timeBetweenSteps*(i-1) );
	}
	ColorFade_t[ColorFade_elemTableId] = ColorFade_s;
}
function hexToRGB( hexVal )
{
	hexVal = hexVal.toUpperCase( );
	if( hexVal.substring( 0, 1 ) == '#' )
		hexVal = hexVal.substring( 1 );
	var hexArray = new Array( );
	var rgbArray = new Array( );
	hexArray[0] = hexVal.substring( 0, 2 );
	hexArray[1] = hexVal.substring( 2, 4 );
	hexArray[2] = hexVal.substring( 4, 6 );
	for( var k = 0; k < hexArray.length; k++ )
	{
		var num = hexArray[k];
		var res = 0;
		var j = 0;
		for( var i = num.length - 1; i >= 0; i-- )
			res += parseInt( ColorFade_hextable.indexOf( num.charAt( i ) ) ) * Math.pow( 16, j++ );
		rgbArray[k] = res;
	}
	return rgbArray;
}
function RGBToHex( rgbArray )
{
	var retval = new Array( );
	for( var j = 0; j < rgbArray.length; j++ )
	{
		var result = new Array( );
		var val = rgbArray[j];
		var i = 0;
		while( val > 16 )
		{
			result[i++] = val%16;
			val = Math.floor( val/16 );
		}
		result[i++] = val%16;
		var out = '';
		for( var k = result.length - 1; k >= 0; k-- )
			out += ColorFade_hextable[result[k]];
		retval[j] = padLeft( out, '0', 2 );
	}
	out = '#';
	for( var i = 0; i < retval.length; i++ )
		out += retval[i];
	return out;
}
if (!Array.prototype.indexOf) {
	Array.prototype.indexOf = function( val, fromIndex ) {
		if( typeof( fromIndex ) != 'number' ) fromIndex = 0;
		for( var index = fromIndex, len = this.length; index < len; index++ )
			if( this[index] == val ) return index;
		return -1;
	}
}
function padLeft( string, character, paddedWidth )
{
	if( string.length >= paddedWidth )
		return string;
	else
	{
		while( string.length < paddedWidth )
			string = character + string;
	}
	return string;
}

function mFadeIn(MenuItem,BlockItem)
{
		ColorfadeBg(MenuItem,'#000000','#F5C507','300');
		ColorfadeBg(BlockItem,'#222222','#333333','200');
		for(var i=1; i<5; i++)
			{
			SpanItem=MenuItem + i;
			document.getElementById(SpanItem).style.borderColor="#999999";
			}
		var div = document.getElementById(BlockItem);
		var elemdiv = div.getElementsByTagName('div');
		var elema = elemdiv[0].getElementsByTagName('a');
		for(var k=0; k<elema.length; k++)
			{
			elema[k].style.color='#999999';
			}
}

function mFadeOut(MenuItem,BlockItem)
{
		ColorfadeBg(MenuItem,'#F5C507','#000000','300');
		ColorfadeBg(BlockItem,'#333333','#222222','200');
		for(var i=1;i<5;i++)
			{
			SpanItem=MenuItem + i;
			document.getElementById(SpanItem).style.borderColor='';
			}
		var div = document.getElementById(BlockItem);
		var elemdiv = div.getElementsByTagName('div');
		var elema = elemdiv[0].getElementsByTagName('a');
		for(var k=0; k<elema.length; k++)
			{
			elema[k].style.color='';
			}

}

function megaFadeIn()
{
	for(var i=1;i<9;i++)
	{
	var thisFadeM='m'+i;
	var thisFadeN='n'+i;
	mFadeIn(thisFadeM,thisFadeN);
	document.getElementById(thisFadeM).style.color='#000000';
	}
}

function megaFadeOut()
{
	for(var i=1;i<9;i++)
	{
	var thisFadeM='m'+i;
	var thisFadeN='n'+i;
	mFadeOut(thisFadeM,thisFadeN);
	document.getElementById(thisFadeM).style.color='';
	}
}


/*
	FlashReplace is developed by Robert Nyman, http://www.robertnyman.com. License and downloads: http://code.google.com/p/flashreplace/
*/

// ---
var FlashReplace = {
	elmToReplace : null,
	flashIsInstalled : null,
	defaultFlashVersion : 7,
	replace : function (elmToReplace, src, id, width, height, version, params){
		this.elmToReplace = document.getElementById(elmToReplace);
		this.flashIsInstalled = this.checkForFlash(version || this.defaultFlashVersion);
		if(this.elmToReplace && this.flashIsInstalled){
			var obj = '<object' + ((window.ActiveXObject)? ' id="' + id + '" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" data="' + src + '"' : '');
			obj += ' width="' + width + '"';
			obj += ' height="' + height + '"';
			obj += '>';
			var param = '<param';
			param += ' name="movie"';
			param += ' value="' + src + '"';
			param += '>';
			param += '';
			var extraParams = '';
			var extraAttributes = '';
			for(var i in params){
				extraParams += '<param name="' + i + '" value="' + params[i] + '">';
				extraAttributes += ' ' + i + '="' + params[i] + '"';
			}
			var embed = '<embed id="' + id + '" src="' + src + '" type="application/x-shockwave-flash" width="' + width + '" height="' + height + '"';
			var embedEnd = extraAttributes + '></embed>';
			var objEnd = '</object>';
			this.elmToReplace.innerHTML = obj + param + extraParams + embed + embedEnd + objEnd;			
		}
	},
	
	checkForFlash : function (version){
		this.flashIsInstalled = false;
		var flash;
		if(window.ActiveXObject){
			try{
				flash = new ActiveXObject(("ShockwaveFlash.ShockwaveFlash." + version));
				this.flashIsInstalled = true;
			}
			catch(e){
				// Throws an error if the version isn't available			
			}
		}
		else if(navigator.plugins && navigator.mimeTypes.length > 0){
			flash = navigator.plugins["Shockwave Flash"];
			if(flash){
				var flashVersion = navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/, "$1");
				if(flashVersion >= version){
					this.flashIsInstalled = true;
				}
			}
		}
		return this.flashIsInstalled;
	}
};
// ---
