
﻿(function($){$.validate=function(options)
{options=options||{};options.fieldset=options.fieldset||"";options.messagecontainer=options.messagecontainer||"#validationmsg";options.errormsg=options.errormsg||".errmsg";options.notvalidclass=options.notvalidclass||"notvalid";options.messageheader=options.messageheader||"Wystąpiły następujące błędy:";options.onerror=options.onerror||"";options.erroridprefix=options.erroridprefix||"validationerror_";options.usedefault=options.usedefault||false;var errors=new Array();$(options.messagecontainer).empty();$("."+options.notvalidclass).each(function(i,item){$(item).removeClass(options.notvalidclass);});function isEmail(str)
{var regex=/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;return regex.test(str);}
function isLogin(str)
{if((str.length>3)&&(str.length<20))
{var illegalChars=/\W/;if(illegalChars.test(str))return false
else return true;}
else return false;}
function isRetyped(str,fld)
{var next_fld='#'+fld+'_retype';if(str==$(next_fld).val())return true;else return false;}
function isNumber(str)
{var regex=/^[0-9-]*$/;return regex.test(str);}
function isEmpty(item)
{if(item.value=="")
return true;if(options.usedefault&&item.value==$(item).attr("title"))
return true;return false;}
function getMsg(item)
{return $(item.parentNode).find(options.errormsg).html();}
function getMsg2(item)
{return $(item.parentNode).find(options.errormsg2).html();}
function sprawdz_numer(item)
		{
			if (isEmpty(item) == false && $(item).hasClass("number") && isNumber(item.value) == false)
			errors.push({id: item.id, msg: getMsg(item), type: "number"});
		}


function validateTextBox(item)
{if(isEmpty(item)==true||($(item).hasClass("email")&&isEmail(item.value)==false))
errors.push({id:item.id,msg:getMsg(item),type:"text"});if(isEmpty(item)!=true&&($(item).hasClass("retype")&&isRetyped(item.value,item.id)==false))
{new_item=item.id+'_retype';errors.push({id:new_item,msg:"'Hasło' i 'Powtórz hasło' są różne.",type:"text"});}
if(isEmpty(item)!=true&&($(item).hasClass("pass4")&&item.value.length<4))
{errors.push({id:item,msg:"Hasło musi mieć minimum 4 znaki.",type:"text"});}
if(isEmpty(item)!=true&&($(item).hasClass("vallogin")&&isLogin(item.value)==false))
{errors.push({id:item.id,msg:"'Login' musi mieć od 4 do 20 znaków i nie może zawierać spacji ani innych znaków specjalnych (jedynie litery, cyfry i znaki podkreślenia)",type:"text"});}
if(isEmpty(item)==false&&$(item).hasClass("number")&&isNumber(item.value)==false)
{
	alert('chuj');
errors.push({id:item.id,msg:getMsg(item),type:"number"});}}
function validateCheckbox(item)
{if(item.checked!=true)
errors.push({id:item.id,msg:getMsg(item),type:"checkbox"});}
$(options.fieldset+" .required").each(function(i,item){switch(item.type)
{case"checkbox":validateCheckbox(item);break;case"text":case"password":case"file":case"textarea":validateTextBox(item);break;}});

	$(options.fieldset + " .req_num").each(function(i, item) {
			sprawdz_numer(item);
						});

$(options.fieldset+" .required_select").each(function(i,item){if(item.value=="")
errors.push({id:item.id,msg:getMsg(item),type:"text"});});$(options.fieldset+" .selectgroup").each(function(i,item){var filled=true;var msg=$(item).find(options.errormsg).text();$(item).find("select").each(function(i,item){if(item.value=="")filled=false;});if(filled==false)
errors.push({id:item.id,msg:msg,type:"group"});});$(options.fieldset+" .checkboxgroup,"+options.fieldset+" .radiogroup").each(function(i,item){var checked=0;var msg=$(item).find(options.errormsg).text();$(item).find("input[type=checkbox], input[type=radio]").each(function(i,item){if(item.checked)
checked++;});if(checked==0)
errors.push({id:item.id,msg:msg,type:"group"});});if(errors.length>0)
{if(typeof(options.onerror)=="function")
{options.onerror(errors);return false;}
$(options.messagecontainer).fadeIn("slow");var browser=navigator.appName;var b_version=navigator.appVersion;var version=parseFloat(b_version);if(browser=="Microsoft Internet Explorer"&&version<7)
{$(options.messagecontainer).css("display","block");}
$("<h4/>").text(options.messageheader).appendTo($(options.messagecontainer));var ul=$("<ol/>");$(errors).each(function(i,item){$("#"+item.id).addClass(options.notvalidclass);$("<li />").html(item.msg).attr("id",options.erroridprefix+item.id).appendTo(ul);});ul.appendTo($(options.messagecontainer));scroll(0,0);return false;}
$(options.messagecontainer).fadeOut();return true;}})(jQuery);
