﻿cbj(document).ready(function() {
    if (cbj('.savedSearches') != undefined) {
        cbj('.savedSearches').change(function() {
            if (this.value != '')
                window.location = this.value;
        });
    }

    if (cbj('.savedJobs') != undefined) {
        cbj('.savedJobs').change(function () {
            if (this.value != '')
                window.location = this.value;
        });
    }

    if (ScriptVariables.Get("UseNewJrpUrls")) {
        $("[id$='mxfSearch']").on('submit', function (e) {
            e.target.action = formatNewUrl(e);
            return true;
        });
    }

    var formatNewUrl = function (event) {
        var inputKeywords = $(event.target).find("input[name='s_rawwords']").val();
        var inputLocation = $(event.target).find("input[name='s_freeloc']").val();
                
        inputKeywords = slugActionKeywords(inputKeywords);
        inputLocation = slugActionLocation(inputLocation);
        var urlRoot = ScriptVariables.Contains("rootPageForSearch") ? ScriptVariables.Get("rootPageForSearch") : "/jobs"
        var actionStub = urlRoot + joinStubSegments(inputKeywords, inputLocation);
        return actionStub.toLowerCase();        
    };

    var slugActionKeywords = function (keywords) {
        var inputKeywords = keywords;
        if (inputKeywords && inputKeywords !== '') {
            inputKeywords = toSlug(inputKeywords);
        } else {
            inputKeywords = '';
        }
        if (inputKeywords === '-') {
            inputKeywords = '';
        }
        return inputKeywords;
    };

    var slugActionLocation = function (location) {
        var inputLocation = location;
        if (inputLocation && inputLocation !== '') {
            inputLocation = locationRemoveChars(inputLocation);
            inputLocation = toSlug(inputLocation);
        } else {
            inputLocation = '';
        }
        if (inputLocation === '-') {
            inputLocation = '';
        }
        return inputLocation;
    };

    var joinStubSegments = function (inputKeywords, inputLocation) {
        var actionStub;
        actionStub = '';
        if (inputKeywords !== '') {
            actionStub += inputKeywords;
        }
        if (inputLocation !== '') {
            if (actionStub !== '') {
                actionStub += '-';
            }
            actionStub += 'in-' + inputLocation;
        }
        if (actionStub !== '') {
            actionStub = '-' + actionStub;
        }
        return actionStub;
    };

    var locationRemoveChars = function (replaceStr) {
        replaceStr = replaceStr.replace(/\./g, '');
        return replaceStr;
    };

    var toSlug = function (replaceStr) {
        replaceStr = replaceStr.trim();
        replaceStr = replaceStr.replace(/[\/'‘`'‘]/g, '');
        replaceStr = replaceStr.replace(/[\/^{}]/g, '');
        replaceStr = replaceStr.replace(/\s*@\s*/g, ' at ');
        replaceStr = replaceStr.replace(/\s*&\s*/g, ' and ');
        replaceStr = replaceStr.replace(/, /g, ',');
        replaceStr = replaceStr.replace(/_+/g, ' ');
        replaceStr = replaceStr.replace(/-+/g, '_');
        replaceStr = replaceStr.replace(/\s+/g, '-');
        replaceStr = encodeURI(replaceStr);
        replaceStr = replaceStr.replace(/\s*[^A-Za-z0-9\.%\-_,]\s*/g, '-');
        replaceStr = replaceStr.replace(/-+/g, '-');
        replaceStr = replaceStr.replace(/_/g, '--');
        replaceStr = replaceStr.replace(/-in-/g, '-iin-');
        return encodeURI(replaceStr);
    };

});

