$('head').append("<style>.errorVal{border: 2px solid #F00 !important; background: #FAA !important;}</style>");
var error = new Array();

$.extend({
    messageError: function(caller, Message) {

    var divFormError = document.createElement('div');
	var formErrorContent = document.createElement('div');
	var arrow = document.createElement('div');
        var id = caller;

        id = id.replace("#", "");

	$(divFormError).addClass("formError");
	$(divFormError).addClass($(caller).attr("name"));
        $(divFormError).attr("id", id +'_er');
	$(formErrorContent).addClass("formErrorContent");
	$(arrow).addClass("formErrorArrow");

	$("body").append(divFormError);
	$(divFormError).append(arrow);
	$(divFormError).append(formErrorContent);
	$(arrow).html('<div class="line10"></div><div class="line9"></div><div class="line8"></div><div class="line7"></div><div class="line6"></div><div class="line5"></div><div class="line4"></div><div class="line3"></div><div class="line2"></div><div class="line1"></div>');
	$(formErrorContent).html(Message);

	callerTopPosition = $(caller).offset().top;
	callerleftPosition = $(caller).offset().left;
	callerWidth =  $(caller).width();
	callerHeight =  $(caller).height();
	inputHeight = $(divFormError).height();

	callerleftPosition = callerleftPosition + callerWidth -30;
	callerTopPosition = callerTopPosition  -inputHeight -10;

	$(divFormError).css({
            		top:callerTopPosition,
			left:callerleftPosition,
			opacity:0
	})

        $(divFormError).fadeTo("fast",0.8);
    }
});

$.extend({
    emailValid: function(email) {

        if (email.length != '') {

            var pattern = new RegExp(/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/);
            return pattern.test(email);
        }

        return true;
    }
});

$.extend({
    dateValid: function(date) {

        if (date.length != '') {

            var pattern = new RegExp(/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/);
            return pattern.test(date);
        }

        return true;
    }
});

$.extend({
    clear: function(element) {

        element.removeClass('errorVal');
        $('div[id='+ element.attr('id') +'_er]').remove();
    }
});

$(document).ready(function() {



    $('input[type=text][class*=check_email]').blur(function() {

        var element = $(this);
        $('div[id='+ element.attr('id') +'_er]').remove();
        var length = $.trim(element.attr('value'));

        if (!length) {

            element.addClass('errorVal');            
            $.messageError('#'+ element.attr('id'), $("#requiredField").val());

            error[0] = true;
            return;
        }
        else if (!$.emailValid(length)) {

            element.addClass('errorVal');            
            $.messageError('#'+ element.attr('id'), $("#incEmail").val());

            error[0] = true
            return;
        }
        else {

            element.removeClass('errorVal');
            $.ajax({
                type: 'POST',
                url: CI_ROOT +'register/CheckEmail',
                data: {'email':length},
                dataType: 'html',
                async: true,
                success: function(responce) {

                    if (responce == 'false') {

                        element.addClass('errorVal');
                        $.messageError('#'+ element.attr('id'), $("#usedEmail").val());

                        error[0] = true;
                        return;
                    }

                    error[0] = false;
                }
            });
        }
    });

    $('input[type=text][class*=check_fname]').blur(function() {

        var element = $(this);
        $('div[id='+ element.attr('id') +'_er]').remove();
        var length = $.trim(element.attr('value'));

        if (!length) {

            element.addClass('errorVal');
            $.messageError('#'+ element.attr('id'), $("#requiredField").val());

            error[1] = true;
            return;
        }
        else {

            element.removeClass('error');
            error[1] = false;
        }
    });

    $('input[type=text][class*=check_lname]').blur(function() {

        var element = $(this);
        $('div[id='+ element.attr('id') +'_er]').remove();
        var length = $.trim(element.attr('value'));

        if (!length) {

            element.addClass('errorVal');
            $.messageError('#'+ element.attr('id'), $("#requiredField").val());

            error[2] = true;
            return;
        }
        else {

            element.removeClass('errorVal');
            error[2] = false;
        }
    });

    $('input[class*=check_byears]').blur(function() {

        var element = $(this);
        $('div[id='+ element.attr('id') +'_er]').remove();
        var length = $.trim(element.attr('value'));
        
        var date = length.split('/');
        
        if (!length) {

            element.addClass('errorVal');
            $.messageError('#'+ element.attr('id'), $("#requiredField").val());

            error[5] = true;
            return;
        }
        else if (!$.dateValid(length)) {

            element.addClass('errorVal');
            $.messageError('#'+ element.attr('id'), $("#incDateM").val());
            error[5] = true;
            return;
        }
        else if ((date[0] < 1 || date[0] > 31) || (date[1] < 1 || date[1] > 12) || (date[2] < 1900)) {

            element.addClass('errorVal');
            $.messageError('#'+ element.attr('id'), $("#incDate").val());
            error[5] = true;
            return;
        }
        else {

            element.removeClass('errorVal');

            $.ajax({
                type: 'POST',
                url: CI_ROOT +'register/CheckYear',
                data: {'year': date[2]},
                dataType: 'html',
                async: true,
                success: function(responce) {

                    if (responce == 'false') {

                        element.addClass('errorVal');
                        $.messageError('#'+ element.attr('id'), $("#under18").val());

                        error[5] = true;
                        return;
                    }

                    error[5] = false;
                }
            });
        }
    });

    $('input[class*=check_country]').blur(function() {

        var element = $(this);
        $('div[id='+ element.attr('id') +'_er]').remove();
        var length = $.trim(element.attr('value'));

        if (!length) {

            element.addClass('errorVal');
            $.messageError('#'+ element.attr('id'), $("#requiredField").val());

            error[6] = true;
            return;
        }
        else {

            element.removeClass('errorVal');
            error[6] = false;
        }
    });



    $('input[type=password][class*=check_pass]').blur(function() {

        var element = $(this);
        $('div[id='+ element.attr('id') +'_er]').remove();
        var length = element.attr('value');

        if (!length) {

            element.addClass('errorVal');
            $.messageError('#'+ element.attr('id'), $("#requiredField").val());

            error[7] = true;
            return;
        }
        else if (length.length < 6) {

            element.addClass('errorVal');
            $.messageError('#'+ element.attr('id'), $("#passLength").val());

            error[7] = true;
            return;
        }
        else {

            element.removeClass('errorVal');
            error[7] = false;
        }
    });

    $('input[type=password][class*=check_c_pass]').blur(function() {

        var element = $(this);
        $('div[id='+ element.attr('id') +'_er]').remove();
        var length = element.attr('value');

        if (!length) {

            element.addClass('errorVal');
            $.messageError('#'+ element.attr('id'), $("#requiredField").val());

            error[8] =  true;
            return;
        }
        else {

            element.removeClass('errorVal');
            var pass = $('#password').val();

            if (pass != length) {

                element.addClass('errorVal');
                $('#password').addClass('errorVal');
                $.messageError('#'+ element.attr('id'), $("#passNotMatch").val());

                error[8] = true;
                return;
            }
            else {

                element.removeClass('errorVal');
                $('#password').removeClass('errorVal');
                error[8] = false;
            }
        }
    });

    $('input[type=text][class*=check_capcha]').blur(function() {

        var element = $(this);
        $('div[id='+ element.attr('id') +'_er]').remove();
        var length = $.trim(element.attr('value'));
        
        if (!length) {

            element.addClass('errorVal');
            $.messageError('#'+ element.attr('id'), $("#requiredField").val());

            error[9] = true;
            return;
        }
        else {

            element.removeClass('errorVal');
            $.ajax({
                type: 'POST',
                url: CI_ROOT +'register/CheckCapcha',
                data: {'capcha_code':length},
                dataType: 'html',
                async: true,
                success: function(responce) {

                    if (responce == 'false') {

                        element.addClass('errorVal');
                        $.messageError('#'+ element.attr('id'), $("#captchaError").val());

                        error[9] = true;
                        return;
                    }

                    error[9] = false;
                }
            });            
        }
    });

    $('#firstname').keyup(function() {

        var element = $(this);
         $.clear(element);
    });

    $('#lastname').keyup(function() {

        var element = $(this);
        $.clear(element);
    });

    $('#email').keyup(function() {

       var element = $(this);
       $.clear(element);
    });

    $('#password').keyup(function() {

       var element = $(this);
       $.clear(element);
    });

    $('#password2').keyup(function() {

       var element = $(this);
       $.clear(element);
    });   

    $('#birth_date').keyup(function() {

       var element = $(this);
       $.clear(element);
    });

    $('#country').keyup(function() {

        var element = $(this);
        $.clear(element);
    })

    $('#user_registration_capcha').keyup(function() {

        var element = $(this);
        $.clear(element);
    })
});

$.extend({
    check_err: function() {

       $('.formError').remove();
        var data = new Array('#firstname', '#lastname', '#email', '#password', '#password2', '#birth_date', '#user_registration_capcha');
        var err = false;
        for (var i = 0; i < data.length; i++) {
                
            if ($(data[i]).val().length == 0) {
                    
                $(data[i]).addClass('errorVal');
                $.messageError(data[i], $("#requiredField").val());
                err = true;
            }            
        }

        if (!$.emailValid($(data[2]).val())) {

            $(data[2]).addClass('errorVal');
            $.messageError(data[2], $("#incEmail").val());
            err = true;
        }

        if ($(data[3]).val() != '' && $(data[3]).val().length < 6) {
            
            $(data[3]).addClass('errorVal');
            $.messageError(data[3], $("#passLength").val());
            err = true;
        }

        if (!$.dateValid($(data[5]).val())) {

            $(data[5]).addClass('errorVal');
            $.messageError(data[5], $("#incDateM").val());
            err = true;            
        }
        
        if (err) { return false; }

        for (i = 0; i < error.length; i++) {

            if (error[i] == true) {
               
                return false;
            }
        }

        return true;
    }
});
