
    /***************************************************************************************************/

    // Közös user funkciók
    var CommonUserFunctions = {

        emailAvailability: null,

        // e-mail cím helyességének (ill. ha kell, akkor availabilityjének) ellenőrzése
        checkEmailAddress: function(checkAvailability) {

            // ie miatt
            email = $("email");
            
            // leellenőrizzük az e-mail címét
            // 1. formára jó-e
            if (CommonUserFunctions.emailValidation(email.value) == false) {

               alert("A megadott e-mail cím érvénytelen!");
               email.focus();
               return false;

            }

            // ha ellenőriznünk kell, hogy szabad-e még a cím, akkor elküldjük az ajax kérést
            if (checkAvailability == true) {

                // ajax hívás előtt a submit gombot deaktiváljuk
                CommonUserFunctions.deactivateSubmitBtn();
    
                // 2. regisztráltak-e már ezzel
                new Ajax(url+'ajax.php', {
                    postBody: 'action=checkEmailAvailability&email='+email.value,
                    evalResponse: true,
                    onComplete: function() {
    
                        CommonUserFunctions.activateSubmitBtn();
                        if (CommonUserFunctions.emailAvailability == false) {

                            $("email").addClass("red");
                            alert("Ezzel az e-mail címmel már regisztráltak! Kérjük adjon meg egy másik címet!");

                        } else {

                            CommonUserFunctions.submitForm();
                          
                        }

                    }
                }).request();

            } else {

                return true;

            }

        },

        // az email cím konkrét leellenőrzése
        emailValidation: function(str) {
            if (str == "") return false;

            var at = "@";
            var dot = ".";
            var lat = str.indexOf(at);
            var lstr = str.length;
            var ldot = str.indexOf(dot);

            if (str.indexOf(at)==-1) return false;
            if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) return false;
            if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) return false;
            if (str.indexOf(at,(lat+1))!=-1) return false;
            if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) return false;
            if (str.indexOf(dot,(lat+2))==-1) return false;
            if (str.indexOf(" ")!=-1) return false;

            return true;
        },

        // ha beikszeli a "látszódjon gépeléskor a jelszó" checkboxot, akkor le kell az állapottól függően
        // le kell cserélnünk az input-ot
        switchPassVisibility: function(checked) {

            // ha beikszelte, akkor mutatni kell a jelszót
            if (checked == true) {

                $('hiddenpass1').style.display = 'none';
                $('showedpass1').style.display = 'inline';
                $('showedpass1').value = $('hiddenpass1').value;
                $('showedpass1').focus();

                $('hiddenpass2').style.display = 'none';
                $('showedpass2').style.display = 'inline';
                $('showedpass2').value = $('hiddenpass2').value;

            } else {

                $('hiddenpass1').style.display = 'inline';
                $('showedpass1').style.display = 'none';
                $('hiddenpass1').value = $('showedpass1').value;
                $('hiddenpass1').focus();

                $('hiddenpass2').style.display = 'inline';
                $('showedpass2').style.display = 'none';
                $('hiddenpass2').value = $('showedpass2').value;

            }

        },

        // a submit button-t visszaállítjuk
        activateSubmitBtn: function() {

            var submitbtn = $("submitbtn");
            submitbtn.value = "Mehet";
            submitbtn.disabled = false;

        },

        // deactivate submit button
        // a form elküldése előtt szoktam használni
        deactivateSubmitBtn: function() {

            var submitbtn = $("submitbtn");
            submitbtn.value = "Kérem várjon...";
            submitbtn.disabled = true;
            submitbtn.blur();

        },

        // szükséges mezők ellenőrzése
        // regisztrációnál és jelszóváltoztatásnál
        checkRequiredFields: function(required_fields) {

            // az esetek többségében a jelszót is ellenőrizni kell, és az macerásabb
            // viszont van olyan eset is, amikor nem kell, ilyenkor a jelszó ellenőrző lépéseket ki kell hagyni
            var withpass = false;
            if (required_fields.contains("pass")) withpass = true;

            if (withpass == true) {

                // ie miatt $() funkcióval kell az inputokat használni, mert ha csak simán
                // formname.fieldname.addClass()-t szeretnék, akkor kiakad...
                /// $(fieldname).addClass-ként már jó
                pass = $("hiddenpass1");
                pass2 = $("hiddenpass2");
                showedpass1 = $("showedpass1");
                showedpass2 = $("showedpass2");

                // a jelszavakat az eredeti "pass" mezőben fogjuk felhasználni, szóval ha az most éppen rejtve van,
                // akkor belepakoljuk a látható jelszót
                if ($('showthepass').checked == true) {
                    pass.value = showedpass1.value;
                    pass2.value = showedpass2.value;
                }

            }

            // végigmegyünk a kötelezően kitöltendő mezőkön, és ha valamelyiket nem adta meg, akkor balhézunk
            var balhevan = false; // ha ez true lesz, akkor alertezünk
            var ures = false;
            required_fields.each(
                function(fieldname, i) {

                    var field = $(fieldname);
                    if (fieldname == "pass") field = pass;
                    if (fieldname == "pass2") field = pass2;

                    // ha esetleg előzőleg már raraktuk a piros keretet, de már kitöltötte a mezőt, akkor levesszük
                    if (field.hasClass("red") && field.value != "") field.removeClass("red");

                    // ha hiányzik, akkor balhét csapunk
                    ures = false;

                    // selectnél mást kell ellenőrizni
                    if (field.nodeName == "SELECT" && field.selectedIndex < 1) ures = true;
                    if (field.nodeName == "INPUT" && field.value == "") ures = true;
                    if (ures == true) {

                        field.addClass("red");
                        if (fieldname == "pass") showedpass1.addClass("red");
                        if (fieldname == "pass2") showedpass2.addClass("red");
                        balhevan = true;

                    }

                }
            );

            if (balhevan == true) alert("A piros kerettel jelölt mezők kitöltése kötelező!");

            if (withpass == true) {

                // ha a két jelszó nem egyezik, akkor azért külön szólunk
                if (balhevan == false && pass.value != pass2.value) {
    
                      pass.addClass("red");
                      pass2.addClass("red");
                      showedpass1.addClass("red");
                      showedpass2.addClass("red");
    
                      balhevan = true;
                      alert("A két jelszó nem egyezik meg!");
    
                }
    
                // ha egyezik végre a kettő, akkor levesszük a jelszavakról a keretet, hogy ne virítson annyira
                if (balhevan == false && pass.value == pass2.value) {
    
                      pass.removeClass("red");
                      pass2.removeClass("red");
                      showedpass1.removeClass("red");
                      showedpass2.removeClass("red");
    
                }
                
            }

            // fordítottat küldünk vissza
            // tehát ha VAN (true) hiba, akkor NEM OKÉ (false) az ellenőrzés
            return !balhevan;

        },

        // form submit
        submitForm: function() {

            this.deactivateSubmitBtn();
            document.forms.userform.submit();
            return true;

        },
        
        // leginkább a levelezési címet egy klikkelésre átmásoljuk a szállítási vagy számlázási címnek is
        copyMailData: function(from, to, copy) {

            var inputs = ["irszam","megye","varos","utca","hazszam","emelet"];

            inputs.each(function(o, i) {

                // ha true, akkor másoljuk az adatokat
                // ha false, akkor töröljük az adatokat
                if (copy == true) {

                    if (o != "megye") {
                        $(to+"_"+o).value = $(from+"_"+o).value;
                    } else {
                        $(to+"_"+o).selectedIndex = $(from+"_"+o).selectedIndex;
                    }

                } else {

                    if (o != "megye") {
                        $(to+"_"+o).value = "";
                    } else {
                        $(to+"_"+o).selectedIndex = 0;
                    }

                }
            });
            
            if (copy == true) {
            
                $(to+"_eldontendo_igen").addClass("eldontott");
                $(to+"_eldontendo_igen").blur();
                $(to+"_eldontendo_nem").removeClass("eldontott");
                $(to+"_div").setStyle("display", "none");

            } else {

                $(to+"_eldontendo_igen").removeClass("eldontott");
                $(to+"_eldontendo_nem").addClass("eldontott");
                $(to+"_eldontendo_nem").blur();
                $(to+"_div").setStyle("display", "block");

            }

        },
        
        highlight: function(element, color) {
            color = color || "f7f94e";
            return element.effect('background-color', {duration: 1500}).start(color, 'ffffff');
        }

    }

    /***************************************************************************************************/

    var Newsletter =  {
     
        defaultValue: "Írja be az e-mail címét...",

        inputFocus: function() {

            var email = $("hirlevel_email");

            if (email.value == this.defaultValue) email.value = "";
            email.select();

        },

        inputBlur: function() {

            var email = $("hirlevel_email");

            if (email.value == "") email.value = this.defaultValue;

        },

        submitForm: function(whatToDo) {

            var email = $("hirlevel_email");
            if (email.value == "" || email.value == this.defaultValue) {

                alert("Kérjük adja meg az e-mail címét!");
                return;

            }
            
            if (CommonUserFunctions.emailValidation(email.value) == false) {

                alert("A megadott e-mail formátuma helytelen!\nKérjük ellenőrizze újra! Előfordulhat, hogy véletlenül elgépelte a címet!");
                return;

            }

            new Ajax(url+'ajax.php', {
                postBody: 'action=newsletter&whattodo='+whatToDo+'&email='+email.value,
                onComplete: function(_ret) {

                    eval(_ret);
                    alert(ret.msg);
                    if (ret.status == "ok") email.value = this.defaultValue;

                }.bind(this)

            }).request();

        }

    }

    /***************************************************************************************************/

    var TermekAjanlasa = new Class({

        fx: null,
        scroll: null,

        initialize: function() {
          
            this.fx = new Fx.Slide($("TermekAjanlasaDiv"));
            this.fx.hide();

        },

        show: function() {

            this.fx.slideIn();

        },

        cancel: function() {

            this.fx.slideOut();

        },

        submitForm: function(whatToDo) {

            var email = $("receipt_mail");
            if (email.value == "" || email.value == this.defaultValue) {

                alert("Kérjük adja meg a címzett e-mail címét!");
                return;

            }
            
            if (CommonUserFunctions.emailValidation(email.value) == false) {

                alert("A megadott e-mail formátuma helytelen!\nKérjük ellenőrizze újra! Előfordulhat, hogy véletlenül elgépelte a címet!");
                return;

            }

            new Ajax(url+'ajax.php', {
                postBody: 'action=termekAjanlasa&'+$("TermekAjanlasaForm").toQueryString(),
                onComplete: function(ret) {

                    alert(ret);
                    $("TermekAjanlasaForm").reset();
                    this.cancel();

                }.bind(this)

            }).request();

        }

    });

    /***************************************************************************************************/

