/*--------------------------- CheckBox Check -------------------------------*/
function Js_checkbox_required(form_name){
    this.inputs = form_name.find('input[class~=js_checkbox_required]');
}
Js_checkbox_required.prototype = {
    inputs: "",
    error_text: "Az ÁSZF nem lett elfogadva!", //base text
    check: function (){
        var result = new Array();
        var pass_temp = false;
        var error_text_temp = this.error_text;
        this.inputs.each(function() {
            var current_name = $(this).attr('name');
            if(current_name == "aszf_check"){
                error_text_temp = "Az ÁSZF nem lett elfogadva!";
                if($(this).attr('checked')){
                    pass_temp = true;
                }
            }
            if(current_name == "aszf"){
                error_text_temp = "Az ÁSZF nem lett elfogadva!";
                if($(this).attr('checked')){
                    pass_temp = true;
                }
            }
        });
        this.error_text = error_text_temp;
        result['text'] = this.error_text;
        result['pass'] = pass_temp;
        return result;
    }
}
/*---------------------------------------------------------------------------*/

/*--------------------------- Required radio Check -------------------------------*/
function Js_radio_required(form_name){
    this.inputs = form_name.find('input[class~=js_radio_required]');
}
Js_radio_required.prototype = {
    inputs: "",
    error_text: "Mihez csatolod a tárhelyed?",
    check: function (){
        var result = new Array();
        var pass_temp = false;
        var error_text = this.error_text;
        var pass_csomag = false;
        var pass_tarhely = false;
        this.inputs.each(function() {
            var current_name = $(this).attr('name');
            if(current_name == "tarhely_input"){
                if($(this).attr('checked')){
                    pass_csomag = true;
                }
            }
            if(current_name == "csomag"){
                if($(this).attr('checked')){
                    pass_tarhely = true;
                }
            }
        });
        if(pass_csomag){
            error_text = "Válassz csomagot!";
        }
        if(pass_tarhely){
            error_text = "Mihez csatolod a tárhelyed?";
        }
        if(pass_csomag && pass_tarhely){
            pass_temp = true;
        }
        result['text'] = error_text;
        result['pass'] = pass_temp;
        return result;
    }
}
/*---------------------------------------------------------------------------*/

/*--------------------------- User Check -------------------------------*/
function Js_user_check(form_name){
    this.inputs = form_name.find('input[class~=js_user_check]');
    this.loading_name = form_name.find('.user_find_load');
}
Js_user_check.prototype = {
    loading_name: "",
    find_user: false,
    inputs: "",
    error_text: "Ez az e-mail c�m m�r foglalt!",
    check: function (){
        var result = new Array();
        var pass_temp = true;
        var length = this.inputs.length;
        var loading_name = this.loading_name;
        this.inputs.each(function() {
            var current_value = $(this).attr('value');
            //var www_correction = "";
            //var www_exists = window.location.search(/www/);
            //if(www_exists != -1){www_correction = "www";}
            for (var i = 0; i < length; i++){
                $.ajax({
                    async: false,
                    url: "ajax_handler.php",
                    type: "POST",
                    data: "ajax_action=check_user&e_mail="+current_value,
                    dataType: "json",
                    error: function(request, status, error) {
                        alert("Hiba:"+request.responseText+" !"+error+" * ");
                    },
                    beforeSend: function(x) {
                        loading_name.css({
                            display:"inline"
                        });
                    },
                    success: function(data){
                        loading_name.css({
                            display:"none"
                        });
                        Js_user_check.find_user = data.find_user;
                    //alert(Js_user_check.find_user);
                    }
                })
            }
        });
        (Js_user_check.find_user)? pass_temp = true :pass_temp = false;
        result['text'] = this.error_text;
        result['pass'] = pass_temp;
        return result;
    }
}
/*---------------------------------------------------------------------------*/

/*--------------------------- Email Check -------------------------------*/
function Js_email(form_name){
    this.inputs = form_name.find('input[class~=js_email]');
    var predefined_values_temp = [];
    this.inputs.each(function() {
        predefined_values_temp.push($(this).attr('value'));
    });
    for (var i in predefined_values_temp){
        this.predefined_values[i] = predefined_values_temp[i];
    }
}
Js_email.prototype = {
    predefined_values: [],
    inputs: "",
    error_text: "Az e-mail cím nem megfelelő!",
    check: function (){
        var result = new Array();
        var pass_temp = true;
        var predefined_values_temp = this.predefined_values;
        var length = this.inputs.length;
        this.inputs.each(function() {
            var value_check = true;
            var current_value = $(this).attr('value');
            var current_class = $(this).attr('class');
            var except_predefined = false;
            var email_search = current_class.search(/except_predefined/); //test
            if(email_search != -1){
                except_predefined = true;
            }
            for (var i = 0; i < length; i++){
                if(predefined_values_temp[i] == current_value && !except_predefined){
                    value_check = false;
                }else{
                    var at = current_value.indexOf('@');
                    var dot = current_value.lastIndexOf('.');
                    if(at != -1 && dot != -1 && (at<dot) ){
                        var temp = new Array();
                        temp = current_value.split('@');
                        if( (temp.length < 3) && (temp[0].length >= 1) ) {
                            var temp2 = new Array();
                            temp2 = temp[1].split('.');
                            if( temp2[0] != "" && temp2[1] != "" && (temp2[1].length > 1) ) {
                                value_check = true;
                            }else {
                                value_check = false;
                            }
                        }else {
                            value_check = false;
                        }
                    } else {
                        value_check = false;
                    }
                }
            }
            if(current_value == "" || !value_check){
                pass_temp = false;
            }
        });
        result['text'] = this.error_text;
        result['pass'] = pass_temp;
        return result;
    }
}
/*---------------------------------------------------------------------------*/

/*--------------------------- Required Check -------------------------------*/
function Js_required(form_name){
    this.inputs = form_name.find('[class~=js_required]');
    var predefined_values_temp = [];
    this.inputs.each(function() {
        predefined_values_temp.push($(this).attr('value'));
    });
    for (var i in predefined_values_temp){
        this.predefined_values[i] = predefined_values_temp[i];
    }
}
Js_required.prototype = {
    predefined_values: [],
    inputs: "",
    error_text: "A *-al jelölt mezők kitöltése kötelező!",
    check: function (){
        var result = new Array();
        var pass_temp = true;
        var predefined_values_temp = this.predefined_values;
        var length = this.inputs.length;
        this.inputs.each(function() {
            var value_check = true;
            var current_value = $(this).attr('value');
            var current_class = $(this).attr('class');
            var except_predefined = false;
            var email_search = current_class.search(/except_predefined/); //test
            if(email_search != -1){
                except_predefined = true;
            }
            for (var i = 0; i < length; i++){
                if(predefined_values_temp[i] == current_value && !except_predefined){
                    value_check = false;
                }
            }
            if(current_value == "" || !value_check){
                pass_temp = false;
            }
            var disable_search = current_class.search(/js_required_disable/); //test
            if(disable_search != -1){
                pass_temp = true;
            }
        });
        result['text'] = this.error_text;
        result['pass'] = pass_temp;
        return result;
    }
}
/*---------------------------------------------------------------------------*/


/*-------------------------------- Classes ---------------------------------------*/

/*------------------ Must set for every test --------------------*/
function ChecksInit(form_name){
    var tests = new Array();
    var js_email = false; //test1
    var js_user_check = false; //test2
    var js_radio_required = false; //test3
    var required = false; //test4
    var checkbox_required = false; //test5
    form_name.find('input').each(function() {
        var current_class = $(this).attr('class');

        var required_search = current_class.search(/js_required/); //test
        if(required_search != -1){
            required = true; //test
        }
        var email_search = current_class.search(/js_email/); //test
        if(email_search != -1){
            js_email = true; //test
        }
        var user_check_search = current_class.search(/js_user_check/); //test
        if(user_check_search != -1){
            js_user_check = true; //test
        }
        var radio_required_search = current_class.search(/js_radio_required/); //test
        if(radio_required_search != -1){
            js_radio_required = true; //test
        }
        var checkbox_required_search = current_class.search(/js_checkbox_required/); //test
        if(checkbox_required_search != -1){
            checkbox_required = true; //test
        }
    });
    var y = 1;
    if(js_email){
        tests[y] = new Js_email(form_name); //test1
        y++;
    }
    if(js_user_check){
        tests[y] = new Js_user_check(form_name); //test2
        y++;
    }
    if(js_radio_required){
        tests[y] = new Js_radio_required(form_name); //test3
        y++;
    }
    if(required){
        tests[y] = new Js_required(form_name); //test4
        y++;
    }
    if(checkbox_required){
        tests[y] = new Js_checkbox_required(form_name); //test5
        y++;
    }
    return tests;
}
/*--------------------------------------------------------------*/

function FormCheck(form_name) {
    this.form_name = form_name;
    this.test_objects = ChecksInit(this.form_name);
}
FormCheck.prototype = {
    form_name: "",
    text: "",
    test_objects: "",
    checking: function (){
        var pass = false;
        var i = 1;
        do{
            var check_result = this.test_objects[i].check();
            pass = check_result['pass'];
            //alert(check_result['pass']+" check result "+i);//------------------------------ALERT!!
            this.text = check_result['text'];
            i++;
        //alert(this.test_objects.length+" == "+i);//------------------------------ALERT!!
        }while(pass && i < this.test_objects.length);
        return pass;
    }
};

function FormsInit(FormCheck_current, current_form){
    current_form.submit(function() {
        var form_pass = FormCheck_current.checking();
        //alert(form_pass+" form"); //------------------------------ALERT!!
        if(!form_pass){
            var current_error_text = $(this).find('.form_error_text');
            hide_or_show(current_error_text,"hide");
            current_error_text.html(FormCheck_current.text)
            hide_or_show(current_error_text,"show");
        }
        return form_pass;
    });
}

function FormCheckInit(){
    var form_count = $(".js_form_check").length;
    var error_text = $('.form_error_text');
    var error_text_search = error_text.attr('class').search(/show_error_text/); //ha tal�l show_error_text-et akkor alapb�l mutatja az error_text-et
    if(error_text_search == -1){
        error_text.css({
            visibility:"hidden"
        });
    }
    for(var i=0; i < form_count; i++){
        var current_form = $('.js_form_check:eq('+i+')');
        current_form.attr('autocomplete', 'off');
        var predefined_values = (current_form.attr('predefined_values') == "yes")? true : false;
        predefined_values_handler(current_form, predefined_values);
        var FormCheck_current = new FormCheck(current_form);
        FormsInit(FormCheck_current, current_form);
    }
}

function hide_or_show(element,action){
    if(action == "hide"){
        element.css({
            visibility:"hidden",
            borderTopColor: "#0E76BC",
            borderRightColor: "#0E76BC",
            borderBottomColor: "#0E76BC",
            borderLeftColor: "#0E76BC",
            backgroundColor: "#FFFFFF"
        });
    }
    if(action == "show"){
        element.css({
            visibility:"visible"
        });
        element.animate({
            borderTopColor: "#ffffff",
            borderRightColor: "#ffffff",
            borderBottomColor: "#ffffff",
            borderLeftColor: "#ffffff",
            backgroundColor: "#ffffff"
        }, 1000);
    }
}

function predefined_values_handler(form_name, p_on_off){
    form_name.find('input').each(function(){
        var original_class = $(this).attr('class');
        $(this).attr('class', original_class+' form_check_predefined');
        var except_predefined = false;
        var email_search = original_class.search(/except_predefined/); //test
        if(email_search != -1){
            except_predefined = true;
        }
        if(p_on_off && !except_predefined){
            var is_empty = true;
            $(this).keyup(function() {
                var temp_val = $(this).attr('value');
                if(temp_val != ""){
                    is_empty = false;
                }else {
                    is_empty = true;
                }
            });
            var input_value = "";
            $(this).focus(function () {
                if(is_empty){
                    input_value = $(this).attr('value');
                    $(this).attr('value', '').css({
                        color: "#343434",
                        fontStyle: "normal"
                    });
                }
            });
            $(this).focusout(function () {
                if(is_empty){
                    $(this).attr('value', input_value).css({
                        color: "gray",
                        fontStyle: "italic"
                    });
                }
            });
        }
        if(except_predefined){
            $(this).css({
                color: "#343434",
                fontStyle: "normal"
            });
        }
    });
    form_name.find('textarea').each(function(){
        var original_class = $(this).attr('class');
        $(this).attr('class', original_class+' form_check_predefined');
        var except_predefined = false;
        var email_search = original_class.search(/except_predefined/); //test
        if(email_search != -1){
            except_predefined = true;
        }
        if(p_on_off && !except_predefined){
            var is_empty = true;
            $(this).keyup(function() {
                var temp_val = $(this).val();
                if(temp_val != ""){
                    is_empty = false;
                }else {
                    is_empty = true;
                }
            });
            var input_value = "";
            $(this).focus(function () {
                if(is_empty){
                    input_value = $(this).val();
                    $(this).val("").css({
                        color: "#343434",
                        fontStyle: "normal"
                    });
                }
            });
            $(this).focusout(function () {
                if(is_empty){
                    $(this).val(input_value).css({
                        color: "gray",
                        fontStyle: "italic"
                    });
                }
            });
        }
        if(except_predefined){
            $(this).css({
                color: "#343434",
                fontStyle: "normal"
            });
        }
    });
}
/*---------------------------------------------------------------------------*/
var form_count = $(".js_form_check").length;
if(form_count > 0){
    FormCheckInit(); //start the whole thing

}

/*--------------------------- Predefined stuff ------------------------------*/
$("input").each(function(){
    var current_class = $(this).attr('class');
    var predefined_search = current_class.search(/form_check_predefined/);
    if(predefined_search == -1){
        var is_empty = true;
        $(this).keyup(function() {
            var temp_val = $(this).attr('value');
            if(temp_val != ""){
                is_empty = false;
            }else {
                is_empty = true;
            }
        });

        var input_value = "";
        $(this).focus(function () {
            //alert($(this).attr('class'));
            if(is_empty){
                input_value = $(this).attr('value');
                $(this).attr('value', '').css({
                    color: "#343434",
                    fontStyle: "normal"
                });
            }
        });
        $(this).focusout(function () {
            if(is_empty){
                $(this).attr('value', input_value).css({
                    color: "gray",
                    fontStyle: "italic"
                });
            }
        });
    }
});

$("textarea").each(function(){
    var current_class = $(this).attr('class');
    var predefined_search = current_class.search(/form_check_predefined/);
    if(predefined_search == -1){
        var is_empty = true;
        $(this).keyup(function() {
            var temp_val = $(this).val();
            if(temp_val != ""){
                is_empty = false;
            }else {
                is_empty = true;
            }
        });

        var input_value = "";
        $(this).focus(function () {
            //alert($(this).attr('class'));
            if(is_empty){
                input_value = $(this).val();
                $(this).val("").css({
                    color: "#343434",
                    fontStyle: "normal"
                });
            }
        });
        $(this).focusout(function () {
            if(is_empty){
                $(this).val(input_value).css({
                    color: "gray",
                    fontStyle: "italic"
                });
            }
        });
    }
});
/*---------------------------------------------------------------------------*/
