YUI().use('node', 'anim', function(Y) {
	
	var helperButtons = Y.all('.helper');
	var selectFieldsDefault = new Array();
	
	
	// Bereite Select-Reset vor
	Y.all('select').each(function(e) {
		var cSelectId = e.get('id');
		var cSelectedOption = e.one('option[selected]');
		var cSelectedOptionValue = null;
		
		if ( cSelectedOption == null ) {
			cSelectedOptionValue = null;
		} else {
			cSelectedOptionValue = cSelectedOption.get('value');
		}
		
		var object = new Array( cSelectId, cSelectedOptionValue );
		
		selectFieldsDefault.push( object );
	});
	
	var resetSelects = function( ) {
		for (var i=0; i < selectFieldsDefault.length; i++) {
	        var cNodeInfo = selectFieldsDefault[i];
	        
	        var nodeId = cNodeInfo[0];
	        var optionValue = cNodeInfo[1];
	        
	        var node = new Y.Node(document.getElementById(nodeId));
			
	        node.all('option[selected]').each(function(e){
	        	e.removeAttribute('selected');
	        });
	        
	        if ( node.hasChildNodes() ) {
				node.set('value', optionValue);
	        }
		}
	}
	
	var setDefaultText = function(e) {
		e.set('value', e.get('defaultValue'));
	}
	
	var clearText = function(e) {
		e.set('value', '');
	}
	
	var removeCheckedState = function(e) {
		e.set('checked', false);
	}
	
	var helperAction = function(e) {
		e.preventDefault();
		
		// Confirm reset function
		if (!confirm('Die Eingaben werden zurückgesetzt.')) {
			return;
		}
		
		var formTag = e.target.ancestor('form');
		
		// Setze Textfelder zurück
		formTag.all('input[type="text"]').each(clearText);
		
		// Setze Fehlermeldungen zurück
		formTag.all('input.invalid[type="text"]').removeClass('invalid');
		formTag.all('span.error').remove();
		
		// Setze Checkboxen zurück
		formTag.all('input[type="checkbox"]').each(removeCheckedState);
		
		// Setze selects zurück
		resetSelects();
	}
	
	// Helper aktivieren
	helperButtons.on('click', helperAction);
	helperButtons.setStyle('display', 'inline');
	
	
	/*
		Logo-Link überblenden
	*/
	
	// Blende overlay ein
	var Blender = Y.one('#footer a.logo-link .blender');
	
	var hideLogoImage = function(e) {
		e.preventDefault();
		
		if ( Blender ) {
			var hide = new Y.Anim({
				node: Blender,
				to: {
					opacity: 0
				},
				duration: 0.3,
				easing: Y.Easing.easeOut
			});

			hide.run();
		}
	}

	var showLogoImage = function(e) {
		e.preventDefault();
		
		if ( Blender ) {
			var hide = new Y.Anim({
				node: Blender,
				to: {
					opacity: 1
				},
				duration: 0.3
			});

			hide.run();
		}
	}
	
	var logoButton = Y.one('#footer a.logo-link');
	
	if (logoButton) {
		logoButton.on('mouseover', hideLogoImage);
		logoButton.on('mouseout', showLogoImage);
	}
	
});
