/*
pola typy:
notnull
email
telefon stacjonarny
telefon komórkowy
nueryczne
literki
*/
(function ($){
  jQuery.fn.formValidate=function(settings){
    var forms=$(this); /* wynik selektora JQuery */
    if(typeof(settings) == 'undefined') {
        settings = {
            rules: {}
        };
    }
    var jezyk=$("input[name=data[lang]]").val();
    switch (jezyk)
    {
    	case "en":
    		var blad_email='Information given in the field <b>%poleNazwa%</b> is incorrect<br />';
    		var blad_numer='Information given in the field <b>%poleNazwa%</b> is incorrect<br />';
			var blad_notnull='The field <b>%poleNazwa%</b> cannot be left empty <br />';
    		break;
    	case "cz":
    		var blad_email='Uvedené informace <b>%poleNazwa%</b> nejsou spráné<br />';
    		var blad_numer='Uvedené informace <b>%poleNazwa%</b> nejsou spráné<br />';
			var blad_notnull='Toto pole <b>%poleNazwa%</b> nesmí zùstat prázdné<br />';
    		break;
    	case "lt":
    		var blad_email='Informacija laukelyje <b>%poleNazwa%</b> u&#382;pildyta neteisingai<br />';
    		var blad_numer='Informacija laukelyje <b>%poleNazwa%</b> u&#382;pildyta neteisingai<br />';
			var blad_notnull='Laukel&#303; <b>%poleNazwa%</b> b&#363;tina u&#382;pildyti<br />';
    		break;
    	default:
    		var blad_email='dane w polu <b>%poleNazwa%</b> s± nie poprawne<br />';
			var blad_numer='dane w polu <b>%poleNazwa%</b> s± nie poprawne<br />';
			var blad_notnull='Pole <b>%poleNazwa%</b> nie mo¿e byæ puste <br />';
    		break;
    }

    var rules = jQuery.extend({
        email: {
            className: 'email',
            validate: function(elem){
               /* sprawdzamy email */
               var ereg=/^[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z_+])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9}$/;
               if(!ereg.test(elem.value) && elem.value.length>0)
                   return false;
               return true;
            },
            komunikatBledu: blad_email
          },
          telefon: {
            className: 'telefon',
            validate: function(elem){
               /* sprawdzamy email */
               var ereg=/^[0-9]{9}$/;
               if(!ereg.test(elem.value) && elem.value.length>0)
                   return false;
               return true;
            },
            komunikatBledu: 'dane w polu <b>%poleNazwa%</b> s± nie poprawne! <b>poprawny format: 555555555</b><br />'
          },
          numer: {
            className: 'numer',
            validate: function(elem){
               /* sprawdzamy email */
               var ereg=/^[0-9]+$/;
               if(!ereg.test(elem.value) && elem.value.length>0)
                   return false;
               return true;
            },
            komunikatBledu: blad_numer
          },
          kodPocztowy: {
            className: 'kodPocztowy',
            validate: function(elem){
               /* sprawdzamy email */
               var ereg=/^[0-9]{2}-[0-9]{3}$/;
               if(!ereg.test(elem.value) && elem.value.length>0)
                   return false;
               return true;
            },
            komunikatBledu: 'dane w polu <b>%poleNazwa%</b> s± nie poprawne<br />'
          },
          napis: {
            className: 'napis',
            validate: function(elem){
               /* sprawdzamy email */
               var ereg=/^[a-zA-Z-.±êæ¶¿¼ñó³ÊÆ¡¬¯¦ÓÑ£]+$/;
               if(!ereg.test(elem.value) && elem.value.length>0)
                   return false;
               return true;
            },
            komunikatBledu: 'dane w polu <b>%poleNazwa%</b> s± nie poprawne<br />'
          },
          ulica: {
            className: 'ulica',
            validate: function(elem){
               /* sprawdzamy email */
               var ereg=/^[0-9\ a-zA-Z-.±êæ¶¿¼ñó³ÊÆ¡¬¯¦ÓÑ£]+$/;
               if(!ereg.test(elem.value) && elem.value.length>0)
                   return false;
               return true;
            },
            komunikatBledu: 'dane w polu <b>%poleNazwa%</b> s± nie poprawne<br />'
          },
          alphaNum: {
            className: 'alphaNum',
            validate: function(elem){
               /* sprawdzamy email */
               var ereg=/^[0-9a-zA-Z]+$/;
               if(!ereg.test(elem.value) && elem.value.length>0)
                   return false;
               return true;
            },
            komunikatBledu: 'dane w polu <b>%poleNazwa%</b> s± nie poprawne<br />'
          },
          notNull: {
            className: 'notNull',
            validate: function(elem,names){
                
                if(elem.type=='checkbox' && elem.checked == false) {
                    return false;
                }
                if(elem.type=='radio'){
                    try{
                    var elem=$(elem);
                    var radioName=elem.attr("name");
                    if(typeof(names[radioName])=='undefined'){
                        names[radioName]=radioName; 
                        if($('input[type="radio"][name="'+radioName+'"]:checked').length == 0) {
                          $('input[type="radio"][name="'+radioName+'"]').parent().addClass(options.errorClass);
                          return false;
                        }
                        else {
                             $('input[type="radio"][name="'+radioName+'"]').parent().removeClass(options.errorClass);
                        }
                   }
                   } catch(e){alert(e.message);} 
                }
                if(elem.type=='text' && elem.value.length == 0) {
                    return false;
                }
                if(elem.tagName=='SELECT' && elem.selectedIndex == 0) {
                    return false;
                }
                if(elem.tagName=='TEXTAREA' && elem.innerHTML.length == 0) {
                    return false;
                }
                return true;
            },
            komunikatBledu: blad_notnull
          }    
    },settings.rules);
     

    var options=jQuery.extend({
      errorClass: 'error'
    },settings);
    options.rules = rules;

    var waliduj=function(form){
        var errorMessage = '';
        var czyPoprawny=true;
        for(ruleName in options.rules) { 
          var names={};
          rule = options.rules[ruleName];

          var formElems = $('#'+form.id+' .'+rule.className);
          /* alert(rule.className);
          alert(formElems.length); */
          formElems.each(function(){
               if(!rule.validate(this,names)){
                 errorMessage+= rule.komunikatBledu.replace(/%poleNazwa%/,this.title);
                 $(this).addClass(options.errorClass);
                 czyPoprawny = false;
               }else{
                 ;//$(this).removeClass(options.errorClass);
               }
          });
        };

        if(!czyPoprawny) {
          //wyrzucic komunikat do pola bledu
          _alert('<p>'+errorMessage+'</p> ');
          return false;
        }
        return true;

    }

    var okienko =  $("#okienkoConfirm").dialog({
			bgiframe: true,
			modal: true,
                        autoOpen: false,
			buttons: {
				Ok: function() {
					$(this).dialog('close');
				}
			}
		});

    var _alert=function(textAlert){
        okienko.html(textAlert);
        okienko.dialog('open');
    }

    var _init=function(){
      forms.each(function(){
        $(this).bind('submit',function(e){
          if(waliduj(this))
              this.submit();
          else{
              e.preventDefault();
              return false;
          }
        });
        var inputs = $('#'+this.id+' :input');
        inputs.each(function() {
            //alert(typeof(this.onclick));
            $(this).bind('click', function(e) {
                $(this).removeClass(options.errorClass);
            });
        });

      });
    }

    _init();
  }
})(jQuery);
