/* $Id: main.js,v 1.17 2010/01/18 12:19:58 tzebulla Exp $
 */

// Scriptaculous/Prototype nicht stören.
jQuery.noConflict();

jQuery(document).ready(function($) {
	/* Speichern und PLZ Einschränkungen eintragen im Collection Schritt
	 * des Wizards. 
	 */
	$('#collections-SpeichernundPLZEinschränkungeneintragen').click(function(event) {
		event.preventDefault();
		
		var form = $('#collections');
		var formAction = form.attr('action') + '/postcodes/true';
		form.attr('action', formAction);
		form.submit();
	});
	
	/* Wizard PLZ-Schritt
         * Validiert eingegebene PLZ(s) bei der Eingabe & der Formular Übermittlung.
	 */
        function checkPostcodes(self) {
            var postcodeRegex = new RegExp('^([0-9]{5})(?:, [0-9]{5})*$');
            var errors = false;

            if (self.val().length && !postcodeRegex.exec($.trim(self.val()))) {
                self.css('border-color', 'red');
                errors = true;
            } else {
                self.css('border-color', 'green');
            }

            return errors;
        }
        $('form#postcodes :input[type=text]').keyup(function (e) {checkPostcodes($(this));});
	$('form#postcodes').submit(function(event) {
            var errors = false;

            $(this).find(':input[type=text]').each(function() {
                errors = checkPostcodes($(this)) || errors;
            });

            if (errors) {
                /* Auf form.phtml ist
                 * Errorbox eingebunden
                 */ 
                window.scrollTo(0, 0);
                $('#error').show();
                event.preventDefault();
                
            }
	});

        /* Die Bäume dürfen nicht leer gespeichert werden.
         */
        function checkTrees(event) {
            if ($(':input[type=checkbox]:checked').length == 0) {
           		window.scrollTo(0, 0);
                event.preventDefault();
                $('#error').show();
            }
        }
        $('#services-Speichern').click(checkTrees);
        $('#collections-Speichern').click(checkTrees);


        /*
         * CollectionGroups
         */
        $('#fieldset-CollectionGroups :input[type=checkbox]').change(function(e) {
            var self = $(this);
            var formAction = $('form#collections').attr('action');
            var baseUrl = formAction.split('mandator')[0];
            var groupId = self.val();
            var indicator =  $('<img/>').attr('src', baseUrl + '/images/indicator.gif').addClass('indicator');
            var groupIsChecked = self.is(':checked');

            self.before(indicator);

            $.getJSON(baseUrl + 'mandator/service-competence-wizard/get-group-items/for/' + groupId, function(data, status) {
                indicator.hide();
                
                 if (status != 'success' && status != 'notmodified') {
                    throw('Konnte Gruppe nicht laden: ' + status);
                }

                if (data) {
                    data.each(function(item) {
                        var input = $(':input[type=checkbox][value=' + item + ']');
                        input.attr('checked', groupIsChecked);

                        if (!input.is(':visible')) {
                            input.closest('.hasChildren_true').children('.expander').click();
                        }
                    })
                }
            })
        })
});