/**
* SoftCOM Spółka jawna - http://www.softcom.wroc.pl
* @author SoftCOM Spółka jawna <biuro@softcom.wroc.pl>
* @copyright Copyright (c) 2007-2008, SoftCOM Spółka jawna
* $LastChangedDate$
* $Rev$
*/

/**
* Ustawienia domyślne
*/ 
jQuery.validator.setDefaults({ 
	onfocusout: false,
	onkeyup: false,
	focusInvalid:false,
	errorPlacement: function(error, element) { error.appendTo( $(element).closest(".divField").children(".divError") ); },
	highlight: function(element, errorClass) { $(element).closest(".divField").children(".divError").show(); if ($(element).parents(".divLangGroup").size()==1) { var lg_id = $(element).parents(".divLangGroup").attr("id"); var el_id = $(element).attr("id"); eval('sl_'+lg_id+'("'+el_id.substr(el_id.length-2,2)+'")' ); }  },
	unhighlight: function(element, errorClass) { if ($(element).closest(".divField").children(".divError").children("label:visible").size()-1<=0) $(element).closest(".divField").children(".divError").hide(); }
});


/**
* Funkcje
*/
function createDate(df, str) {
    var y4 = df.search(/yyyy/i), y = str.substring(y4, y4 + 4) - 0;
    var m2 = df.search(/mm/i), m = str.substring(m2, m2 + 2) - 1;
    var d2 = df.search(/dd/i), d = str.substring(d2, d2 + 2) - 0;
    return new Date(y, m, d);
}

/**
* Reguły validacji
*/
jQuery.validator.addMethod("dateForm2", function(value, element, format) {
	//wyrażenie regularne na podstawie formatu daty
	var reg = new RegExp('^' + format.replace(/dd/gi, '\\d\\d').replace(/mm/gi, '\\d\\d').replace(/yyyy/gi, '\\d\\d\\d\\d') + '$');
	
	if (this.optional(element)) return true;
	else if (reg.test(value)) {
    	var y4 = format.search(/yyyy/i), y = value.substring(y4, y4 + 4) - 0;
    	var m2 = format.search(/mm/i), m = value.substring(m2, m2 + 2) - 1;
    	var d2 = format.search(/dd/i), d = value.substring(d2, d2 + 2) - 0;
    	var dd = new Date(y, m, d);
    	return (y == dd.getFullYear() && m == dd.getMonth() && d == dd.getDate());
	}
	else return false;
	}, "Nieprawidłowy format daty"
);

jQuery.validator.addMethod("datePastForm2", function(value, element, format) {
	if (this.optional(element)) return true;
	else {
     var field_date = createDate(format, value);
	  var curr_date = new Date();
	  return (field_date<curr_date);
	}
	}, "Błędna data"
);

jQuery.validator.addMethod("dateRangeForm2", function(value, element, params) {
	if (this.optional(element)) return true;
	else {
		if ($(params[1]).val()) {
		 return (createDate(params[0], value) >= createDate(params[0], $(params[1]).val()));
		}
		else return true;
	}
	}, "Błędny zakres dat"
);

jQuery.validator.addMethod("regexForm2", function(value, element, reg) {
	var regex = new RegExp(reg);
	return (this.optional(element)) || (regex.test(value));
	}, "Nieprawidłowy format pola"
);

jQuery.validator.addMethod("requireTinyMCEForm2", function(value, element) {
	var reg = /[\S]/;
	return (reg.test(tinyMCE.get(element.id).getContent()));
	}, "Nie podano treści"
);