$(function(){
    infoContent = {
        nielsen : '<h2>Was sind Nielsengebiete?</h2><p>A.C.Nielsen hat geografisch fest umrissene Gebiete festgelegt, innerhalb derer die Absatzentwicklung bestimmter Produkte untersucht wird. Gleichzeitig dient diese Einteilung vielen Unternehmen heutzutage der Markt-, Media- oder auch Au&szlig;endienststeuerung und -planung.</p><table><tbody><tr><th width="100">Nielsen I:</th><td>Hamburg, Bremen, Schleswig-Holstein, Niedersachsen</td></tr><tr><th>Nielsen II:</th><td>Nordrhein-Westfalen</td></tr><tr><th>Nielsen IIIa:</th><td>Hessen, Rheinland-Pfalz, Saarland</td></tr><tr><th>Nielsen IIIb:</th><td>Baden-W&uuml;rttemberg</td></tr><tr><th>Nielsen IV:</th><td>Bayern</td></tr><tr><th>Nielsen V:</th><td>Berlin</td></tr><tr><th>Nielsen VI:</th><td>Mecklenburg-Vorpommern, Brandenburg, Sachsen-Anhalt</td></tr><tr><th>Nielsen VII:</th><td>Th&uuml;ringen, Sachsen</td></tr></tbody></table>',
        laender : '<h2>Bundesl&auml;nder</h2>',
        ballung : '<h2>Ballungsr&auml;ume</h2>',
        fernverkehr : '<h2>Bundesweiter Fernverkehr</h2>',
        direkt : '<h2>Direkteingabe</h2>',
        preisliste_planer : '<h2>Planer</h2><p>Mit Hilfe des Planers k&ouml;nnen Sie ein spezifisches Werbemittel detailliert berechnen.</p> <h2>Preisliste</h2><p>Mit Hilfe der Preislistenfunktion k&ouml;nnen Sie sich gleichzeitig einen &Uuml;berblick &uuml;ber mehrere Werbemittel verschaffen.</p>'
    };

    $("input#fernverkehr")
        .bind ('checkBoxchange',function () {
            if ($(this).is(':checked')){
                $('input[name=ortseingabe]').attr('value','');
                if( !$('#planer').is(':checked') && !$('#preisliste').is(':checked') ){
                    $('#preisliste').checkBox('changeCheckStatus',true);
                }
            }else {
                $('input[name=fernverkehr]').removeAttr('checked');
            }

        })
        .trigger('checkBoxchange');

    $("area").each(function(){
    	$(this).attr('class',$(this).attr('alt'));
    	$(this).removeAttr('alt');
    });
    
    initMap();
    
    $('form').submit(function(){
        // Validierung: Ortseingabe besteht aus gültigen Zeichen
        var regex=/[^a-z\xE4\xF6\xFC\xDF ,\.\/\(\)-]/i;
        if( $('input[name="ortseingabe"]').val().match( regex ) ){
            alert('Das Feld enth\xE4lt ung\xFCltige Zeichen');
            return false;
        }
        // Validierung: wurde mind. ein Bereich ausgewählt?
        // Ausnahme: Ortseingabe allein reicht auch aus
        var valid = false;
        $('input[name="gebiet"]').each(function(){
            if( $(this).is(':checked') ){
                valid = true;
            }
        });
        if( !valid && $('input[name="ortseingabe"]').val().length == 0 ){
            alert('Bitte w\xE4hlen Sie mindestens ein Gebiet aus oder geben Sie mindestens einen Ort an.');
            return false;
        }
        // Validierung: wurde mind. ein Bundesland,Nielsengebiet oder ein Ballungsraum oder der Fernverkehr ausgewählt?
        // Ausnahme: Ortseingabe allein reicht auch aus
        var valid = false;
        $('input[name="nielsen[]"],input[name="bundesland[]"],input[name="ballungsraum[]"],input[name="fernverkehr"]').each(function(){
            if( $(this).is(':checked') ){
                valid = true;
            }
        });
        if( !valid && $('input[name="ortseingabe"]').val().length == 0 ){
            alert('Bitte w\xE4hlen Sie mindestens ein Gebiet aus.');
            return false;
        }
        
    });
    
});

function initMap () {
    $("map[name='map'] area")
        .attr('href','javascript:void(null)')                       // Kein # Link
        .click(function (e,noCallback,nameOverride) {
            //var myName = nameOverride || $(this).attr('alt');
        	var myName = nameOverride || $(this).attr('class');

            var selected = $("input[name='gebiet']").filter(':checked');
            
            if (!noCallback && (!selected.length || selected.val() == 'bundesland'))
                $('#' + myName).checkBox('toggle','noCallback');    // User Click
            
            /*
            var img = $("#map-box img[name]");     // If exists: kill & return

            for (var i = 0, count = img.length; i < count; i++) {
                if ($(img[i]).attr('name') == myName) {
                    $(img[i]).remove();
                    return;
                }
            }

            if (!nameOverride && selected.length && selected.val() != 'bundesland') {
                return;
            }

            var img = $('<img/>')
                .attr('src','/images/map/' + myName + '.gif')
                .attr('name',myName)
                .addClass('map');
           $('#map-box').append(img);
            
           return;
           */

            var img = $("#map-box img[name]");
            for (var i = 0, count = img.length; i < count; i++) {
                if ($(img[i]).attr('name') == myName) {
                	if (!nameOverride && selected.length && selected.val() != 'bundesland') {
                		$(img[i]).hide();
                	} else {
                		$(img[i]).toggle();
                	}
                    return;
                }
            }
        });

    $("input[type='checkbox']")
        .each( function () {    // Checkbox load
            if (!$(this).is(':checked'))
                return;

            //var map = $("area[alt='" + $(this).attr('id') + "']:first");
            var map = $("area." + $(this).attr('id') + ":first");

            if (map.length > 0) {
                map.trigger('click',true);
            } else {
                $("area:first").trigger('click',[true,$(this).attr('id')]);
            }
        } )

        .bind('checkBoxchange',function (e,param) {
            var parent = $(this).parents('fieldset').find('input[type="radio"]:first');

            if (param != 'noCallback') {
                //var map = $("area[alt='" + $(this).attr('id') + "']:first");
            	var map = $("area." + $(this).attr('id') + ":first");
                if (map.length > 0) {
                    map.trigger('click',true);
                } else {
                    $("area:first").trigger('click',[true,$(this).attr('id')]);
                }
            }

            if (parent.is(':checked') || !$(this).is(':checked'))
                return;

            parent.checkBox('changeCheckStatus',true);
        });
}
