
RBjs_Registration = function( owner )
{
    this.owner = owner;
    var me = this;
    this.cache = {};
    this.company_ajax_active = 0;
    
    this.ParseOtvet = function (data, container, form_name)
    {
        //if(!me.cache['container_ids']) me.cache['container_ids'] = $j(container); //no work because dynamic rebuild
        //var impulse = $j(container);
        me.cache['container_ids'] = $j(container);
        
        //if reply is error
        if(data['type'] == 2)
        {                                                          
            $j('.form_error', me.cache['container_ids']).removeClass('show');
            $j('.big_vhod_pole', me.cache['container_ids']).removeClass('error');
                
            if(data['error_bad_reply']) me.ImpulseRegistrationRecapcha(form_name, 'std');
            
            //alert(data['error_keys'].toSource());
            var count = data['error_keys'].length;
            for(i = 0; i < count; i++)
            {
                if( data['error_keys'][i] == 'already_activeted' ) { 
                    $j('#activate_form').hide();
                    $j('#reg_std').html( 'Ваша учетная запись уже активирована <br><br><br><br><br><br><br><br><br><br><br><br>' ).show();
                    break;
                }
                $j('.form_error.'+ data['error_keys'][i], me.cache['container_ids']).toggleClass('show');
                $j("input[name='"+ data['error_keys'][i] +"']", me.cache['container_ids']).toggleClass('error');
                $j("select[name='"+ data['error_keys'][i] +"']", me.cache['container_ids']).toggleClass('error');
            }
            //var error_keys = data['error_keys'];
            //for(key in error_keys)
            //{                
                //alert(error_keys[key]);
                //$j('.form_error.'+ data['error_keys'][key], me.cache['container_ids']).toggleClass('show');
                //$j("input[name='"+ data['error_keys'][key] +"']", me.cache['container_ids']).toggleClass('error');
                //$j("select[name='"+ data['error_keys'][key] +"']", me.cache['container_ids']).toggleClass('error');
            //}
            
            if(data['error_common'])
            {
                $j('.form_error.common', me.cache['container_ids']).html(data['error_common']).toggleClass('show');
            }
        
        }
        else if(data['type'] == 100)
        {
            me.cache['container_ids'].remove();
            
            //if(data['r'] == 77) $j('#reg_prof').toggleClass('hiddener');            
            //else $j('#reg_std').toggleClass('hiddener');
            
            $j('#success_text').toggleClass('hiddener');
            
            RBjs.Session.setSessionPrms({'member_id': data['i'],'displayname': data['n']});
        }
    }
    
    this.ShowProfReg = function(checkobj)
    {
        if(!me.cache['prof_reg_layer'])  me.cache['prof_reg_layer'] = $j('.prof_reg_layer');
        
        if(checkobj.checked)
        {
            me.cache['prof_reg_layer'].css('display', 'block');
        }
        else
        {
            me.cache['prof_reg_layer'].css('display', 'none');            
        }        
    }
    this.City = function(opt)
    {
        if(!me.cache['field_my_city'])  me.cache['field_my_city'] = $j('#my_city');

        if(opt == -1)
        {
            me.cache['field_my_city'].toggleClass('hiddener');
        }
        else
        {
            if(!me.cache['field_my_city'].hasClass('hiddener')) me.cache['field_my_city'].toggleClass('hiddener');
        }
    }
    
    this.Country = function(opt)
    {
        var country_id = opt.value;    
        if(country_id != '--')
        {
            $j.ajax({
                  type: "POST",
                  url: "/registration/load_city",
                  data: {id: country_id},
                  success: function(reply)
                  {
                    me.City('--'); 
                    if(!me.cache['city_list'])  me.cache['city_list'] = $j('#city_list');                    
                    me.cache['city_list'].html(reply);
                  }
                });            
        }
    }
    
    this.setDefaultCountry = function(id)
    {
        $j('option[value="'+id+'"]', $j('#country_select')).attr('selected', true);
    }
        
    this.ImpulseRegistrationSend = function ()
    {        
        $j.ajax({
                  type: "POST",
                  url: "/registration/validate_impulse_registration",
                  data: {form_date: $j("#impulse_register_form").serialize()},
		          dataType: "json",
                  success: function(data)
                  {
                    //if reply is user registred and ok
                    if(data['type'] == 1)
                    {
                        //call send comment
                        RBjs.ModalPopUp.execSuccesCallback();
                    }                    
                    me.ParseOtvet(data, '#impulse_register_form', 'impulse_register_form');
                    $j('#impulse_login_form').hide();
                    $j('#impulse_register_form br:first').hide();
                  },
                  error: function(data)
                  {
                    me.ParseOtvet({type:2,error_keys:[],error_common: 'В процессе регистрации произошел сбой. Пожалуйста, сообщите об этом службе технической поддержки <a href="mailto:support@rb.ru">support@rb.ru</a>. Извините за доставленные неудобства.'}, '#register_form', 'register_form');
                  }
                });
    }
    
    this.RegistrationSend = function ()
    {
        RBjs.Freezer.freezeAll();
        $j.ajax({
                  type: "POST",
                  url: "/registration/validate_registration",
                  data: {form_date: $j("#register_form").serialize()},
                  dataType: "json",
                  success: function(data)
                  {
                    me.ParseOtvet(data, '#register_form', 'register_form');
                    RBjs.Freezer.unfreezeAll();
                  },
                  error: function (data)
                  {
                        me.ParseOtvet({type:2,error_keys:[],error_common: 'В процессе регистрации произошел сбой. Пожалуйста, сообщите об этом службе технической поддержки <a href="mailto:support@rb.ru">support@rb.ru</a>. Извините за доставленные неудобства.'}, '#register_form', 'register_form');
                        RBjs.Freezer.unfreezeAll();
                  }
                });
    }
        
    this.ImpulseRegistrationRecapcha = function (form_name, area)
    {        
        var area = area || '';
        $j.ajax({
                  type: "POST",
                  data: {id: ''},
                  url: "/registration/recapcha",
                  success: function(reg_code)
                  {
                        window.document.forms[form_name].regcode.value = reg_code;
                        $j("#recapcher_image_impulse").attr("src", "/registration/get_captcha_image/" + reg_code + "/" + (Math.round((Math.random()*9)+1) + "/" + area));
                  }                  
                });
    }                                                               

    this.CompanyModalInit = function (impulse)
    {
        me.cache['mode_impulse'] = impulse;
        
        me.cache['finded_company'] = $j('#finded_company');
        me.cache['find_company_modal'] = $j('#company_select_modal');
        me.cache['add_new_company_link'] = $j('#add_new_company_link', me.cache['find_company_modal']);              
        me.cache['add_new_company_text'] = $j('#add_new_company_text', me.cache['find_company_modal']);                      
        me.cache['add_new_company_ui'] = $j('#add_new_ui', me.cache['find_company_modal']);
        me.cache['modal_window'] = $j('#TB_ajaxContent');
    }    
    this.ShowCompanyModal = function ()
    {
        tb_show('', '/registration/company_select_form?height=520&width=481&modal=true', '');
    }
    
    this.unBlock = function()
    {
        me.company_ajax_active = 0;
    }
        
    this.SearchCompany = function ()
    {
        if(me.company_ajax_active) return false;
        me.company_ajax_active = 1;
        $j('.form_error', me.cache['find_company_modal']).removeClass('show');
                        
        var company_name = window.document.forms['search_company_select'].company_name.value;
        
        if(!company_name || company_name.length < 2)
        {            
            if(!me.cache['add_new_company_link'].hasClass('hiddener')) me.cache['add_new_company_link'].addClass('hiddener');
            if(!me.cache['add_new_company_ui'].hasClass('hiddener')) me.cache['add_new_company_ui'].addClass('hiddener');
            
            $j('.form_error.toshort', me.cache['find_company_modal']).toggleClass('show');
            me.cache['finded_company'].empty();
            
            me.company_ajax_active = 0;
            
            return false;
        }        
        
        $j.ajax({
                  type: "POST",
                  url: "/registration/search_company",
                  data: {str_name: window.document.forms['search_company_select'].company_name.value},
                  success: function(reply)
                  {                                        
                    $j('.form_error', me.cache['find_company_modal']).removeClass('show');
                    me.cache['finded_company'].html(reply);
                    if(me.cache['add_new_company_link'].hasClass('hiddener')) me.cache['add_new_company_link'].removeClass('hiddener');
                    if(!me.cache['add_new_company_ui'].hasClass('hiddener')) me.cache['add_new_company_ui'].addClass('hiddener');
                    
                    window.setTimeout( me.unBlock, 2000 );
                  }                  
                });
    }            
    this.CompanyMyCompany = function ()
    {
        me.cache['finded_company'].html( me.cache['add_new_company_text'].html() );
        me.cache['add_new_company_link'].addClass('hiddener');
        me.cache['add_new_company_ui'].removeClass('hiddener');
        return false;
    }
    this.AddCompany = function ()
    {
        var company_name = window.document.forms['search_company_select'].company_name.value;
        
        if(!company_name || company_name.length < 2)
        {            
            $j('.form_error.toshort', me.cache['find_company_modal']).toggleClass('show');
            return false;
        } 
                
        me.setCompany(-1, company_name);
    }
    this.setCompany = function (id, name)
    {
        var obj = false;
        if (obj = window.document.getElementById('company_id')) obj.value = id;
        if (obj = window.document.getElementById('new_company_name')) obj.value = name;
        if (obj = window.document.getElementById('company_name')) obj.innerHTML = name;        
        
        if(me.cache['mode_impulse'])
        {
            me.ImpulseCloseCompanyLayer();
        }
        else
        {
            tb_remove();
        }
        
        return false;
    }
        
    this.ImpulseCompanyLayer = function ()
    {
        $j('#impulse_layer', me.cache['modal_window']).toggleClass('hiddener');
        $j('#company_layer', me.cache['modal_window']).toggleClass('hiddener');
    }
    this.ImpulseCloseCompanyLayer = function ()
    {
        $j('#impulse_layer', me.cache['modal_window']).toggleClass('hiddener');
        $j('#company_layer', me.cache['modal_window']).toggleClass('hiddener');        
    }    
    
    this.activationSend = function ()
    {
        RBjs.Freezer.freezeAll();
        var form = document.forms['activate_form'];
        $j.ajax({
                  type: "POST",
                  url: "/registration/validate_activation",
                  data: {id: form.member_id.value, code: form.act_code.value},
                  dataType: "json",
                  success: function(data)
                  {                    
                    me.ParseOtvet(data, '#activate_form', 'activate_form');
                    RBjs.Freezer.unfreezeAll();
                  },
                  error: function()
                  {
                    me.ParseOtvet({type:2,error_keys:[],error_common: 'В процессе активации произошел сбой. Пожалуйста, сообщите об этом службе технической поддержки <a href="mailto:support@rb.ru">support@rb.ru</a>. Извините за доставленные неудобства.'}, '#register_form', 'register_form');
                    RBjs.Freezer.unfreezeAll();
                  }
                });
    }    
}
     


RBjs.Registration = new RBjs_Registration( RBjs );