
//

$(document).ready(function(){
    $( '#with_personal_aria' ).click(function() {
        updateCaptcha();
    })
    
    
    $.validator.addMethod("eng_string", function(value, element){
        return this.optional(element) || /^[a-zA-Z ]*$/.test(value);
        }, "test"
    );

    $.validator.addMethod("eng_string_number", function(value, element){
        return this.optional(element) || /^[a-zA-Z0-9 ]*$/.test(value);
        }, "test"
    );
    
    $.validator.addMethod("eng_rus_string", function(value, element){
        return this.optional(element) || /^[a-zA-Zа-яА-Я ]*$/.test(value);
        }, "test"
    );

    $.validator.addMethod("eng_rus_string_number", function(value, element){
        return this.optional(element) || /^[a-zA-Zа-яА-Я0-9 ]*$/.test(value);
        }, "test"
    );

    initValidation('classic');
    initValidation('micro');
    initValidation('demo');
    initValidation('micro_express');
    initValidation('spartak');

    function initValidation(server_type){
        $('#' + server_type + '2').validate({
            rules:{
                rules_accepted: "required",
                send_type: "required",
                phone:{
                    required: true
                }
            },
            messages:{
                rules_accepted: "*",
                send_type: "*",
                phone:{
                    required: ""
                }
            },
            errorPlacement: function(error, element) {
                if(element.attr('name') == 'rules_accepted'){
                    showError(getErrorText('RULES_REQUIRED'));
                }    
            },
            submitHandler: function(){
                showWaitDialog();
				
				var data = $.extend({
					phone: $('#' + server_type + '2 input[name="phone"]').val(),
					send_type: $('#' + server_type + '2 input[name="send_type"]:checked').val(),
					captcha: $('#' + server_type + '2 input[name="captcha"]').val(),
					type: server_type
				}, GAO.getCustomVar());
				
                $.ajax({
                    type : 'POST',
                    url : '/' + PageStatus.Lang() + '/contest_registration/code/',
                    data : data,
                    success : function(answer){
                        hideWaitDialog();
                        codeAnswer(answer);
                    },
                    dataType : 'json'
                });
            }
        });

        $('#' + server_type + '3').validate({
            rules:{
                reg_code: {
                    required: true,
                    number: true
                }
            },
            errorPlacement: function(error, element) {
            },
            submitHandler: function(){
                showWaitDialog();
				var data = $.extend({
					code: $('#' + server_type + '3 input[name="reg_code"]').val()
				}, GAO.getCustomVar());
				
                $.ajax({
                    type : 'POST',
                    url : '/' + PageStatus.Lang() + '/contest_registration/check_code/',
                    data : data,
                    success : function(answer){
                        hideWaitDialog(answer);
                        confirmCodeAnswer(answer, server_type);
                    },
                    dataType : 'json'
                });
            }
        });

        $('#' + server_type + '4').validate({
            rules:{
                mt_login: {
                    required: true,
                    number: true
                },
                mt_pass:         "required",
                name: {
                    required: true,
                    eng_string: true
                },
                surname: {
                    required: true,
                    eng_string_number: true
                },
                nickname: {
                    required: true,
                    eng_string_number: true
                },
                email: {
                    required: true,
                    email: true
                },
                name: {
                    required: true,
                    eng_string_number: true
                },
                doc_ser: {
                    required: true,
                    eng_rus_string_number: true
                },
                doc_num: {
                    required: true,
                    eng_string_number: true
                },
                doc_ddate:         "required",
                doc_gives:         "required",
                ddate_birth:     "required"
            },
            errorPlacement: function(error, element) {
            },
            submitHandler: function(){
                registration(server_type);
            }
        });

    }

    $('#micro_express_22').validate({
        rules:{
            nickname: "required",
            send_type: "required"
        },
        errorPlacement: function(error, element) {
        },
        submitHandler: function(){
            showWaitDialog();
			var data = $.extend({
				nickname: $('#micro_express_22 input[name="nickname"]').val(),
				login: $('#micro_express_22 input[name="login"]').val(),
				send_type: $('#micro_express_22 input[name="send_type"]:checked').val(),
				type: 'micro_express',
				captcha: $('#micro_express_22 input[name="captcha"]').val(),
				extension: 1
			}, GAO.getCustomVar());
			
            $.ajax({
                type : 'POST',
                url : '/' + PageStatus.Lang() + '/contest_registration/code/',
                data : data,
                success : function(answer){
                    hideWaitDialog();
                    codeAnswer(answer);
                },
                dataType : 'json'
            });
        }
    });

    $('#micro_express_23').validate({
        rules:{
            reg_code: {
                required: true,
                number: true
            }
        },
        errorPlacement: function(error, element) {
        },
        submitHandler: function(){
            showWaitDialog();
			var data = $.extend({
				code: $('#micro_express_23 input[name="reg_code"]').val(),
				extension: 1
			}, GAO.getCustomVar());
				
            $.ajax({
                type : 'POST',
                url : '/' + PageStatus.Lang() + '/contest_registration/check_code/',
                data : data,
                success : function(answer){
                    hideWaitDialog();
                    confirmCodeAnswerExpress(answer);
                },
                dataType : 'json'
            });
        }
    });
    
    $('#demo_recovery2').validate({
        rules:{
            nickname: "required",
            phone: "required",
            send_type: "required"
        },
        errorPlacement: function(error, element) {
        },
        submitHandler: function(){
            showWaitDialog();
			var data = $.extend({
				nickname: $('#demo_recovery2 input[name="nickname"]').val(),
				phone: $('#demo_recovery2 input[name="phone"]').val(),
				send_type: $('#demo_recovery2 input[name="send_type"]:checked').val(),
				type: 'demo_recovery'
			}, GAO.getCustomVar());
			
            $.ajax({
                type : 'POST',
                url : '/' + PageStatus.Lang() + '/contest_registration/code/',
                data : data,
                success : function(answer){
                    hideWaitDialog();
                    codeAnswer(answer);
                },
                dataType : 'json'
            });
        }
    });

    $('#demo_recovery3').validate({
        rules:{
            reg_code: {
                required: true,
                number: true
            }
        },
        errorPlacement: function(error, element) {
        },
        submitHandler: function(){
            showWaitDialog();
			var data = $.extend({
				code: $('#demo_recovery3 input[name="reg_code"]').val(),
				nickname: $('#demo_recovery2 input[name="nickname"]').val(),
				phone: $('#demo_recovery2 input[name="phone"]').val(),
				type: 'demo_recovery'
			}, GAO.getCustomVar());
			
            $.ajax({
                type : 'POST',
                url : '/' + PageStatus.Lang() + '/contest_registration/check_code/',
                data : data,
                success : function(answer){
                    hideWaitDialog();
                    confirmCodeAnswerDemoRecovery(answer);
                },
                dataType : 'json'
            });
        }
    });
    
    $('.registration fieldset').css('color','#cfcfcf')
    $('.registration input').attr('disabled','true');
    $('.registration select').attr('disabled','true');

    $('#demo1 fieldset').css('color','#333');
    $('#demo1 input').attr('disabled','');
    $('#demo1 select').attr('disabled','');

    $('#micro2 fieldset').css('color','#333');
    $('#micro2 input').attr('disabled','');
    $('#micro2 select').attr('disabled','');

    $('#micro3 fieldset').css('color','#333');
    $('#micro3 input').attr('disabled','');
    $('#micro3 select').attr('disabled','');

    $('#classic2 fieldset').css('color','#333');
    $('#classic2 input').attr('disabled','');
    $('#classic2 select').attr('disabled','');

    $('#classic3 fieldset').css('color','#333');
    $('#classic3 input').attr('disabled','');
    $('#classic3 select').attr('disabled','');

    $('#spartak2 fieldset').css('color','#333');
    $('#spartak2 input').attr('disabled','');
    $('#spartak2 select').attr('disabled','');

    $('#spartak3 fieldset').css('color','#333');
    $('#spartak3 input').attr('disabled','');
    $('#spartak3 select').attr('disabled','');

    $('#micro_express2 fieldset').css('color','#333');
    $('#micro_express2 input').attr('disabled','');
    $('#micro_express2 select').attr('disabled','');

    $('#micro_express3 fieldset').css('color','#333');
    $('#micro_express3 input').attr('disabled','');
    $('#micro_express3 select').attr('disabled','');

    $('#micro_express_22 fieldset').css('color','#333');
    $('#micro_express_22 input').attr('disabled','');
    $('#micro_express_22 select').attr('disabled','');

    $('#micro_express_23 fieldset').css('color','#333');
    $('#micro_express_23 input').attr('disabled','');
    $('#micro_express_23 select').attr('disabled','');

    $('#demo_recovery2 fieldset').css('color','#333');
    $('#demo_recovery2 input').attr('disabled','');
    $('#demo_recovery2 select').attr('disabled','');

    $('#demo_recovery3 fieldset').css('color','#333');
    $('#demo_recovery3 input').attr('disabled','');
    $('#demo_recovery3 select').attr('disabled','');

    if( $( '#spartak3' ).size() > 0 ) {
        disable( 'spartak35' );
        enableAnimals( false );
    }

});

function enableAnimals( flag ) {
    if( flag ) {
        $( '.img-block-low' ).removeClass( 'disable' );
    } else {
        $( '.img-block-low' ).addClass( 'disable' );
    }
}

function updateCaptcha() {
    $('img.captcha_img').each(function(){
              
        var CaptchaURL = this.src;  
        CaptchaURL = CaptchaURL.replace(/=[\.\d]{0,}$/, "=");
        
        this.src = CaptchaURL + '?' + Math.random();
        
    });
}

function codeAnswer(answer){
    if(answer.status && answer.status == 'ok'){
        updateCaptcha();
        showError(getErrorText('CODE_SENT'));
    }else if(typeof(answer) == 'object'){
        var _errorText = '';
        for(var key in answer){
            _errorText += getErrorText(answer[key]) + '<br/>';
        }
        
        updateCaptcha();
        showError(_errorText);
    }
}

$( '.img-block-low' ).click(function(){
    if( $( this ).hasClass( 'disable' ) ) return false;
    $( '.img-block-low' ).removeClass( 'b-activ' );
    $( this ).addClass( 'b-activ' );
    enable( 'spartak4' );
});

function confirmCodeAnswer(answer, server_type){
    if(answer['status'] == 'ok'){
        if( server_type == 'spartak' ) {
            disable( server_type + '2' );
            disable( server_type + '3' );
            
            enable( server_type + '35' );
            enableAnimals( true );
        } else {
            doStep(server_type + '2', server_type + '4');
            doStep(server_type + '3', server_type + '4');
        }
    }else if(typeof(answer) == 'object'){
        var _errorText = '';
        for(var key in answer){
            _errorText += '<div>' + getErrorText(answer[key]) + '</div>';
        }
        showError(_errorText);
    }
}

function confirmCodeAnswerExpress(answer){
    if( answer['status'] == 'ok' ){
		var contest = location.href.replace( /.*contest\/([^\/]+)\/.*/, '$1' ),
			path = location.href.split( document.domain + '/' )[1],
			var_competition_value = $( 'input[name=login]' ).val(),
			var_competition_name = 'FormulaFX_old';

		GA.redirect( '/' + PageStatus.Lang() + '/contest/formula_fx/registration/?type=extended', function() {
            GAO.setCustomVar( 3, var_competition_name, var_competition_value, 3 ).trackPageview( path + '/submitted/' );
        })

    }else if( typeof(answer) == 'object' ){
        var _errorText = '';
        for(var key in answer){
            _errorText += '<div>' + getErrorText(answer[key]) + '</div>';
        }
        showError(_errorText);
    }
}

function confirmCodeAnswerDemoRecovery(answer){
    if(answer['status'] == 'ok'){
        complete('demo_recovery');
    }else if(typeof(answer) == 'object'){
        var _errorText = '';
        for(var key in answer){
            _errorText += '<div>' + getErrorText(answer[key]) + '</div>';
        }
        showError(_errorText);
    }
}

function stepOld(form, step){
    $('#'+form+' fieldset').css('color','#cfcfcf');
    $('#'+form+' input').attr('disabled','true');
    $('#'+form+' select').attr('disabled','true');

    $('#'+step+' fieldset').css('color','#333');
    $('#'+step+' input').attr('disabled','');
    $('#'+step+' select').attr('disabled','');
}


function enable( id ) {
    $('#' + id + ' fieldset').css('color','#333');
    $('#' + id + ' input').attr('disabled','');
    $('#' + id + ' select').attr('disabled','');
}

function disable( id ) {
    $('#' + id + ' fieldset').css('color','#cfcfcf');
    $('#' + id + ' input').attr('disabled','true');
    $('#' + id + ' select').attr('disabled','true');
}


function doStep( _form, _step ){
    if( _form ) {
        disable( _form );
    }
    if( _step ) {
        enable( _step );
    }
}

function complete(form){
    $('#'+form+'_complete').css('display','block');
    $('#'+form+'1').css('display','none');
    $('#'+form+'2').css('display','none');
    $('#'+form+'3').css('display','none');
    if( form == 'spartak' ) {
      $('#'+form+'35').css('display','none');
    }
    $('#'+form+'4').css('display','none');
}


function loadUser(server_type){
    if(
               !$('#' + server_type + '4 input[name="mt_login"]').val()
          ||     !$('#' + server_type + '4 input[name="mt_pass"]').val()
        ||    (
                $('#' + server_type + '4 input[name="mt_login"]').attr('changed') == 0
            &&  $('#' + server_type + '4 input[name="mt_pass"]').attr('changed') == 0
        )

    ){
        return false;
    }
    showWaitDialog();
    $.ajax({
        type : 'POST',
        url : '/' + PageStatus.Lang() + '/contest_registration/load_user/',
        data : {
            mt_login: $('#' + server_type + '4 input[name="mt_login"]').val(),
            mt_pass: $('#' + server_type + '4 input[name="mt_pass"]').val(),
            type: server_type
        },
        success : function(answer){
             hideWaitDialog();
             loadUserData(answer, server_type);
        },
        dataType : 'json'
    });
    $('#' + server_type + '4 input[name="mt_login"]').attr('changed', 0);
    $('#' + server_type + '4 input[name="mt_pass"]').attr('changed', 0);

    switchUserData(server_type, 'disable');
}

function loadUserData(answer, server_type){
    if(answer.name){
        var _doc = answer.doc_ddate.split('-');
        var _birth = answer.ddate_birth.split('-');
        $('#' + server_type + '4')
            .find('input[name = "name"]').val(answer.name)
            .end()
            .find('input[name = "surname"]').val(answer.surname)
            .end()
            .find('input[name = "email"]').val(answer.email)
            .end()
            .find('input[name = "doc_ser"]').val(answer.doc_ser)
            .end()
            .find('input[name = "doc_num"]').val(answer.doc_num)
            .end()
            .find('select[name = "doc_day"]').val(_doc[2])
            .end()
            .find('select[name = "doc_mon"]').val(_doc[1])
            .end()
            .find('select[name = "doc_year"]').val(_doc[0])
            .end()
            .find('input[name = "doc_gives"]').val(answer.doc_gives)
            .end()
            .find('select[name = "birth_day"]').val(_birth[2])
            .end()
            .find('select[name = "birth_mon"]').val(_birth[1])
            .end()
            .find('select[name = "birth_year"]').val(_birth[0]);
    }else{
        var _errorText = '';
        for(var key in answer){
            _errorText += getErrorText(answer[key]) + '<br/>';
        }
        showError(_errorText);
    }
    switchUserData(server_type, 'enable');

}

function switchUserData(server_type, key){
    if(key == 'disable'){
        var disabled = true;
    }else{
        var disabled = false;
    }

    $('#' + server_type + '4 input[name="name"]').attr('disabled', disabled);
    $('#' + server_type + '4 input[name="surname"]').attr('disabled', disabled);
    $('#' + server_type + '4 input[name="email"]').attr('disabled', disabled);
    $('#' + server_type + '4 input[name="doc_ser"]').attr('disabled', disabled);
    $('#' + server_type + '4 input[name="doc_num"]').attr('disabled', disabled);
    $('#' + server_type + '4 input[name="doc_ddate"]').attr('disabled', disabled);
    $('#' + server_type + '4 input[name="doc_gives"]').attr('disabled', disabled);
    $('#' + server_type + '4 input[name="ddate_birth"]').attr('disabled', disabled);

}

function registration(server_type){
    var params = $('#' + server_type + '4').serialize() + '&type=' + server_type;
	var objGA = GAO.getCustomVar();
	for(var i in objGA){
		params += '&' + i + '=' + objGA[i];
	}
	
    showWaitDialog();
    $.ajax({
        type : 'POST',
        url : '/' + PageStatus.Lang() + '/contest_registration/register/',
        data : params,
        success : function(answer){
            hideWaitDialog();
            registrationAnswer(answer, server_type);
        },
		error: function(){
			hideWaitDialog();
			showError('error');
		},
        dataType : 'json'
    });
}

function showWaitDialog(){
    hideError();
    $('#ajax_load_ico').show();
}
function hideWaitDialog(){    
    $('#ajax_load_ico').hide();
}

function showError(text){
    hideWaitDialog();
    $('#error_div #error_content').html(text);
    $('#error_div').show();
}

function hideError(){
    $('#error_div').hide();
}

function registrationAnswer(answer, server_type){
    if( answer['status'] == 'ok' ){    
		var contest = location.href.replace( /.*contest\/([^\/]+)\/.*/, '$1' ),
			path = location.href.split( document.domain + '/' )[1],
			var_competition_value = $( 'input[name=mt_login]' ).val(),
			var_competition_name = 'competition';
		if( !var_competition_value ) {
			var_competition_value = $( 'input[name=email]' ).val();
			var_competition_name = 'competition_email';
		}

        var siteNames = {
			ru : '.alpari.ru',
			cn : '.alpari-markets.cn'			
		};

        GA.redirect( 'http://www' + ( siteNames[PageStatus.Lang()] ? siteNames[PageStatus.Lang()] : siteNames['ru'] ) + '/' + PageStatus.Lang() + '/contest/' + contest + '/registration/?type=confirm', function() {
            GAO.setCustomVar( 3, var_competition_name, var_competition_value, 3 ).trackPageview( path + '/submitted/' );
        })

		return;
    } else if(typeof(answer) == 'object'){
		var _errorText = '';
		for(var key in answer){
			_errorText += getErrorText(answer[key]) + '<br/>';
		}
		showError(_errorText);
    }
}

