/* TUC Validations */

function adjustValue(control)
{
    if ($(control).attr('type') == 'checkbox')
    {
        return (($(control + ':checked').val() === 'on') ? 1 : 0);
	}

    if ($(control).hasClass('fieldtype_datebox'))
    {
        var splitted = $(control).val().split('-');

        if ((splitted.length == 3) && (splitted[0] > 0) && (splitted[1] > 0) && (splitted[2] > 0))
        {
            var today = new Date();
            var yearDiff = today.getFullYear() - splitted[0];
            var monthDiff = (today.getMonth() + 1) - splitted[1];
            var dayDiff = today.getDate() - splitted[2];

            if ((dayDiff < 0) || (monthDiff < 0))
            {
                yearDiff--;
            }

            return yearDiff;
        }
    }

	return $(control).val();
}

function validateEqual(control, value)
{
	if (adjustValue(control) == value)
	{
		return true;
	}
	
	return false;
}

function validateNotEqual(control, value)
{
	if (adjustValue(control) != value)
	{
		return true;
	}
	
	return false;
}

function validateLess(control, value)
{
	if (adjustValue(control) < value)
	{
		return true;
	}
	
	return false;
}

function validateLessOrEqual(control, value)
{
	if (adjustValue(control) <= value)
	{
		return true;
	}
	
	return false;
}

function validateGreater(control, value)
{
	if (adjustValue(control) > value)
	{
		return true;
	}
	
	return false;
}

function validateGreaterOrEqual(control, value)
{
	if (adjustValue(control) >= value)
	{
        return true;
	}
	
	return false;
}

// Global variables to control the state of fields and coregs
var showHideFieldCounter = {};
var showHideCoregCounter = {};

function validateToggleClassField(coreg, label, classChecked, classUnchecked)
{
	if ($(coreg + ":checked").val())
	{
		$(label).removeClass(classUnchecked);
		$(label).addClass(classChecked);
	}
	else
	{
		$(label).removeClass(classChecked);
		$(label).addClass(classUnchecked);
	}
}

function validateShowHideField(coreg, block)
{
	if (!(showHideFieldCounter.hasOwnProperty(block)))
	{
		showHideFieldCounter[block] = {};
	}
	
	if (!(showHideFieldCounter[block].hasOwnProperty(coreg)))
	{
		showHideFieldCounter[block][coreg] = {};
	}

	if ($(coreg + ":checked").val())
	{
		showHideFieldCounter[block][coreg] = true;
		$(block).css("display", "block");
	}
	else
	{
		showHideFieldCounter[block][coreg] = false;

		var hide = true;
		for (var coregaux in showHideFieldCounter[block])
		{
			if (showHideFieldCounter[block][coregaux])
			{
				hide = false;
				break;
			}
		}

		if (hide)
		{
			$(block).css("display", "none");
		}
	}
}

function validateShowHideCoreg(validateFunction, control, value, block)
{
	if (!(showHideCoregCounter.hasOwnProperty(block)))
	{
		showHideCoregCounter[block] = {};
	}
	
	if (!(showHideCoregCounter[block].hasOwnProperty(control)))
	{
		showHideCoregCounter[block][control] = {};
	}

	if (validateFunction(control, value))
	{
		showHideCoregCounter[block][control] = true;

		var show = true;
		for (var controlaux in showHideCoregCounter[block])
		{
			if (!showHideCoregCounter[block][controlaux])
			{
				show = false;
				break;
			}
		}

		if (show)
		{
			$(block).css("display", "block");
		}
	}
	else
	{
		showHideCoregCounter[block][control] = false;
		$(block).css("display", "none");
	}
}

function validateShowEmptyCoregs(block)
{
	show = true;
	
	for (var coregBlock in showHideCoregCounter)
	{
		if ($(coregBlock).css("display") == "block")
		{
			show = false;
		}
	}
	
	if (show)
	{
		$(block).css("display", "block");
	}
	else
	{
		$(block).css("display", "none");
	}
}

function validateHideEmptyCoregs(block)
{
	hide = true;
	
	for (var coregBlock in showHideCoregCounter)
	{
		if ($(coregBlock).css("display") == "block")
		{
			hide = false;
		}
	}
	
	if (hide)
	{
		$(block).css("display", "none");
	}
	else
	{
		$(block).css("display", "block");
	}
}

function consistentValues(field, attachedField, trigger)
{
	$(attachedField).val($(field).val());
	
	if (trigger)
	{
		$(attachedField).change();
	}
}

function updateDateBox(field, yearField, monthField, dayField)
{
    var date = '';
    date += (($(yearField).val() > 0) ? $(yearField).val() : '') + '-';
    date += (($(monthField).val() > 0) ? $(monthField).val() : '') + '-';
    date += (($(dayField).val() > 0) ? $(dayField).val() : '');
	$(field).val(date);
    $(field).change();
}

