/**
 * @author jacek
 * @email webmaster@jdstar.pl
 */

/**
 * Definicja wyrażeń regularnych dla typów zmiennych oraz komunikatów o błedach (to do przyszłego wykorzystania)
 */
var regex = new Array();
var msg = new Array();
regex['string'] = /[^.*]/;
msg['string'] = 'Pole wymagane - typ: znakowy';
regex['email'] = /^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i;
msg['email'] = 'Błędny adres email';
regex['integer'] = /^[-+]?\d+$/;
msg['integer'] = 'To nie jest liczba całkowita';
regex['real'] = /^[-+]?\d*\.?\d+$/;
msg['real'] = 'To nie jest liczba rzeczywista';
regex['date'] = /^(19|20)\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])$/i;
msg['date'] = 'Niepoprawna forma zapisu daty [RRRR-MM-DD]';
//regex['datetime'] = /^(19|20)\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])$/i;
//msg['datetime'] = 'Niepoprawna forma zapisu czasu [RRRR-MM-DD hh:mm:ss]';
regex['ip'] = /^(2[0-4]\d|25[0-5]|[01]?\d\d?)\.(2[0-4]\d|25[0-5]|[01]?\d\d?)\.(2[0-4]\d|25[0-5]|[01]?\d\d?)\.(2[0-4]\d|25[0-5]|[01]?\d\d?)$/i;
msg['ip'] = 'Błędny adres IP';

function errorMessage(msg)
{
  return "<span class='error'>" + msg + "</span>";
}

function tester(){
  alert("tester");
}
function noSpam(user,domain)
{
locationstring = "mailto:" + user + "@" + domain;
window.location = locationstring;
}

/**
 * Funkcja sprawdzająca poprawność pól input na podstawie wartości tagu valid w tym polu
 * dorobić warunki do rozbicie require i only validate - jeśli puste, i kilka warunków w tagu valid
 */
function validateForm()
{
  var notvalid = 0;
  var valids = new Array();
  var validattr = '';
  var valuefield = '';
  var pos = null;
  
  $.each($("form input[class='req']"), function(i, val)
  {
    atrib = $(this).attr('alt');
    //alert(atrib);
    if (!regex[atrib].test($(this).val())) 
    {
      $(this).parent('label').append(errorMessage(msg[atrib]));
      $(this).next('span.error').show('slow');
      $(this).addClass('err');
      notvalid = notvalid + 1;
    }
    else 
    {
      $(this).removeClass('err');
      $(this).next('span.error').hide('slow');
    }
  });
  
  if (notvalid > 0) 
    return false;
  else 
    return true;
}

jQuery.fn.valign = function()
{
  $(this).wrapInner('<div class="valign-box"></div>').css("position", "relative");
  
  xH = $(this).children('.valign-box').height();
  $(this).children('.valign-box').css({
    "position": "absolute",
    "height": xH,
    "top": "50%",
    "margin-top": 0 - (xH / 2)
  });
};
/**
 * Funkcja centrujaca obiekty
 * @param {Object} params
 */
(function($)
{
  $.fn.centerElement = function()
  {
    return this.each(function()
    {
      var el = this;
      $(el).remove().appendTo("body").wrap("<div style='position:absolute;top:50%;left:50%;width:1px;height:1px;'></div>").css({
        position: 'relative',
        left: el.offsetWidth / -2 + "px",
        top: el.offsetHeight / -2 + "px"
      });
    });
  };
})(jQuery);

/**
 * Funkcja generujaca losowy ciag znakow o okreslonej dlugosci z prefixem
 * @param {Object} dstObj
 * @param {Object} charsLength
 */
jQuery.fn.randomChars = function(prefix, length)
{
  var chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
  var randomChars = "";  

  for(x=0; x<length; x++) {
    var i = Math.floor(Math.random() * 62);
    randomChars += chars.charAt(i);
  }
  $(this).val(prefix+''+randomChars);  
};
