// tablica zawierajaca cache miast regionu
var cache_town = new Array();
// pola formularza rejestracji
var pola = new Array();
var polaStatus = new Array();

var regions;
var towns;

//###############################################
//    REJESTRACJA
//###############################################
var Lang; if (!Lang) Lang = {};
Lang = {
	brak: 'pole jest wymagane',
	iloscZnakow: 'nieprawidowa ilość znaków',
	haslaRozne: 'Przepisz poprawnie hasło',
	zlyEmail: 'to nie jest poprawny adres e-mail',
	emailRozne: 'Przepisz poprawnie adres e-mail',
	loginJest: 'podany login jest w naszej bazie',
	emailJest: 'podany e-mail jest w naszej bazie',
	//regionBrak: 'pole jest wymagane',
	miastoBrak: 'wybierz lub wpisz miasto',
        genderBrak: 'pole jest wymagane',
        register_country_other: 'Wpisany kraj jest już w naszej bazie. Wybierz go z listy rozwijalnej, a nie wpisuj tutaj',
        register_town_other: 'Wpisane miasto jest już w naszej bazie. Wybierz go z listy rozwijalnej, a nie wpisuj tutaj'
}

function zaznaczRegulamin() {	
	if(document.getElementById("regulamin").checked == false) { 
		alert(REGULAMIN_AKCEPTACJA);
		return false;
	} 
	return true;
}

function select_after_country()
{ 
    //prefix
    var prefix = jQuery(this).attr('id').split('_')[0];

    //usuwamy niepotrzebne pola
    jQuery('#div_'+prefix+'_country_other').hide();
    jQuery('#div_'+prefix+'_town_other').hide();
    jQuery('#div_'+prefix+'_region').hide();
    jQuery('#div_'+prefix+'_town').hide();

    //sprawdzamy jaki kraj wybral
    var id_country = jQuery('#'+prefix+'_country').val();

    if(id_country > 0)
    { 
        //sprawdzamy czy ten kraj ma regiony
        if(regions[id_country])
        {
            //jest region wiec wyswietlamy select regiony i uzupelniamy go danymi
            jQuery('#'+prefix+'_region').html('').show();
            jQuery('#div_'+prefix+'_region').show();
            var data = regions[id_country];

            jQuery('#'+prefix+'_region').append('<option value="0">wybierz region</option>');
            for(id in data)
            { 
                if(data[id]['region_id'] != undefined) jQuery('#'+prefix+'_region').append('<option value="'+data[id]['region_id']+'">'+data[id]['region_nazwa']+'</option>');
            }
        }
        else
        { 
            //nie ma regionow wiec wyswietlamy od razu miasta
            //sprawdzamy czy ten kraj ma miasta
            if(towns[id_country] && towns[id_country][0])
            { 
                //sa miasta wiec wyswietlamy select miast i uzupelniamy go danymi
                jQuery('#'+prefix+'_town').html('').show();
                jQuery('#div_'+prefix+'_town').show();

                jQuery('#'+prefix+'_town').append('<option value="0">wybierz miasto</option>');
                //dodajemy do selecta jeszcze opcje wpisz swoje miasto
                jQuery('#'+prefix+'_town').append('<option value="-1" style="font-weight: bold">podaj swoje miasto</option>');

                var data2 = towns[id_country][0];               
                for(id in data2)
                {
                    if(data2[id]['miasto_id'] != undefined) jQuery('#'+prefix+'_town').append('<option value="'+data2[id]['miasto_id']+'">'+data2[id]['miasto_nazwa']+'</option>');
                }


            }
            else
            {
                //kraj nie ma miast wiec wyswietlamy inputa innego miasta
                jQuery('#div_'+prefix+'_town_other').show();
            }
        }
    }
    else if(id_country == -1) //gdy sam chce wpisac nazwe kraju
    {
        jQuery('#div_'+prefix+'_country_other').show();
        jQuery('#div_'+prefix+'_town_other').show();
    }
}

function select_after_region()
{ 
    var prefix = jQuery(this).attr('id').split('_')[0];
    
    jQuery('#div_'+prefix+'_town_other').hide();

    //jak wybral region to wyswietlamy miasta
    var id_region = jQuery('#'+prefix+'_region').val();
    if(id_region > 0)
    {
        var id_country = jQuery('#'+prefix+'_country').val();

        //sprawdzamy czy ten region ma miasta
        if(towns[id_country] && towns[id_country][id_region])
        { 
            //sa miasta wiec wyswietlamy select miast i uzupelniamy go danymi
            jQuery('#'+prefix+'_town').html('');
            jQuery('#div_'+prefix+'_town').show();

            jQuery('#'+prefix+'_town').append('<option value="0">wybierz miasto</option>');
            //dodajemy do selecta jeszcze opcje wpisz swoje miasto
            jQuery('#'+prefix+'_town').append('<option value="-1" style="font-weight: bold">podaj swoje miasto</option>');

            var data2 = towns[id_country][id_region];
            for(id in data2)
            {
                if(data2[id]['miasto_id'] != undefined) jQuery('#'+prefix+'_town').append('<option value="'+data2[id]['miasto_id']+'">'+data2[id]['miasto_nazwa']+'</option>');
            }

            //sprawdzamy czy wybrano miasto inne
            var id_town = jQuery('#'+prefix+'_town').val();
            if(id_town == -1) jQuery('#div_'+prefix+'_town_other').show();
        }
        else
        { 
            //region nie ma miast wiec wyswietlamy inputa innego miasta
            jQuery('#div_'+prefix+'_town_other').show();
            //usuwamy select wyboru miasta
            jQuery('#'+prefix+'_town').html('');
            jQuery('#div_'+prefix+'_town').hide();

        }
    }
    else
    {
        jQuery('#div_'+prefix+'_town_other').hide();
        jQuery('#div_'+prefix+'_town').hide();
    }
}

function select_after_town()
{
    var prefix = jQuery(this).attr('id').split('_')[0];
    
    if(jQuery('#'+prefix+'_town').val() == -1)
    {
        jQuery('#div_'+prefix+'_town_other').show();
    }
    else
    {
        jQuery('#div_'+prefix+'_town_other').hide();
    }
}

function regions()
{
    jQuery.getJSON(HOST_TOWN+"ajax/method/regions/",function(data) {
        regions = data;
    });
}

function towns(type)
{
    var type = (type) ? type : 0;
    jQuery.getJSON(HOST_TOWN+"ajax/method/towns/type/"+type,function(data) {
        towns = data;
    });
}

function countries(prefix, only_countries_with_towns)
{
	advAJAX.post({
	   	url : HOST_TOWN+'ajax',
	   	parameters : {
		"method" : "countries",
                "prefix" : (prefix) ? prefix : 'register',
                "only_countries_with_towns" : (only_countries_with_towns) ? only_countries_with_towns : 0
	},
	onSuccess : function(obj) {
		eval(obj.responseText);
	},
	onError : function(obj) { alert("Error: " + obj.status); }
	});
}


/**
 * pobiera regiony
 */
/**
function regions()
{
	advAJAX.post({
	   	url : HOST_TOWN+'ajax',
	   	parameters : {
		"method" : "regions"
	},
	onSuccess : function(obj) {
		jQuery('#register_town').removeAttr("disabled");
		eval(obj.responseText);
	},
	onError : function(obj) { alert("Error: " + obj.status); }
   	});
}
**/

/**
 * pobiera miasta danego regionu i wypluwa je w selekcie
 */

function region_towns()
{
    var id_region = jQuery('#register_region').val();
    if(id_town == 'undefined') var id_town = 0;

	if(id_region > 0)
	{
		if(!cache_town[id_region])
		{
			advAJAX.post({
			   	url : HOST_TOWN+'ajax',	
			   	parameters : {
				"method" : "region_towns",
				"id_region" : id_region,
				"id_town" : id_town
			},	        	
			onSuccess : function(obj) {
				jQuery('#register_town').removeAttr("disabled");
				eval(obj.responseText);
			},
			onError : function(obj) { alert("Error: " + obj.status); }	                    
		   	});
		}
		else
		{
			jQuery('#register_town').html((cache_town[id_region]));
		}
	}
}


function register_valid()
{
    sprawdzLogin();
    sprawdzHaslo();
    sprawdzHasloPowtorz();
    sprawdzEmail();
    sprawdzEmailPowtorz();
    //sprawdzRegion();
    sprawdzMiasto('register');
    sprawdzPlec();
    sprawdzKrajNowy();
    sprawdzMiastoNowe();

    if(polaStatus['login'] == false) return false;
    if(polaStatus['password'] == false) return false;
    if(polaStatus['password_repeat'] == false) return false;
    if(polaStatus['email'] == false) return false;
    if(polaStatus['email_repeat'] == false) return false;
    //if(polaStatus['region'] == false) return false;
    if(polaStatus['town'] == false) return false;
    if(polaStatus['user_gender'] == false) return false;
    if(polaStatus['register_country_other'] == false) return false;
    if(polaStatus['register_town_other'] == false) return false;
		
	return true;
}

function register_init()
{
    if(arguments.callee.done) { return; }
    arguments.callee.done = true;
	
    pola['login'] = jQuery('#register_login');
    pola['password'] = jQuery('#register_password');
    pola['password_repeat'] = jQuery('#register_password_repeat');
    pola['email'] = jQuery('#register_email');
    pola['email_repeat'] = jQuery('#register_email_repeat');
    //pola['region'] = jQuery('#register_region');
    pola['town'] = jQuery('#register_town');
    pola['town_other'] = jQuery('#register_town_other');
    pola['user_gender'] = jQuery('input[name="register_user_gender"]');
    pola['register_country_other'] = jQuery('input[name="register_country_other"]');
    pola['register_town_other'] = jQuery('input[name="register_town_other"]');
	
    //przypisujemy zdarzenia
    pola['login'].blur(sprawdzLogin);
    pola['password'].blur(sprawdzHaslo);
    pola['password_repeat'].blur(sprawdzHasloPowtorz);
    pola['email'].blur(sprawdzEmail);
    pola['email_repeat'].blur(sprawdzEmailPowtorz);
    //pola['region'].blur(sprawdzRegion);
    pola['town'].blur(sprawdzMiasto);
    pola['user_gender'].blur(sprawdzPlec);
    pola['register_country_other'].blur(sprawdzKrajNowy);
    pola['register_town_other'].blur(sprawdzMiastoNowe);
}

function sprawdzLogin()
{
	if(pola['login'].val() == '')
	{
		regStatus('login',false, Lang.brak);
		return;	
	}
	else if(pola['login'].val().length < 5 ||  pola['login'].val().length > 20)
	{
		regStatus('login',false, Lang.iloscZnakow);
		return;
	}
	else
	{
		advAJAX.post({
		   	url : HOST_TOWN+'/ajax',	
		   	parameters : {
		   	"method" : "check_login",
			"login" : pola['login'].val()
		},	        	
		onSuccess : function(obj) {
			if(obj.responseText == 'yes')
				regStatus('login',false, Lang.loginJest);
			else
				regStatus('login',true);
		},
		onError : function(obj) { alert("Error: " + obj.status); }	                    
	   	});				
	}
}

function sprawdzKrajNowy()
{

    advAJAX.post({
   	url : HOST_TOWN+'/ajax',
   	parameters : {
   	"method" : "check_country",
	"country" : pola['register_country_other'].val()
    },
    onSuccess : function(obj) {
	if(obj.responseText == 'yes' && jQuery('#div_register_country_other').css('display') != 'none')
        {
            polaStatus['register_country_other'] = false;
            jQuery('#townError').html(Lang.register_country_other);
        }
	else
        {
           jQuery('#townError').html('');
           polaStatus['register_country_other'] = true;
        }
    },
    onError : function(obj) { alert("Error: " + obj.status); }
    });
}

function sprawdzMiastoNowe()
{

    advAJAX.post({
   	url : HOST_TOWN+'/ajax',
   	parameters : {
   	"method" : "check_town",
	"town" : pola['register_town_other'].val()
    },
    onSuccess : function(obj) {
	if(obj.responseText == 'yes' && jQuery('#div_register_town_other').css('display') != 'none')
        { 
            polaStatus['register_town_other'] = false;
            jQuery('#townError').html(Lang.register_town_other);
        }
	else
        {
           jQuery('#townError').html('');
           polaStatus['register_town_other'] = true;
        }
    },
    onError : function(obj) { alert("Error: " + obj.status); }
    });
}

function sprawdzHaslo()
{
	if(pola['password'].val() == '')
	{
		regStatus('password',false, Lang.brak);
		return;	
	}
	else if(pola['password'].val().length < 5 ||  pola['password'].val().length > 20)
	{
		regStatus('password',false, Lang.iloscZnakow);
		return;
	}
	else
		regStatus('password',true);
}

function sprawdzHasloPowtorz()
{
	if(pola['password'].val() != pola['password_repeat'].val())
	{
		regStatus('password_repeat',false, Lang.haslaRozne);
		return;	
	}
	else
		regStatus('password_repeat',true);
}

function sprawdzEmail()
{
	var regEx = /^[a-z0-9]+([_\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\.[a-z]{2,4}$/;
	if(pola['email'].val() == '')
	{
		regStatus('email',false, Lang.brak);
		return;	
	}
	else if(regEx.test(pola['email'].val()) == false)
	{ 
		regStatus('email',false, Lang.zlyEmail);
		return;
	}
	else
	{
		advAJAX.post({
		   	url : HOST_TOWN+'/ajax',	
		   	parameters : {
		   	"method" : "check_email",
			"email" : pola['email'].val()
		},	        	
		onSuccess : function(obj) {
			if(obj.responseText == 'yes')
				regStatus('email',false, Lang.emailJest);
			else
				regStatus('email',true);
		},
		onError : function(obj) { alert("Error: " + obj.status); }	                    
	   	});				
	}
}

function sprawdzEmailPowtorz()
{
	if(pola['email'].val() != pola['email_repeat'].val())
	{
		regStatus('email_repeat',false, Lang.emailRozne);
		return;	
	}
	else
		regStatus('email_repeat',true);
}
/*
function sprawdzRegion()
{
	if(pola['region'].val() == 0)
	{
		regStatus('region',false, Lang.regionBrak);
		return;	
	}
	else
		regStatus('region',true);
}
*/
function sprawdzMiasto(prefix)
{ 
	if((jQuery('#div_'+prefix+'_town').css('display') != 'none' && jQuery('#'+prefix+'_town').val() == 0) && jQuery('#div_'+prefix+'_town_other').css('display') != 'none' && jQuery('#'+prefix+'_town_other').val() == '')
	{
		regStatus('town',false, Lang.miastoBrak);
		return;	
	}
    else if(jQuery('#div_'+prefix+'_town').css('display') == 'none' && jQuery('#div_'+prefix+'_town_other').css('display') == 'none' )
    {
		regStatus('town',false, Lang.miastoBrak);
		return;	        
    }
    else if(jQuery('#div_'+prefix+'_town').css('display') != 'none' && jQuery('#'+prefix+'_town').val() == -1 && jQuery('#'+prefix+'_town_other').val() == '')
    {
		regStatus('town',false, Lang.miastoBrak);
		return;	  
    }
    else if(jQuery('#div_'+prefix+'_town_other').css('display') != 'none' && jQuery('#'+prefix+'_town_other').val() == '')
    {
		regStatus('town',false, Lang.miastoBrak);
		return;
    }
	else
		regStatus('town',true);
}

function regStatus(obj, status, msg) 
{
	if (status == 0) 
	{
		//pola[obj].addClass('zaznacz');
		polaStatus[obj] = false;
		if(msg)
			jQuery('#'+obj+'Error').html(msg);
	} 
	else 
	{
		//pola[obj].removeClass('zaznacz');
		polaStatus[obj] = true;
		jQuery('#'+obj+'Error').html('');
	}
}

function sprawdzPlec()
{
	if(jQuery("input[name='register_user_gender']:checked").val() == undefined)
	{
		regStatus('user_gender',false, Lang.genderBrak);
		return;
	}
	else
		regStatus('user_gender',true);
}

function register()
{ 
	advAJAX.post({
	   	url : HOST_TOWN+'ajax',	
	   	parameters : {
		"method" : "register",
		"login" : jQuery('#register_login').val(),
		"password" : jQuery('#register_password').val(),
        "email" : jQuery('#register_email').val(),
        "user_gender" : jQuery("input[name='register_user_gender']:checked").val(),
        "town" : (jQuery('#register_town').val() != null) ? jQuery('#register_town').val() : 0,
        "town_other" : (jQuery('#register_town_other').val() != null) ? jQuery('#register_town_other').val() : 0,
        "country" : jQuery(jQuery('#register_country').val() != null) ? jQuery('#register_country').val() : 0,
        "country_other" : (jQuery('#register_country_other').val() != null) ? jQuery('#register_country_other').val() : 0,
        "region" : (jQuery('#register_region').val() != null) ? jQuery('#register_region').val() : 0,
        "redirect" : jQuery('#redirect').val()
	},
	onSuccess : function(obj) {
		eval(obj.responseText);
	},
	onError : function(obj) { alert("Error: " + obj.status); }
	});
}


//###############################################
//    LOGOWANIE
//###############################################

//z dziwych przyczyn na forum nie moze byc nazwy funkcji login(). dlatego robimy alias login2
function login2()
{
    login(0);
}
//logowanie do infolinii i czatu
function login(chat)
{ 
	var prefix = (chat == 1) ? 'chat_' : '';
	var login = jQuery('#'+prefix+'login').val();
	var password = jQuery('#'+prefix+'password').val();
	
	var login_error = jQuery('#'+prefix+'login_error');
	var password_error = jQuery('#'+prefix+'password_error');
	
	var error = 'false';
	
	if(login == '')
	{
		login_error.html('pole jest wymagane').show();
		error = 'true';
	}
	else
	{
		login_error.hide();
	}
	
	if(password == '')
	{
		password_error.html('pole hest wymagane').show();
		error = 'true';
	}
	else
	{
		password_error.hide();
	}	
	
	//jesli znalazl blad to wychodzimy
	if(error == 'true') return false;
	
	
	advAJAX.post({
	   	url : HOST_TOWN+'ajax',	
	   	parameters : {
		"method" : "login",
		"login" : login,
		"password" : password,
        "redirect" : jQuery('#redirect').val(),
		"type" : chat
	},	        	
	onSuccess : function(obj) {
		eval(obj.responseText);
	},
	onError : function(obj) { alert("Error: " + obj.status); }	                    
	});
}


//###############################################
//    PRZYPOMNIJ HASLO
//###############################################
function remember_password()
{
	var email = jQuery('#remember_email').val();
	if(email == '') return false;
	
	advAJAX.post({
	   	url : HOST_TOWN+'/ajax',	
	   	parameters : {
	   	"method" : "remember_password",
		"email" : email
	},	        	
	onSuccess : function(obj) {
		var message = (obj.responseText == 'yes') ? 'Wysłany został do Ciebie e-mail z nowym hasłem' : 'Nie ma użytkownika o takim adresie e-mail';
		jQuery('#remember_error').show().html(message);
	},
	onError : function(obj) { alert("Error: " + obj.status); }	                    
   	});
}


