var ParamSeparator = '$_$';
function addParamAndRedirectPage(postBackName, postBackValue) {
    var pathAndQueryArray = getPathAndQueryArray();

    var params = addParam(pathAndQueryArray, postBackName, postBackValue);

    redirectPage(pathAndQueryArray[0], params);
}

function removeParamAndRedirectPage(criteriaName, criteriaValue) {
    var pathAndQueryArray = getPathAndQueryArray();

    var params = removeParam(pathAndQueryArray, criteriaName, criteriaValue);

    redirectPage(pathAndQueryArray[0], params);
}

function addParam(pathAndQueryArray, postBackName, postBackValue) {
    var value = postBackValue;
/*
    if (postBackValue == 'Up%20to%20£5') {
        postBackValue = '0-5';
    }
    else if (postBackValue == '£20.00%20over') {
        postBackValue = '20.01-100000';
    }
    else {
        postBackValue = postBackValue.replace('£', 'i');
    }
*/
    var params = '';
    var added = false;
    if (pathAndQueryArray.length > 1) {
        var pairs = pathAndQueryArray[1].split('&');
        for (var i = 0; i < pairs.length; i++) {
            var nameValueArray = pairs[i].split('=');

            if (nameValueArray[0] == postBackName) {
                var valueArray = nameValueArray[1].split(ParamSeparator);
                var found = false;
                for (j = 0; j < valueArray.length; j++) {
                    if (valueArray[j].toUpperCase() == value.toUpperCase()) {
                        found = true;
                        break;
                    }
                }

                if (!found) {
                    nameValueArray[1] += ParamSeparator + value;
                }

                added = true;
            }

            if (params == '') {
                params = '?' + nameValueArray[0] + '=' + nameValueArray[1];
            }
            else {
                params += '&' + nameValueArray[0] + '=' + nameValueArray[1];
            }
        }
    }

    if (!added) {
        if (params == '') {
            params = '?' + postBackName + '=' + value;
        }
        else {
            params += '&' + postBackName + '=' + value;
        }
    }

    return params;
}

function removeParam(pathAndQueryArray, criteriaName, criteriaValue) {
    var params = '';
    if (pathAndQueryArray.length > 1) {
        var pairs = pathAndQueryArray[1].split('&');

        for (var i = 0; i < pairs.length; i++) {
            var nameValueArray = pairs[i].split('=');

            if (nameValueArray[0] != criteriaName) {
                if (params == '') {
                    params = '?' + nameValueArray[0] + '=' + nameValueArray[1];
                }
                else {
                    params += '&' + nameValueArray[0] + '=' + nameValueArray[1];
                }
            }
            else {
                var valueArray = nameValueArray[1].split(ParamSeparator);
                if (valueArray.length > 1) {
                    var newValue = '';
                    for (j = 0; j < valueArray.length; j++) {
                        var valueUpper = valueArray[j].replace(/%20/g, ' ').toUpperCase();
                        if (valueUpper != criteriaValue.toUpperCase()) {
                            if (newValue == '') {
                                newValue = valueArray[j];
                            }
                            else {
                                newValue += ParamSeparator + valueArray[j];
                            }
                        }
                    }

                    if (params == '') {
                        params = '?' + criteriaName + '=' + newValue;
                    }
                    else {
                        params += '&' + criteriaName + '=' + newValue;
                    }
                }
            }
        }
    }

    return params;
}

function getPathAndQueryArray() {
    var pathAndQuery = window.location.href;
    return pathAndQuery.split('?');
}

function redirectPage(path, params) {
    window.location.href = path + params;
}
