(function($){

    function setModalHeight(){
        $('#colorbox, #cboxWrapper, #cboxContent, #cboxLoadedContent').height($('div.subContent').outerHeight() + 40 );
		if ($('.frmError').length == 0) {
			$("div.errorContainer").hide();
		}
    }
    
    function validateHighlightError(element){
        $(element).closest(".field").addClass("frmError");
		setModalHeight();
    }
    
    function validateUnHighlightError(element){
        $(element).closest(".field").removeClass("frmError");
		setModalHeight();
    };
    
    function showErrorBox(form, validator){
        var errors = validator.numberOfInvalids();
        if (errors) {
            $("div.errorContainer").show();
        }
        else {
            $("div.errorContainer").hide();
        }
    }
    
    /* FORM validation */
    
    jQuery.validator.addMethod('telNum', function(number, element){
        // var reg = new RegExp(/^((06)-(20|30|70)\/[0-9]{3}-[0-9]{4})$/);
        var reg = new RegExp(/^[0-9]{9}$/);
        return this.optional(element) || reg.test(number);
    }, 'Incorrect mibile num');
    
    jQuery.validator.addMethod('lettersonly', function(number, element){
        var reg = new RegExp(/^['.\-\sa-zA-ZÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóŐőŰűúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜäëïöüçÇßØøÅåÆæÞþÐð]+$/);
        return this.optional(element) || reg.test(number);
    }, 'Letters only');
    
    function validateForm(){
        if ($("#kfkiForm").length) {
            $("#kfkiForm").validate({
                onsubmit: true,
                focusInvalid: false,
                onfocusout: false,
                highlight: validateHighlightError,
                unhighlight: validateUnHighlightError,
                invalidHandler: showErrorBox,
                errorLabelContainer: "#errorMsgs",
                errorElement: "span",
                wrapper: "li",
                submitHandler: function(form){
                    var $f = $(form);
                    $("div.errorContainer").hide();
                    showLoading();
                    $.ajax({
                        url: $f.attr('action'),
                        data: $f.serialize(),
                        type: 'post',
                        success: function(data){
                            var $xml = $(data);
                            var $errors = $xml.find('error');
                            var $errorCont = $('#errorMsgs').html('').show();
                            hideLoading();
                            if ($errors.length) {
                                $errors.each(function(){
                                    var $t = $(this);
                                    var name = $t.attr('name');
                                    if (name != "tech") 
                                        $errorCont.append('<li><span class="error">' + $t.text() + '</span></li>');
                                    $f.find('[name=' + name + ']').closest('.field').addClass("frmError");
                                });
                                
                                if ($errors.length == 1 && $errors.eq(0).attr('name') == 'tech') {
                                    $("div.errorBox").show();
                                }
                                else {
                                    if ($errors.length == 1 && $errors.eq(0).attr('name') == 'success') {
                                        $("div.succesBox").show();
                                        $("div.regFormContentBox").html($errors.eq(0).text());
                                    }
                                    else {
                                        $("div.errorContainer").show();
                                    }
                                }
								setTimeout(setModalHeight, 500);
                            }
                            
                        }
                    });
                },
                rules: {
                    kiro_name: {
                        required: true,
                        maxlength: 250,
                        lettersonly: true
                    },
                    
                    kiro_email: {
                        required: true,
                        email: true
                    },
                    
                    kiro_comp: {
                        required: true,
                        maxlength: 250
                    },
                    
                    kiro_tel: {
                        required: true,
                        minlength: 9,
                        telNum: true
                    },
                    
                    kiro_msg: {
                        required: true
                    },
                    
                    kiro_capt: {
                        required: true
                    }
                },
                messages: {
                    kiro_name: {
                        required: "Nem töltötte ki a(z) <strong>Ön cégének neve</strong> mezőt.",
                        maxlength: "A megadott <strong>cégnév</strong> túl hosszú.",
                        lettersonly: "A megadott <strong>cégnév</strong> formátuma nem megfelelő."
                    },
                    
                    kiro_email: {
                        required: "Nem töltötte ki a(z) <strong>Ön email címe</strong> mezőt.",
                        email: "A megadott <strong>email cím</strong> formátuma nem megfelelő."
                    },
                    
                    kiro_comp: {
                        required: "Nem töltötte ki a(z) <strong>Ön neve</strong> mezőt.",
                        maxlength: "A megadott <strong>név</strong> túl hosszú."
                    },
                    
                    kiro_tel: {
                        required: "Nem töltötte ki a(z) <strong>Ön telefonszáma</strong> mezőt.",
                        minlength: "A megadott <strong>telefonszám</strong> túl rövid.",
                        telNum: "A megadott <strong>telefonszám</strong> formátuma nem megfelelő."
                    },
                    
                    kiro_msg: {
                        required: "Nem töltötte ki a(z) <strong>Üzenete</strong> mezőt."
                    },
                    
                    kiro_capt: {
                        required: "Nem írta be a <strong>Képen látható szöveget</strong>."
                    }
                }
            });
        }
        
        function showMailErrorBox(form, validator){
            var errors = validator.numberOfInvalids();
            if (errors) {
                $("div.errorContainer").show();
            }
            else {
                $("div.errorContainer").hide();
            }
			setTimeout(setModalHeight, 500);
        }
        
        if ($("#mailForm").length) {
            $("#mailForm").validate({
                onsubmit: true,
                focusInvalid: false,
                onfocusout: false,
                highlight: validateHighlightError,
                unhighlight: validateUnHighlightError,
                invalidHandler: showMailErrorBox,
                errorLabelContainer: "#errorMsgs",
                errorElement: "span",
                wrapper: "li",
                submitHandler: function(form){
                    var $f = $(form);
                    $(".modalFormContentBox .errorContainer").hide();
                    showLoading();
                    $.ajax({
                        url: $f.attr('action'),
                        data: $f.serialize(),
                        type: 'post',
                        success: function(data){
                            var $xml = $(data);
                            var $errors = $xml.find('error');
                            var $errorCont = $('#errorMsgs').html('').show();
                            hideLoading();
                            $(".mailForm").hide();
                            if ($errors.length) {
                                $errors.each(function(){
                                    var $t = $(this);
                                    var name = $t.attr('name');
                                    if (name != "tech") 
                                        $errorCont.append('<li><span class="error">' + $t.text() + '</span></li>');
                                    $f.find('[name=' + name + ']').closest('.field').addClass("frmError");
                                });
                                
                                if ($errors.length == 1 && $errors.eq(0).attr('name') == 'tech') {
                                    $(".modalFormContentBox .errorBox").show();
                                }
                                else {
                                    if ($errors.length == 1 && $errors.eq(0).attr('name') == 'success') {
                                        $(".modalFormContentBox .succesBox").show();
                                        $(".modalFormContentBox .regFormContentBox").html($errors.eq(0).text());
                                    }
                                    else {
                                        $(".modalFormContentBox .errorContainer").show();
                                    }
                                }
								setTimeout(setModalHeight, 500);
                            }
                        }
                    });
                },
                rules: {
                    kiro_name: {
                        required: true,
                        maxlength: 250,
                        lettersonly: true
                    },
                    
                    kiro_email: {
                        required: true,
                        email: true
                    },
                    
                    kiro_name_2: {
                        required: true,
                        maxlength: 250,
                        lettersonly: true
                    },
                    
                    kiro_email_2: {
                        required: true,
                        email: true
                    },
                    
                    kiro_msg: {
                        required: true
                    },
                    
                    kiro_capt: {
                        required: true
                    }
                },
                messages: {
                
                    kiro_name: {
                        required: "Nem töltötte ki a(z) <strong>címzett neve</strong> mezőt.",
                        maxlength: "A megadott <strong>név</strong> túl hosszú.",
                        lettersonly: "A megadott <strong>név</strong> formátuma nem megfelelő."
                    },
                    
                    kiro_email: {
                        required: "Nem töltötte ki a(z) <strong>címzett email címe</strong> mezőt.",
                        email: "A megadott <strong>email cím</strong> formátuma nem megfelelő."
                    },
                    
                    kiro_name_2: {
                        required: "Nem töltötte ki a(z) <strong>Ön neve</strong> mezőt.",
                        maxlength: "A megadott <strong>név</strong> túl hosszú.",
                        lettersonly: "A megadott <strong>név</strong> formátuma nem megfelelő."
                    },
                    
                    kiro_email_2: {
                        required: "Nem töltötte ki a(z) <strong>Ön email címe</strong> mezőt.",
                        email: "A megadott <strong>email cím</strong> formátuma nem megfelelő."
                    },
                    
                    kiro_msg: {
                        required: "Nem töltötte ki a(z) <strong>Üzenete</strong> mezőt."
                    },
                    
                    kiro_capt: {
                        required: "Nem írta be a <strong>Képen látható szöveget</strong>."
                    
                    }
                }
            });
        }
    }
    
    function reloadCaptcha(){
        $('#lnkCaptcha').click(function(e){
            e.preventDefault();
            var $cp = $(this).parent().prev('img.captcha');
            var src = $cp.attr('src').split('?')[0];
            $cp.attr('src', src + "?" + Math.round(Math.random() * 10000));
        });
    }
    
    function showLoading(){
        var bw = $('body').outerWidth();
        var bh = $('body').outerHeight();
        $('.ajaxLoading').css({
            display: 'block',
            width: bw,
            height: bh
        });
        $('.ajaxLoading .cont').css({
            opacity: 0.5
        });
        $('.ajaxLoading .loadImg').css({
            display: 'block',
            top: Math.round($(window).height() / 2 + $(window).scrollTop() - 25),
            left: bw / 2 - 220
        });
    }
    
    function hideLoading(){
        $('.ajaxLoading').css({
            display: 'none'
        });
        $('.ajaxLoading .loadImg').css({
            display: 'none'
        });
        $('.registrationForm').scrollTop();
    }
    
    $(function(){
    
        // E-mail küldés, modal layer
        if ($(".js_email").length) {
            $(".js_email").click(function(e){
            
                e.preventDefault();
                
                $.fn.colorbox({
                    transition: "none",
                    speed: 400,
                    initialWidth: "520",
                    width: "540",
                    resize: true,
                    preloading: true,
                    scrolling: false,
                    open: false,
                    href: $(this).attr("href"),
                    iframe: false,
                    escKey: true
                });
            });
            
        }
        
        // Fájl feltöltés
        function ajaxFileUpload(){
            $.ajaxFileUpload({
                url: 'ajaxfileupload.php',
                secureuri: false,
                fileElementId: 'fileToUpload',
                dataType: 'json',
                success: function(data, status){
                    if (typeof(data.error) != 'undefined') {
                        if (data.error != '') {
                            alert(data.error);
                        }
                        else {
                            // alert(data.msg);
                            //
                            var files_container = $("#uploadedFiles");
                            var file_count = files_container.find('tr').length;
                            var tr_id = 'file_tr_' + (file_count + 1);
                            var tr_btn_id = 'del_' + tr_id;
                            var file_name = data.file_name;
                            
                            files_container.append('<tr id="' + tr_id + '">');
                            $("#" + tr_id).append('<td class="pb3">' + file_name);
                            $("#" + tr_id).append('<td class="pb3"><small><a href="#" class="cMag fileDelete" id="' + tr_btn_id + '" rel="' + file_name + '">töröl</a>');
                            
                            $("#" + tr_btn_id).click(function(e){
                                e.preventDefault();
                                ajaxFileDelete(tr_id, file_name);
                            });
                        }
                    }
                    hideLoading();
                },
                error: function(data, status, e){
                    alert(e);
                }
            });
            return false;
        }
        
        // Fájl feltöltés
        function ajaxFileDelete(del_id, del_file){
            showLoading();
            
            $.ajax({
                url: 'ajaxfiledelete.php',
                data: 'del_id=' + del_id + '&del_file=' + del_file,
                type: 'get',
                success: function(data){
                    if (data == 'true') {
                        // Sikeres törlés
                        $("#" + del_id).remove();
                    }
                    else {
                        // Hiba...
                        alert(data);
                    }
                    hideLoading();
                }
            });
        }
        
        $("#kiro_csatolas").click(function(e){
        
            e.preventDefault();
            showLoading();
            ajaxFileUpload();
            
        });
        
        //hideErrors();
        validateForm();
        reloadCaptcha();
    });
    
})(jQuery);

