$(document).ready(function(){
	$('#fEmail').blur(function(){checkEmail($(this).val())});
	$('#fUrl').blur(function(){checkURL($(this).val())});
	
	$('#fAccountVersion').change(function(){checkMustPay($(this).val())});
});

var emailAccessible = true;
var urlAccesible = true;

/**
 * Sprawdza podany formularz pod kątem poprawności wypełnionych danych
 **/
function checkForm(formId) {
	var focusField = null;
	var text = '';
	
	var fUrl = $ID('fUrl');
	var fEmail = $ID('fEmail');
	var fPwd = $ID('fPwd');
	var fPwd2 = $ID('fPwd2');
	
	var fName = $ID('fName');
	var fSurname = $ID('fSurname');
	var fCompanyName = $ID('fCompanyName');
	var fStreet = $ID('fStreet');
	var fPostcode = $ID('fPostcode');
	var fCity = $ID('fCity');
	var fCountry = $ID('fCountry');
	var fState = $ID('fState');
	var fPhone = $ID('fPhone');

	var fAccountVersion = $ID('fAccountVersion');
	var fPaymentType_0 = $ID('fPaymentType_0');
	var fPaymentType_1 = $ID('fPaymentType_1');
	var fMustPay = $ID('fMustPay');

	
	var pForm = $ID(formId);
	var er = '';

	if (pForm && fEmail && fPwd && fPwd2) {
		if(checkingForSuggest == true){
			// Nazwa firmy
			if (fCompanyName.value == ''){
				er += fieldMessage(fCompanyName, "Uzupełnij pole nazwy firmy.");
				if(focusField == null) focusField = fCompanyName;
			} 
		}else{
		
			 // EMail
			if (fEmail.value == ''){
				er += fieldMessage(fEmail, "Wypełnij pole adresu e-mail.");
				if(focusField == null) focusField = fEmail;
			}
			if (fEmail.value != '' && emailAccessible == false){
				er += fieldMessage(fEmail, "Podany adres e-mail jest już w użyciu. Podaj inny.");
				if(focusField == null) focusField = fEmail;
			}
			
			// Hasło
			if (fPwd.value != fPwd2.value){
				er += fieldMessage(fPwd2, "Podane hasła nie zgadzają się.");
				if(focusField == null) focusField = fPwd2;
			}
			// Imie i nazwisko
			if (fName.value == ''){
				er += fieldMessage(fName, "Podaj swoje imię.");
				if(focusField == null) focusField = fName;
			}
			if (fSurname.value == ''){
				er += fieldMessage(fSurname, "Podaj nazwisko.");
				if(focusField == null) focusField = fSurname;
			} 
			
			// Nazwa firmy
			if (fCompanyName.value == ''){
				er += fieldMessage(fCompanyName, "Uzupełnij pole nazwy firmy.");
				if(focusField == null) focusField = fCompanyName;
			} 
			
			// Dane adresowe
			if (fStreet.value == ''){
				er += fieldMessage(fStreet, "Uzupełnij adres (ulica i numer lokalu).");
				if(focusField == null) focusField = fStreet;
			} 
			if (fPostcode.value == ''){
				er += fieldMessage(fPostcode, "Podaj kod pocztowy.");
				if(focusField == null) focusField = fPostcode;
			} 
			if (fCity.value == ''){
				er += fieldMessage(fCity, "Uzupełnij miasto.");
				if(focusField == null) focusField = fCity;
			} 
			if (fCountry.value == ''){
				er += fieldMessage(fCountry, "Wpisz kraj.");
				if(focusField == null) focusField = fCountry;
			} 
			if (fState.selectedIndex == 0 || fState.selectedIndex == -1 ){
				er += fieldMessage(fState, "Wybierz województwo.");
				if(focusField == null) focusField = fState;
			} 
			
			// Dane tele
			if (fPhone.value == ''){
				er += fieldMessage(fPhone, "Wpisz numer telefonu.");
				if(focusField == null) focusField = fPhone;
			} 
			
			// Konto / Płatności
			if (fAccountVersion.selectedIndex == 0 || fAccountVersion.selectedIndex == -1 ){
				er += fieldMessage(fAccountVersion, "Wybierz zamawiany abonament.");
				if(focusField == null) focusField = fAccountVersion;
			}
			// w zalezności od tego czy trzeba płacić sprawdzamy czy wybrano płatność 
			
			// URL
			if (fUrl.value == ''){
				er += fieldMessage(fUrl, "Wypełnij pole adresu URL.");
				if(focusField == null) focusField = fUrl;
			}else if (checkingForSuggest == false && fUrl.value != '' && urlAccesible == false){
				er += fieldMessage(fUrl, "Podany adres URL jest już w użyciu. Podaj inny.");
				if(focusField == null) focusField = fUrl;
			}
		
		}

		if (er == '')
			return true;
		else{
			alert("Napotkano następujące błędy podaczas sprawdzania formualrza:\n"+er);
			
			if(focusField != null){
				focusField.focus();
				$(focusField).after();
			}
			
			return false;
		}
	}else return false;
	
	return false;
}

/**
 * Sprawdza dostępność adresu e-mail w bazie danych oraz poprawność formatu.
 **/
function checkEmail(email){
	if($('#fEmail').val() != ''){
	
		$.get("?", { "ajax" : "true", "act": "checkEmail", "do": "rejestracja", "email": email },
	　 		function(data){
				var json = $.evalJSON(data);
	　 			if(json.result == 1){
					fieldMessage($ID('fEmail'), json.resultText, "success");
					emailAccessible = true;
					return true;
				}else{
					fieldMessage($ID('fEmail'), json.resultText);
					emailAccessible = false;
					return json.resultText;
				}
	　 		}
		);
		
	}else{
		fieldMessage($ID('fEmail'), '');
		emailAccessible = true; 
	}
}

/**
 * Sprawdza dostępność adresu URL w bazie danych
 **/
function checkURL(url){
	if($('#fUrl').val() != ''){
	
		$.get("?", { "ajax" : "true", "act": "checkURL", "do": "rejestracja", "url": url },
	　 		function(data){
				var json = $.evalJSON(data);
	　 			if(json.result == 1){
					fieldMessage($ID('fUrl'), json.resultText, "success");
					urlAccesible = true;
					return true;
				}else{
					fieldMessage($ID('fUrl'), json.resultText);
					urlAccesible = false;
					return json.resultText;
				}
	　 		}
		);
		
	}else{
		fieldMessage($ID('fUrl'), '');
		emailAccessible = true; 
	}
}

/**
 * Sprawdza czy za wybrany abonament trzeba płacić
 **/
function checkMustPay(accType){
	$.get("?", { "ajax" : "true", "act": "checkMustPay", "do": "rejestracja", "accType": accType },
　 		function(data){
			var json = $.evalJSON(data);
　 			if(json.result >= 0){
				// Trzeba
				$('#paymentMethod').show();
				$('#paymentMethodInfo .help').html(json.resultText);
				$('#paymentMethodInfo').show();
				$('#paymentMethod').val('1');
				return true;
			}else if(json.result < 0){
				// Nie trzeba
				$('#paymentMethod,#paymentMethodInfo').hide();
				$('#paymentMethod').val('0');
				return json.resultText;
			}
　 		}
	);
}
