$(document).ready(
	function () {
		form_validate_init();
	}
);

function form_validate_init() {
	$('form.validate').bind( 'submit', function( e ) { return form_validate( e ); } );
	$('input[type!=radio].if-selected-display').bind( 'change', function ( e ) { form_if_selected_display() } );
	$( 'input[name=' + $('input[type=radio].if-selected-display').attr('name') + ']' ).bind( 'change', function ( e ) { form_if_selected_display() } );
	form_if_selected_display();
}

function form_validate( e ) {
	var no_errors = true;
	var error_text = "Bitte füllen Sie dieses Feld aus";
	
	$( "span.form-validate-error" ).remove();
	$( "input.form-validate-error" ).removeClass("form-validate-error");
	
	// Abhängige felder
	ifselected = $( "form.validate input.if-selected-require" );
	ifselected_required = new Array();
	
	for ( var i=0; i<ifselected.length; i++ ) {
		if( ifselected[i].checked ) {
			
			var classString = ifselected[i].className;
			var requireElements = classString.match( /require\((.*?)\)/ );
			requireElements = requireElements[1].split(",");
			
			var parentForm = $( ifselected[i] ).parents("form");
			for ( var j=0; j<requireElements.length; j++ ) {
				var child = parentForm.find("input").filter("[name="+requireElements[j]+"]");
				ifselected_required.push( child[0] );
			}
		}
	}
	
	// Input-Felder
	required = $("form.validate input.required");
	required = jQuery.makeArray( required  ).concat( ifselected_required );
	
	for ( var i=0; i<required.length; i++ ) {
		el = required[i];
		if ( ( el.type == 'text' && el.value == '' ) || ( el.type == 'checkbox' && !el.checked ) ){ 
			$( el ).addClass( "form-validate-error" );
			if ( el.alt && el.alt!='' ) { error = el.alt; } else { error = error_text; }
			$( el ).after( "<span class=\"form-validate-error form-validate-error-" + el.checked + "\">" + error + "</span> " );
			no_errors = false;
		}
	}
	
	return no_errors;
}

function form_if_selected_display() {
	
	// Bereiche ein/ausblenden
	ifdisplay = $( "form.validate input.if-selected-display" );
	ifdisplay_display = new Array();
	
	for ( var i=0; i<ifdisplay.length; i++ ) {
	
		var classString = ifdisplay[i].className;
		var displayElements = classString.match( /display\((.*?)\)/ );
		displayElements = displayElements[1].split(",");
		
		var parentForm = $( ifdisplay[i] ).parents("form");
		for ( var j=0; j<displayElements.length; j++ ) {
			var child = parentForm.find( "."+displayElements[j] );
			if( ifdisplay[i].checked ) {
				child.show();
				child.addClass('do-not-remove');
			} else {
				if ( !child.hasClass('do-not-remove') ) {
					child.hide();
				}
			}
		}
	}
	
	$('.do-not-remove').removeClass('do-not-remove');
	
}
