﻿FLR.JobAlerts = function() {

    /* Private */

    /* Properties */

    var cmp = {};




    /* Methods */

    var init = function() {

        initForm();

    };


    var initForm = function() {
    
        // Set show/hide search form
        $('#searchAgain').click(function() {
            $('#searchMiddle').slideDown();
            $(this).hide();
            return false;
        });

        // set clear on select for keyword box
        FLR.setFocusBlur($('#miniSearchForm-keyword INPUT'));
        
        // Setup map rollovers
        $('.map area').mouseleave(function() {
            $('#map').css('background-position','0 0');
        });
        
        $('#mapScotland').mouseenter(function() {
            $('#map').css('background-position','0 -205px');
        });
        
        $('#mapNorthEast').mouseenter(function() {
            $('#map').css('background-position','0 -410px');
        });
        
        $('#mapNorthWest').mouseenter(function() {
            $('#map').css('background-position','0 -615px');
        });
        
        $('#mapMidlands').mouseenter(function() {
            $('#map').css('background-position','0 -820px');
        });
        
        $('#mapWales').mouseenter(function() {
            $('#map').css('background-position','0 -1025px');
        });
        
        $('#mapSouthWest').mouseenter(function() {
            $('#map').css('background-position','0 -1230px');
        });
        
        $('#mapLondon').mouseenter(function() {
            $('#map').css('background-position','0 -1435px');
        });
        
        $('#mapEastAnglia').mouseenter(function() {
            $('#map').css('background-position','0 -1640px');
        });
        
        $('#mapSouthEast').mouseenter(function() {
            $('#map').css('background-position','0 -1845px');
        });
        
        $('#mapNorthernIreland').mouseenter(function() {
            $('#map').css('background-position','0 -2050px');
        });
        
        $('#mapIreland').mouseenter(function() {
            $('#map').css('background-position','0 -2255px');
        });

        // Hide/show elements on the search form
        $('a.advanced').click(function() {
            $('.advanced').show();
            $(this).hide();
            $('a.simple').show();
            $('#miniSearchForm-sector SELECT').change();
            $('#miniSearchForm-area .selectAll').hide();
            return false;
        });

        if (location.hash == '#advanced') {
            $('a.advanced').click();
        }

        $('a.simple').click(function() {
            $(this).hide();
            $('.advanced').hide();
            $('a.advanced').show();
            $('#miniSearchForm-area .selectAll').show();
            return false;
        });

        // Show hide roles based on the choice in the sector list
        $('#miniSearchForm-sector SELECT').change(function() {
            $('.sectorRole').hide();
            $(this).find('OPTION:selected').each(function() {

                $('#sectorRole' + $(this).val()).show();
            });
        });

        // Populate the locations box when a region is selected
        $('#miniSearchForm-area SELECT').change(function() {
            
            // Get the selected option
            var selectedOption = $(this).val();
            $('#miniSearchForm-subLocation SELECT').html("<option>Loading...</option>");
            TVI.ajax({

                url: '/handlers/general.aspx/getSubLocations',
                data: {
                    'locationID': selectedOption
                },
                success: function(d) {
                    var template = '{for s in rows}<option value="${s.id}">${s.name}</option>{/for}';
                    $('#miniSearchForm-subLocation SELECT').html(template.process(d));

                }
            });
        });


        // Submit search form
        var submitMiniSearchForm = function() {

            var queryString = '?';

            if (cmp.miniSearchForm.field('area').val() != '' && cmp.miniSearchForm.field('area').val() != null) {
                queryString += 'location=' + cmp.miniSearchForm.field('area').val() + "&";
            }
            if (cmp.miniSearchForm.field('sector').val() != '' && cmp.miniSearchForm.field('sector').val() != null) {
                queryString += 'sector=' + cmp.miniSearchForm.field('sector').val() + "&";
            }
            if (cmp.miniSearchForm.field('salary').val() != '' && cmp.miniSearchForm.field('salary').val() != null) {
                queryString += 'salary=' + cmp.miniSearchForm.field('salary').val() + "&";
            }
            if (cmp.miniSearchForm.field('jobType').val() != '' && cmp.miniSearchForm.field('jobType').val() != null) {
                queryString += 'jobtype=' + cmp.miniSearchForm.field('jobType').val() + "&";
            }

            if (cmp.miniSearchForm.field('keyword') != null) {
                var keywords = cmp.miniSearchForm.field('keyword').val();
                if (keywords != '' && keywords != undefined && keywords.indexOf('Keywords') != 0) {
                    queryString += 'keywords=' + cmp.miniSearchForm.field('keyword').val().replace(/ /g, ",") + "&";
                }
            }

            // Add sublocation
            if (cmp.miniSearchForm.field('subLocation') != null) {
                if (cmp.miniSearchForm.field('subLocation').val() != '' && cmp.miniSearchForm.field('subLocation').val() != null) {
                    queryString += 'sublocation=' + cmp.miniSearchForm.field('subLocation').val() + "&";
                }
            }

            // Add the roles, if any
            if ($('.sectorRole:visible input:checked').length > 0) {
                queryString += 'role='
                $('.sectorRole:visible input:checked').each(function() {
                    queryString += $(this).val() + ",";
                });
            }



            window.location = '/search.aspx' + queryString;

        };

        cmp.miniSearchForm = new TVI.Form({

            ID: 'miniSearchForm',
            buttons: [{

                selector: '.search',
                enter: true,
                handler: submitMiniSearchForm

}],
                load: {
                    meta: true,
                    success: function() {
                        // Remove blank option for multiple select boxes
                        cmp.miniSearchForm.el.find('SELECT').each(function() {
                            if ($(this).attr('multiple')) {
                                $(this).find('option').eq(0).hide();
                            }
                        });

                        // Set the first option name for dropdowns if they are not multiple select
                        cmp.miniSearchForm.el.find('#miniSearchForm-sector select option').eq(0).html('Choose your sectors');
                        cmp.miniSearchForm.el.find('#miniSearchForm-area select option').eq(0).html('Choose your location');
                        cmp.miniSearchForm.el.find('#miniSearchForm-salary select option').eq(0).html('All salary ranges');
                        cmp.miniSearchForm.el.find('#miniSearchForm-jobType select option').eq(0).html('Choose your job type');

                        // Select the correct options from querystring
                        if (TVI.Request.QueryString['sector'] != null) {
                            cmp.miniSearchForm.el.find('#miniSearchForm-sector OPTION').each(function() {
                                var sectors = TVI.Request.QueryString['sector'].split(',');
                                for (var i = 0; i < sectors.length; i++) {
                                    if (sectors[i] == $(this).val()) {
                                        $(this).attr('selected', 'selected');   
                                    }
                                }
                            });
                        }
                        if (TVI.Request.QueryString['location'] != null) {
                            cmp.miniSearchForm.el.find('#miniSearchForm-area OPTION').each(function() {
                                var locations = TVI.Request.QueryString['location'].split(',');
                                for (var i = 0; i < locations.length; i++) {
                                    if (locations[i] == $(this).val()) {
                                        $(this).attr('selected', 'selected');   
                                    }
                                }
                            });
                        }
                        if (TVI.Request.QueryString['salary'] != null) {
                            cmp.miniSearchForm.el.find('#miniSearchForm-salary OPTION').each(function() {
                                var salaries = TVI.Request.QueryString['salary'].split(',');
                                for (var i = 0; i < salaries.length; i++) {
                                    if (salaries[i] == $(this).val()) {
                                        $(this).attr('selected', 'selected');   
                                    }
                                }
                            });
                        }
                        if (TVI.Request.QueryString['jobtype'] != null) {
                            cmp.miniSearchForm.el.find('#miniSearchForm-jobType OPTION').each(function() {
                                var jobtypes = TVI.Request.QueryString['jobtype'].split(',');
                                for (var i = 0; i < jobtypes.length; i++) {
                                    if (jobtypes[i] == $(this).val()) {
                                        $(this).attr('selected', 'selected');   
                                    }
                                }
                            });
                        }
                    }
                }

            });


        };

        /* Public */

        TVI.apply(cmp, {

        /* Properties */

        /* Methods */

    });


    TVI.ready(init);

    return cmp;

} ();