var formsColorMissing = '#f00';
var formsColorOk = '#000';

InitForms = function(){
	$('#forms').submit(function(){
		var errors = new Array;
    for (a in requiredField){
     	var field = $('#' + requiredField[a]);
      if (field.is('fieldset')){
       	// Checkbox block
       	// Radio button block
       	var inputs = field.find('input:checked');
       	if (inputs.length <= 0){
					// Error
					errors.push(field.find('p.legend').text());
					field.find('p.legend').css('color',formsColorMissing);
				} else {
					field.find('p.legend').css('color',formsColorOk);
				}
			} else if (field.is('input.date')){
				// Date input
        var selects = field.siblings('select');
        if (parseInt(field.val()) <= 0 || parseInt($(selects.get(0)).val()) <= 0 || parseInt($(selects.get(1)).val()) <= 0){
         	errors.push(field.siblings('label').text());
         	field.siblings('label').css('color',formsColorMissing);
				} else {
					field.siblings('label').css('color',formsColorOk);
				}
			} else if (field.is('input.number')){
				// Number input
        if (field.val().length <= 0 || !field.val().match(/^-?(\d+)(.|,)?(\d*)$/)){
	        errors.push(field.siblings('label').text());
	        field.siblings('label').css('color',formsColorMissing);
				} else {
					field.siblings('label').css('color',formsColorOk);
				}
			} else if (field.is('select')){
      	// List select
      	var options = field.find('option:selected');
      	if (options.length <= 0 || options.val() <= 0){
	        errors.push(field.siblings('label').text());
	        field.siblings('label').css('color',formsColorMissing);
				} else {
					field.siblings('label').css('color',formsColorOk);
				}
			} else if (field.is('textarea') || field.is('input')){
       	// Large text area
       	// Small text area
       	// File upload
        if (field.val().length <= 0){
	        errors.push(field.siblings('label').text());
	        field.siblings('label').css('color',formsColorMissing);
				} else {
					field.siblings('label').css('color',formsColorOk);
				}
			}
		}
		if (errors.length > 0){
			alert(lng_error + ':\n*  ' + errors.join('\n*  '));
			return false;
		}
	});

  $('#forms input.other:checkbox').change(function(){
  	var input = $(this);
  	var id = input.parents('fieldset').attr('id');
    if (input.is(':checked')){
			input.siblings('div.other').css('visibility', 'visible');
		} else {
			input.siblings('div.other').css('visibility', 'hidden');
		}
	});

  $('#forms input:radio').change(function(){
  	var input = $(this);
  	var id = input.parents('fieldset').attr('id');
    if (input.is('.other:checked')){
			input.parents('fieldset').find('div.other').css('visibility', 'visible');
		} else {
			input.parents('fieldset').find('div.other').css('visibility', 'hidden');
		}
	});

  $('#forms input.other').each(function(i, item){
  	var input = $(item);
		if (input.is(':checked')){
			input.siblings('div.other').css('visibility', 'visible');
		} else {
			input.siblings('div.other').css('visibility', 'hidden');
		}
	});

	$('#forms select').change(function(){
   	var select = $(this);
   	if (select.find('option.other').length > 0){
   		var option = select.find('option.other');
      if (option.is(':selected')){
				select.siblings('div.other').css('visibility', 'visible');
			} else {
				select.siblings('div.other').css('visibility', 'hidden');
			}
		}
	});

  $('#forms select').each(function(i, item){
   	var select = $(item);
   	if (select.find('option.other').length > 0){
   		var option = select.find('option.other');
      if (option.is(':selected')){
				select.siblings('div.other').css('visibility', 'visible');
			} else {
				select.siblings('div.other').css('visibility', 'hidden');
			}
		}
	});
}
$(document).ready(InitForms);
