﻿function getUrlParamsAsArray(url, decode) {
    if (decode) {
        url = decodeURIComponent(url);
    }
    var urlParams = {};
    (function() {
        var e,
                    a = /\+/g,  // Regex for replacing addition symbol with a space
                    r = /([^&=]+)=?([^&]*)/g,
                    d = function(s) { return s.replace(a, " "); },
                    q = url.substring(1);

        while (e = r.exec(q))
            urlParams[d(e[1])] = d(e[2]);
    })();
    return urlParams;
}

function combineUrlFromArray(urlParams, encodeQuery) {
    var searchString = "?";
    $.each(urlParams,
            function(key, value) {
                if (value != null && value.length > 0) {
                    if (encodeQuery && key == "query") {
                        value = encodeURIComponent(value);
                    }
                    searchString += key + '=' + value + '&';
                }
            }
        );
    return searchString.replace(/.$/g, '');
}

/* Get param from query*/
function queryString(parameter) {
    var questionPos = location.href.indexOf('?');
    var loc = location.href.substring(questionPos + 1);
    var param_value = false;

    var params = loc.split("&");
    for (i = 0; i < params.length; i++) {
        param_name = params[i].substring(0, params[i].indexOf('='));
        if (param_name == parameter) {
            param_value = params[i].substring(params[i].indexOf('=') + 1)
        }
    }
    if (param_value) {
        return param_value;
    }
    else {
        return null; //Here determine return if no parameter is found
    }
}

/* Save string to searchHidden field */
function saveToSearchHidden(paramsArray) {
    if (paramsArray["query"] == null || paramsArray["query"] == "null") {
        return;
    }
    $("#queryhidden").val(combineUrlFromArray(paramsArray, true));
    updateLangUrlParam();
}

function isJson(data) {
    if (data
        && data.length > 0
        && data.charAt(0) == '{'
        && data.charAt(data.length - 1) == '}') {
        return true;
    }
    return false;
}

//Update Languages strings
function updateLangUrlParam() {
    $("#LanguageMenuDropDown").children().each(function(index) {
        var url = $(this).attr('href');
        var firstPart = url.split("?")[0];
        var secondPart = "?" + url.split("?")[1];
        //Get params from Lang string
        var urlParams = getUrlParamsAsArray(secondPart, true);
        //Get params from query
        var newParams = getUrlParamsAsArray($("#queryhidden").val(), false);
        //Merge params
        urlParams["query"] = newParams["query"];
        urlParams["catalog"] = newParams["catalog"];
        urlParams["name"] = newParams["name"];
        urlParams["oid"] = newParams["oid"];
        //Create new string
        var newSecondPart = combineUrlFromArray(urlParams);
        var newUrl = firstPart + newSecondPart;
        $(this).attr('href', newUrl);
    });
}
