
/* Funkcje związane z weryfikacją poprawności formualrza */

function formValidator(){
	
	// tablica do przechowywania wiadomości o błędach
	this.errorList = new Array;
 	this.errorFieldList =  new Array;
	this.NormalFieldList = new Array
	
	// metody obiektu
	this.isEmpty = isEmpty;	
	this.isMinLength = isMinLength;
	this.isNumber = isNumber;	
	this.isAlphabetic = isAlphabetic;	
	this.isAlphaNumeric = isAlphaNumeric;	
	this.isWithinRange = isWithinRange;	
	this.isEmailAddress = isEmailAddress;	
	this.isChecked = isChecked;	
 
	this.raiseError = raiseError;	
	this.raiseInput = raiseInput;
	this.raiseNormalInput = raiseNormalInput
	this.numErrors = numErrors;	
	this.displayErrors = displayErrors;	
	this.markInputs = markInputs;	
	this.remarkInputs = remarkInputs;	

}
 
// sprawdza, czy podana wartość jest pusta, lub zawiera tylko białe znaki
function isEmpty(val){
	if (val.match(/^s+$/) || val == "")	{
		return true;
	}
	else {
		return false;
	}	
}
 
// sprawdza, czy podana wartosc zawiera minimum określoną liczbę znaków
function isMinLength(val, min){
	if (val.length < min){
		return true;
	}
	else{
		return false;
	}	
} 
 
// sprawdza, czy podana wartosc jest liczbą
function isNumber(val){
	if (isNaN(val))	{
		return false;
	}
	else{
		return true;
	}	
}
 
// sprawdza, czy wszystkie znaki są literami
function isAlphabetic(val){
	if (val.match(/^[a-zA-Z]+$/)){
		return true;
	}
	else{
		return false;
	}	
}
 
// sprawdza, czy przesłane dane zawierają tylko litery i cyfry
function isAlphaNumeric(val){
	if (val.match(/^[a-zA-Z0-9]+$/)){
		return true;
	}
	else{
		return false;
	}	
}
 
// sprawdza, czy podana wartość mieści się w zakresie określonym przez zmienne min i max
function isWithinRange(val, min, max){
	if (val >= min && val <= max){
		return true;
	}
	else{
		return false;
	}	
}
 
// sprawdza, czy użytkownik wprowadził poprawny adres email
function isEmailAddress(val){
	if (val.match(/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/)){
		return true;
	}
	else{
		return false;
	}	
}

/* Funkcja zaznacza odpowieni el menu I rzędu po wejściu na podstronę*/

function setMenu(id){
	var obj = document.getElementById(id);
	if(obj){ obj.className='current'; }
}
 
// sprawdza, czy pole jest zaznaczone
function isChecked(obj){
	if (obj.checked){
		return true;
	}
	else{
		return false;
	}	
}
 
// wyświetla wszystkie błędy
// pętla przez wszystkie elementy tablicy wywołująca poszczególne okna dialogowe
function displayErrors(){
	var msg = '';
	for (x=0; x<this.errorList.length; x++)	{
		//alert("Error: " + this.errorList[x]);
		msg += "BĹÄd: " + this.errorList[x]+"\n";
	}
	if( msg != "" ){
		var txt = "";
		//txt += "-----------------------\n";
		txt += msg;	
		//txt += "-----------------------\n";
		alert(txt);
		
	
	}
}

// zazancza wszystkie pola które zostały źle wypełnione  
function markInputs(){
	for (x=0; x<this.errorFieldList.length; x++)	{
		var obj = document.getElementById(this.errorFieldList[x][0]);
		obj.className = this.errorFieldList[x][1];
	}
}

// odznacza wszystkie pola które zostały źle wypełnione przy poprzednim sprawdzaniu
function remarkInputs(){
	for (x=0; x<this.NormalFieldList.length; x++)	{
		var obj = document.getElementById(this.NormalFieldList[x][0]);
		obj.className = this.NormalFieldList[x][1];
	}	
} 
 
// dodaje błąd do listy
function raiseError(msg){
	this.errorList[this.errorList.length] = msg;
}
 
 // dodaje pole do listy
function raiseInput(id, class_error){
	this.errorFieldList[this.errorFieldList.length] = new Array(id, class_error);
}

// dodaje pole do listy wszystkich inputow 
function raiseNormalInput(id, class_normal){
	this.NormalFieldList[this.NormalFieldList.length] = new Array(id, class_normal);
}
 
// zwraca ilość błędów w tablicy
function numErrors(){
	return this.errorList.length;
}

/* Funkcja sprawdza czy nie przekroczono limitu zakliknietych checkboxow */

function checkNumberOfChecked(f, zakres, current){
	var limit = zakres+1;
	with (document.forms[f]) {
		elements[0].value++
		var L = elements.length
		var i = 0;
		while (L--){
			if(elements[L].checked){
				i++;
				if(i == limit){
					alert('osiągnięto limit dozwolonych zaznaczeń');
					document.forms[f].elements[current].checked = false;
					break;
					return false;
				}
			}

		}
	} 
}

/* Funkcja obsługuje pokazywanie się obrazka "trwa wczytywanie" */ 

function loading(gdzie){
	var obj = document.getElementById(gdzie);
	if(obj){
		var txt = '<span class="loading"></span>';
		obj.innerHTML = txt;
	}
}

/* Funkcja wysyla zapytanie o zapisanie sie do newslettera */

function newsletterSubmit(f, div, fieldName, id){

	// sprawdzamy poprawnosc adresu e-mail 
	if( sprawdzNewsletterEmailForm(f, fieldName) == false ){
		return false;
	}

	var req = mint.Request();
    req.retryNum = 0; 
	loading(div);
		           
    req.OnSuccess = function() {
		//document.getElementById(div).innerHTML = this.responseText;
		showAlert(this.responseText);
		$('#'+div).hide();	
		//setTimeout(function() {
			//$("#box_"+id).hide("slow");
		//}, 3000);

    }
	req.OnError = function() {
		var error_msg = 'wystÄpiĹ nieznany bĹÄd systemu';
		//document.getElementById(div).innerHTML = error_msg;
		showAlert(error_msg);
		$('#'+div).hide();	
	}
	req.OnAbort = function() {
		var error_msg = 'wystÄpiĹ nieznany bĹÄd systemu. SprĂłbuj ponownie';
		//document.getElementById(div).innerHTML = error_msg;		
		showAlert(error_msg);
		$('#'+div).hide();	
	}
	req.OnTimeout = function() {
    	newsletterSubmit(f, div, fieldName)
	}  
	               
    req.SendForm(f, "includes/lib/social/ajax/newsletter_submit.php");	
	
	return false;
}

/* Funkcja sprawdza poprawnoÂśÄ wpisanego adresu email dla zapisu do newslettera */

function sprawdzNewsletterEmailForm(f, fieldName){
	
	fv = new formValidator();
	
	fv.raiseNormalInput(fieldName, 'inputText');
	
	if( fv.isEmpty(document.getElementById(fieldName).value) || !fv.isEmailAddress(document.getElementById(fieldName).value) ){
		fv.raiseError("proszÄ podaÄ poprawny adres email");
		fv.raiseInput(fieldName, 'inputText_error');
	}	
		
	if (fv.numErrors() > 0)	{
		fv.displayErrors();
		fv.remarkInputs();
		fv.markInputs();
		return false;
	}
	else {
		return true;
	}
	
}

function showAlert(txt){
	$.colorbox({
		close:"",
		width:"500", 
		html:'<div class="errorDiv">'+txt+'</div>'
	});
}

function Sondaz_Popup(id){
	var adres='sondaz.php?id='+id; 
	$.colorbox({
		href:adres,
		width: '650',
		height: "90%",
		iframe:true
	});
}
