/**
 * Codestars slider and fading functionality
 * @author Floris Weijenburg (http://www.florisweijenburg.nl)
 * @copyright (c) 2008 Floris Weijenburg
 */

CS.DOM.slider = function(element) 
{
	this.animEl = $(element);
	this.hasSlided = false; 
	this.slideInAttr = { height: { from: 130, to: 0 } };
	this.slideOutAttr = { height: { from: 0, by: 160 } };  
	this.animElInside = (this.animEl).getElementsByTagName('div')[0];
	this.siteFrame = $('siteBodyFrame');
	this.opacity = 1;
}

CS.DOM.slider.prototype.Init = function(clickElement)
{
	var btn = $(clickElement);
	 
	if(!this.hasSlided)
	{
		var slide = new YAHOO.util.Anim(this.animEl.id, this.slideOutAttr);
		
		this.hasSlided = true;
		this.LightFadeOut();
		
		btn.disabled = true;
		slide.duration = 0.3; slide.animate();
		
		slide.onComplete.subscribe(function() 
		{ 
			this.FadeIn(this.animElInside);
			this.LightFadeIn();						 
		
			btn.disabled = false;
			btn.value = 'Verberg';
		}
		.bind(this)); 
	}
	else
	{
		 var slide = new YAHOO.util.Anim(this.animEl.id, this.slideInAttr);
		 this.hasSlided = false;
		 
		 (this.animElInside).style.display = 'none';
		 
		 btn.value = 'Inloggen';
		 
		 slide.duration = 0.3;
		 slide.animate();
	}
}

CS.DOM.slider.prototype.FadeIn = function(element)
{
	element.style.display = 'block';
}

CS.DOM.slider.prototype.LightFadeOut = function()
{
	var element = this.siteFrame;
	
	if(this.opacity > 0.5)
	{ 
		this.opacity = this.opacity - .25;
		setTimeout(function(){this.LightFadeOut();}.bind(this), 1)
	}

	element.style['opacity'] = this.opacity;
	element.style['filter'] = 'alpha(opacity='+ (this.opacity * 100) + ')';
}

CS.DOM.slider.prototype.LightFadeIn = function()
{
	var element = this.siteFrame;
		
	if(this.opacity < 1)
	{ 
		this.opacity = this.opacity + .20;
		setTimeout(function(){this.LightFadeIn();}.bind(this), 1)
	}
	
	element.style['opacity'] = this.opacity;
	element.style['filter'] = 'alpha(opacity='+ (this.opacity * 100) + ')';
}

CS.DOM.slider2 = function() 
{ 
	this.hasSlided = {};
}

CS.DOM.slider2.prototype.Init = function(elementName, slideValue, duration)
{ 
	var slideParms;
	
	if(!this.hasSlided[elementName] || this.hasSlided[elementName] == false)
	// Here we store an object to see if a specific element has already slided out or not 
	{ 
		// Sliding out
		this.hasSlided[elementName] = true; 
		slideParms = { height: { from: 0, to: slideValue } };
		
		// ... and be sure the elements are enabled
		var inputs = $(elementName).getElementsByTagName('input');
			
		for(var i=0; i < inputs.length; i++)
		{
			inputs[i].disabled = false;
		}
	} 
	else 
	{ 
		// Sliding back in
		this.hasSlided[elementName] = false;
		slideParms = { height: { to: 0 } };
    }
    
    var slide = new YAHOO.util.Anim(elementName, slideParms);
		 
	if(duration) { slide.duration = duration; }
	slide.animate();
}

CS.DOM.slider2.prototype.IfOpenThenClose = function(elementName, duration)
{
	var slideParms = { height: { to: 0 } };
	
	if(this.hasSlided[elementName])
	// The element has been slided open
	// Don't just stand there, let's close it!
	{
		var slide = new YAHOO.util.Anim(elementName, slideParms);
		if(duration) { slide.duration = duration; }
		this.hasSlided[elementName] = false;
		
		slide.animate();
		
		slide.onComplete.subscribe(function() 
		{ 
			// We need to disable all form elements
			// To kill the form validation
			var inputs = $(elementName).getElementsByTagName('input');
			
			for(var i=0; i < inputs.length; i++)
			{
				inputs[i].disabled = true;
			}
			
		}.bind(elementName));
	}
}
