var formValid = {
	cssWrong:null,
	cssCorrect:null,
	cssFirst:null,
	pass:null,
	repeatpass:null,
	
	setFormCheck: function(HTMLform, classAfterClick, classWrongValue, classCorectValue, pass, repeatpass)
	{
		this.cssWrong   = classWrongValue;
		this.cssCorrect = classCorectValue;
		this.cssFirst   = classAfterClick;
		this.pass       = pass;
		this.repeatpass = repeatpass;
		for(var i = 0; i<HTMLform.elements.length; i++)
		{
			var item = HTMLform.elements[i];
			if(item.type != "radio" && item.type != "checkbox" && item.type != "button")
			{
				this.addInputELement({
					element:   item,
					validtype: item.getAttribute("validtype"),
					minlength: item.getAttribute("minlength"),
					length:    item.getAttribute("length"),
					tooltiptxt:item.getAttribute("toolTipText")
				}, classAfterClick )
			}
			
			if(item.type == "button")
			{
				this.setSubmit(HTMLform, item);
			}
		}
	},
	
	addInputELement: function(input, classAfterClick)
	{
		input.minlength  = input.minlength  ? input.minlength : 0;
		
		if(input.length)
		{
			this.setVerficateListener(input.element, input.minlength, input.tooltiptxt, classAfterClick, input.validtype, input.length);
			return;
		}
		
		this.setVerficateListener(input.element, input.minlength, input.tooltiptxt, classAfterClick, input.validtype);
	},
	

	
	setVerficateListener: function(element, minlength, tooltiptxt, classAfterClick, typeElem, numberLength)
	{	
		switch(typeElem)
		{
			case 'TextAndNumbers': element.onkeyup = function(){formValid.verficateText(element, minlength); };          break;
			case 'KodPocztowy': element.onkeyup = function(){formValid.verficateKodPocztowy(element, minlength); };      break;
			case 'Nip': element.onkeyup = function(){formValid.verficateNip(element, minlength); };				         break;
			case 'Number': element.onkeyup = function(){formValid.verficateNumber(element, minlength, numberLength); };  break;
			case 'Phone': element.onkeyup = function(){formValid.verficatePhone(element, minlength); };                  break;
			case 'Email': element.onkeyup = function(){formValid.verficateEmail(element, minlength); };                  break;
		}
					
		element.onfocus = function(){ if(element.className != classAfterClick) { element.value=""; element.className = classAfterClick; } }
		
		if(tooltiptxt)
			element.onmouseover = function() { tooltip.show(tooltiptxt , element, 228, -5, "tooltip"); };
	},
	
	setSubmit: function(HTMLform, elem)
	{
		thisObj = this;
		elem.onclick = function()
		{   
			var msg = "Uzupełnij wymagane pola."
			var x = null;
			var status = 0;
			
			for(var i = 0; i<HTMLform.elements.length; i++)
			{	
				var item = HTMLform.elements[i];
					
				if(item.getAttribute("empty")=="no")
				{
					if(item.className==thisObj.cssFirst || item.className==thisObj.cssCorrect || item.className==thisObj.cssWrong)
					{
						switch(item.getAttribute("validtype"))
						{
							case 'TextAndNumbers': x = formValid.verficateText(item, item.getAttribute("minlength"));      					   break;
							case 'KodPocztowy': x = formValid.verficateKodPocztowy(item, item.getAttribute("minlength"));                      break;
							case 'Nip': x = formValid.verficateNip(item, item.getAttribute("minlength")); 			         	 	 	 	   break;
							case 'Number': x = formValid.verficateNumber(item, item.getAttribute("minlength"), item.getAttribute("length"));   break;
							case 'Phone': x = formValid.verficatePhone(item, item.getAttribute("minlength"));                  	 	 	 	   break;
							case 'Email': x = formValid.verficateEmail(item, item.getAttribute("minlength"));                 	 	 	       break;
						}

					} 
					else
					{
						formValid.wrongValue(item);
						x=false;
					}
				}
				
				if(x==false)
					status = 1;
			}
			
			if(thisObj.pass!=null)
				if(thisObj.repeatpass.value!=thisObj.pass.value || thisObj.pass.value=="")
				{
					status = 1;
					msg+="\nPodane hasło jest nieprawidłowe";
				}
			
			
			if(status==1)
				alert(msg)	
			else
				HTMLform.submit();
		}
	},
	//verficate wrong and correct
	wrongValue: function(element)
	{
		element.className = this.cssWrong;
	},
	
	correctValue: function(element)
	{
		element.className = this.cssCorrect;
	},	
	//verficate functions
	verficateText: function(element, minlength)
	{
		element.value = (element.value).replace(/^\s\s*|\s\s*$/g, " ");	//protects from double spaces
		if(element.value.length<minlength)
		{
			this.wrongValue(element);
			return false;
		}
		else
		{
			this.correctValue(element);
			return true;
		}
	},
	
	verficateKodPocztowy: function(element, minlength)
	{
		element.value = (element.value).replace(/^\s\s*|\s\s*$/g, " ");	//protects from double spaces
		if(!element.value.match(/^[0-9]{2}\-[0-9]{3}$/))
		{
			this.wrongValue(element);
			return false;
		}
		else
		{
			this.correctValue(element);
			return true;
		}
	},

	verficateNip: function(element, minlength)
	{
		element.value = (element.value).replace(/^\s\s*|\s\s*$/g, " ");	//protects from double spaces
		if(!element.value.match(/^[0-9]{3}\-[0-9]{3}\-[0-9]{2}\-[0-9]{2}$/))
		{
			this.wrongValue(element);
			return false;
		}
		else
		{
			this.correctValue(element);
			return true;
		}
	},
	
	verficateNumber: function(element, minlength, numberLength)
	{	
		element.value = (element.value).replace(/^\s\s*|\s\s*$/g, " ");	//protects from double spaces
		if(numberLength)
		{
			if(!element.value.match(/^[0-9]*$/) || element.value.length!=numberLength)
			{
				this.wrongValue(element);
				return false;
			}
			else
			{
				this.correctValue(element);
				return true;
			}
		}
		else
		{
			if(!element.value.match(/^[0-9]*$/) || element.value.length<minlength)
			{
				this.wrongValue(element);
				return false;
			}
			else
			{
				this.correctValue(element);
				return true;
			}
		} 
	},
	
	verficatePhone: function(element, minlength)
	{	
		element.value = (element.value).replace(/^\s\s*|\s\s*$/g, " ");	//protects from double spaces
		if(!element.value.match(/^[0-9\-\s]*$/) || element.value.length<minlength)
		{
			this.wrongValue(element);
			return false;
		}
		else
		{
			this.correctValue(element);
			return true;
		}
	},
	
	verficateEmail: function(element, minlength)
	{	
		element.value = (element.value).replace(/^\s\s*|\s\s*$/g, " ");	//protects from double spaces
		if(!element.value.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/))
		{
			this.wrongValue(element);
			return false;	
		}
		else
		{
			this.correctValue(element);
			return true;
		}
	}
}






var rejestracja = {
	
	changeForm:function()
	{
		if($$$("klient_typ1").checked)
		{
			var tr = $$$("nazwa_firmy");
			var parentTr = tr.parentNode;
			parentTr.removeChild(tr);
		}
		else if($$$("klient_typ2").checked)
		{
			if(!($$$("nazwa_firmy")))
			{
				var tr = document.createElement("tr")
				tr.id = "nazwa_firmy";
				
				var tdfield = document.createElement("td");
				tdfield.className = "fieldType";
				tdfield.innerHTML = "Nazwa firmy:*";
				
				var tdinput = document.createElement("td");
				tdinput.setAttribute("colSpan", "3");
				
				var input = document.createElement("input");
				input.className = "inputNormal";
				input.style.width = "380px";
				input.value = "nazwa";
				input.type="text";
				input.name="klient_nazwa";
				input.id="klient_nazwa";
				input.setAttribute("validtype", "TextAndNumbers");
				input.setAttribute("minlength", "3");
				input.setAttribute("empty", "no");
				
				tdinput.appendChild(input);
				tr.appendChild(tdfield);
				tr.appendChild(tdinput);
				$$$("osoba").parentNode.insertBefore( tr, $$$("osoba"));
				formValid.setFormCheck($$$("registerForm"), "inputClick", "inputWrong", "inputClick", $$$("klient_pass_n"), $$$("klient_pass_r"));
			}
		}
	}	
}
