
jQuery(function($){
    
    $('form').submit(function(){
        if($('ul.formErrors').filter(':not("client")').length) $('ul.formErrors').filter(':not("client")').remove();
    });
    
    
    formValidation(
        $('#questionForm'),
        {
            question_subject: {
                required: true
            },
            question_body: {
                required: true
            }
        },
        {
            question_subject: {
                required: 'Kérjük, adja meg az üzenet tárgyát!'
            },
            question_body: {
                required: 'Kérjük, írja ide üzenetét, kérdését!'
            }
        }
    );
    
    
    formValidation(
        $('#loginForm'),
        {
            login_name: {
                required: true,
                maxlength: 250
            },
            password: 'required'
        },
        {
            login_name: {
                required: 'Hibás e-mail cím vagy jelszó!',
                maxlength: 'Hibás e-mail cím vagy jelszó!'
            },
            password: 'Hibás e-mail cím vagy jelszó!'
        },
        null,
        {
            loginDatas: 'login_name password'
        }
    );
    
    formValidation(
        $('#passwordResendForm'),
        {
            email: {
                required: true,
                email: true,
                maxlength: 250
            }
        },
        {
            email: {
                required: 'Adja meg az e-mail címét!',
                email: 'Létező e-mail címet adjon meg!',
                maxlength: 'Létező e-mail címet adjon meg!'
            }
        }
    );
    
    formValidation(
        $('#regForm'),
        {
            email: {
                required: true,
                email: true,
                maxlength: 250
            },
            password: {
                required: true,
                maxlength: 250
            },
            password_again: {
                required: true,
                maxlength: 250,
                equalTo: "#password"
            },
            lastname: {
                required: true,
                maxlength: 250,
                lettersonly: true
            },
            firstname: {
                required: true,
                maxlength: 250,
                lettersonly: true
            },
            accept: 'required'
        },
        {
            email: {
                required: 'Adja meg az e-mail címét!',
                email: 'Az e-mail cím helytelen!',
                maxlength: 'A megadott e-mail cím túl hosszú!'
            },
            password: {
                required: 'Adja meg a jelszavát!',
                maxlength: 'A jelszó túl hosszú!'
            },
            password_again: {
                required: 'Adja meg a jelszavát!',
                maxlength: 'A jelszó túl hosszú!',
                equalTo: 'A két jelszó nem egyezik!'
            },
            lastname: {
                required: 'Adja meg a családnevét!',
                maxlength: 'A családnév túl hosszú!',
                lettersonly: 'A családnév helytelen!'
            },
            firstname: {
                required: 'Adja meg a keresztnevét!',
                maxlength: 'A keresztnév túl hosszú!',
                lettersonly: 'A keresztnév helytelen!'
            },
            accept: 'A továbblépéshez kérjük olvassa el az adatkezelési tájékoztatót és adja hozzájárulását az abban foglaltakhoz.'
        },
        //invalidHandler
        function(){
            $('.sysMsgBox').removeClass('dn');
        }
        
    );

    formValidation(
        $('#regExtendForm'),
        {
            birthdate_year: {
                required: function(element) {
                    return $('#birthdate_month option:selected').val()!='' || $('#birthdate_day option:selected').val()!='';
                  }
            },
            birthdate_month: {
                required: function(element) {
                    return $('#birthdate_year option:selected').val()!='' || $('#birthdate_day option:selected').val()!='';
                  }
            },
            birthdate_day: {
                required: function(element) {
                    return $('#birthdate_year option:selected').val()!='' || $('#birthdate_month option:selected').val()!='';
                  }
            },
            zip: {
                zipnum: true
            },
            city: {
                required: function(){
                    return $('#zip').val().length > 3
                }
            },
            address: {
                maxlength: 250
            },
            mobile: {
                maxlength: 250,
                mobileOrPhoneNum: true
            }
        },
        {
            birthdate_year: 'A születési dátum megadásához <br />válassza ki az évet, a hónapot és a napot is!',
            birthdate_month: 'A születési dátum megadásához <br />válassza ki az évet, a hónapot és a napot is!',
            birthdate_day: 'A születési dátum megadásához <br />válassza ki az évet, a hónapot és a napot is!',
            zip: {
                zipnum: 'Az irányítószám helytelen!'
            },
            city: {
                required: 'Válasszon települést!'
            },
            address: {
                maxlength: 'A cím túl hosszú!'
            },
            mobile: {
                maxlength: 'A telefonszámszám túl hosszú!',
                mobileOrPhoneNum: 'Érvényes telefonszámot adjon meg, csak számjegyekkel!'
            }
        },
        //invalidHandler
        function(){
            $('.sysMsgBox.alert').removeClass('dn');
        },
        {
            birthdate: 'birthdate_year birthdate_month birthdate_day'
        }
    );
    
    formValidation(
        $('#modifyForm'),
        {
            lastname: {
                required: true,
                maxlength: 250,
                lettersonly: true
            },
            firstname: {
                required: true,
                maxlength: 250,
                lettersonly: true
            },
            birthdate_year: {
                required: function(element) {
                    return $('#birthdate_month option:selected').val()!='' || $('#birthdate_day option:selected').val()!='';
                  }
            },
            birthdate_month: {
                required: function(element) {
                    return $('#birthdate_year option:selected').val()!='' || $('#birthdate_day option:selected').val()!='';
                  }
            },
            birthdate_day: {
                required: function(element) {
                    return $('#birthdate_year option:selected').val()!='' || $('#birthdate_month option:selected').val()!='';
                  }
            },
            zip: {
                zipnum: true
            },
            city: {
                required: function(){
                    return $('#zip').val().length > 3
                }
            },
            address: {
                maxlength: 250
            },
            mobile: {
                required: function(element){
                    return $('#mobile_prefix').val()!='';
                },
                maxlength: 250,
                mobilenum: true
            },
            mobile_prefix: {
                required: function(element){
                    return $('#mobile').val()!='';
                }
            },
            phone: {
                maxlength: 250,
                telnum: true
            }
        },
        {
            lastname: {
                required: 'Adja meg a családnevét!',
                maxlength: 'A családnév túl hosszú!',
                lettersonly: 'A családnév helytelen!'
            },
            firstname: {
                required: 'Adja meg a keresztnevét!',
                maxlength: 'A keresztnév túl hosszú!',
                lettersonly: 'A keresztnév helytelen!'
            },
            birthdate_year: 'A születési dátum megadásához <br />válassza ki az évet, a hónapot és a napot is!',
            birthdate_month: 'A születési dátum megadásához <br />válassza ki az évet, a hónapot és a napot is!',
            birthdate_day: 'A születési dátum megadásához <br />válassza ki az évet, a hónapot és a napot is!',
            zip: {
                zipnum: 'Az irányítószám helytelen!'
            },
            city: {
                required: 'Kérjük ellenőrizze az irányítószámát vagy válasszon települést!'
            },
            address: {
                maxlength: 'A cím túl hosszú!'
            },
            mobile: {
                required: 'Érvényes telefonszámot adjon meg, csak számjegyekkel!',
                maxlength: 'A telefonszámszám túl hosszú!',
                mobilenum: 'Érvényes telefonszámot adjon meg, csak számjegyekkel!'
            },
            mobile_prefix: 'A körzetszámot a legördülő menüből válassza ki!',
            phone: {
                maxlength: 'A telefonszámszám túl hosszú!',
                telnum: 'Érvényes telefonszámot adjon meg, csak számjegyekkel!'
            }
        },
        //invalidHandler
        function(){
            $('.sysMsgBox.alert').removeClass('dn');
        },
        {
            birthdate: 'birthdate_year birthdate_month birthdate_day'
        }
    );
    
    formValidation(
        $('#regFormProduct'),
        {
            email: {
                required: true,
                email: true,
                maxlength: 250,
                ajaxcheck: true
            },
            password: {
                maxlength: 250
            },
            password_again: {
                required: function(element) {
                    return $('#passwordNotRequired').val()!='';
                },
                maxlength: 250,
                equalTo: "#passwordNotRequired"
            },
            lastname: {
                required: true,
                maxlength: 250,
                lettersonly: true
            },
            firstname: {
                required: true,
                maxlength: 250,
                lettersonly: true
            },
            accept: 'required'
        },
        {
            email: {
                required: 'Adja meg az e-mail címét!',
                email: 'Az e-mail cím helytelen!',
                maxlength: 'A megadott e-mail cím túl hosszú!',
                ajaxcheck: 'Még nem érkezett válasz az email ellenőrzésre!'
            },
            password: {
                maxlength: 'A jelszó túl hosszú!'
            },
            password_again: {
                required: 'Adja meg a jelszavát!',
                maxlength: 'A jelszó túl hosszú!',
                equalTo: 'A két jelszó nem egyezik!'
            },
            lastname: {
                required: 'Adja meg a családnevét!',
                maxlength: 'A családnév túl hosszú!',
                lettersonly: 'A családnév helytelen!'
            },
            firstname: {
                required: 'Adja meg a keresztnevét!',
                maxlength: 'A keresztnév túl hosszú!',
                lettersonly: 'A keresztnév helytelen!'
            },
            accept: 'A feltételek elfogadása kötelező!'
        }
    );
    
    formValidation(
        $('#regFormProductMore'),
        {
            gender: 'required',
            birthdate_year: {
                required: function(element) {
                    return $('#birthdate_month option:selected').val()!='' || $('#birthdate_day option:selected').val()!='';
                  }
            },
            birthdate_month: {
                required: function(element) {
                    return $('#birthdate_year option:selected').val()!='' || $('#birthdate_day option:selected').val()!='';
                  }
            },
            birthdate_day: {
                required: function(element) {
                    return $('#birthdate_year option:selected').val()!='' || $('#birthdate_month option:selected').val()!='';
                  }
            },
            zip: {
                required: true,
                zipnum: true
            },
            address: {
                required: true,
                maxlength: 250
            },
            phone: {
                required: true,
                maxlength: 250,
                mobileOrPhoneNum: true
            },
            
            product_group: 'required',
            product_id: {
                required: function(element) {
                    return $('#product_group option:selected').val()!='';
                  }
            },
            product_model: {
                required: function(element) {
                    return $('.product_filter_campaign_product_type option:selected').val().indexOf('Egyéb')!=0;
                  }
            },
            serial: 'required',
            imei: {
                required: true,
                number: true,
                maxlength: 15,
                minlength: 14
            },
            purchase_place: 'required',
            purchase_city: {
                required: function(element){
                    return $(element).is(':visible');
                }
            },
            purchase_address_id: {
                required: function(element){
                    return $(element).is(':visible');
                }
            },
            purchase_other_place: {
                required: function(element){
                    return $(element).is(':visible');
                }
            },
            purchase_other_city: {
                required: function(element){
                    return $(element).is(':visible');
                }
            },
            purchase_other_address: {
                required: function(element){
                    return $(element).is(':visible');
                }
            },
            purchase_url: {
                required: function(element){
                    return $('#purchase_place option:selected').html()=='Online vásárlás';
                },
                urlWithoutHttp: true
            },
            purchase_date_year: 'required',
            purchase_date_month: 'required',
            purchase_date_day: 'required',
            type: 'required',
            company_name: 'required',
            company_sector: 'required',
            company_size: 'required',
            company_phone: {
                mobileOrPhoneNum: true,
                maxlength: 250
            }
        },
        {
            gender: 'Adja meg a nemét',
            birthdate_year: 'Adja meg a születési dátumát! Válassza ki az évet, a hónapot és a napot is!',
            birthdate_month: 'Adja meg a születési dátumát! Válassza ki az évet, a hónapot és a napot is!',
            birthdate_day: 'Adja meg a születési dátumát! Válassza ki az évet, a hónapot és a napot is!',
            zip: {
                required: 'Adja meg az irányítószámot!',
                zipnum: 'Az irányítószám helytelen!'
            },
            address: {
                required: 'Adja meg a címet!',
                maxlength: 'A cím túl hosszú!'
            },
            phone: {
                required: 'Kérjük, adja meg telefonszámát!',
                maxlength: 'A telefonszámszám túl hosszú!',
                mobileOrPhoneNum: 'Érvényes telefonszámot adjon meg, csak számjegyekkel!'
            },
            product_group: 'Válassza ki a termékcsoportot!',
            product_id: 'Válassza ki a terméktípust!',
            product_model: 'Válassza ki a modellkódot!',
            serial: 'Adja meg a sorozatszámot',
            imei: {
                required: 'Adja meg az IMEI számot!',
                number: 'A megadott IMEI szám nem megfelelő formátumú. Csak számokat írjon be!',
                maxlength: 'A megadott IMEI szám nem megfelelő, mert nem 14 vagy 15 karakter hosszú.',
                minlength: 'A megadott IMEI szám nem megfelelő, mert nem 14 vagy 15 karakter hosszú.'
            },
            purchase_place: 'Adja meg a vásárlás helyét',
            purchase_city: 'Válassza ki, hogy melyik<br /> városban van az üzlet!',
            purchase_address_id: 'Válassza ki az üzlet címét',
            purchase_other_city: 'Adja meg, hogy melyik<br /> városban van az üzlet!',
            purchase_other_place: 'Adja meg, hogy milyen<br /> üzletben vásárolta a terméket! ',
            purchase_other_address: 'Adja meg az üzlet címét!',
            purchase_url: {
                required: 'Adja meg a vásárlás webcímét!',
                urlWithoutHttp: 'Adjon meg érvényes webcímet!'
            },
            purchase_date_year: 'Adja meg a vásárlás évét',
            purchase_date_month: 'Adja meg a vásárlás hónapját',
            purchase_date_day: 'Adja meg a vásárlás napját',
            type: 'Adja meg a felhasználás típusát',
            company_name: 'Adja meg a cégnevet!',
            company_sector: 'Adja meg a gazdasági ágazatot',
            company_size: 'Adja meg a vállalat nagyságát',
            company_phone:{
                mobileOrPhoneNum: 'Érvényes telefonszámot adjon meg, csak számjegyekkel!',
                maxlength: 'A telefonszámszám túl hosszú!'
            }
        },
        null,
        {
            birthdate: 'birthdate_year birthdate_month birthdate_day'
        }
    );
    
    formValidation(
        $('#subscribeForm'),
        {
            lname: {
                required: true,
                maxlength: 250
            },
            fname: {
                required: true,
                maxlength: 250
            },
            email: {
                required: true,
                email: true
            },
            newsletter: 'required',
            accept: 'required'
        },
        {
            lname: {
                required: 'A vezetéknév megadása kötelező.',
                maxlength: 'A vezetéknév hibás, kérjük ellenőrizze!'
            },
            fname: {
                required: 'A keresztnév megadása kötelező.',
                maxlength: 'A keresztnév hibás, kérjük ellenőrizze!'
            },
            email: {
                required: 'Az e-mail cím megadása kötelező.',
                email: 'A megadott e-mail cím hibás.<br /> Kérjük, egy valódi e-mail címet adjon meg.'
            },
            newsletter: 'Hírlevél feliratkozáshoz kérjük jelölje be, hogy hozzájárulását adja a hírlevél küldéshez.',
            accept: 'A továbblépéshez kérjük olvassa el az adatkezelési tájékoztatót és adja hozzájárulását az abban foglaltakhoz.'
        }
    );
    
    formValidation(
        $('#unSubscribeForm'),
        {
            email: {
                required: true,
                email: true
            }
        },
        {
            email: {
                required: 'Leiratkozáshoz adja meg az e-mail címét!',
                email: 'A megadott e-mail cím hibás.<br /> Kérjük, egy valódi e-mail címet adjon meg.'
            }
        }
    );
    
});

/*******************************************************************
 * ************ AJAX FORM VALIDATION FUNCTIONS ********************* 
 ******************************************************************/

    function modifyEmailValidation(){
        formValidation(
            $('#emailModifyForm'),
            {
                email: {
                    required: true,
                    email: true,
                    maxlength: 250
                }
            },
            {
                email: {
                    required: 'Adja meg az új e-mail címét!',
                    email: 'Létező e-mail címet adjon meg!',
                    maxlength: 'A megadott e-mail cím túl hosszú!'
                }
            }
        );
    }
    
    function modifyPasswordValidation(){
        formValidation(
            $('#passwordModifyForm'),
            {
                password: {
                    required: true,
                    maxlength: 250
                },
                password_again: {
                    required: true,
                    maxlength: 250,
                    equalTo: "#password"
                }
            },
            {
                password: {
                    required: 'Adja meg új jelszavát!',
                    maxlength: 'Az új jelszó túl hosszú!'
                },
                password_again: {
                    required: 'Adja meg új jelszavát!',
                    maxlength: 'Az új jelszó túl hosszú!',
                    equalTo: 'Az új jelszó és ismétlése nem egyezik!'
                }
            }
        );
    }
