﻿function setChecks() {
	$('#' + $.fn.formid).find($.fn.checkedelements).each(function(index) {
		var errorelement = $.fn.errormessage.replace('{id}', $.fn.getErrorMessageID($(this).attr('id')));
		$(this).after(errorelement);

		for (var selector in $.fn.checks){
			var check = $.fn.checks[selector];

			if($.fn.needCheck(this, selector)){
				$(this).blur(check.handler);
				$(this).focus(function () {$.fn.eraseError(this)});
			};
		};
	});

	$('#' + $.fn.formid).submit(function (event) {
		$(this).find($.fn.checkedelements).trigger('blur');

		var errormessages = $('.' + $.fn.errormessageclass).filter(function () {return $(this).text() != ''}).fadeIn($.fn.togglespeed, function() {if($.browser.msie) $(this).get(0).style.removeAttribute('filter')});

		if(errormessages.length == 0){
			return true;
		}else{
			return false;
		};
	});
}

$.fn.needCheck = function (elem, selector) {
	if(selector.substring(0, 1) == '#'){
		return $(elem).attr('id') == selector.substring(1);
	}else{
		return $(elem).hasClass(selector);
	}
}

$.fn.printError = function (elem, type) {
	$('#' + $.fn.getErrorMessageID($(elem).attr('id'))).text($.fn.checks[type].errormessage);
	$(elem).addClass($.fn.errorclass);
}

$.fn.eraseError = function (elem) {
	$('#' + $.fn.getErrorMessageID($(elem).attr('id'))).fadeOut($.fn.togglespeed).text('');
	$(elem).removeClass($.fn.errorclass);
}

$.fn.getErrorMessageID = function (id) {
	return id + '-error';
}