function checkPasswords()
{
	if (document.getElementById('pass1').value==document.getElementById('pass2').value)
		smile('pass2', 1, 'OK');
	else
		smile('pass2', 0, 'Podane hasła są różne');
}

function validateMail(value)
{
	if (value=="")
		return;
	var re=new RegExp("^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$");
	var m=re.exec(value);
	if (m==null)
		smile('mail', 0, 'Błędny e-mail');
	else
	{
		var content=new Array();
		content['module']="register";
		content['field']="usr_email";
		content['value']=value;
		var ajax=new AjaxRequest();
		ajax.setCallback(validateMailCallback);
		ajax.send('ajax', content);
	}
}

function validateMailCallback(json)
{
	var code="function response() { } response.prototype=" + json;
 	eval(code);
 	var r=new response();
 	if (r.result!=0)
 		smile('mail', 0, 'E-mail jest już zarejestrowany');
 	else
 		smile('mail', 1, 'OK');
}

function validateLogin(value)
{
	if (value=="")
		return;
	var re=new RegExp("^[A-Za-z0-9-_]+$");
	var m=re.exec(value);
	if (m==null)
		smile('login', 0, 'Login zawiera niedozwolone znaki');
	else
	{
		var content=new Array();
		content['module']="register";
		content['field']="usr_login";
		content['value']=value;
		var ajax=new AjaxRequest();
		ajax.setCallback(validateLoginCallback);
		ajax.send('ajax.php', content);
	}
}

function validateLoginCallback(json)
{
	var code="function response() { } response.prototype=" + json;
 	eval(code);
 	var r=new response();
 	if (r.result!=0)
 		smile('login', 0, 'Wybrany login jest już zajęty');
 	else
 		smile('login', 1, 'OK');
}

function validateFirstname(value)
{
	if (value=="")
		return;
	var re=new RegExp("^[A-ZĄĆĘŁŃÓŚŹŻ][a-ząćęłńóśżź]+( [A-Za-zĄĆĘŁŃÓŚŹŻąćęłńóśżź]+)?$");
	var m=re.exec(value);
	if (m==null)
		smile('firstname', 0, 'Imię musi się składać z liter i zaczynać wielką literą');
	else
		smile('firstname', 1, 'OK');
}
function validateLastname(value)
{
	if (value=="")
		return;
	var re=new RegExp("^([A-ZĄĆĘŁŃÓŚŻŹ][a-ząćęłńóśżź]+)(-| )?([A-Z][a-ząćęłńóśżź]+)?$");
	var m=re.exec(value);
	if (m==null)
		smile('lastname', 0, 'Nazwisko musi się składać z liter i zaczynać wielką literą. Jeśli jesteś dwojga nazwisk, oddziel je myślnikiem "-"');
	else
		smile('lastname', 1, 'OK');
}

function validateFirmName(value)
{
	if (value=="")
		smile('company', 0, 'Nazwa firmy nie może być pusta');
	else
		smile('company', 1, 'OK');	
}

function validateCity(value)
{
	if(value=="")
		return;
	var re=new RegExp("^[A-Za-ząćęłńóśźżĄĆĘŁŃÓŚŹŻ\ \.\-]+$");
	var m=re.exec(value);
	if (m==null)
		smile('city', 0, 'Błędna nazwa miasta');
	else
		smile('city', 1, 'OK');	
}

function validateNIP(value)
{
	if(value=="")
		return;
	var re=new RegExp("^([0-9]+)$");
	var m=re.exec(value);
	if (m==null)
		smile('nip', 0, 'NIP musi skladac sie z cyfr');
	else if (checkNIP(value))
		smile('nip', 1, 'OK');
	else
		smile('nip', 0, 'Błędny NIP');	
}
function validateREGON(value)
{
	if(value=="")
		return;
	var re=new RegExp("^([0-9]+)$");
	var m=re.exec(value);
	if (m==null)
		smile('regon', 0, 'REGON musi skladac sie z cyfr');
	else if (checkREGON(value))
		smile('regon', 1, 'OK');
	else
		smile('regon', 0, 'Błędny REGON');	
}
function validatePhone(value)
{
	if(value=="")
		return;
	if (value.substr(0, 1)=='+')
		value=value.substr(1, value.length);
	var re=new RegExp("^([0-9\ ]+)$");
	var m=re.exec(value);
	if (m==null)
		smile('phone', 0, 'Błędny numer telefonu (wymagany numer na telefon stacjonarny)');
	else
		smile('phone', 1, 'OK');	
}

function validatePostcode(value)
{
	if(value=="")
		return;
	var re=new RegExp("^[0-9]{2}(-)?[0-9]{3}$");
	var m=re.exec(value);
	if (m==null)
		smile('postcode', 0, 'Błędny kod pocztowy. Kod pocztowy powinien wyglądać tak: xx-xxx');
	else
		smile('postcode', 1, 'OK');	
}

function validateHouseNo(value)
{
	if(value=="")
		return;
	var re=new RegExp("^[0-9A-Za-z\/]+$");
	var m=re.exec(value);
	if (m==null)
		smile('no', 0, 'Błędny numer domu');
	else
		smile('no', 1, 'OK');	
}
function validateFlatNo(value)
{
	if(value=="")
		return;
	var re=new RegExp("^[0-9A-Za-z]+$");
	var m=re.exec(value);
	if (m==null)
		smile('no', 0, 'Błędny numer lokalu');
	else
		smile('no', 1, 'OK');	
}

/**
* Validate Password
*/

// Author: Matthew R. Miller - 2007
// www.codeandcoffee.com
// Modifed by: Aleksandra Rzemyk

/*
	Password Strength Algorithm:
	
	Password Length:
		0 Points: Less than 8 characters
		10 Points: 8 to 11 characters
		25 Points: 11 or more
		
	Letters:
		0 Points: No letters
		10 Points: Letters are all lower case
		20 Points: Letters are upper case and lower case

	Numbers:
		0 Points: No numbers
		10 Points: 1 number
		20 Points: 3 or more numbers
		
	Characters:
		0 Points: No characters
		10 Points: 1 character
		25 Points: More than 1 character

	Bonus:
		2 Points: Letters and numbers
		3 Points: Letters, numbers, and characters
		5 Points: Mixed case letters, numbers, and characters
		
	Password Text Range:
	
		>= 80: Bardzo Silne
		>= 60: Silne
		>= 50: Solidne
		>= 25: Słabe
		>0: Bardzo Słabe
		0: Za krótkie
		
*/


// Check password
function checkPassword(strPassword)
{
	var m_strUpperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var m_strLowerCase = "abcdefghijklmnopqrstuvwxyz";
	var m_strNumber = "0123456789";
	var m_strCharacters = "!@#$%^&*?_~-+=[]{}|;:'`<>.,?\/"
	
	// Reset combination count
	var nScore = 0;
	
	// Password length
	// -- Less than 8 characters
	if (strPassword.length < 8)
	{
		nScore = 0;
	}
	// -- 8 to 11 characters
	else if (strPassword.length > 7 && strPassword.length < 11)
	{
		nScore += 10;
	}
	// -- 11 or more
	else if (strPassword.length > 10)
	{
		nScore += 25;
	}

	// Letters
	var nUpperCount = countContain(strPassword, m_strUpperCase);
	var nLowerCount = countContain(strPassword, m_strLowerCase);
	var nLowerUpperCount = nUpperCount + nLowerCount;
	// -- Letters are all lower case
	if (nUpperCount == 0 && nLowerCount != 0) 
	{ 
		nScore += 10; 
	}
	// -- Letters are upper case and lower case
	else if (nUpperCount != 0 && nLowerCount != 0) 
	{ 
		nScore += 20; 
	}
	
	// Numbers
	var nNumberCount = countContain(strPassword, m_strNumber);
	// -- 1 number
	if (nNumberCount == 1)
	{
		nScore += 10;
	}
	// -- 3 or more numbers
	if (nNumberCount >= 3)
	{
		nScore += 20;
	}
	
	// Characters
	var nCharacterCount = countContain(strPassword, m_strCharacters);
	// -- 1 character
	if (nCharacterCount == 1)
	{
		nScore += 10;
	}	
	// -- More than 1 character
	if (nCharacterCount > 1)
	{
		nScore += 25;
	}
	
	// Bonus
	// -- Letters and numbers
	if (nNumberCount != 0 && nLowerUpperCount != 0)
	{
		nScore += 2;
	}
	// -- Letters, numbers, and characters
	if (nNumberCount != 0 && nLowerUpperCount != 0 && nCharacterCount != 0)
	{
		nScore += 3;
	}
	// -- Mixed case letters, numbers, and characters
	if (nNumberCount != 0 && nUpperCount != 0 && nLowerCount != 0 && nCharacterCount != 0)
	{
		nScore += 5;
	}
	
	if (strPassword.length < 8)
	{
		nScore = 0;
	}
	
	
	return nScore;
}
 
// Runs password through check and then updates GUI 
function runPassword(strPassword, strFieldID) 
{
	if(strPassword.length > 0){
		// Check password
		var nScore = checkPassword(strPassword);
		
		 // Get controls
	    	var ctlBar = document.getElementById(strFieldID + "_bar"); 
	    	var ctlText = document.getElementById(strFieldID + "_text");
	    	if (!ctlBar || !ctlText)
	    		return;
	    	
	    	// Set new width
	    	ctlBar.style.width = nScore + "%";
	
		//document.getElementById('pass2').disabled=false;
	
	 	// Color and text
		// -- Very Secure
	 	if (nScore >= 80)
	 	{
	 		var strText = "Bardzo Silne";
	 		var strColor = "#0ca908";
	 	}
		// -- Strong
	 	else if (nScore >= 60)
	 	{
	 		var strText = "Silne";
	 		var strColor = "#1740ef";
		}
		// -- Average
	 	else if (nScore >= 50)
	 	{
	 		var strText = "Solidne";
	 		var strColor = "#e3cb00";
		}
		// -- Weak
	 	else if (nScore >= 25)
	 	{
	 		var strText = "Słabe";
	 		var strColor = "#e7d61a";
		}
		// -- Very Weak
	 	else if (nScore > 0)
	 	{
	 		var strText = "Bardzo słabe";
	 		var strColor = "#e71a1a";
		}
		// -- Too Short
		else
		{
			var strText = "Za krótkie";
			var strColor = "#e71a1a";
			//document.getElementById('pass2').disabled=true;
		}
		ctlBar.style.backgroundColor = strColor;
		ctlText.innerHTML = "<span style='color: " + strColor + ";'>" + strText + "</span>";
	}
}
 
// Checks a string for a list of characters
function countContain(strPassword, strCheck)
{ 
	// Declare variables
	var nCount = 0;
	
	for (i = 0; i < strPassword.length; i++) 
	{
		if (strCheck.indexOf(strPassword.charAt(i)) > -1) 
		{ 
	        	nCount++;
		} 
	} 
 
	return nCount; 
} 

function checkPESEL(pesel) {
	suma = 0;
	wagi = new Array(1,3,7,9,1,3,7,9,1,3,1);
	for (i=0; i<11; i++) suma+= (pesel.charAt(i)*1) * wagi[i];
	suma %= 10;

	if(suma == 0) return true;
	else return false;
}

function checkNIP(nip){
	nip = nip.replace(/-/g,'');

	suma = 0;
	wagi = new Array(6, 5, 7, 2, 3, 4, 5, 6, 7);

	for (i=0; i<9; i++) suma+= (nip.charAt(i)*1) * wagi[i];
	suma %= 11;
	suma %= 10;

	if(suma == nip.charAt(i)) return true;
	else return false
}

function checkREGON(regon)
{
	regonLength=regon.length;
	if (regonLength==7)
	{
		regon="00"+regon;
		regonLength=9;
	}
	var re=new RegExp("^([0-9]+)$");
	var m=re.exec(regon);
	if (m==null)
		return false;
	if (regonLength==9)
		weights=new Array(8, 9, 2, 3, 4, 5, 6, 7);
	else if (regonLength==14)
		weights=new Array(2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8);
	else
		return false;
	
	var sum=0;
	
	for (i=0 ; i<regonLength-1 ; i++ )
		sum+=(regon.charAt(i)*1)*weights[i];
	sum %= 11;
	sum %= 10;
	
	if (sum==regon.charAt(i))
		return true;
	else
		return false;
}
 
