function getParam(arg) {
    /******************************************************************************
    * Bjorn Williams 07/13/2010 
    * Commented the code below as there was an issue whenever the URL keywords contain any words that 
    * where treated as URL parameter.  
    *****************************************************************************/
    var hashUrlParams = jsGetUrlParamsArray(window.location.toString().toLowerCase())
    var ParamValue = "";
    if (hashUrlParams[arg] != undefined) {
        ParamValue = hashUrlParams[arg];
    }
    return ParamValue;
    
    //    var q = "" + window.location;
    //    q = q.toLowerCase();
    //    arg = arg.toLowerCase();
    //    if (q.indexOf(arg) >= 0) {
    //        var pntr = q.indexOf(arg) + arg.length + 1;
    //        if (q.indexOf("&", pntr) >= 0) {
    //            return q.substring(pntr, q.indexOf("&", pntr));
    //        } else {
    //            return q.substring(pntr, q.length);
    //        }
    //    } else {
    //        return "";
    //    }
}
/*********************************************************************
* Returns associative array of name value pairs where the key is the
* URL parameter name and the value is the value associated with that
* parameter.
*
* NOTE: This function only retrieves URL parameters, NOT HTTP POST
* variables. Also, URL parameters consist of everything between the
* "?" and "#" symbols. URL parameters using SEO friendly formats
* would NOT fit under this criteria and thus would not be recognized
* as URL parameters by this function.
*********************************************************************/
function jsGetUrlParamsArray(strCurrentUrl) {
    var arrNamePairs = new Array();
    var hashUrlParams = new Array(); //note: it is possible that some url parameters in this array will have the value of "undefined"
    var strQueryString = "";
    var intQuestionMarkIndex = strCurrentUrl.indexOf("?");

    if (intQuestionMarkIndex != -1) {
        strQueryString = strCurrentUrl.substring(intQuestionMarkIndex + 1, strCurrentUrl.length);
    } else {
        return hashUrlParams;
    }

    var intUrlAnchorIndex = strQueryString.indexOf("#");
    if (intUrlAnchorIndex != -1) {
        strQueryString = strQueryString.substring(0, intUrlAnchorIndex);
    }

    if (strQueryString == "") {
        return hashUrlParams;
    } else {
        arrNamePairs = strQueryString.split("&");
        for (var i = 0; i < arrNamePairs.length; i++) {
            arrTmpCurrentRow = arrNamePairs[i].split("=");
            hashUrlParams[arrTmpCurrentRow[0]] = arrTmpCurrentRow[1];
        }

        return hashUrlParams;
    }
}
function runSortForButton() {
    sort();
    /*
    var currentUrl = "" + window.location;
    var partialUrl = currentUrl.substring(0, currentUrl.indexOf("?"));
    var queryString = "sort=" + getParam("sort") + "&size=" + getParam("size") + "&page=" + getParam("page");
    var redirectUrl = partialUrl + "?" + queryString;
    alert(redirectUrl);
    */
}

function setPerPage(num) {
    var hidInput = document.getElementById("HIDperPage");
    hidInput.value = num;
    sort();
}

function setPageView(view) {
    var hidInput = document.getElementById("HIDpageView");
    hidInput.value = view;
    sort();
}

function getPageView(url) {

    url = url.substring(url.indexOf("cat"), url.length);

    var pageview = url.slice(0, url.indexOf("/"));

    return pageview;
}


/**
* Modified by Lawrence 7/30/2009: To support sorting with filtering.
*/
function sort() {
    var pageDisplay;
    var urlParams;
    var size;
    var page;
    var sortValue = "";
    var sortChanged = 0;
    var sizeChanged = 0;
    var pageDisplayChanged = false;
    var sortFromRequest = getParam("sort");
    var sortByFromRequest = getParam("sortby");
    //jitesh 07/22/2010: Commented below line. Replaced container_list with filter_ids.
    //var containerListFromRequest = getParam("container_list"); // added by Lawrence 7/30/2009
    var FilterIdsFromRequest = getParam("filter_ids"); 
    var pageDisplayFromRequest = getParam("g");
    //var objStoreDetails As New Gogotech.StoreDetails
    var strpagesize = 12; // As String = ConfigurationManager.AppSettings("ContainerListingPageSize")
    var DDLN_Sort = document.getElementById("js_sort_ddl");
    var currentUrl = "" + window.location;
    var partialUrl = currentUrl.substring(0, currentUrl.indexOf("?"));
    var hidInput = document.getElementById("HIDperPage");
    var hidView = document.getElementById("HIDpageView");
    var pageView = getPageView(currentUrl);


    if (currentUrl.indexOf("?") == -1) {
        partialUrl = currentUrl;
    }
    else {
        partialUrl = currentUrl.substring(0, currentUrl.indexOf("?"));
    }
    var urlFront = partialUrl.substring(0, partialUrl.indexOf("cat"))
    var urlEnd = partialUrl.substring(partialUrl.indexOf("cat"), partialUrl.length);
    urlEnd = urlEnd.slice(urlEnd.indexOf("/"), urlEnd.length);
    urlEnd = urlEnd.replace("cat_gallery", "");
    urlEnd = urlEnd.replace("cat", "");



    if (DDLN_Sort.options[DDLN_Sort.selectedIndex].value == "pricedesc") {
        sortValue = "sort=price&sortby=2";
        if ((sortFromRequest != "price" && sortFromRequest != "") || (sortByFromRequest != "2")) {
            sortChanged = 1;
        } else {
            sortChanged = -1;
        }
    } else if (DDLN_Sort.options[DDLN_Sort.selectedIndex].value == "priceasc") {
        sortValue = "sort=price&sortby=1"
        if ((sortFromRequest != "") && ((sortFromRequest != "price" && sortFromRequest != "") || (sortByFromRequest != "1" && sortByFromRequest != ""))) {
            sortChanged = 2
        } else {
            sortChanged = -2
        }
    } else if (DDLN_Sort.options[DDLN_Sort.selectedIndex].value == "popular") {
        sortValue = "sort=popular"
        if ((sortFromRequest != "") && (sortFromRequest != "popular")) {
            sortChanged = 3
        } else {
            sortChanged = -3
        }
    }

    size = "size=";


    if (getParam("size") != "") {
        strpagesize = getParam("size");
        size = "size=" + strpagesize;
    }

    if (hidInput.value != "") {
        strpagesize = hidInput.value;
        size = "size=" + strpagesize;
    }

    if (hidView.value != "") {
        pageView = hidView.value;
    }


    pageDisplay = pageView;

    /*****************Fix Issue with Broken Url****************/
    var t = urlEnd.lastIndexOf("/", urlEnd.length);
    if (t <= 0) {
        urlEnd += "/";
    }
    /*******************************************/
    //Akil: 2/2/2010: Added a condition check to make sure that the non-friendly versions of the url will still work when sorting. Previously only the CategoryListNoCache Version worked.
    //Changed the line before. Previously it was if(urlEnd.indexOf("CategoryListNoCache") == -1)
    if (urlEnd.indexOf("CategoryList") == -1) {
        partialUrl = urlFront + pageDisplay + urlEnd;
    }
    else {
        partialUrl = "http:" + urlEnd;
    }

    sizeChanged = 1;

    setCookie('pageview', pageDisplay, 1);
    setCookie('pagesort_JS', DDLN_Sort.selectedIndex, 1);
    setCookie('pagesort', DDLN_Sort.options[DDLN_Sort.selectedIndex].value, 1);
    setCookie('pagesize', strpagesize, 1);

    if (sortChanged > 0 || sizeChanged > 0) {
        page = "page=1" + "&sizeChange=" + sizeChanged + "&sortChanged=" + sortChanged;
    } else {
        page = "page=" + getParam("page") + "&sizeChange=" + sizeChanged + "&sortChanged=" + sortChanged;
    }

    if ((getParam("typesearch") != "") || (getParam("filter_category_id") != "")) {
        page += "&typesearch=" & getParam("typesearch") & "&filter_category_id=" & getParam("filter_category_id");
    }

    if (sortValue != "") {
        //jitesh 07/22/2010: Commented below code. Replaced container_list with filter_ids.
        // added by Lawrence 7/30/2009
        //urlParams = sortValue + "&" + size + "&" + page + "&container_list=" + containerListFromRequest;
        urlParams = sortValue + "&" + size + "&" + page + "&filter_ids=" + FilterIdsFromRequest;
    }
    else {
        //jitesh 07/22/2010: Commented below code. Replaced container_list with filter_ids.
        // added by Lawrence 7/30/2009
        //urlParams = size + "&" + page + "&container_list=" + containerListFromRequest;
        urlParams = size + "&" + page + "&filter_ids=" + FilterIdsFromRequest;
    }

    //Akil: 2/2/2010: Added a condition check to make sure that the non-friendly versions of the url will still work when sorting. Previously only the CategoryListNoCache Version worked.
    //Added in this conditional if(urlEnd.indexOf("CategoryList") != -1)
    if (urlEnd.indexOf("CategoryList") != -1) {
        if (getParam("search_term") != "") {
            //urlParams = sortValue + "&" + size + "&" + page;
            window.location = partialUrl + "?" + "category_id=" + getParam("category_id") + "&search_term=" + getParam("search_term") + "&" + urlParams;
        } else {
            //alert(partialUrl + "?" + "category_id=" + getParam("category_id") + "&" + urlParams);
            window.location = partialUrl + "?" + "category_id=" + getParam("category_id") + "&" + urlParams;
        }
    } else {
        //urlParams = sortValue + "&" + size + "&" + page;
        window.location = partialUrl + "?" + "&" + urlParams;
    }
}

function setSortBar() {

    var sortCookie = getCookie("pagesort_JS");
    var sizeCookie = getParam("size");
    var viewCookie = getCookie("pageview");
    var searchTerm = getParam("search_term");
    var pageViewURL = "" + window.location;
    var size, view;


    if (pageViewURL.indexOf("cat_gallery") == -1) {
        if (viewCookie == "cat_gallery") {
            viewCookie = "cat";
            setCookie('pageview', 'cat', 1);
        }

        if (viewCookie == "") {
            viewCookie = "cat";
            setCookie('pageview', 'cat', 1);
        }
    }
    else {
        if (viewCookie == "cat") {
            viewCookie = "cat_gallery";
            setCookie('pageview', 'cat_gallery', 1);
        }

        if (viewCookie == "") {
            viewCookie = "cat_gallery";
            setCookie('pageview', 'cat_gallery', 1);
        }

    }
    /* Commented out so dropdown does not remember your previous sort.  -Akil 9/4/2008
    if(sortCookie != "")
    {
    sort.selectedIndex = sortCookie;
    }
    */
    switch (sizeCookie) {
        case "12":
            size = document.getElementById("12Per");
            if (size) {
                size.style.cursor = "default";
                size.style.color = "black";
                size.style.textDecoration = "none";
            }
            break;
        case "24":
            size = document.getElementById("24Per");
            if (size) {
                size.style.cursor = "default";
                size.style.color = "black";
                size.style.textDecoration = "none";
            }
            break;
        case "36":
            size = document.getElementById("36Per");
            if (size) {
                size.style.cursor = "default";
                size.style.color = "black";
                size.style.textDecoration = "none";
            }
            break;
        case "0":
            size = document.getElementById("allPer");
            if (size) {
                size.style.cursor = "default";
                size.style.color = "black";
                size.style.textDecoration = "none";
            }
            break;
        default:
            size = document.getElementById("12Per");
            if (size) {
                size.style.cursor = "default";
                size.style.color = "black";
                size.style.textDecoration = "none";
            }
            break;
    }

    var sortBar = document.getElementById("js_sort_ddl");
    var sort = getParam("sort");
    if (sort != "") {
        var sortSize = 0;
        if (sortBar.length == 4) {
            sortSize = 1;
        }

        //if its a search but there has been a sorting option chose still add relevance but dont select it.
        if (searchTerm != "") {
            AddSortOption(sortBar, searchTerm, false);
        }

        if (sort == "price") {
            var priceSort = getParam("sortby");

            if (priceSort == "1") {
                sortBar.selectedIndex = 1 + sortSize;
            }
            else {
                sortBar.selectedIndex = 2 + sortSize;
            }
        }
        else if (sort == "popular") {
            sortBar.selectedIndex = sortSize;
        }
        else {
            sortBar.selectedIndex = 0;
        }
    }
    //Add to support Featured Items as default.
    else if (searchTerm != "") {
        AddSortOption(sortBar, searchTerm, true);
    }
    else {
        sortBar.selectedIndex = 0;
    }
}


//Add new option to dropdown
function AddSortOption(sortBar, searchTerm, isSelected) {
    if (searchTerm != "") {
        AddSelectOption(sortBar, "Relevance", "0", isSelected);
    }
}
function AddSelectOption(selectObj, text, value, isSelected) {
    if (selectObj != null && selectObj.options != null) {
        //selectObj.options[selectObj.options.length] = new Option(text, value, false, isSelected);
        //this method overwrites the chosen position.
        selectObj.options[0] = new Option(text, value, false, isSelected);
    }
}
