
$(function(){

    $.fn.Offers = function(elements){
        var speed = 300;

        
        var langStrings = new Array(
            $('#err_required_field').val(),     //0
            $('#err_no_name').val(),     //1
            $('#err_invalid_email').val(),     //2
            $('#err_invalid_phone').val(),     //3
            $('#err_invalid_title').val(),     //4
            $('#err_api_problem').val(),     //5
            $('#err_enter_valid').val()     //6
        );

        var show_errors = function(field, error) {
            field = $(field);
            if (!field.hasClass('errors')) {
                field
                        .addClass('errors')
                        .after(
                                '<div class="errors" style="display:none"><ul><li>' + error + '</li></ul></div>');
                field.next('div.errors').slideDown(speed);
            }
        }



        var validName = function(val){

           if (val.match(/^[0-9a-zA-Zа-яА-ЯÄäÖößÜü\-\'\.\s]+$/))
                return true;
            return false;

        }

        var validPhone = function(val)
        {
            if (val.match(/^[0-9\-\+\(\)\/\s/]+$/))
                return true;
            return false;
        }

        this.initial = function(elem){

            var field = $(elem);
            var temp_val = field.prev('label').text();
            val = field.val();
            elem.defaultVal = temp_val;

             if (val == '' || val == elem.defaultVal)
                field.addClass('light-gray').val(elem.defaultVal);

        }


        this.focusFunc = function(elem) {
            
                var el = $(elem);

                if (el.hasClass('errors') || el.val() == elem.defaultVal) {

                    el.removeClass('light-gray');

                    el.removeClass('errors');

                    if (el.val() == elem.defaultVal) {
                            el.val('');
                    }

                    el.next('div.errors').slideUp(
                    speed, function() {
                        $(this).remove();
                    });

               }

          }

            this.blurFunc = function(elem) {
                
                    var el = $(elem);
                    var val = el.val();

                    if (val == '' || val.match(/^\s+$/)) {
                        if (el.hasClass('required')) {
                            show_errors(elem, elem.defaultVal + ' ' + langStrings[0]);
                        }
                        el.addClass('light-gray').val(elem.defaultVal);
                    } else if (el.hasClass('name')
                            && !validName(val)) {
                        show_errors(elem, elem.defaultVal + ' ' + langStrings[6]);
                    } else if (el.hasClass('email')
                            && !val.match(/^[a-zA-Z0-9]+[\.a-zA-Z0-9_-]+@[\.a-zA-Z0-9_-]+\.[a-zA-Z0-9]+$/)) {
                        show_errors(elem, langStrings[2]);
                    } else if (el.hasClass('phone')
                            && !validPhone(val)) {
                        show_errors(elem, langStrings[3]);
                    }

            }
            
            this.checkInputs = function(fields) {
                errors = false;
                fields.each(function(){
                        var elem = $(this);
                        var val = elem.val();
                        
                        if (val == '' || val.match(/^\s+$/) || elem.hasClass('light-gray')) {
                            if (elem.hasClass('required')) {
                                show_errors(elem, this.defaultVal + ' ' + langStrings[0]);
                                errors = true;
                            }
                            elem.addClass('light-gray').val(this.defaultVal);
                        }else if (elem.hasClass('name')
                                && !validName(val)) {
                            show_errors(elem, this.defaultVal + ' ' + langStrings[6]);
                         } else if (elem.hasClass('email')
                                && !val.match(/^[a-zA-Z0-9]+[\.a-zA-Z0-9_-]+@[\.a-zA-Z0-9_-]+\.[a-zA-Z0-9]+$/)) {
                            show_errors(this, langStrings[2]);
                            errors = true;
                        } else if (elem.hasClass('phone')
                                && !validPhone(val)) {
                            show_errors(this, langStrings[3]);
                            errors = true;
                        }
                    });

                    titleEl = $('select#req_title');

                    if (titleEl.val() != 'Mr.' && titleEl.val() != 'Mrs.' && titleEl.val() != 'Herr' && titleEl.val() != 'Frau') {
                        show_errors(titleEl, langStrings[4]);
                        errors = true;
                    }

                    if (!errors) {
                        $('#loading').center().fadeIn(10);
                        $('form#req_form').submit();
                    }
                    ///////////////////////////////////////////
                    return false;
            }
    }
       
    eventsMngr();
});

function eventsMngr(){
    
    $('input.add_offer, input.edit_offer').click(function(event){
        invokeOfferEditor(event, this);
    });
    
    $('input.delete_offer').click(function(event){
        var elem = $(this);
        var params = JSON.parse(decodeURIComponent(elem.attr('data-details')));
        
        deleteIt(params.id, $('#baseUrl').val(), function(){
            $('div#'+params.id).slideUp(400, function(){
                $(this).remove();
            });
        });
    });
}



    
