/* Version 1.2 - 22-06-2011 */

(function($){


    $.fn.formTools = function(options){
         
        $('body').click(function(){
            $('.myErrorBox').remove();
        });
        
        var defaults = {
            boxTop: -50,
            boxLeft: 150,
            background:'#ff0000',
            border: 2,
            borderColour: '#ffffff',
            borderRadius: 5, /** only for chrome and firefox **/
            position: 'absolute',
            dropShadow: true,
            padding:3,
            successMsg: 'The action was successful',
            successRedirect: '',
            debug: false,
            onComplete: false
        }
                
        var options = $.extend(defaults, options);
        
        var errorBoxCss = {
            'background': options.background,
            'position': 'absolute',
            '-moz-border-radius':options.borderRadius+"px",
            'border-radius': options.borderRadius+"px",
            'border':options.border+"px solid "+options.borderColour,
            'color':'#ffffff',
            'font-weight':'bold',
            'font-size':'12px',
            'width': '250px',
            'z-index': '40000',
            'display':'none',
            'padding':options.padding,
            'margin-top':options.boxTop+'px',
            'margin-left':options.boxLeft+'px'
        }
        
        var messageBoxCss = {
            'width': '400px',
            'height': '100px',
            'position': 'fixed',
            'background':'#5eaa56',
            'top': '50%',
            'left':'50%',
            'margin-top': '-50px',
            'margin-left':'-200px',
            '-moz-box-shadow': '0 0 5px #000',
            '-webkit-box-shadow': '0 0 5px #000',
            'box-shadow': '0 0 5px #000',
            'border':'1px solid white',
            'z-index':'5005'
        }
           
        var messageBoxContentCss ={
            'text-align': 'center',
            'height': '80px',
            'margin-top': '10px',
            'color': 'white',
            'font-size':'20px',
            'text-shadow': '#000 0px 0px 2px'
        }
        
        var formToolsMessageBox = $('<div id="formToolsMessageBox"></div>');
        var formToolsMessageBoxContent = $('<div id="formToolsMessageBoxContent"></div>');
        
        formToolsMessageBox.css(messageBoxCss);
        formToolsMessageBoxContent.css(messageBoxContentCss);
                
        return this.each(function(){
            var obj = $(this);

            var data = obj.serialize();
            var url = obj.attr('action');
            var method = obj.attr('method');
            
            $.ajax({
                type: method,
                url: url,
                data: data,
                success:function(msg){
                    
                    if(isNaN(msg)){
                        var rtn = jQuery.parseJSON(msg);
                        var success = rtn.success;
                    }
                    else{
                        var success = msg;
                    }
                    
                    if(options.debug == true){
                        console.log(msg);
                        return false;
                    }
                    if (success==1) {
                        //form all good
                        if (typeof options.onComplete == "function"){
                            options.onComplete(rtn);
                        }
                            
                        if(options.successMsg != false){
                            $(formToolsMessageBox).append($(formToolsMessageBoxContent));
                            $(formToolsMessageBoxContent).append(options.successMsg);
                            $('body').append(formToolsMessageBox);
                            
                            if(options.successRedirect != false){
                                var continueLink = "<a href='"+options.successRedirect+"' style='display:block; margin-top:20px; color:white'>Continue</a>";
                            }
                            else{
                                var continueLink = "<a href='#' style='display:block; margin-top:20px; color:white' id='formToolsMessageBoxContentClose'>Close</a>";
                            }
                            
                            $(formToolsMessageBoxContent).append(continueLink);
                            
                            $(formToolsMessageBox).fadeIn('slow');

                            
                            $('#formToolsMessageBoxContentClose').click(function(){
                                $(formToolsMessageBox).fadeOut('slow');
                                $(formToolsMessageBox).remove();
                                return false;
                            });
                        }
                        else{
                            if(options.successRedirect != false){
                                document.location=options.successRedirect;
                            }
                        }
                        
                    }
                    else{
                         
                        
                        var space;
                        
                        $.each(rtn, function(key, value) { 
                            space = $('input[name='+key+']').parent();
                            var errorBox = $('<div class="myErrorBox"></div>');
                            space.append(errorBox);
                            $(errorBox).html(value);
                        });
                        
                        $.each(rtn, function(key, value) { 
                            space = $('textarea[name='+key+']').parent();
                            var errorBox = $('<div class="myErrorBox"></div>');
                            space.append(errorBox);
                            $(errorBox).html(value);
                        });
                        $.each(rtn, function(key, value) { 
                            space = $('select[name='+key+']').parent();
                            var errorBox = $('<div class="myErrorBox"></div>');
                            space.append(errorBox);
                            $(errorBox).html(value);
                        });
                        
                        $('.myErrorBox').css(errorBoxCss);
                        
                        if(options.dropShadow == true){
                            var shadowCss = {'-moz-box-shadow': '0 0 10px #000',
                            '-webkit-box-shadow': '0 0 10px #000',
                            'box-shadow': '0 0 10px #000'}
                            $('.myErrorBox').css(shadowCss);
                        }
        
                        $('.myErrorBox').fadeIn();
                    }
                }
            });
            
        });
    }


})(jQuery);
