/* Image preloader */
(function($) {
    var cache = [];
    // Arguments are image paths relative to the current page.
    $.preLoadImages = function() {
      var args_len = arguments.length;
      for (var i = args_len; i--;) {
        var cacheImage = document.createElement('img');
        cacheImage.src = arguments[i];
        cache.push(cacheImage);
      }
    }
  })(jQuery)

cms.modules.bags =
{
    defaultToevoeging : '',
        
    getFormQueryData : function(obj, moduleID, url, defaultToevoeging)
    {
        this.defaultToevoeging = defaultToevoeging;

        if (document.getElementById('rovaArea').style.display != 'none')
        {
            document.getElementById('rovaArea').style.display = 'none';
        }

        if (!document.getElementById('cms_cm'+moduleID+'_postcode').value.match(/\s/)
        	&& document.getElementById('cms_cm'+moduleID+'_postcode').value.length == 6)
        {
            document.getElementById('cms_cm'+moduleID+'_postcode').value =
                document.getElementById('cms_cm'+moduleID+'_postcode').value.substring(0, 4) + ' ' +
                document.getElementById('cms_cm'+moduleID+'_postcode').value.substring(4, 6).toUpperCase();
        }

        // Controleer of het huisnummer en de postcode zijn ingevoerd
        if (document.getElementById('cms_cm'+moduleID+'_postcode').value.length > 0
            && document.getElementById('cms_cm'+moduleID+'_huisnummer').value.length > 0)
        {
            this.switchLoader(document.getElementById('cms_cm'+moduleID+'_straat'), true);
            this.switchLoader(document.getElementById('cms_cm'+moduleID+'_plaats'), true);

            // Voer de query uit
            var request = new HttpRequest();
            request.setCallback(this.handleRequestCallback, this, false);
            request.sendRequest(url + '?' +
                'cms[cm'+moduleID+'][naam]=' + document.getElementById('cms_cm'+moduleID+'_naam').value + '&' +
                'cms[cm'+moduleID+'][postcode]=' + document.getElementById('cms_cm'+moduleID+'_postcode').value + '&' +
                'cms[cm'+moduleID+'][huisnummer]=' + document.getElementById('cms_cm'+moduleID+'_huisnummer').value + '&' +
                'cms[cm'+moduleID+'][telefoonnummer]=' + document.getElementById('cms_cm'+moduleID+'_telefoonnummer').value + '&' +
                'cms[cm'+moduleID+'][email]=' + document.getElementById('cms_cm'+moduleID+'_email').value + '&' +
                'cms[cm'+moduleID+'][ajax]=1&', null,
            false);
        }
    },

    handleRequestCallback : function(result)
    {
        var result = eval('(' + result + ')');

        var selectElement = jQuery('#cms_cm' + result.moduleID + '_toevoeging');
        var option;
        var value;

        jQuery('option', selectElement).remove();

        if (result.status == 'ok')
        {
            jQuery('#text_unknownaddr').hide();

            document.getElementById('cms_cm'+result.moduleID+'_straat').value = result.response.straat;
            document.getElementById('cms_cm'+result.moduleID+'_plaats').value = result.response.plaats;

            jQuery.each(result.response.toevoeging.split(',').sort(), function()
            {
                if (this == '')
                {
                    value = '&lt;geen toevoeging&gt;';
                }
                else
                {
                    value = this;
                }

                option = selectElement.append('<option value="' + this + '">' + value + '</option>');
                if (this == cms.modules.bags.defaultToevoeging)
                {
                    jQuery('option[value="' + this + '"]', selectElement).attr('selected', 'selected');
                }
            });

        }
        else
        {
            document.getElementById('cms_cm'+result.moduleID+'_straat').value =
            document.getElementById('cms_cm'+result.moduleID+'_plaats').value = 'Onbekend';

            jQuery('.error').hide();
            jQuery('#text_unknownaddr').show();
        }

        // Schakel de loading animatie uit
        this.switchLoader(document.getElementById('cms_cm'+result.moduleID+'_straat'), false);
        this.switchLoader(document.getElementById('cms_cm'+result.moduleID+'_plaats'), false);
    },

    switchLoader : function(obj, state)
    {
        if (!state)
        {
            jQuery(obj).addClass('loading');
        }
        else (state)
        {
            jQuery(obj).removeClass('loading');
        }
    },
    
    initializeFormEvent : function(formId)
    {
        var form = jQuery('form#' + formId);
        
        // Voeg een alternatieve nepbutton toe
        var buttonImage = jQuery(document.createElement('img'));
        buttonImage.attr('src', '/client/rova/images/Button_Verwerk.gif')
            .css('width', 0)
            .css('height', 0)
            .css('margin-left', '120px')
            .css('margin-bottom', '3px');
        buttonImage.appendTo(jQuery('div.submitButton', form));
        
        // Voeg een loader toe achter de button
        var loaderImage = jQuery(document.createElement('img'));
        loaderImage.attr('src', '/client/rova/images/Loader.gif')
            .css('width', 0)
            .css('height', 0)
            .css('position', 'relative')
            .css('top', '-4px')
            .css('left', '6px');
        loaderImage.appendTo(jQuery('div.submitButton', form));
        
        form.bind('submit', {}, function() {
            // Koppel een submit handler aan het formulier die geen submit toelaat
            form.unbind('submit');
            
            // Koppel een lege onclick op de submit buttons
            jQuery('input[type = \'image\']', this).bind('click', function() { return false;} );
            
            // Maak de submit knoppen 'onzichtbaar'
            jQuery('input[type = \'image\']', this)
                .css('margin-left', '0')
                .css('width', '0')
                .css('height', '0');
            
            // Toon de tijelijke knoppen
            buttonImage.css('width', 'auto').css('height', 'auto');
            loaderImage.css('width', 'auto').css('height', 'auto');
            
            // Verzend het formulier via een timeout
            // Dit geeft IE6 de tijd om de afbeeldingen te laden
            return true;    
        });
    }
};

// Preload de submit buttons en loader
jQuery.preLoadImages('/client/rova/images/Button_Verwerk.gif', '/client/rova/images/Loader.gif');
