var formEvt = function() {

    if( $(this).hasClass( 'noajax' ) ) return;   

    $(this).ajaxForm( {
        dataType: 'json',
        success: function( data, rs, form ) {
            $(form).find( 'div.error-message' ).remove();

            if( data.errors && data.errors.length ) {

                var names = new Array( 'name', 'prio', 'content' );

                var errors = {
                    name: { label: 'Nume: ', mes: new Array() },
                    prio: { label: 'Prioritate: ', mes: new Array() },
                    content: { label: 'Continut: ', mes: new Array() }
                };

                for( var j = 0; j < data.errors.length; j++ ) {

                    var field = data.errors[j]['name'];
                    errors[field]['mes'][ errors[field]['mes'].length ] = data.errors[j]['message'];
                }

                var message = "";
                for( var i = 0; i < names.length; i++ ) {
                    if( errors[names[i]]['mes'].length ) {
                        message += errors[names[i]]['label'] + errors[names[i]]['mes'].join(' ') + '<br/>';
                    }
                }

                $(form).append( $('<div class="error-message"><p>'+message+'</p></div>') );

                return;
            }

            if( $(form).attr('appnor') )
                Appnor[$(form).attr('appnor')]( data, form );

            if( $(form).attr('appnor') != 'dnsResolve' )
                form.resetForm();

            $(form).find( 'div.error-message' ).remove();
        }
    } );
}

var editEvt = function() {
    $(this).click( function() {
        var form = $(this).parents('table:first').siblings('form').clone();

        form
            .attr('action', $(this).attr('action') )
            .attr('appnor', 'editRecord' )
            .find('input[type=submit]').val( "Salveaza" );

        $(form).each( formEvt );

        var fields = form.find('input[type=text], select[name=type]');
        for(var i=0; i < fields.length; i++ ) {
            $(fields[i]).val( $.trim( $(this).parents('tr:first').find('span.record-'+$(fields[i]).attr('name')).text() ) );
        }

        $('<tr class="edit-form"></tr>')
            .append( $('<td colspan="'+$(this).parents('tr:first').find('td').length+'"></td>')
                .append( $( form ) )
            )
            .insertAfter( $(this).parents('tr:first') );
        
        $(this).parents('tr:first').hide();
    } );
}

var pollFormEvt = function() {
    $(this).ajaxForm( {
        dataType: 'json',
        success: function( data, rs, form ) {

            if( data.errors && data.errors.length ) {
                $('#chestionar').replaceWith( $(data.html) );
                return false;
            }

            $('#chestionar').replaceWith( $(data.html) );

            $('#chestionar form').each( pollFormEvt );

        }
    } );
};

var Appnor = {

    addAlias: function( data ) {

        $('#domain-alias-table table')
            .append( $( data.html ) )
            .find('tr:last form').each( formEvt );

        $('#domain-verify')
            .append( $( data.verify_html ) )
            .find('form').each( formEvt );
    
    },

    deleteAlias: function( data ) {

        if( data.deleteAlias ) {
            $('#domain-alias-table tr#alias-'+data.deleteAlias).remove();
            
            $('#domain-verify-'+data.deleteAlias).remove();
        }

    },

    addOtherDns: function( data ) {
    
        $('#domain-other-dns table')
            .append( $( data.html ) );

        $('#domain-other-dns table')
            .find('tr:last button.edit-handle').each( editEvt );
        
        $('#domain-other-dns table')
            .find('tr:last form').each( formEvt );    
    },

    addSimpleOtherDns: function( data ) {
    
        $('#simple-domain-other-dns table')
            .append( $( data.html ) );

        $('#simple-domain-other-dns table')
            .find('tr:last button.edit-handle').each( editEvt );
        
        $('#simple-domain-other-dns table')
            .find('tr:last form').each( formEvt );    
    },

    addFriendlyUrl: function( data ) {

        $('#domain-friendly-url table')
            .append( $( data.html ) );        

        $('#domain-friendly-url table')
            .find('tr:last button.edit-handle').each( editEvt );
        
        $('#domain-friendly-url table tr:last form').each( formEvt );    
    },

    addSimpleFriendlyUrl: function( data ) {

        $('#simple-domain-friendly-url table')
            .append( $( data.html ) );        

        $('#simple-domain-friendly-url table tr:last button.edit-handle').each( editEvt );
        
        $('#simple-domain-friendly-url table tr:last form').each( formEvt );    
    },

    addNS: function( data ) {

        $('#domain-ns table')
            .append( $( data.html ) );        

        $('#domain-ns table')
            .find('tr:last button.edit-handle').each( editEvt );
        
        $('#domain-ns table')
            .find('tr:last form').each( formEvt );    
    },

    addMX: function( data ) {

        $('#domain-mx table')
            .append( $( data.html ) );        

        $('#domain-mx table')
            .find('tr:last button.edit-handle').each( editEvt );
        
        $('#domain-mx table')
            .find('tr:last form').each( formEvt );    
    },

    addDomainVerify: function( data, form ) {
       
        $(form).parents('[id^=domain-verify]:first').find('table').append( $(data.html) ).find('tr:last form').each( formEvt ); 

    },

    updateGoogleApps: function( data ) {
    
        $('.domain-google-apps').each( function() {
            $(this).children().remove();
            $(this).append( $( data.html ) );
        } );

        $('.domain-google-apps form').each( formEvt );
    
    },

    dnsResolve: function( data ) {

        $('#dnsResolveResponse p').children().remove();
        $('#dnsResolveResponse p').append( $( data.text ) );

    },

    editRecord: function( data ) {

        if( data.recordId ) {
            var trform = $('tr#record-'+data.recordId).siblings('tr.edit-form:first');
            $('tr#record-'+data.recordId).remove();
            $(data.html).insertBefore( trform );
            trform.remove();

            $('tr#record-'+data.recordId+' button.edit-handle').each( editEvt );
            $('tr#record-'+data.recordId+' form').each( formEvt );
        }
        

    },

    deleteRecord: function( data ) {
        
        if( data.deleteRecord ) {
            $('tr#record-'+data.deleteRecord).remove();
        }
    }
 
};



$(document).ready( function() {

    $('span.e-m-ail').each( function() {

        var email = $.trim( $(this).text() );
        email = email.replace( ' la ', '@' );
        email = email.replace( ' punct ', '.' );

        $(this).text("");
        $(this).append( $('<a href="mailto:'+email+'">'+email+'</a>') );

    } );

    $('#domain form, form#dns-resolve').each( formEvt );
    $('#domain button.edit-handle').each( editEvt );

    $('#domain #domain-advanced').hide();

    $('#domain-edit-switch input').click( function() {
        var value = $(this).val();
        if( value == 'simple' ) {
            $('#domain #domain-simple').show();
            $('#domain #domain-advanced').hide();
        }
        else {
            $('#domain #domain-advanced').show();
            $('#domain #domain-simple').hide();
        }
    } );

    $('#domain-edit-switch input:checked').click();

    $('#domain table tr').hover(
        function() { $(this).addClass('active'); },
        function() { $(this).removeClass('active'); }
    );

    $('#chestionar form').each( pollFormEvt );


    $('.tooltip-span').tooltip( {
        track: false,
        showURL: false,
        delay: 0,
        bodyHandler: function() {
            return $( $(this).find('span').clone() );
        }
    } );
    
    $('#bugreport-dialog').dialog({ autoOpen: false });

    $('#bugreport').click( function () {
        $('#bugreport-dialog').dialog('open');
    });

    $('#bugreport-dialog form').ajaxForm( {
        beforeSubmit: function (data,form, options) {
            $("#bugreport-dialog form input:submit").hide();
        },
        success: function( data, rs, form ) {
            $('#bugreport-dialog').dialog('close');
            $("#bugreport-dialog form input:submit").show();
            $("#bugreport-dialog form textarea").val('');
        }
    });

    $.get('/feed/twitter', function( response ) {
        if( response.success ) {
            var content = response.post.description;

            $('#twitter-load').html( content );
            $('#twitter-load a').attr('target', '_blank');
        }
    } );
} );
