if (!window.account) account = {
    services: '/_ajax/account/',
    user: null,
    registerFields: {
        name: {
            length:5,
            error: 'scrieţi prenumele şi numele.'
        },
        email: {
            length:5,
            error: 'emailul trebuie să fie valid.',
            exists: 'acest email este deja înregistrat. <br/> <a href="#" onclick="account.login()">Autentificare</a>'
        },
        username: {
            length:5,
            error: 'trebuie să aibă minim 5 caractere.',
            exists: 'acest utilizator există deja.'
        },
        password: {
            length:5,
            error: 'trebuie să aibă minim 5 caractere.'
        },
        confirmPassword: {
            length:5,
            error: 'trebuie să aibă minim 5 caractere.'
        }
    },
    loginFields: {
        username: {
            length:5,
            error: 'trebuie să aibă minim 5 caractere.',
            exists: 'acest utilizator există deja.'
        },
        password: {
            length:5,
            error: 'trebuie să aibă minim 5 caractere.'
        }
    },
    go: {
        up: {
            direction: "up"
        },
        down: {
            direction: "down"
        }
    },
    height: {
        message: {
            to: {
                height: 60
            }
        },
        messageBig: {
            to: {
                height: 120
            }
        }
    },
    afterLogin : [],
    params : [],
    setEnv: function (){
        if(! $('account-root').size()) {
            $('body').append('<div id="account-root"></div>');
            $('body').append('<div id="account-courtain"></div>');
        }
        if ($.query.get('account.changePassword').toString().length){
            account.changePassword();
        }
        if ($.query.get('account.confirm').toString().length){
            
            var tmp = $.query.get('account.confirm').split('/');
            account.params['email'] = tmp[0];
            account.params['code'] = tmp[1];
            account.login();
        }
        account.isLoggedIn();
    },
    courtain: function (action){
        if (action == true){
            $('#account-courtain').show();
        } else {
            $('#account-courtain').hide();
        }
    },
    _afterLogin: function (){
        if(account.isLoggedIn()) {
            var callback ;
            while (callback = account.afterLogin.shift()){
                if(typeof(callback) == 'function') {
                    callback(account.user);
                }
            }
        }
        return false;
    },
    _center: function ($obj){
        return $obj.css("top", ($(window).height() - $obj.outerHeight(true))/2 + 'px').css("left", ($(window).width() - $obj.outerWidth(true) )/2 + 'px');
    },
    _bell: function ($obj){
        return $obj.effect("shake", {
            times:3,
            distance:10
        }, 40);
    },
    _prefillData: function (fbData){
        $('#account-register-form-name-field').val(fbData.name).attr('readonly',true);
        $('#account-register-form-name p.error').hide();
        $('#account-register-form-email-field').val(fbData.email).attr('readonly',true);
        $('#account-register-form-email p.error').hide();
        $('#account-register-form-actions-facebook').hide();

        if(account._fbBox($('#account-root div.fbConnect'))){
            $('#account-root #account-register-form-name, #account-root #account-register-form-email').hide();
        }
    },
    _fbBox : function ($container){
        if(facebookApp.isLoggedIn()) {
            var html = '';
            html += '<div class="fbBox">';
            html += '	<div class="fbPhoto">';
            html += '		<img src="http://graph.facebook.com/'+ facebookApp._uid +'/picture">';
            html += '	</div>';
            html += '	<div class="fbInfo">';
            html += '		<p class="name">' + facebookApp._user.name + '</p>';
            html += '		<p class="email">' + facebookApp._user.email + '</p>';
            html += '	</div>';
            html += '</div>';
            $($container).html(html).show();
            return true;
        }
        return false;
    },
    _close : function ($object){
        $object.hide();
        account.courtain(false);
        $('#account-root').html("");
    },
    _hash:function (object){
        var hash = '';
        $.each(object, function(i, val) {
            hash += '"' + i + '":' + '"' + val.toString().replace(/"/g, '\\"') + '",';
        });
        hash = "{" + hash.substring(0, hash.length - 1) + "}";
        return hash;
    },
    isLoggedIn: function (){
        if(account.user === null) {
            var c, u;
            if ((c = '__user') && $.cookie(c) && (u = jQuery.parseJSON($.cookie(c))) && (typeof u == 'object') && (account.user = u)) {
                return true;
            } else {
                $.cookie('__user', null);
            }
            return false;
        }
        return true;
    },
    changePassword: function(){
        var hash = $.query.get('account.changePassword').toString().split('/',2);
        var hashData = ((hash == "")? {} : {
            email: hash[0],
            key:hash[1]
        });

        if(hash == "" && !account.isLoggedIn()) return account.login();

        var html = '';
        html += '<div id="account-changePassword" class="window" style="display:none">';
        html += '	<div class="title">';
        html += '		<h2>Modifică parola</h2>';
        html += '		<a class="close">închide</a>';
        html += '	</div>';
        html += '	<form id="account-changePassword-form">';
        html += '		<div class="element" id="account-changePassword-form-password">';
        html += '			<label for="account-changePassword-form-password-field">Parolă</label>';
        html += '			<input type="password" id="account-changePassword-form-password-field" name="password" value="" /><p class="error"></p>';
        html += '		</div>';
        html += '		<div class="element" id="account-changePassword-form-confirmPassword">';
        html += '			<label for="account-changePassword-form-confirmPassword-field">Confirmare parolă</label>';
        html += '			<input type="password" id="account-changePassword-form-confirmPassword-field" name="confirmPassword" value="" /><p class="error"></p>';
        html += '		</div>';
        html += '		<div class="element loading" id="account-changePassword-form-loading">';
        html += '			<p class="loading"> a\u015fteptaţi ..</p>';
        html += '		</div>';
        html += '		<div class="element actions" id="account-changePassword-form-actions">';
        html += '			<input type="submit" class="action" id="account-changePassword-form-actions-changePassword" name="changePassword" value="Modifică parola" />';
        html += '			<a href="#" class="closeSmall button secondary" id="account-changePassword-form-actions-cancel"><span>închide</span></a>';
        html += '		</div>';
        html += '	</form>';
        html += '	<div id="account-changePassword-success" style="display:none">';
        html += '		<p><strong>Parola ta a fost modificată.</strong></p>';
        html += '	</div>';
        html += '</div>';

        $('#account-root').html(html);
        $('#account-root a.close, #account-root a.closeSmall').click(function(){
            account._close($('#account-changePassword'));
            return false;
        });
        $('#account-changePassword-form').submit(function(){
            var hasErrors = false;
            $.each(account.registerFields, function(i, val) {
                if(i == 'password' || i == 'confirmPassword') {
                    if ($('#account-changePassword-form-'+i+'-field').val().toString().length < val.length){
                        $('#account-changePassword-form-'+i+'-field').addClass('error');
                        $('#account-changePassword-form-'+i+' p.error').html(val.error).show();
                        hasErrors = true;
                    } else if (i == 'email' && !(account._validateEmail($('#account-changePassword-form-'+i+'-field').val().toString()))){
                        $('#account-changePassword-form-'+i+'-field').addClass('error');
                        $('#account-changePassword-form-'+i+' p.error').html(val.error).show();
                        hasErrors = true;
                    } else {
                        $('#account-changePassword-form-'+i+' p.error').hide();
                        $('#account-changePassword-form-'+i+'-field').removeClass('error');
                    }
                }
            });
            if(!hasErrors && $('#account-changePassword-form-password-field').val() != $('#account-changePassword-form-confirmPassword-field').val()) {
                $('#account-changePassword-form-confirmPassword-field').addClass('error');
                $('#account-changePassword-form-confirmPassword p.error').html('cele două parole nu corespund').show();
                hasErrors = true;
            }
            if(hasErrors) {
                account._bell($('#account-changePassword'));
            } else {
                $('#account-changePassword-form-actions').hide();
                $('#account-changePassword-form-loading').show();
                $.ajax({
                    url: account.services,
                    cache: false,
                    data: account._prepareData($('#account-changePassword-form'), 'changePassword', hashData),
                    dataType: 'json',
                    type: 'POST',
                    success: function(data){
                        if(data.success == false){
                            $('#account-changePassword-form-actions').show();
                            $('#account-changePassword-form-loading').hide();
                            $('#account-changePassword-form-confirmPassword-field').addClass('error');
                            $('#account-changePassword-form-confirmPassword p.error').html('utilizator inexistent<br/>Folosiţi secţiunea <a href="#" onclick="account.forgotPassword()">mi-am uitat parola</a>').show();
                            account._bell($('#changePassword-changePassword'));

                        } else {
                            account.user = data.user;
                            $('#account-changePassword-form').hide("drop", account.go.up, 500);
                            $('#account-changePassword').effect("size", account.height.message, 500, function () {
                                $('#account-changePassword-success').show("slide",account.go.up, 500, function () {
                                    $('#account-changePassword').delay(3000).hide("drop", account.go.up, 1000, function (){
                                        $('#account-root').html("");
                                        account.courtain(false);
                                        account._afterLogin();
                                    });
                                })
                            });
                        }
                    }
                });

                return false;
            }
            return false;
        });
        account._center($('#account-changePassword')).delay(300).show("slide",account.go.down, 300);
        account.courtain(true);
        return false;
    },
    forgotPassword: function (){
        if(account.isLoggedIn()) return false;

        var html = '';
        html += '<div id="account-forgotPassword" class="window" style="display:none">';
        html += '	<div class="title">';
        html += '		<h2>Mi-am uitat parola</h2>';
        html += '		<a class="close">închide</a>';
        html += '	</div>';
        html += '	<form id="account-forgotPassword-form">';
        html += '		<div class="element" id="account-forgotPassword-form-email">';
        html += '			<label for="account-forgotPassword-form-email-field">Email</label>';
        html += '			<input type="text" id="account-forgotPassword-form-email-field" name="email" value="" /><p class="error"></p>';
        html += '		</div>';
        html += '		<div class="element actions" id="account-forgotPassword-form-actions">';
        html += '			<input type="submit" class="action" id="account-forgotPassword-form-actions-forgotPassword" name="forgotPassword" value="Am uitat parola" />';
        html += '			<a href="#" class="closeSmall button secondary" id="account-forgotPassword-form-actions-cancel"><span>închide</span></a>';
        html += '		</div>';
        html += '	</form>';
        html += '	<div id="account-forgotPassword-success" style="display:none">';
        html += '		<p></p>';
        html += '	</div>';
        html += '</div>';
        $('#account-root').html(html);
        $('#account-root a.close, #account-root a.closeSmall').click(function(){
            account._close($('#account-forgotPassword'));
            return false;
        });

        $('#account-forgotPassword-form').submit(function(){
            var hasErrors = false;
            var $email = $('#account-forgotPassword-form-email-field');
            if ( $email.val().toString().length < 5 || !(account._validateEmail($email.val().toString()))
                ){
                $('#account-forgotPassword-form-email-field').addClass('error');
                $('#account-forgotPassword-form-email p.error').html(account.registerFields.email.error).show();
                hasErrors = true;
            } else {
                $('#account-forgotPassword-form-email-field').removeClass('error');
                $('#account-forgotPassword-form-email p.error').hide();
                hasErrors = false;
            }
            if(hasErrors) {
                account._bell($('#account-forgotPassword'));
            } else {
                $.ajax({
                    url: account.services,
                    cache: false,
                    data: account._prepareData($('#account-forgotPassword-form'), 'forgotPassword'),
                    dataType: 'json',
                    type: 'POST',
                    success: function(data){
                        if(data.success == false){
                            if(data.errors.noAccount){
                                // forgotPassword incorect
                                $('#account-forgotPassword-form-email-field').addClass('error');
                                $('#account-forgotPassword-form-email p.error').html('Adresa de email nu este înregistrată.<br/><a href="#" onclick="account.register()">vreau să mă înregistrez</a>').show();
                                $('#account-forgotPassword-form-loding').hide();
                                $('#account-forgotPassword-form-actions').show();
                            }
                            account._bell($('#account-forgotPassword'));
                        } else {
                            $('#account-forgotPassword-form').delay(300).hide("drop", account.go.up, 500, function (){
                                $('#account-forgotPassword-success').html('<p>Urmăriti instruncţiunile trimise pe adresa <strong>' + $('#account-forgotPassword-form-email-field').val() + '<strong> pentru a vă reseta parola.</p>');
                                $('#account-forgotPassword-success').show("slide", account.go.down, 500, function () {
                                    $('#account-forgotPassword').delay(3000).hide("drop",  account.go.up, 300, function (){
                                        $('#account-root').html("");
                                        account.courtain(false);
                                    });
                                })
                            });
                        }
                    }
                });
            }
            return false;
        });
        account._center($('#account-forgotPassword')).show("slide", account.go.down, 300);
        account.courtain(true);
        return false;
    },
    logout: function () {
        if(! account.isLoggedIn()) return false;
        
        $.ajax({
            url: account.services,
            cache: false,
            data: account._prepareData($({}), 'logout'),
            dataType: 'json',
            type: 'POST',
            success: function(){
                window.location.reload();
            }
        });
        $.cookie('__user', null);
        account.user = null;
        return false;
    },
    login: function (callback){
//      if(account.isLoggedIn()) return false;

        if(typeof(callback) == 'function') {
            account.afterLogin.push(callback);
        }
        var html = '';
        html += '<div id="account-login" class="window" style="display:none">';
        html += '	<div class="title">';
        html += '		<h2>Autentificare</h2>';
        html += '		<a class="close">închide</a>';
        html += '	</div>';
        html += '	<form id="account-login-form">';
        html += '		<div class="fbConnect">';
        html += '			<a id="accFbConnect" href="#" class="fbConnect">Facebook</a>';
        html += '			<p>Ştiai că poţi folosi contul de <strong>Facebook</strong> pentru a te autentifica?</p>';
        html += '		</div>';
        html += '		<div class="element" id="account-login-form-username">';
        html += '			<label for="account-login-form-username-field">Utilizator <small>(email)</small></label>';
        html += '			<div class="inputs"><input type="text" id="account-login-form-username-field" name="username" value="" /><p class="error"></p></div>';
        html += '           <input type="hidden" id="account-login-form-code-field" name="code" value="" >';
        html += '		</div>';
        html += '		<div class="element" id="account-login-form-password">';
        html += '			<label for="account-login-form-password-field">Parol\u0103</label>';
        html += '			<div class="inputs"><input type="password" id="account-login-form-password-field" name="password" value="" /><p class="error"></p></div>';
        html +=			'</div>';
        html += '		<div class="element loading" id="account-login-form-loading">';
        html += '			<p class="loading"> aşteptaţi ..</p>';
        html += '		</div>';
        html += '		<div class="actions" id="account-login-form-actions">';
//        html += '			<a href="#" class="button action" onclick="account.register()"><span>creeaza cont nou</span></a>';
        html += '			<input type="submit" class="action" id="account-login-form-actions-login" name="login" value="Autentificare" />';
        html += '			<a href="#" class="button action" onclick="account.register();"><span>Cont nou</span></a>';
        html += '		</div>';
        html +=		'</form>';
        html += '	<div id="account-login-success" style="display:none">';
        html += '	</div>';
        html += '</div>';

        $('#account-root').html(html);

        var facebookLogin = function (){};
        if(facebookApp.isLoggedIn()) {
            $('#account-root div.fbConnect').hide();
            facebookLogin = function (){
                account._facebookLogin();
            }
        } else {
            $('#account-root div.fbConnect').show();
        }

        $('#account-root a#accFbConnect').click(function(){
            if(facebookApp.isLoggedIn()){
                account._facebookLogin();
            } else {
                facebookApp.events.set(facebookApp.events.onLoginOk, function (){
                    account._facebookLogin();
                });
                facebookApp.login();
            }
            return false;
        });

        $('#account-root a.close, #account-root a.closeSmall').click(function(){
            account._close($('#account-login'));
            return false;
        });
        
        $('#account-login-form').submit(function(){
            var data = {};
            var hasErrors = false;
            data.username = $('#account-login-form-username-field').val().toString();
            data.password = $('#account-login-form-password-field').val().toString();

            $.each(account.loginFields, function(i, val) {
                if ($('#account-login-form-'+i+'-field').val().toString().length < val.length){
                    if (i == 'password' && $('#account-login-form-code-field').val().toString().length == 32) {} else {
                        $('#account-login-form-'+i+'-field').addClass('error');
                        $('#account-login-form-'+i+' p.error').html(val.error).show();
                        hasErrors = true;
                    }
                } else {
                    $('#account-login-form-'+i+' p.error').hide();
                    $('#account-login-form-'+i+'-field').removeClass('error');
                }
                
            });

            if(!hasErrors) {
                $('#account-login-form-actions').hide();
                $('#account-login-form-loding').show();
                $.ajax({
                    url: account.services,
                    cache: false,
                    data: account._prepareData($('#account-login-form'), 'login'),
                    dataType: 'json',
                    type: 'POST',
                    success: function(data){
                        if(data.success == false){
                            if(data.errors.noAccount){
                                // login incorect
                                $('#account-login-form-password-field').addClass('error');
                                $('#account-login-form-password-field').val('');
                                $('#account-login-form-password p.error').html('Autentificare eşuată.<br/><a href="#" onclick="account.forgotPassword()">am uitat parola</a>').show();
                                $('#account-login-form-loding').hide();
                                $('#account-login-form-actions').show();
                            }
                            account._bell($('#account-login'));
                        } else {
                            $('#account-login-form').hide("slide", account.go.up, 500, function (){
                                if(account._doLogin(data.user,'login')) {
                                    $('#account-login').find('a.close').hide();
                                    $('<p />').addClass('success').html('Bine ai venit, <strong>'+ account.user.name + '</strong>!').appendTo($('#account-login-success'));
                                    $('<p />').addClass('success').html('Asteapta câteva secunde pentru a fi logat în site.').appendTo($('#account-login-success'));
                                    $('<p />').addClass('success').html('Fereastra se închide automat dupa logare.').appendTo($('#account-login-success'));
                                    //$('#account-login-success').html('<p class="success">Bine ai venit, <strong>'+ account.user.name + '</strong>!</p>');
                                    $('#account-login-success').show("slide", account.go.up, 500, function () {
                                        $('#account-login').delay(3000).hide("drop", account.go.up, 1000, function (){
                                            $('#account-root').html("");
                                            account.courtain(false);
                                            account._afterLogin();
                                        });
                                    });
                                }
                            });
                        }
                    }
                });
            } else {
                account._bell($('#account-login'));
            }
            return false;
        });
        account._center($('#account-login')).show("slide", account.go.down, 300, facebookLogin);
        account.courtain(true);
        if(account.params['email'] != undefined) {
            $('#account-login-form-username-field').val(account.params['email']);
            $('#account-login-form-code-field').val(account.params['code']);
            $('#account-login-form').submit();
        }
        
        return false;
    },
    sendConfirmation: function (){
        $('#account-root a.account-sendConfirmation').parent().html('verificaţi <strong>' + account.user.email +'</strong> pentru codul de activare').trigger('blur');
        $('#account-confirm-form-code-field').trigger('focus');
        $.ajax({
            url: account.services,
            cache: false,
            data: account._prepareData($('#account-confirm-form'), 'resendActivation', {
                            email: account.user.email
                        }),
            dataType: 'json',
            type: 'POST'
        });

        return false;
    },
    _doLogin: function (user, action ){
        
        account.user = user;
        //console.dir(account.user);
        
        var html = '';
        var resendEmail = '<span><a href="#" class="account-sendConfirmation" onclick="account.sendConfirmation();">retrimite email de activare</a></span>';

        if(!account.user.emailok){
            html += '';
            html += '<p class="info">Trebuie să-ţi activezi contul, găsesti codul de activare în email-ul primit de la noi.</p>';
            html += '<br/>';
            
            html += '<form id="account-confirm-form">';
            html += '	<div class="element" id="account-confirm-form-code">';
            html += '		<label for="account-confirm-form-code-field">Cod activare</label>';
            html += '		<div class="inputs"><input type="text" id="account-confirm-form-code-field" name="code" class="error" value="';
            if(account.params['code'] != undefined) {
                html += account.params['code'];
            }
            html += '" /><p class="error">contul tău nu este activ<br/>' + resendEmail +'</p></div>';
            html += '	</div>';
            html += '		<div class="element loading" id="account-confirm-form-loding">';
            html += '			<p class="loading"> aşteptaţi ..</p>';
            html += '		</div>';
            html += '	<div class="actions" id="account-confirm-form-actions">';
            html += '		<input type="submit" class="action" id="account-confirm-form-actions-confirm" name="confirm" value="Activează cont" />';
            html += '		<a href="#" class="closeSmall button action" id="account-confirm-form-actions-cancel"><span>închide</span></a>';
            html += '	</div>';
            html += '</form>';


            //html += '<p class="error"><span><a href="#" class="account-sendConfirmation" onclick="account.sendConfirmation();">retrimite email de activare</a></span></p>';
            

            $('#account-'+action+'-success').append(html);
            $('#account-'+action).css('height','');
            $('#account-'+action+'-success p.loading').hide();
            
            $('#account-root a.close, #account-root a.closeSmall').click(function(){
	            account._close($('#account-confirm-form'));
	            return false;
	        });
            
            $('#account-confirm-form').submit(function(){
                var hasErrors = false;
                if ($('#account-confirm-form-code-field').val().toString().length != 32){
                    $('#account-confirm-form-code p.error').html('codul nu este valid<br/>' + resendEmail).show();
                    $('#account-confirm-form-code-field').addClass('error');
                    hasErrors = true;
                }
                if(!hasErrors) {
                    $('#account-confirm-form-loding').show();
                    $('#account-confirm-form-code p.error').html(resendEmail).show();
                    $('#account-confirm-form-code-field').removeClass('error');
                    $('#account-confirm-form-actions').hide();
                    $.ajax({
                        url: account.services,
                        cache: false,
                        data: account._prepareData($('#account-confirm-form'), 'confirmAccount', {
                            email: account.user.email
                        }),
                        dataType: 'json',
                        type: 'POST',
                        success: function(data){
                            if(data.success == false){
                                $('#account-confirm-form-code-field').addClass('error');
                                $('#account-confirm-form-code p.error').html('codul nu este valid<br/>' + resendEmail).show();
                                $('#account-confirm-form-loding').hide();
                                $('#account-confirm-form-actions').show();
                                account._bell($('#account-login'));
                            } else {
                                account.user = data.user;
                                $('#account-confirm-form').html('<p><strong>Contul tău a fost activat</strong>.</p>');
                                $('#account-root a.close, #account-root a.closeSmall').show();
                                $('#account-'+action).delay(3000).hide("drop", account.go.up, 300, function (){
                                    $('#account-root').html("");
                                    account.courtain(false);
                                    account._afterLogin();
                                });
                            }
                        }
                    });
                } else {
                    account._bell($('#account-'+action));
                }
                return false;
            });
            
            $('a.account-sendConfirmation').show();
            $('#account-'+action+'-success').show("slide", account.go.up, 500);
            return false;

        } else {
            return true;
        }
    },
    _facebookLogin: function (){
        $('#account-login-form').hide("drop", account.go.up, 500);
        $('#account-login').effect("size", account.height.messageBig, 500, function () {
            account._fbBox($('#account-root #account-login-success'));
            $('#account-login-success').append('<p class="loading"><strong> via facebook..</p>');

            $('#account-login-success').show("slide", account.go.up, 500, function () {
                $.ajax({
                    url: account.services,
                    cache: false,
                    data: account._prepareData($('#account-login-form'), 'login'),
                    dataType: 'json',
                    type: 'POST',
                    success: function(data){
                        if(data.success == false){
                            if(data.errors.invalidFbSession) {
                                // do facebook logout ..
                                facebookApp.logout();
                                return account.login();
                            }
			    
                            // e valid .. trebuie sa-i facem cont ..
                            $('#account-login-success').delay(300).hide("drop", account.go.up, 500, function (){
                                $('#account-login-success').html('<p>Pentru a te autentifica ai nevoie de un cont. Te rugam sa te inregistrezi.</p>');
                                $('#account-login-success').show("slide", account.go.down, 500, function () {
                                    $('#account-login').delay(1000).hide("drop", account.go.up, 300, function (){
                                        $('#account-root').html("");
                                        account.courtain(false);
                                        account.register();
                                    });
                                })
                            });
                            account._bell($('#account-login'));
                        } else {
                            //							$('#account-login-form').hide("slide", account.go.up, 500, function (){
                            if(account._doLogin(data.user,'login')) {

                                //									$('#account-login-success').show("slide", account.go.up, 500, function () {
                                $('#account-login').delay(3000).hide("drop", account.go.up, 1000, function (){
                                    $('#account-root').html("");
                                    account.courtain(false);
                                    account._afterLogin();
                                });
                            //									});
                            }
                        //							});
                        }
                        return false;
                    }
                });
            })
        });
    },
    register: function(callback) {
        if(account.isLoggedIn()) return false;

        if(typeof(callback) == 'function') {
            account.afterLogin.push(callback);
        }
        var html = '';
        html += '<div id="account-register" class="window" style="display:none">';
        html += '	<div class="title">';
        html += '		<h2>Creare cont nou</h2>';
        html += '		<a class="close">închide</a>';
        html += '	</div>';
        html += '	<form id="account-register-form">';
        html += '		<div class="fbConnect">';
        html += '			<a id="accFbConnect" href="#" class="fbConnect">Facebook</a>';
        html += '			<p>Ştiai că poţi folosi contul de <strong>Facebook</strong> pentru a te înregistra mai uşor?</p>';
        html += '		</div>';
        html += '		<div class="element" id="account-register-form-name">';
        html += '			<label for="account-register-form-name-field">Nume</label>';
        html += '			<div class="inputs"><input type="text" id="account-register-form-name-field" name="name" value="" /><p class="error"></p></div>';
        html += '		</div>';
        html += '		<div class="element" id="account-register-form-email">';
        html += '			<label for="account-register-form-email-field">Email</label>';
        html += '			<div class="inputs"><input type="text" id="account-register-form-email-field" name="email" value="" /><p class="error"></p></div>';
        html += '		</div>';
        html += '		<div class="element" id="account-register-form-username">';
        html += '			<label for="account-register-form-username-field">Utilizator</label>';
        html += '			<div class="inputs"><input type="text" id="account-register-form-username-field" name="username" value="" /><p class="error"></p></div>';
        html += '		</div>';
        html += '		<div class="element" id="account-register-form-password">';
        html += '			<label for="account-register-form-password-field">Parol\u0103</label>';
        html += '			<div class="inputs"><input type="password" id="account-register-form-password-field" name="password" value="" /><p class="error"></p></div>';
        html += '		</div>';
        html += '		<div class="element" id="account-register-form-confirmPassword">';
        html += '			<label for="account-register-form-confirmPassword-field">Confirmare parol\u0103</label>';
        html += '			<div class="inputs"><input type="password" id="account-register-form-confirmPassword-field" name="confirmPassword" value="" /><p class="error"></p></div>';
        html += '		</div>';
        html += '		<div class="element loading" id="account-register-form-loading">';
        html += '			<p class="loading"> aşteptaţi ..</p>';
        html += '		</div>';
        html += '		<div class="actions" id="account-register-form-actions">';
        html += '			<input type="submit" class="action" id="account-register-form-actions-register" name="register" value="Înregistrare" />';
        html += '			<a href="#" class="closeSmall button action" id="account-register-form-actions-cancel"><span>închide</span></a>';
        html += '		</div>';
        html += '	</form>';
        html +=	'	<div id="account-register-success" style="display:none">';
        html += '		<p><strong>Contul tău a fost creat.</strong></p>';
        html += '		<p>Mulţumim pentru înregistrare.</p>';
        html += '	</div>';
        html += '</div>';
        $('#account-root').html(html);

        if(facebookApp.isLoggedIn()) {
            $('#account-root div.fbConnect').hide();
            account._prefillData(facebookApp._user);
        } else {
            $('#account-root div.fbConnect').show();
        }

        $('#account-root a#accFbConnect').click(function(){
            if(facebookApp.isLoggedIn()) {
                account._prefillData(facebookApp._user);
            } else {
                facebookApp.events.set(facebookApp.events.onLoginOk, function (){
                    account._prefillData(facebookApp._user);
                });
                facebookApp.login();
            }
        });

        $('#account-root a.close, #account-root a.closeSmall').click(function(){
            account._close($('#account-register'));
            return false;
        });

        $('#account-register-form').submit(function(){
            var data = {};
            var hasErrors = false;
            data.nume = $('#account-register-form-name-field').val().toString();
            data.email = $('#account-register-form-email-field').val().toString();
            data.username = $('#account-register-form-username-field').val().toString();
            data.password = $('#account-register-form-password-field').val().toString();
            data.confirmPassword = $('#account-register-form-confirmPassword-field').val().toString();

            $.each(account.registerFields, function(i, val) {
                if ($('#account-register-form-'+i+'-field').val().toString().length < val.length){
                    $('#account-register-form-'+i+'-field').addClass('error');
                    $('#account-register-form-'+i+' p.error').html(val.error).show();
                    hasErrors = true;
                } else if (i == 'email' && !(account._validateEmail($('#account-register-form-'+i+'-field').val().toString()))){
                    $('#account-register-form-'+i+'-field').addClass('error');
                    $('#account-register-form-'+i+' p.error').html(val.error).show();
                    hasErrors = true;               
                } else {
                    $('#account-register-form-'+i+' p.error').hide();
                    $('#account-register-form-'+i+'-field').removeClass('error');
                }
            });

            if(!hasErrors  && $('#account-register-form-password-field').val() != $('#account-register-form-confirmPassword-field').val()) {
                $('#account-register-form-confirmPassword-field').addClass('error');
                $('#account-register-form-confirmPassword p.error').html('cele două parole nu corespund').show();
                hasErrors = true;
            }

            if(!hasErrors){
                $('#account-register-form-actions').hide();
                $('#account-register-form-loading').show();
                $.ajax({
                    url: account.services,
                    cache: false,
                    data: account._prepareData($('#account-register-form'), 'register'),
                    dataType: 'json',
                    type: 'POST',
                    success: function(data){                       
                        if(data.success == false){
                            $.each(data.errors, function(i, val) {
                                $('#account-register-form-'+i+'-field').addClass('error');
                                $('#account-register-form-'+i+' p.error').html(account.registerFields[i][(val == 'exists')? val : 'error']).show();
                            });
                            $('#account-register-form-actions').show();
                            $('#account-register-form-loading').hide();
                            account._bell($('#account-register'));
                        } else {
                            account.user = data.user;

                            $('#account-register-form').hide("slide", account.go.up, 500, function (){
                                if(account._doLogin(data.user,'register')) {
                                    $('#account-register-success').show("slide", account.go.up, 500, function () {
                                        $('#account-register').delay(3000).hide("drop", account.go.up, 1000, function (){
                                            $('#account-root').html("");
                                            account.courtain(false);
                                            account._afterLogin();
                                        });
                                    });
                                }
                            });
                        }
                    }
                });
            } else {
                account._bell($('#account-register'));
            }
            return false;
        });
        account._center($('#account-register')).show("slide", account.go.down, 300);
        account.courtain(true);

        return false;
    },
    _validateEmail: function (email) {
        return /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email);
    },
    _prepareData: function ($obj, action, obj){
        var p = $obj.serializeArray();
        p.push({
            name: 'action',
            value: action
        });
        if(facebookApp._session) {
            p.push({
                name: 'hash',
                value: account._hash(facebookApp._session)
            });
        }
        if(typeof obj == "object") {
            $.each(obj, function(i, val) {
                p.push({
                    name: i,
                    value: val
                });
            });
        }
        return $.param(p);
    }



}


$(document).ready(function(){
    account.setEnv();
});

