
/** Create jqueryfied DOM element */
$.c = function(tag, className, attr) {
	var el = $(document.createElement(tag));
	if (className) {
		el.addClass(className);
	}
	if (attr) {
		el.attr(attr);
	}
	return el;
};

/** EzAjax */
$.ezajax = function(className, method, params, callback, type) {
	params.className = className;
	params.method = method;
	if (!type) {
		type = 'text';
	}
	$.post('includes/ezajax/ezajax.php', params, callback, type);
}

/** Float values and currency */
$.fn.floatVal = function(){
	var val = $(this).val();
	val = $.trim(val.replace(',', '.'));
	val = parseFloat(val);
	
	if (val.toString() == 'NaN') {
		return 0;
	}
	
	return val;
}

$.formatFloat = function(val, precision, unit) {
	if (val.toString() == 'NaN') {
		return '';
	}
	
	if (typeof precision != 'undefined') {
		val = 100.0 * val;
		val = parseFloat(Math.round(val));
		val = val.toString();
		while (val.length < precision + 1) {
			val = '0' + val;
		}
		
		var cut = val.length - precision;
		val = val.substring(0, cut) + ',' + val.substring(cut, val.length);
	}
	
	if (typeof unit != 'undefined') {
		val = val + unit;
	}
	
	return val;
}

$.fn.formattedFloatVal = function(precision, unit) {
	var val = $(this).floatVal();
	return $.formatFloat(val, precision, unit);
}

/** Dates */
$.parseGermanDate = function(germanDate) {
	var today = new Date();
	
	var valArr = germanDate.split('.');
	
	var day = parseInt(valArr[0], 10);
	day = day || today.getDate();
	
	var month = parseInt(valArr[1], 10);
	month = month || today.getMonth() + 1;
	
	var year = parseInt(valArr[2], 10);
	year = year || today.getYear() + 1900;
	if (year < 100) {
		year += 2000;
	}
	
	var date = new Date(year, month - 1, day);
	
	return {
		day: date.getDate(),
		month: date.getMonth() + 1,
		year: date.getYear() + 1900
	};
}

$.germanToSqlDate = function(germanDate) {
	var parsed = $.parseGermanDate(germanDate);
	return parsed.year + '-' + parsed.month + '-' + parsed.day;
}

