jQuery(document).ready(function() {

var frozFormValidate = function()
    {
        
                            
        var changeArray = new Array('phone_txt', 
                                    'dutyphone_txt', 
                                    'sponsorphone_txt', 
                                    'arrival_txt',
                                    'checkin_txt',
                                    'checkout_txt');
        var toArray = new Array('phone_txt[areaCode]', 
                                'dutyphone_txt[areaCode]', 
                                'sponsorphone_txt[areaCode]', 
                                'arrival_txt-froz-dummy',
                                'checkin_txt-froz-dummy',
                                'checkout_txt-froz-dummy');
        
        /**
         * @var string
         * @access private
         */
        var _frozFormElement               = '#froz-submit-form > form';

        /**
         * @var string
         * @access private
         */
        var _frozCompleteTarget   = '.subtitle';

        /**
         * @var DOM Element
         * @access private
         */
        var _loader                  = null;

        var _submitVal               = jQuery(_frozFormElement + ' > fieldset > ol > li > #submit_btn').val();
        
        /**
         * @access private
         * @return void
         */
        var _setupLoader = function()
        {
            _loader = jQuery('<div id="ajax-loader"><img src="' + GLOBAL_BASE_URL + '/img/preloaders/1.gif" alt="loading..." /></div>')
                         .css({position:"relative", top:"1em"})
                         .appendTo(_frozFormElement).hide();
            jQuery(_frozFormElement).ajaxStart(function() {
                _onSubmit();
            }).ajaxStop(function() {
                _onComplete();
            }).ajaxError(function(a, b, e) {
                throw e;
            });
        };
        
        /**
         * @access private
         * @return void
         */
        var _onSubmit = function()
        {
//            _loader.show();
              jQuery(_frozFormElement + ' > fieldset > ol > li > #submit_btn').val('Sending...');
        };

        /**
         * @access private
         * @return void
         */
        var _onComplete = function()
        {
//            _loader.hide();
              jQuery(_frozFormElement + ' > fieldset > ol > li > #submit_btn').val(_submitVal);
        };

        return {
            
            /**
             * @access public
             * @return void
             */
            init:function() {

                _setupLoader();
                
                jQuery(_frozCompleteTarget).css({display:'block'});
                
                jQuery(_frozFormElement).ajaxForm({
                    dataType:  'json',
                    success: function(data) {
                        
                        if(data.success === true) {
                            jQuery(_frozFormElement).hide('slow');
                            jQuery(_frozFormElement).parent().append(data.message);
                            jQuery.scrollTo(_frozCompleteTarget, 800);
                            return false;
                        }
                    
                        var content          = data.content;
                        var content_c        = content.length;
                        var errorFormatStart = '<ul class="errors">';
                        var errorFormatEnd   = '</ul>';

                        jQuery(_frozFormElement + ' ul.errors').remove();

                        if(content_c > 0) {
                            jQuery('.captcha-img').replaceWith(data.captchaImg);
                            jQuery('#captcha_txt').val('');
                        } else {
                            return true;
                        }
                        
                        for(var item in content) {
                            
                            // console.log(content);

                            var errors            = content[item].value;
                            var errors_c          = errors.length;
                            var errorFormatted    = '';

                            errorFormatted        += errorFormatStart;

                            for(var e in errors) {
                                errorFormatted += '<li>' + errors[e] + '</li>';
                            }

                            errorFormatted        += errorFormatEnd;
                            
                            for ( index in changeArray ){
                                if ( content[item].element === changeArray[index] ){
                                    content[item].element = toArray[index];
                                }
                            }
                            
                            var inputs   = jQuery(':input[name=' + content[item].element + ']');
                            var inputs_c = inputs.length;
                            
                            if(inputs_c == 1) {
                                jQuery(inputs).parent().append(errorFormatted);
                            } else if(inputs_c > 1) {
                                // Item can be radio or checkbox
                                inputs.parent().parent().append(errorFormatted);
                            } else {
                            
                            }
                                
                            var firstError = jQuery('ul.errors:first').parent();
                            jQuery.scrollTo(firstError, 0);
                            jQuery(':input', firstError).trigger('focus');
            
                        }

                    }
                });
            
                
            }
        
        };


    }();

    frozFormValidate.init();
});

