/**
 * Usuwa białe znaki z poczatku i końca przekazanego ciągu znaków.
 *
 * @param string Ciag znaków.
 * @return string Oczyszczony z białych znaków na poczatki i na końcu ciąg znaków.
 */
function trim(s_string) {
 return s_string.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

/**
 * Pobiera długość napisu w pikselach.
 *
 * De facto pobiera długość elementu, w którym znajduje się napis, stąd ważne są jego ustawienia jak wcięcia itp.
 *
 * Długość tego samego napisu może byc różna w zależności formatu tekstu (wielkość czcionki, grubość itp).
 *
 * @param Object Element zawierający mierzony napis.
 * @return integer Długość napisu w pikselach.
 */
function pixelsSize(o_element) {
 var ai_size = {width: 0, height: 0};
 if (o_element && $(o_element).length > 0) {
  o_element = $(o_element).get(0);
  ai_size.width = o_element.offsetWidth;
  ai_size.height = o_element.offsetHeight;
 }
 return ai_size;
}

/**
 * Pobiera długość napisu w pikselach.
 *
 * De facto pobiera długość elementu, w którym znajduje się napis, stąd ważne są jego ustawienia jak wcięcia itp.
 *
 * Długość tego samego napisu może byc różna w zależności formatu tekstu (wielkość czcionki, grubość itp).
 *
 * Operuje bezpośrednio na elemencie.
 *
 * @param Object Element zawierający mierzony napis.
 * @param integer Maksymalna długość napisu w pikselach.
 * @param string Wartość dodawana na końcu skróconego napisu (domyślnie '...').
 */
function trimToPixels(o_element, i_maxWidth, s_postfix) {
 if (!o_element || $(o_element).length == 0 || o_element.innerHTML.length == 0 || i_maxWidth == 0) return;
 if (s_postfix === undefined) s_postfix = '...';
 o_element = $(o_element).get(0);
 if (!$(o_element).data('fullText')) $(o_element).data('fullText', o_element.innerHTML);

 if (pixelsSize(o_element).width > i_maxWidth) {
  o_element.innerHTML += s_postfix;
  while (pixelsSize(o_element).width > i_maxWidth || /[^a-z0-9]$/i.test(o_element.innerHTML.substring(0, o_element.innerHTML.length-s_postfix.length))) {
   if (o_element.innerHTML.length <= s_postfix.length) {
    o_element.innerHTML = '';
	return;
   }
   o_element.innerHTML = o_element.innerHTML.substring(0, o_element.innerHTML.length-(1+s_postfix.length)) + s_postfix;
  }
 }
}
