var FADE_NORMAL      = 0;
var FADE_TRANSPARENT = 1;
var FADE_IMAGE       = 2;
var FADE_FONTSIZE    = 3;


var fadeStyle = Array();
fadeStyle[0] = Array('#FEFFFF', '#0C5AA6', FADE_TRANSPARENT);
//fadeStyle[0] = Array('#101a2a', '#7080B0', FADE_NORMAL);
//fadeStyle[1] = Array('#404c5c', '#7080B0', FADE_IMAGE, 'images/navigation/school-sub-menu.png');
fadeStyle[1] = Array('11px', '13px', FADE_FONTSIZE);



function FadeUp(elem, preset)
{
	if(preset < 0 || preset >= fadeStyle.length) {
		return; }

	var element = $(elem);

	if(element.fadeColorEffect && element.fadeColorEffect != null)
	{
		element.fadeColorEffect.cancel();
		element.fadeColorEffect = null;
	}

	initParam   = fadeStyle[preset][0];
	activeParam = fadeStyle[preset][1];
	fadeType    = fadeStyle[preset][2];

	if(fadeType == FADE_NORMAL)
	{
		var effect = new Effect.Morph(element, {style: {backgroundColor: activeParam}, duration: 0.01, fps: 30});
		Object.extend(element, { fadeColorEffect: effect });
	}
	else if(fadeType == FADE_TRANSPARENT)
	{
		var curColor = element.getStyle('backgroundColor');
		var startColor = (curColor == 'transparent' || curColor == 'rgba(0, 0, 0, 0)') ? initParam : curColor;
		var effect = new Effect.Morph(element, {style: {backgroundColor: activeParam}, duration: 0.05, fps: 30,
			beforeStart: function(effect) { effect.element.setStyle({background: startColor}); }});
		Object.extend(element, { fadeColorEffect: effect });
	}
	else if(fadeType == FADE_IMAGE)
	{
		var curColor = element.getStyle('backgroundColor');
		var startColor = (curColor == 'transparent' || curColor == 'rgba(0, 0, 0, 0)') ? initParam : curColor;
		var effect = new Effect.Morph(element, {style: {backgroundColor: activeParam}, duration: 0.01, fps: 30,
			beforeStart: function(effect) { effect.element.setStyle({background: startColor}); }});
		Object.extend(element, { fadeColorEffect: effect });
	}
	else if(fadeType == FADE_FONTSIZE)
	{
		var effect = new Effect.Morph(element, {style: {fontSize: activeParam}, duration: 0.1, fps: 30});
		Object.extend(element, { fadeColorEffect: effect });
	}
}

function FadeDown(elem, preset)
{
	if(preset < 0 || preset >= fadeStyle.length) {
		return; }

	var element = $(elem);

	if(element.fadeColorEffect && element.fadeColorEffect != null)
	{
		element.fadeColorEffect.cancel();
		element.fadeColorEffect = null;
	}

	initParam   = fadeStyle[preset][0];
	activeParam = fadeStyle[preset][1];
	fadeType    = fadeStyle[preset][2];

	if(fadeType == FADE_NORMAL)
	{
		var effect = new Effect.Morph(element, {style: {backgroundColor: initParam}, duration: 1.2, fps: 30});
		Object.extend(element, { fadeColorEffect: effect });
	}
	else if(fadeType == FADE_TRANSPARENT)
	{
		var effect = new Effect.Morph(element, {style: {backgroundColor: initParam}, duration: 0.5, fps: 30,
			afterFinish: function(effect) { effect.element.setStyle({background: '#FFFFFF'}); }});
		Object.extend(element, { fadeColorEffect: effect });
	}
	else if(fadeType == FADE_IMAGE)
	{
		var finalImage = fadeStyle[preset][3];
		var effect = new Effect.Morph(element, {style: {backgroundColor: initParam}, duration: 1.2, fps: 30,
			afterFinish: function(effect) { effect.element.setStyle({background: 'url(' + finalImage + ')'}); }});
		Object.extend(element, { fadeColorEffect: effect });
	}
	else if(fadeType == FADE_FONTSIZE)
	{
		var effect = new Effect.Morph(element, {style: {fontSize: initParam}, duration: 0.1, fps: 30});
		Object.extend(element, { fadeColorEffect: effect });
	}
}
