﻿/// <reference path="jquery-1.4.2.min-vsdoc.js" />
//This script file includes all javascript functions needed for this site, call functions from "jquery.document.ready.js"

//GLOBAL
var afterCartUpdatedCallback = undefined;
var gulfCookieName = 'overrideGulfView';
var latestSearchWasGulf;
//variable used to deterimine id page should scroll to specific free text seach or not [current/reset]
var page_scroll_to = ['#searchresultheader', '#searchresultheader'];

function recursiveDecodeURI(uri) {
    var recurseCount = 20;
    do {
        uri = decodeURI(uri);
    } while (uri.indexOf("%") != -1 && recurseCount > 0)
    return uri;
}

//URL HASH CONVERTER
//trigger different search methods depending on location hash
$.hashSearch = function () {
    if (location.hash != '') {
        var decodedHash = recursiveDecodeURI(location.hash);
        if (decodedHash.substring(0, 2) == '#/') {
            //different path variables
            //for car:
            var car = 'car';
            var reg = 'reg';
            var chassi = 'chassi';
            //for interchange
            var interchange = 'interchange';
            //for gulf
            var gulf = 'gulf';
            //for marine:
            var marine = 'marine';
            var year = 'y';
            var sprocket = 's';
            //uni:
            var freetext = 'freetext';
            var code = 'code';
            var ddFalse = 'dd0';
            var ddTrue = 'dd1';
            var dropdown = 'dropdown';
            var articlegroup = 'articlegroup';

            var path = decodedHash.substring(2).split('/');
            //CAR
            if (path[0] == car) {
                //CAR: Free text search
                if (path[1] == freetext) {
                    //if search string is not empty
                    if (path[2] != '')
                        $.getCarProductsBySearchString(path[2]);
                }
                //CAR: Registration number
                if (path[1] == reg) {
                    //if search string is not empty
                    if (path[2] != '' && path[3] == undefined)
                        $.getCarInfoByRegistrationNo(path[2]);
                    else if (path[2] != '' && path[3] == freetext) {
                        $.getCarInfoByRegistrationNo(path[2], false, function () {
                            $.getCarProductsBySearchString(path[4]);
                        });
                    }
                    else if (path[2] != '' && path[3] != undefined) {
                        $.getCarInfoByRegistrationNo(path[2], function () {
                            getProductsByArticleGroups(true, null, path[3], true);
                        });
                    }
                }
                //CAR: Chassie number
                if (path[1] == chassi) {
                    //if search string is not empty
                    if (path[2] != '' && path[3] == undefined)
                        $.getCarInfoByCassiNo(path[2]);
                    else if (path[2] != '' && path[3] == freetext) {
                        $.getCarInfoByCassiNo(path[2], false, function () {
                            $.getCarProductsBySearchString(path[4]);
                        });
                    }
                    else if (path[2] != '' && path[3] != undefined) {
                        $.getCarInfoByCassiNo(path[2], function () {
                            getProductsByArticleGroups(true, null, path[3], true);
                        });
                    }
                }
                //CAR: CarCode search
                if (path[1] == code) {
                    //if nothing was picked in a drop down and search was not fully executed
                    if (path[2] == ddFalse) {
                        //checking if all search parameters is not empty
                        if (path[3] && path[4] && path[5] && path[6]) {
                            if (path[7] != undefined && path[7] == freetext) {
                                $.selectCarParts(path[3], path[5], path[4], path[6]);
                                onCarTypeLoaded = function () { $.getCarProductsBySearchString(path[8]); }
                            }
                            else {
                                $.selectCarParts(path[3], path[5], path[4], path[6]);
                            }
                        }
                    }
                    //if a full search was executed by picking something in the drop downs
                    if (path[2] == ddTrue) {
                        //checking if all search parameters is not empty
                        if (path[3] && path[4] && path[5] && path[6] && path[7] && path[8]) {
                            $.selectCarParts(path[3], path[5], path[4], path[6]);
                            onCarTypeLoaded = function () { getProductsByArticleGroups(true, path[7], path[8]); }
                        }
                    }
                }
                //CAR: DropDown search
                if (path[1] == dropdown) {
                    //checking if all search parameters is not empty
                    if (path[2])
                        getProductsByArticleGroups(true, undefined, path[2]);
                }
            }
            //MARINE
            if (path[0] == marine) {
                //MARINE: Free text search
                if (path[1] == freetext) {
                    //if search string is not empty
                    if (path[2] != '')
                        $.getMarineProductsBySearchString(path[2]);
                }
                //MARINE: Code
                if (path[1] == code) {
                    //if nothing was picked in a drop down and search was not fully executed
                    if (path[2] == ddFalse) {
                        if (path[3] == year) {
                            if (path[7] != undefined && path[7] == freetext) {
                                $.selectMarinePartsByEngine(path[5], path[6], path[4]);
                                onMarineTypeByEngineLoaded = function () { $.getMarineProductsBySearchString(path[8]); };
                            }
                            else
                                $.selectMarinePartsByEngine(path[5], path[6], path[4]);
                        }

                        if (path[3] == sprocket) {
                            if (path[7] != undefined && path[7] == freetext) {
                                $.selectMarinePartsBySprocket(path[5], path[6], path[4]);
                                onMarineTypeBySprocketLoaded = function () { $.getMarineProductsBySearchString(path[8]); };
                            }
                            else
                                $.selectMarinePartsBySprocket(path[5], path[6], path[4]);
                        }
                    }
                    //if a full search was executed by picking something in the drop downs
                    if (path[2] == ddTrue) {
                        if (path[3] == year) {
                            $.selectMarinePartsByEngine(path[5], path[6], path[4]);
                            onMarineTypeByEngineLoaded = function () { getProductsByArticleGroupsMarine(true, path[7], path[8]); };
                        }
                        if (path[3] == sprocket) {
                            $.selectMarinePartsBySprocket(path[5], path[6], path[4]);
                            onMarineTypeBySprocketLoaded = function () { getProductsByArticleGroupsMarine(true, path[7], path[8]); };
                        }
                    }
                }
                //MARINE: DropDown search
                if (path[1] == dropdown) {
                    //checking if all search parameters is not empty
                    if (path[2])
                        getProductsByArticleGroupsMarine(true, undefined, path[2]);
                }
            }
            //INTERCHANGE
            if (path[0] == interchange) {
                //INTERCHANGE: Free text search
                if (path[1] == freetext) {
                    //if search string is not empty
                    if (path[2] != '')
                        $.getInterchangeProductsBySearchString(path[2]);
                }
            }
            //GULF
            if (path[0] == gulf) {
                //GULF: Free text search
                if (path[1] == freetext) {
                    //if search string is not empty
                    if (path[2] != '')
                        $.getGulfProductsBySearchString(path[2]);
                }
                if (path[1] == articlegroup) {
                    if (path[2] != '')
                        GulfGetProductsByArticleGroup(path[2]);
                }
            }
        }
    }
}
//SET URL HASH
$.setHash = function (str) {
    location.hash = '/' + str;
}
//CHECK IF URL HAS HASH
var checkArr;
$.hasHash = function () {
    return (location.hash.match('#/') ? true : false);
}

$.selectCarParts = function (brandId, yearModelId, modelId, engineId) {
    $('#search a[rel="sp2"]').click();
    onCarYearModelsLoaded = function () { $('#ulYearModels a[rel="' + yearModelId + '"]').click(); }
    onCarModelsLoaded = function () { $('#ulModels a[rel="' + modelId + '"]').click(); }
    onCarEnginesLoaded = function () { $('#ulEngineTypes a[rel="' + engineId + '"]').click(); }
    $('#CarModels a[rel="' + brandId + '"]').click();
}

$.selectMarinePartsByEngine = function (val1, val2, val3) {
    onMarineEnginesLoaded = function () { $('#ulMarineEngines a[rel="' + val2 + '"]').click(); }
    onMarineYearModelsByEngineLoaded = function () { $('#ulMarineYearModels a[rel="' + val3 + '"]').click(); }

    $('#MarineModels a[rel="' + val1 + '"]').click();
}

$.selectMarinePartsBySprocket = function (val1, val2, val3) {
    onMarineSprocketsLoaded = function () { $('#ulMarineSprockets a[rel="' + val2 + '"]').click(); }
    onMarineYearModelsBySprocketLoaded = function () { $('#ulMarineYearModels a[rel="' + val3 + '"]').click(); }

    $('#MarineModels a[rel="' + val1 + '"]').click();
}

//AJAX CALL FUNCTIONS TRIGGERED WITH BUTTON EVENTS
//CAR FREE TEXT SEARCH
var car_hash_string_position, new_car_hash_string, new_hash_string_to_add;
$.getCarProductsBySearchString = function (str) {
    //setting page scroll to variable
    page_scroll_to[0] = '#carFreeTextSearchSection';
    //addning ajax loading animation
    $.ajaxLoadingStatus({ text: $.tr('Hämtar sökresultat, var god vänta.') });
    $.clearFilterInput();
    $.ajax({
        type: 'GET',
        contentType: 'application/json',
        url: '/webservices/carproductsearch.svc/GetProductsBySearchString?productCode=' + gCarCode + '&searchstring=' + encodeURI(str) + '&pageSize=' + getPageSize(),
        dataType: 'json',
        processData: false,
        success: function (p) {
            //setting input to right value
            $('#carFreeTextSearchInput').val(str);
            //focusing on textbox and selecting its text
            $('#carFreeTextSearchInput').focus().select();

            if ($.ajaxErrorHandler(p)) {
                $.globalProductList(p.d);

                var setCookieArray = $.cookieMonster({ set: 'carFreeTextSearchLatestSearchList', value: str });
                $('#carFreeTextSearchLatestSearchList').updateLatestSearchList({ trigger: $.getCarProductsBySearchString, list: setCookieArray });

                updatePager();

                //removing ajax loading animation
                $.ajaxLoadingStatus({ create: false, update: false });

                var updateValues = { site: 'car', searchType: 'freetext', searchParameters: [str] };
                if (hashSerializer.site == 'car' && hashSerializer.dropDownIndicator == 'dd1') {
                    updateValues.dropDownIndicator = 'dd0';
                    updateValues.vehicleParameters = [arrSave[0], arrSave[1], arrSave[2], arrSave[3]];
                }
                hashSerializer.updateValues(updateValues);
                hashSerializer.setURLHash(updateValues);

                //Biding button to reset all search variables
                $.resetAllSearchVariables();
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $.showErrorMessage($.tr('Någonting gick fel när sidan försökte hämta sökresultat från fritextsök!'));
        }
    });

}

var freetextSearchMatch = "/freetext";
var articleClassSearchMatch = "/class";
var articleGroupSearchMatch = "/[\"";
function findCurrentSearchParameters(hashString) {
    var charIncludeCount = 0;
    if (hashString.match(freetextSearchMatch)) {
        charIncludeCount = hashString.lastIndexOf(freetextSearchMatch);
    }
    else if (hashString.match(articleClassSearchMatch)) {
        charIncludeCount = hashString.lastIndexOf(articleClassSearchMatch);
    }
    else if (hashString.lastIndexOf(articleGroupSearchMatch) != -1) {
        charIncludeCount = hashString.lastIndexOf(articleGroupSearchMatch);
    }
    else {
        // we don't have search in the string, keep the whole string
        charIncludeCount = hashString.length;
    }
    return hashString.substring(0, charIncludeCount);
}

//MARINE FREE TEXT SEARCH
$.getMarineProductsBySearchString = function (str) {
    //setting page scroll to variable
    page_scroll_to[0] = '#marineFreeTextSearchSection';
    //addning ajax loading animation
    $.ajaxLoadingStatus({ text: $.tr('Hämtar sökresultat, var god vänta.') });
    $.clearFilterInput();
    $.ajax({
        type: 'GET',
        contentType: 'application/json',
        url: '/webservices/marineproductsearch.svc/GetProductsBySearchString?searchstring=' + encodeURI(str) + '&pageSize=' + getPageSize(),
        dataType: 'json',
        processData: false,
        success: function (p) {
            $('#marineFreeTextSearchInput').val(str);
            //focusing on textbox and selecting its text
            $('#marineFreeTextSearchInput').focus().select();
            
            if ($.ajaxErrorHandler(p)) {
                $.globalProductList(p.d);

                var setCookieArray = $.cookieMonster({ set: 'marineFreeTextSearchLatestSearchList', value: str });
                $('#marineFreeTextSearchLatestSearchList').updateLatestSearchList({ trigger: $.getMarineProductsBySearchString, list: setCookieArray });

                updatePager();

                //removing ajax loading animation
                $.ajaxLoadingStatus({ create: false, update: false });


                var updateValues = { site: 'marine', searchType: 'freetext', searchParameters: [str] };
                if (hashSerializer.site == 'marine'  && hashSerializer.dropDownIndicator == 'dd1') {
                    updateValues.dropDownIndicator = 'dd0';
                    updateValues.vehicleParameters = [arrSaveMarine[1], arrSaveMarine[2], arrSaveMarine[3]];
                }
                hashSerializer.updateValues(updateValues);
                hashSerializer.setURLHash(updateValues);

                //Biding button to reset all search variables
                $.resetAllSearchVariables();
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $.showErrorMessage($.tr('Någonting gick fel när sidan försökte hämta sökresultat från fritextsökningen!'));
        }

    });

}

//INTERCHANGE FREE TEXT SEARCH
$.getInterchangeProductsBySearchString = function (str) {
    //setting page scroll to variable
    page_scroll_to[0] = '#carFreeTextSearchSection';
    
    //addning ajax loading animation
    $.ajaxLoadingStatus({ text: $.tr('Hämtar sökresultat, var god vänta.') });
    $.clearFilterInput();
    $.ajax({
        type: 'GET',
        contentType: 'application/json',
        url: '/webservices/ProductService.svc/GetInterchangeProducts?articleNo=' + encodeURI(str) + '&pageSize=' + getPageSize(),
        dataType: 'json',
        processData: false,
        success: function (p) {
            $('#interFreeTextSearchInput').val(str);
            //focusing on textbox and selecting its text

            if ($.ajaxErrorHandler(p)) {
                $.globalProductList(p.d);

                var setCookieArray = $.cookieMonster({ set: 'interFreeTextSearchLatestSearchList', value: str });
                $('#interFreeTextSearchLatestSearchList').updateLatestSearchList({ trigger: $.interChangeOrArtNrSearch, list: setCookieArray });
                updatePager();

                //removing ajax loading animation
                $.ajaxLoadingStatus({ create: false, update: false });

                hashSerializer.updateValues({ site: 'interchange', searchType: 'freetext', searchParameters: [str] });
                hashSerializer.setURLHash();
            }
            if (p.d.Products.length > 0) {
                $('#productQuantity0').focus().select();
                $.changeInputWithArrows();
            }
            else {
                $('#interFreeTextSearchInput').focus().select();
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $.showErrorMessage($.tr('Någonting gick fel när sidan försökte hämta sökresultat från interchangesök!'));
        }
    });
}


$.getArtNrProductsBySearchString = function (str) {
    //setting page scroll to variable
    page_scroll_to[0] = '#carFreeTextSearchSection';
    //addning ajax loading animation
    $.ajaxLoadingStatus({ text: $.tr('Hämtar sökresultat, var god vänta.') });
    $.clearFilterInput();
    $.ajax({
        type: 'GET',
        contentType: 'application/json',
        url: '/webservices/ProductService.svc/GetArtNrSearchProducts?articleNo=' + encodeURI(str) + '&pageSize=' + getPageSize(),
        dataType: 'json',
        processData: false,
        success: function (p) {
            $('#interFreeTextSearchInput').val(str);
            //focusing on textbox and selecting its text

            if ($.ajaxErrorHandler(p)) {
                $.globalProductList(p.d);

                var setCookieArray = $.cookieMonster({ set: 'interFreeTextSearchLatestSearchList', value: str });
                $('#interFreeTextSearchLatestSearchList').updateLatestSearchList({ trigger: $.interChangeOrArtNrSearch, list: setCookieArray });
                updatePager();

                //removing ajax loading animation
                $.ajaxLoadingStatus({ create: false, update: false });

                hashSerializer.updateValues({ site: 'artnr', searchType: 'freetext', searchParameters: [str] });
                hashSerializer.setURLHash();
            }

            if (p.d.Products.length > 0) {
                $('#productQuantity0').focus().select();
                $.changeInputWithArrows();
            }
            else {
                $('#interFreeTextSearchInput').focus().select();
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $.showErrorMessage($.tr('Någonting gick fel när sidan försökte hämta sökresultat från interchangesök!'));
        }
    });
}

//GULF FREE TEXT SEARCH
$.getGulfProductsBySearchString = function (str) {
    //setting page scroll to variable
    page_scroll_to[0] = '#gulfFreeTextSearchSection';
    //addning ajax loading animation
    $.ajaxLoadingStatus({ text: $.tr('Hämtar sökresultat, var god vänta.') });
    $.clearFilterInput();
    var freeTextGulfCookie;

    if (user.auth) {
        freeTextGulfCookie = $.cookieMonster({ get: gulfCookieName });
        if (freeTextGulfCookie) {
            if (freeTextGulfCookie[0] == 'false')
                freeTextGulfCookie = false;
            if (freeTextGulfCookie[0] == 'true')
                freeTextGulfCookie = true;
        }
        else
            freeTextGulfCookie = false;
    }
    else
        freeTextGulfCookie = true;

    $.ajax({
        type: 'GET',
        contentType: 'application/json',
        url: '/webservices/GulfProductSearch.svc/GetProductsBySearchString?searchString=' + encodeURI(str) + '&pageSize=' + getPageSize({ gulf: true }) + '&showFullProducts=' + freeTextGulfCookie,
        dataType: 'json',
        processData: false,
        success: function (p) {
            $('#gulfFreeTextSearchInput').val(str);
            //focusing on textbox and selecting its text
            $('#gulfFreeTextSearchInput').focus().select();

            if ($.ajaxErrorHandler(p)) {
                //setting url hash
                hashSerializer.updateValues({
                    site: 'gulf',
                    searchType: 'freetext',
                    searchParameters: [str]
                });
                hashSerializer.setURLHash();

                $.globalProductList(p.d, { gulf: true });

                var setCookieArray = $.cookieMonster({ set: 'gulfFreeTextSearchLatestSearchList', value: str });
                $('#gulfFreeTextSearchLatestSearchList').updateLatestSearchList({ trigger: $.getGulfProductsBySearchString, list: setCookieArray });
                updatePager({ gulf: true });

                //removing ajax loading animation
                $.ajaxLoadingStatus({ create: false, update: false });
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $.showErrorMessage($.tr('Någonting gick fel när sidan försökte hämta sökresultat från gulfsök!'));
        }
    });
}

function updatePager(o, dontUpdateFilter) {
    var settings = $.extend({
        gulf: false
    }, o);

    $(".result_pager").remove();
    $.ajax({
        type: 'GET',
        contentType: 'application/json',
        url: '/webservices/carproductsearch.svc/GetProductFilterSearchFromCache',
        dataType: 'json',
        processData: false,
        success: function (filterSearch) {
            result_currentPage = 1;
            var currentView = getCurrentView({ gulf: settings.gulf });
            var listPagerPageCount = Math.ceil(filterSearch.d.PageCountResult / result_list_pageSize);
            if (listPagerPageCount > 1) {
                var listPager = createPagerElement(listPagerPageCount, { gulf: settings.gulf });
                addPagers($('#pagerListCtrls'), $('#search_result_list'), listPager, "list_pager", currentView == 'list');
            }
            var imagePagerPageCount = Math.ceil(filterSearch.d.PageCountResult / result_image_pageSize);
            if (imagePagerPageCount > 1) {
                var imagePager = createPagerElement(imagePagerPageCount, { gulf: settings.gulf });
                addPagers($('#pagerListCtrls'), $('#search_result_image_list'), imagePager, "image_pager", currentView == 'image');
            }
            changeCountFilteredProducts(filterSearch.d.FilteredProductsCount, filterSearch.d.TotalProducts);

            if (dontUpdateFilter != true) {
                updateSearchFilter(filterSearch);
                $.openExpandedSearchFilter();         
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $.showErrorMessage($.tr('Någonting gick fel när sidan försökte uppdatera sidbläddringen!'));
        }
    });
}

function changeCountFilteredProducts(filteredProducts, totalProduct) {
    var text = $.tr('Du har filtrerat ut {0} av {1} produkter.');
    text = text.replace("{0}", filteredProducts).replace("{1}", totalProduct);
    $("#countFilteredProducts").html(text);
}

function selectFilterChoice(id) {
    if ($("#" + id).attr('class') == 'active') {
        $("#" + id).removeClass();
    }
    else {
        $("#" + id).addClass('active');

    }
    $.applyFilterGroups();
}

function updateSearchFilter(filterSearch) {
    $("#articleGroupsFilter").empty();
    for (i = 0; filterSearch.d.ArticleGroupDescription.length > i; i++) {
        var id = "artGrpDesc" + i;
        var groupDesc = filterSearch.d.ArticleGroupDescription[i].replace("/", " / ");
        $("#articleGroupsFilter").append('<li><a id="' + id + '" title="' + filterSearch.d.ArticleGroupDescription[i] + '" onclick="selectFilterChoice(' + "'" + id + "'" + ')">' + groupDesc + '</li></a>');
    }
    $("#articleManufacturersFilter").empty();
    for (i = 0; filterSearch.d.ArticleManufacturer.length > i; i++) {
        var id = "artGrpMan" + i;
        var manufacturer = filterSearch.d.ArticleManufacturer[i].replace("/", " / ");
        $("#articleManufacturersFilter").append('<li><a id="' + id + '" title="'+filterSearch.d.ArticleManufacturer[i] +'" onclick="selectFilterChoice(' + "'" + id + "'" + ')">' + manufacturer + '</li></a>');
    }
    
}

function createPagerElement(pageCountString, o) {
    var pageCount = parseInt(pageCountString);
    return createPagesInContainer($('<div class="result_pager"></div>'), pageCount, o);
}

function createPagesInContainer(container, pageCount, o) {
    for (var pageIdx = 1; pageIdx <= pageCount; pageIdx++) {
        container.append(createPage(pageIdx, o));
    }
    //container.append('<div id="test" class="clear">&nbsp;</div>');
    return container;
}

function createPage(pageIdx, o) {
    var settings = $.extend({
        gulf: false
    }, o);
    var classString = (pageIdx == result_currentPage) ? "result_pager_selected" : "";
    var element = $('<a onclick="showResultPage(' + (pageIdx - 1).toString() + ', {gulf: ' + settings.gulf.toString() + '}); return false;" href="">' + pageIdx.toString() + '</a>')
        .addClass(classString);
    return element;
}

function addPagers(resultElementBefore,resultElementAfter, pager, pagerClass, isVisible) {
    var resultPager = pager.clone();
    resultPager.addClass(pagerClass);
    if (isVisible) {
        resultPager.show();
    }
    else {
        resultPager.hide();
    }
    resultElementBefore.before(resultPager);
    //resultElementBefore.before('<div class="clear">&nbsp;</div>');
    resultElementAfter.after(resultPager.clone());
}

function showResultPage(pageNo, o) {
    result_currentPage = pageNo;
    $('.result_pager a').removeClass("result_pager_selected");
    $('.result_pager').each(function () {
        $(this).find("a").eq(pageNo).addClass("result_pager_selected");
    });
    updateResult(o);
}

function updateResult(o) {
    var settings = $.extend({
        gulf: false
    }, o);

    $.ajaxLoadingStatus({ text: $.tr('Hämtar sökresultat, var god vänta.') });

    $.ajax({
        type: 'GET',
        contentType: 'application/json',
        url: '/webservices/carproductsearch.svc/TakePageFromResult?page='
            + result_currentPage + '&pageSize=' + getPageSize(o)
            + '&sortColumn=' + result_sortColumn + '&sortDescending=' + result_sortDescending
            ,
        dataType: 'json',
        processData: false,
        success: function (p) {
            if ($.ajaxErrorHandler(p)) {
                $.globalProductList(p.d, { gulf: settings.gulf });

                //removing ajax loading animation
                $.ajaxLoadingStatus({ create: false, update: false });
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $.showErrorMessage($.tr('Någonting gick fel när sidan försökte uppdatera sökresultatet!'));
        }
    });
}

function changeSort(sortColumn) {
    if (sortColumn == result_sortColumn) {
        result_sortDescending = !result_sortDescending;
    }
    else {
        result_sortDescending = false;
        result_sortColumn = sortColumn;
    }
    showResultPage(0);
}

function getArrayFilterAnchorById(elementId) {

    var arr = $(elementId + ' li .active').map(function () {
        var value = $(this).attr('title');
        if (value.indexOf("&") != -1) {
            return escape($(this).attr('title'));
        }
        else {
            return encodeURI($(this).attr('title'));
        }
    }).get();
    return arr;
}

$.applyFilter = function () {
    var filterString = $("input.filter").val();
    var articleGroupDescs = getArrayFilterAnchorById("#articleGroupsFilter");
    var articleManufacturers = getArrayFilterAnchorById("#articleManufacturersFilter");
    if (filterString.length < filter_min_length) {
        alert($.tr('Du måste skriva minst ') + filter_min_length + $.tr(' tecken innan du kan filtrera svaret. '));
        return;
    }
    $.filterResult(filterString, articleGroupDescs, articleManufacturers);
}

$.applyFilterGroups = function () {
    var filterString = $("input.filter").val();
    var articleGroupDescs = getArrayFilterAnchorById("#articleGroupsFilter");
    var articleManufacturers = getArrayFilterAnchorById("#articleManufacturersFilter");
    $.filterResult(filterString, articleGroupDescs, articleManufacturers);
}

function clearFilterOptionsClass() {
    $('#articleGroupsFilter .active').each(function () {
        $(this).removeClass();
    });

    $('#articleManufacturersFilter .active').each(function () {
        $(this).removeClass();
    });
}

$.clearFilter = function () {
    $("input.filter").val('')
    clearFilterOptionsClass();
    $.filterResult('', '', '');
}

$.filterResult = function (filterString, articleGroupDescs, articleManufacturers) {
    //addning ajax loading animation
    $.ajaxLoadingStatus({ text: $.tr('Filtrerar sökresultat, var god vänta.') });
    jsonArticleGroupDescs = JSON.stringify(articleGroupDescs);
    jsonArticleManufacturers = JSON.stringify(articleManufacturers);

    $.ajax({
        type: 'GET',
        contentType: 'application/json',
        url: '/webservices/carproductsearch.svc/ApplyFilterToResult?filter=' + encodeURI(filterString) + "&articleGroupdDesc=" + jsonArticleGroupDescs + "&articleManufacturers=" + jsonArticleManufacturers,
        dataType: 'json',
        processData: false,
        success: function (p) {
            $('#filtrera').focus().select();
            //removing ajax loading animation
            $.ajaxLoadingStatus({ create: false, update: false });
            updatePager({ gulf: latestSearchWasGulf }, true);
            showResultPage(0, { gulf: latestSearchWasGulf });
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $.showErrorMessage($.tr('Någonting gick fel när sidan försökte filtrera sökresultatet!'));
        }
    });
}



//SAVE GLOBAL SEARCH LIST AND TOGGLE VIEWS
$.globalProductList = function (result, o) {
    if (result == null) {
        return;
    }
    //setting settings
    var settings = $.extend({
        gulf: false
    }, o);

    //updating if price should be shown with vat or not
    $.updateIsShowPriceWithVAT();

    //saving product list to global element
    globalProductList = result.Products;
    globalQuestions = result.UnansweredConditions;

    if (result.Products != null) {
        $.showProducts(settings);
    }
    else {
        $.showConditionQuestions();
    }
}

$.showProducts = function (settings) {
    //toggling search result header
    var view = $.toggleSearchResultHeader({ gulf: settings.gulf });

    if (settings.gulf) {
        if (user.auth) {
            var gulfCookie = $.cookieMonster({ get: gulfCookieName });
            if (gulfCookie) {
                if (gulfCookie[0] == 'true') {
                    if (view == 'image')
                        $.publishProductImageListFromArray(globalProductList);
                    if (view == 'list')
                        $.publishProductListFromArray(globalProductList);
                }
                else {
                    $.publishProductGulfListFromArray(globalProductList);
                }
            }
        }
        else {
            $.publishProductGulfListFromArray(globalProductList);
        }
    }
    else {
        if (view == 'image')
            $.publishProductImageListFromArray(globalProductList);
        if (view == 'list')
            $.publishProductListFromArray(globalProductList);
    }

    //clearing filter input
    //$("input.filter").val('');
    //binding price pop up links
    $('.pricepop').offerPricesPopup();
    //binding add returl url function
    $('.returl').addReturnUrl(true);

    $("#news_and_campaingn_products").hide();
    $("#PageTitle").hide();
    $("#standard").hide();

    $('body, html').animate({ scrollTop: ($(page_scroll_to[0]).offset().top - 5) + 'px' }, 750);
    page_scroll_to[0] = page_scroll_to[1];
}

function getCurrentView(o) {
    var settings = $.extend({
        gulf: false
    }, o);

    if (settings.gulf && !user.auth) {
        return 'image';
    }

    var viewCookie = 'viewCookie';
    var currentCookie = $.cookieMonster({ get: viewCookie });
    //setting active button and cookie
    if (currentCookie) {
        return currentCookie[0];
    }
    else {
        currentCookie = $.cookieMonster({ set: viewCookie, value: 'list', totalNumberOfSaves: 1 });
        return 'list';
    }
}

function getPageSize(o) {
    var settings = $.extend({
        gulf: false
    }, o);

    if (getCurrentView(o) == 'image') {
        return result_image_pageSize;
    }
    else {
        return result_list_pageSize;
    }
}

//TOGGLE SEARCH RESULT HEADER
$.toggleSearchResultHeader = function (o) {
    var settings = $.extend({
        gulf: false
    }, o);

    try {
        var $searchresultheader = $('#searchresultheader');
        var $resultPager = $("#resultPager");
        var gulfCookie = $.cookieMonster({ get: gulfCookieName });
        var a = 'active';

        var $ctrls = $resultPager.find('.ctrls');
        $ctrls.html('');
        var $title = $('<div class="title">' + $.tr('Välj visningsläge:') + '</div>').appendTo($ctrls);
        var $imageView = $('<a class="sort image active" href="">' + $.tr('Bildläge') + '</a>').appendTo($ctrls);
        var $listView = $('<a class="sort list" href="">' + $.tr('Listläge') + '</a>').appendTo($ctrls);
        $ctrls.append('<div class="clear">&nbsp;</div>');

        //if user performed a gulf search
        if (settings.gulf) {
            if (user.auth && gulfCookie) {
                if (gulfCookie[0] == 'false') {
                    $ctrls.html('');
                }
            }
            else {
                $ctrls.html('');
            }
        }
        //if user is logged in and performed a gulf search
        if (settings.gulf && user.auth) {
            $('<form id="forcePageReload" style="display:none;" method="post" action="' + location.href + '"></form>').appendTo($ctrls);
            if (!gulfCookie) {
                gulfCookie = $.cookieMonster({ set: gulfCookieName, value: 'false', totalNumberOfSaves: 1 });
            }
            if (gulfCookie[0] == 'false') {
                $('<a href="">' + $.tr('Aktivera vanlig listning!') + '</a>').click(function () {
                    gulfCookie = $.cookieMonster({ set: gulfCookieName, value: 'true', totalNumberOfSaves: 1 });
                    alert($.tr('Vanlig listning är aktiverad!\nSökningen kommer nu automatiskt att göras om, var god gör om din sökning om detta misslyckas.\n\nTack!'));
                    $('#forcePageReload').submit();
                    return false;
                }).css({
                    'display': 'block',
                    'margin': '3px 10px 0 0'
                }).appendTo($ctrls);
            }
            else if (gulfCookie[0] == 'true') {
                $title.html('Välj eller ').css('font-size', '12px');
                $title.append($('<a href="">' + $.tr('stäng av vanlig listning') + '</a>').click(function () {
                    gulfCookie = $.cookieMonster({ set: gulfCookieName, value: 'false', totalNumberOfSaves: 1 });
                    alert($.tr('Vanlig listning är avstängd!\nSökningen kommer nu automatiskt att göras om, var god gör om din sökning om detta misslyckas.\n\nTack!'));
                    $('#forcePageReload').submit();
                    return false;
                }));
            }
        }

        var viewCookie = 'viewCookie';

        var currentCookie = $.cookieMonster({ get: viewCookie });

        //showing header if hidden
        if ($searchresultheader.css('display') == 'none') {
            $searchresultheader.show();
        }
        //removing active class
        $imageView.removeClass(a);
        $listView.removeClass(a);

        //setting active button and cookie
        if (currentCookie) {
            if (currentCookie[0] == 'image')
                $imageView.addClass(a);
            if (currentCookie[0] == 'list')
                $listView.addClass(a);
        }
        else {
            currentCookie = $.cookieMonster({ set: viewCookie, value: 'image', totalNumberOfSaves: 1 });
            $imageView.addClass(a);
        }

        //bining buttons
        $imageView
        .unbind('click')
        .click(function () {
            $imageView.removeClass(a);
            $listView.removeClass(a);
            $(this).addClass(a);
            $.cookieMonster({ set: viewCookie, value: 'image', totalNumberOfSaves: 1 });
            $(".image_pager").show();
            $(".list_pager").hide();
            //$.publishProductImageListFromArray(globalProductList);
            showResultPage(0, { gulf: settings.gulf });
            return false;
        });

        $listView
        .unbind('click')
        .click(function () {
            $imageView.removeClass(a);
            $listView.removeClass(a);
            $(this).addClass(a);
            $.cookieMonster({ set: viewCookie, value: 'list', totalNumberOfSaves: 1 });
            $(".image_pager").hide();
            $(".list_pager").show();
            //$.publishProductListFromArray(globalProductList);
            showResultPage(0, { gulf: settings.gulf });
            return false;
        });

        return currentCookie[0];
    }
    catch (e) {
        $.showErrorMessage($.tr('Någonting gick fel när sidan försökte visa filtrering och listfunktioner till produktlistan'));
    }
}


//FUNCTION TO CREATE SEARCH LIST HEADER
var container_slh;
$.createSearchListHeaderObject = function () {
    //creating header holder
    container_slh = $('<tr />').addClass('header');
    //addning headers
    container_slh.append('<th class="sort" colspan="2">' + $.tr('Sortera:') + '</th>');
    container_slh.append($('<th class="artnr" />').append($('<a href="" onclick="javascript: changeSort(\'artnr\'); return false;">' + $.tr('Artikel nr.') + '</a>')));
    container_slh.append($('<th class="desc" />').append($('<a href="" onclick="javascript: changeSort(\'artbeskr\'); return false;">' + $.tr('Beskrivning') + '</a>')));
    container_slh.append($('<th class="c invent">' + $.tr('Saldo') + '</th>'));
    container_slh.append($('<th class="r price">' + $.tr('Rek.inkl.') + '</th>'));
    if (user.auth && user.net) {
        container_slh.append($('<th class="r price">' + $.tr('Netto') + '</th>'));
        container_slh.append('<th class=""><input type="checkbox" id="isShowPriceWithVATHeader" class="netPriceChk" /></th>');
    }
    container_slh.append('<th class="c">' + $.tr('Antal') + '</th>');
    container_slh.append('<th colspan="2"></th>');

    return container_slh;
}


//PUBLISH SEARCH LISTS
$.publishProductListFromArray = function (list) {
    latestSearchWasGulf = false;
    if ($.isArray(list)) {
        //cleaning list if needed
        if ($searchlist != undefined)
            $searchlist.html('').hide();
        //fetching search result list container
        $searchlist = $('#search_result_list');
        //showing list if hidden
        if ($searchlist.css('display') == 'none')
            $searchlist.show();

        if (list.length == 0) {
            $.showEmptyResult($searchlist);
            return;
        }

        //creating header
        var $searchlistheaders = $($.createSearchListHeaderObject()).appendTo($searchlist);

        //publishing search result
        var $searchlistitems;
        var $listColumnCount = (user.auth && user.net) ? 11 : 9;
        var rowCounter = 0;
        for (var i in list) {
            addProductRow(rowCounter, list[i], false, $listColumnCount);
            rowCounter++;
            if (list[i].AlternativeArticles != null) {
                $searchlist.append('<tr class="alt_separator"><td colspan="' + $listColumnCount + '">' + $.tr('Alternativa artiklar till ') + '' + list[i].ArticleNo + '</td></tr>');
                for (var ii in list[i].AlternativeArticles) {
                    addProductRow(rowCounter, list[i].AlternativeArticles[ii], true, $listColumnCount);
                    rowCounter++;
                }
            }

        }

        //swapping images if needed
        if ($.exeptionbrowser(6)) {
            $searchlist.find('.button, .rockbottom').swapSensitiveImagesOnRequest();
        }

        //binding button animations
        $searchlist.find('.button').globlaGoButtonAnimation();
        $searchlist.find('.button.save').unbind('click');
        $searchlist.find('.button.save').bind('click', $.saveProductToTemplate);
        $searchlistheaders.find("#isShowPriceWithVATHeader").isShowPriceWithVAT();

    } //if ($.isArray(list)) END
    else {
        $.showResultNotAnArray();
    }

    //break out!
    function addProductRow(i, listobj, alternative, $listColumnCount) {
        //creating list holder
        if (!alternative)
            $searchlistitems = $('<tr />').appendTo($searchlist);
        if (alternative)
            $searchlistitems = $('<tr class="alt" />').appendTo($searchlist);
        //appending list items
        //$searchlistitems.append('<td>' + listobj.MainImage.ImageVirtualPath + '</td>'); INSERT LATER: IMAGE
        //$searchlistitems.append('<td class="noBG img"><img src="/files/dev/listview_noimage.png" alt="Ingen bild tillgänglig" /></td>'); //Image temp
        $searchlistitems.append('<td class="noBG img"><table><tr><td><a class="returl" href="' + gBaseUrl + 'ProductDetails.aspx?articleNo=' + listobj.ArticleNo + '"><img src="' + $.getImage({ src: listobj.MainImage.ImageVirtualPath, width: 50, height: 50, crop: 5 }) + '" alt="' + listobj.ArticleNo + '" /></a></td></tr></table></td>'); //Image temp
        if (user.auth && user.net) {
            $searchlistitems.append('<td class="noBG actions"><a class="button info returl" href="' + gBaseUrl + 'ProductDetails.aspx?articleNo=' + listobj.ArticleNo + '">' + $.tr('Information') + '</a><a rel="' + listobj.ArticleNo + ';productQuantity' + i + '" class="button save" href="">' + $.tr('Spara') + '</a></td>'); //Actions
        }
        else {
            $searchlistitems.append('<td class="noBG actions"><a class="button info returl" href="' + gBaseUrl + 'ProductDetails.aspx?articleNo=' + listobj.ArticleNo + '">' + $.tr('Information') + '</a></td>'); //Actions
        }
        $searchlistitems.append('<td class="first"><a class="returl" href="' + gBaseUrl + 'ProductDetails.aspx?articleNo=' + listobj.ArticleNo + '">' + listobj.ArticleNo + '</a></td>');
        $searchlistitems.append('<td class="desc">' + formatDescription(listobj.Description, listobj.VehicleSpecificInformation) + '</td>');
        $searchlistitems.append('<td class="c"' + $.getInvCountStyle(listobj.InventoryCount) + '>' + listobj.InventoryCountDescription + '</td>');
        $searchlistitems.append('<td class="r price">' + listobj.ListPrice.toFixed(0) + ' ' + listobj.CurrencyCode + '</td>');
        if (user.auth && user.net) {
            if (globalShowPriceWithVat) {
                $searchlistitems.append('<td class="r price"><a rel="' + listobj.ArticleNo + '" class="pricepop pricewithnovat" href="">' + listobj.NetPrice.toFixed(0) + ' ' + listobj.CurrencyCode + '</a></td>');
                if (listobj.HasRockBottomPrice) {
                    $searchlistitems.append('<td class="c rock"><a rel="' + listobj.ArticleNo + '" class="pricepop pricewithnovat" href=""><img class="rockbottom" src="/files/prod/rock_bottom_small-24bit.png" alt="" /></a></td>');
                }
                else {
                    $searchlistitems.append('<td class="c rock"></td>');
                }
            }
            else {
                $searchlistitems.append('<td class="r price"><a rel="' + listobj.ArticleNo + '" style="display:none;" class="pricepop pricewithnovat" href="">' + listobj.NetPrice.toFixed(0) + ' ' + listobj.CurrencyCode + '</a></td>');
                if (listobj.HasRockBottomPrice) {
                    $searchlistitems.append('<td class="c rock"><a rel="' + listobj.ArticleNo + '" style="display:none;" class="pricepop pricewithnovat" href=""><img class="rockbottom" src="/files/prod/rock_bottom_small-24bit.png" alt="" /></a></td>');
                }
                else {
                    $searchlistitems.append('<td class="c rock">&nbsp;</td>');
                }
            }
        }
        if (listobj.Salable != "2") {
            $searchlistitems.append('<td class="c input"><input id="productQuantity' + i + '" type="text" value="1" /></td>');
            $searchlistitems.append('<td class="r add"><input id="addProduct' + i + '" class="button add" type="button" value="' + $.tr('Köp') + '" /></td>');
        }
        else {
            $searchlistitems.append('<td colspan="2" class="outgoing"><strong>' + $.tr('Utgått') + '</strong></td>');
        }
        $searchlistitems.append('<input type="hidden" id="articleNo' + i + '" value="' + listobj.ArticleNo + '" />');
        $searchlistitems.append('<td class="noBG last">&nbsp;</td>');

        if (listobj.ExtraInformation != "" || listobj.ReplacedArticleNo != "") {
            if (!alternative)
                $searchlistextrainfo = $('<tr />').appendTo($searchlist);
            if (alternative)
                $searchlistextrainfo = $('<tr class="alt extra" />').appendTo($searchlist);
            $searchlistextrainfo.append('<td class="noBG" colspan="2">&nbsp;</td>');
            $searchlistextrainfo.append('<td class="extra_desc" colspan="' + ($listColumnCount - 3) + '">' + formatExtraInformation(listobj.ExtraInformation, listobj.ReplacedArticleNo) + '</td>');
            $searchlistextrainfo.append('<td class="noBG last">&nbsp;</td>');
        }
        //inserting seperator
        $searchlist.append('<tr class="seperator"><td colspan="' + $listColumnCount + '">&nbsp;</td></tr>');

        //adding function to add product to cart
        $($searchlist.find('#addProduct' + i)).bind('click', { artNo: $('#articleNo' + i).val(), quantity: $('#productQuantity' + i) }, $.addProductToCart);
        $.bindReturnKey($searchlistitems.find('#productQuantity' + i), function () { $('#addProduct' + i).click(); });
    }
}

function formatExtraInformation(extraInfo, replacedNo) {
    var infoString = $.tr('Info: ');
    if (extraInfo != "") {
        infoString += extraInfo;
        if (replacedNo != "")
            infoString += "<br />";
    }
    if (replacedNo != "") {
        infoString += $.tr('Ersätter ') + replacedNo;
    }
    return infoString;
}

$.fn.offerPricesPopup = function (o) {
    var s = $.extend({
        modifyOverlay: true
    }, o);
    $(this).click(function () {
        var plist, $ptable, $prow, $pcont, ww, wh, wst, $pclose, pch;
        if (s.modifyOverlay)
            $.toggleOverylay();
        $.ajax({
            type: 'GET',
            contentType: 'application/json',
            url: '/webservices/ProductService.svc/GetPriceListByArticleNo?articleNo=' + this.rel,
            dataType: 'json',
            processData: false,
            success: function (p) {
                if ($.ajaxErrorHandler(p)) {
                    plist = p.d.Prices;
                    //creating table
                    $ptable = $('<table />');
                    //creating header row
                    $prow = $('<tr />')
                            .append('<th>' + $.tr('Artikelnr.') + '</th>')
                            .append('<th>' + $.tr('Lägsta antal') + '</th>')
                            .append('<th>' + $.tr('Rek ink') + '</th>')
                            .append('<th>' + $.tr('Rek ex') + '</th>')
                            .append('<th>' + $.tr('Rabatt') + '</th>')
                            .append('<th>' + $.tr('Netto.') + '</th>').appendTo($ptable);
                    for (var i in plist) {
                        //creating header row
                        $prow = $('<tr />')
                                .append('<td>' + plist[i].ArticleNumber + '</td>')
                                .append('<td>' + plist[i].LowLimitNumber + '</td>')
                                .append('<td>' + (parseInt(plist[i].Price) * 1.25).toFixed(0) + ' ' + plist[i].Currency + '</td>')
                                .append('<td>' + plist[i].Price.toFixed(0) + ' ' + plist[i].Currency + '</td>')
                                .append('<td>' + plist[i].Discount + '%</td>')
                                .append('<td>' + (plist[i].Price * (1 - (plist[i].Discount / 100))).toFixed(0) + ' ' + plist[i].Currency + '</td>').appendTo($ptable);
                    }
                    //creating container
                    $pcont = $('<div />');
                    $ptable.css('width', '100%').appendTo($pcont);
                    $pclose = $('<div />').css({
                        'text-align': 'right',
                        'margin': '20px 0 0'
                    }).append($('<a href="">' + $.tr('Stäng.') + '</a>').css({
                        'color': '#46B0D7',
                        'text-decoration': 'none'
                    }).click(function () {
                        $pcont.remove();
                        if (s.modifyOverlay)
                            $.toggleOverylay();
                        return false;
                    })).appendTo($pcont);
                    $pcont.prependTo('body');

                    ww = $(window).width();
                    wh = $(window).height();
                    wst = $(document).scrollTop();
                    pch = $pcont.outerHeight();
                    $pcont.css({
                        'background': '#1F1F1F',
                        'padding': '20px',
                        'width': '500px',
                        'position': 'absolute',
                        'top': ((wh / 2) + wst) - (pch / 2) + 'px',
                        'left': (ww / 2) - (540 / 2) + 'px',
                        'color': '#fff',
                        'z-index': '1005'
                    })
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $.showErrorMessage($.tr('Någonting gick fel när sidan försökte hämta prislista!'));
            }
        });
        return false;
    });
}

$.getInvCountStyle = function (inventoryCount) {
    return (inventoryCount > 0)
        ? ' style="color: green;" '
        : ' style="color: red;" ';
}

$.showResultNotAnArray = function (container) {
    container
        .html('<tr class="noRows"><td><div class="no_search_result">' + $.tr('Ett fel uppstod när resultatet skulle visas. Vänligen ladda om sidan och försök igen.') + '</div></td></tr>')
        .show();
}

$.showEmptyResult = function (container) {
    container
        .html('<tr class="noRows"><td><div class="no_search_result">' + $.tr('Din sökning gav inte något svar.') + '</div></td></tr>')
        .show();
}

//SAVE PRODUCT TO TEMPLATE
var $TemplateHolder, otDropDown, otInput, otButton, otClose, OrderTamplate, OrderTemplateName, saveArtNo, saveQuantity, saveButtonRel;
var otQuantityInput;
$.saveProductToTemplate = function () {
    saveButtonRel = this.rel.split(';');
    saveArtNo = saveButtonRel[0];
    saveQuantity = $('#' + saveButtonRel[1]).val();

    //grabbing order templates
    $.ajax({
        type: 'GET',
        contentType: 'application/json',
        url: '/webservices/ordertemplateservice.svc/GetOrderTemplates',
        dataType: 'json',
        processData: false,
        success: function (p) {
            if ($.ajaxErrorHandler(p)) {
                //saving result list
                OrderTamplate = p.d.OrderTemplates;
                //creating new array to save template names in, this we use later when saving to check if the new name is uniqe
                OrderTemplateName = new Array();
                //creating container
                $TemplateHolder = $('<div id="prodSaveToTemplate" />');
                //creating drop down
                otDropDown = $('<select />');
                //filling drop down with order templaes
                otDropDown.append('<option value="-1">' + $.tr('Välj mall här eller ange namn på ny mall i textrutan bredvid...') + '</option>');
                for (var i in OrderTamplate) {
                    otDropDown.append('<option value="' + OrderTamplate[i].TemplateId + '">' + OrderTamplate[i].Description + '</option>');
                    OrderTemplateName[i] = OrderTamplate[i].Description;
                }
                //creating template name input
                otInput = $('<input class="input" type="text" />');
                //creating order template save button
                otButton = $('<input class="global_button_green" type="button" value="' + $.tr('Spar') + '" />');
                //creating close button
                otClose = $('<input class="global_button_red" type="button" value="' + $.tr('Avbryt') + '" />');
                //binding change event to drop down and appending it to holder
                otDropDown.change(function () {
                    if (parseInt(this.value) >= 0) {
                        otInput.attr('disabled', 'disabled');
                    }
                    else {
                        otInput.removeAttr('disabled');
                    }
                }).prependTo($TemplateHolder);
                //binding events to order template name input and appending it to holder
                otInput.bind('click change keyup keydown focus blur', function () {
                    if (this.value != '') {
                        otDropDown.attr('disabled', 'disabled');
                    }
                    else {
                        otDropDown.removeAttr('disabled');
                    }
                }).appendTo($TemplateHolder);
                $('<div style="float: left">Antal: </div>').appendTo($TemplateHolder);
                otQuantityInput = $('<input type="text" style="width: 30px" />').val(saveQuantity).appendTo($TemplateHolder);
                //creating variables to check if name is uniqe
                var uniqe;
                var currentname;
                //binding click to save button and appending it to holder
                otButton.click(function () {
                    if (otDropDown.attr('disabled')) {
                        //this happens if user defined new name
                        uniqe = true;
                        currentname = otInput.val();
                        for (var i in OrderTemplateName) {
                            if (currentname == OrderTemplateName[i]) {
                                uniqe = false;
                                break;
                            }
                        }
                        if (uniqe) {
                            //saving article to new template
                            $.ajax({
                                type: 'GET',
                                contentType: 'application/json',
                                url: '/webservices/ordertemplateservice.svc/AddOrderTemplateRow?templateName=' + currentname + '&articleNo=' + saveArtNo + '&quantity=' + otQuantityInput.val(),
                                dataType: 'json',
                                processData: false,
                                success: function (p) {
                                    if ($.ajaxErrorHandler(p)) {
                                        p = undefined;
                                        $.ajaxLoadingStatus({ create: false, update: false });
                                        alert($.tr('Sparning till mall lyckades!'));
                                    }
                                },
                                error: function (XMLHttpRequest, textStatus, errorThrown) {
                                    $.showErrorMessage($.tr('Någonting gick fel när sidan försökte spara produkt till mall!'));
                                }
                            });
                        }
                        else {
                            alert($.tr('Om du vill spara till ny mall, måste du ange ett unikt namn!'));
                        }
                    }
                    else if (otInput.attr('disabled')) {
                        //this happens if user chose to save article to exsisting template
                        currentname = otDropDown.find('option:selected').html();
                        $.ajax({
                            type: 'GET',
                            contentType: 'application/json',
                            url: '/webservices/ordertemplateservice.svc/AddOrderTemplateRow?templateName=' + currentname + '&articleNo=' + saveArtNo + '&quantity=' + saveQuantity,
                            dataType: 'json',
                            processData: false,
                            success: function (p) {
                                if ($.ajaxErrorHandler(p)) {
                                    p = undefined;
                                    $.ajaxLoadingStatus({ create: false, update: false });
                                    alert($.tr('Sparning till mall lyckades!'));
                                }
                            },
                            error: function (XMLHttpRequest, textStatus, errorThrown) {
                                $.showErrorMessage($.tr('Någonting gick fel när sidan försökte spara produkt till mall!'));
                            }
                        });
                    }
                    else {
                        alert($.tr('Du måste antingen välja en existerande mall eller ange ett namn på en ny mall!'));
                    }
                }).appendTo($TemplateHolder);
                //binding click to close button and appending it to holder
                otClose.click(function () {
                    $TemplateHolder.remove();
                    $.ajaxLoadingStatus({ create: false, update: false });
                }).appendTo($TemplateHolder);

                //appending clear div to holder
                $('<div class="clear">&nbsp;</div>').appendTo($TemplateHolder);

                $.ajaxLoadingStatus({ text: $TemplateHolder });
                $status.find('img').remove();
                //$TemplateHolder.prependTo('body');
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $.showErrorMessage($.tr('Någonting gick fel när sidan försökte spara produkt till mall!'));
        }
    });

    return false;
}




function formatDescription(description, vehicleSpecific) {
    var appendString = (vehicleSpecific != null)
        ? " -> " + vehicleSpecific
        : "";
    return description + appendString;
}

//PUBLISH SEARCH LISTS (IMAGE VIEW)
$.publishProductImageListFromArray = function (list) {
    latestSearchWasGulf = false;
    try {
        if ($.isArray(list)) {
            //cleaning list if needed
            if ($searchlist != undefined)
                $searchlist.html('').hide();
            var $searchlistitem;
            var clear = '<div class="clear">&nbsp;</div>';
            $searchlist = $('#search_result_image_list');

            if (list.length == 0) {
                $.showEmptyResult($searchlist);
                return;
            }

            //creating header
            var $searchlistheaders = $($.createSearchListHeaderObject()).appendTo($searchlist).wrap('<table id="search_result_list" />');

            //showing list if hidden
            if ($searchlist.css('display') == 'none')
                $searchlist.show();
            for (var i in list) {
                //creating item
                $searchlistitem = $('<div class="product_card_samll' + ((i + 1) % 3 == 0 ? ' last' : '') + '"><div class="container"><div class="content"></div></div></div>').appendTo($searchlist);

                //creating item content
                $searchlistitem.find('.content').append('<div class="top"><div class="pleft"></div><div class="pright"></div>' + clear + '</div>');
                $searchlistitem.find('.content').append('<div class="long_desc"></div>');
                $searchlistitem.find('.content').append('<div class="middle"><table><tr><td></td></tr></table></div>' + clear);
                $searchlistitem.find('.content').append('<div class="quantity_and_amount"></div>' + clear);
                $searchlistitem.find('.content').append('<div class="bottom"><div class="pleft"></div><div class="pright"></div></div>');



                //append to div: .top
                $searchlistitem.find('.top .pleft').append('<div class="title"><a class="returl" href="' + gBaseUrl + 'ProductDetails.aspx?articleNo=' + list[i].ArticleNo + '">' + list[i].ArticleNo + '</a></div>');

                if (user.auth)
                    $searchlistitem.find('.top .pright').append('<a rel="' + list[i].ArticleNo + ';productQuantity' + i + '" class="button save" href="">' + $.tr('Spara som mall') + '</a>');

                $searchlistitem.find('.top .pright').append('<a class="infobutton returl" href="' + gBaseUrl + 'ProductDetails.aspx?articleNo=' + list[i].ArticleNo + '">' + $.tr('Info') + '</a>' + clear);



                //append to div: .long_desc
                $searchlistitem.find('.long_desc').append('<div class="desc1"><a class="returl" href="' + gBaseUrl + 'ProductDetails.aspx?articleNo=' + list[i].ArticleNo + '">' + truncateString(list[i].Description, 30) + '</a></div>');
                $searchlistitem.find('.long_desc').append('<div class="desc1_replace">' + (list[i].ReplacedArticleNo != '' ? '' + $.tr('Ersätter: ') + '' + list[i].ReplacedArticleNo : '') + '</div>');
                var extraText = getExtraText(list[i]);
                $searchlistitem.find('.long_desc').append('<div class="desc2">' + (extraText != '' ? '<a class="returl" href="' + gBaseUrl + 'ProductDetails.aspx?articleNo=' + list[i].ArticleNo + '">' + truncateString(extraText, 65) + '</a>' : '') + '</div>');



                //append to div: .middle
                $searchlistitem.find('.middle table tr td').append('<a class="returl" href="' + gBaseUrl + 'ProductDetails.aspx?articleNo=' + list[i].ArticleNo + '"><img src="' + $.getImage({ src: list[i].MainImage.ImageVirtualPath, width: 170, height: 160, crop: 5 }) + '" alt="' + list[i].ArticleNo + '" /></a>');


                //append to div: .quantity_and_amount
                $searchlistitem.find('.quantity_and_amount').append(
                    '<div class="inventory_wrapper">' +
                    '<div class="inventory"' + $.getInvCountStyle(list[i].InventoryCount) + '>' + list[i].InventoryCountDescription + '</div>' +
                    '<div class="input"><span><input type="text" id="productQuantity' + i + '" value="1" /></span><div>' + globalAmountText + '</div>' + clear + '</div></div>'
                    );

                //append to div: .bottom
                if (user.auth && user.net) {
                    if (globalShowPriceWithVat) {
                        $searchlistitem.find('.bottom .pleft').append('<div class="pricewithnovat">' + $.tr('nettopris') + '<div class="price"><a rel="' + list[i].ArticleNo + '" class="pricepop" href="">' + list[i].NetPrice.toFixed(0) + '&nbsp;' + list[i].CurrencyCode + '</a></div></div>');
                        $searchlistitem.find('.bottom .pleft').append('<div style="display:none;" class="pricewithvat">' + $.tr('rek.inkl.moms') + '<div class="price">' + list[i].ListPrice.toFixed(0) + '&nbsp;' + list[i].CurrencyCode + '</div></div>');
                    }
                    else {
                        $searchlistitem.find('.bottom .pleft').append('<div style="display:none;" class="pricewithnovat">' + $.tr('nettopris') + '<div class="price"><a rel="' + list[i].ArticleNo + '" class="pricepop" href="">' + list[i].NetPrice.toFixed(0) + '&nbsp;' + list[i].CurrencyCode + '</a></div></div>');
                        $searchlistitem.find('.bottom .pleft').append('<div class="pricewithvat">' + $.tr('rek.inkl.moms') + '<div class="price">' + list[i].ListPrice.toFixed(0) + '&nbsp;' + list[i].CurrencyCode + '</div></div>');
                    }
                }
                else
                    $searchlistitem.find('.bottom .pleft').append('' + $.tr('rek.inkl.moms') + '<div class="price">' + list[i].ListPrice.toFixed(0) + '&nbsp;' + list[i].CurrencyCode + '</div>');
                if (user.auth) {
                    if (list[i].HasRockBottomPrice && user.net) {
                        if (globalShowPriceWithVat)
                            $searchlistitem.find('.quantity_and_amount').append('<a rel="' + list[i].ArticleNo + '" class="pricepop rockbottom" href=""><img class="pricewithnovat rb" src="/files/prod/rock_bottom_big.png" alt="Rock Bottom" /></a>');
                        else
                            $searchlistitem.find('.quantity_and_amount').append('<a rel="' + list[i].ArticleNo + '" class="pricepop rockbottom" href=""><img style="display:none;" class="pricewithnovat rb" src="/files/prod/rock_bottom_big.png" alt="Rock Bottom" /></a>');
                    }
                }
                if (list[i].Salable != "2") {
                    $searchlistitem.find('.bottom .pright').append('<input type="button" id="addProduct' + i + '" value="' + $.tr('Köp') + '" />');
                    $searchlistitem.find('.bottom .pright').append('<input type="hidden" id="articleNo' + i + '" value="' + list[i].ArticleNo + '" />');
                }
                else {
                    $searchlistitem.find('.bottom .pright').append('<strong class="outgoing">' + $.tr('Utgått') + '</strong>');
                }
                $searchlistitem.find('.bottom').append(clear);

                //adding function to add product to cart
                $($searchlistitem.find('#addProduct' + i)).bind('click', { artNo: $('#articleNo' + i).val(), quantity: $('#productQuantity' + i) }, $.addProductToCart);
                $.bindReturnKey($searchlistitem.find('#productQuantity' + i), function () { $('#addProduct' + i).click(); });
            }

            //binding button animations
            $searchlist.find('.button').globlaGoButtonAnimation();
            $searchlist.find('.button.save').unbind('click');
            $searchlist.find('.button.save').bind('click', $.saveProductToTemplate);
            $searchlistheaders.find("#isShowPriceWithVATHeader").isShowPriceWithVAT();
        }
        else {
            $.showResultNotAnArray($('#search_result_image_list'));
        }

        $searchlist.append('<div class="clear">&nbsp;</div>');
    }
    catch (e) {
        alert('Something went wrong with function: $.publishProductImageListFromArray');
        alert(e.Message);
    }
}

function truncateString(str, lngt) {
    return (str.length > lngt)
        ? $.trim(str.replace('<br>', '. ').replace('<br />', '. ').substring(0, lngt)) + '...'
        : str;
}

function formatReplacingIfSet(replacing) {
    return (replacing != "")
        ? "<br />" + replacing
        : "";
}

function getExtraText(product) {
    return (product.VehicleSpecificInformation != undefined && product.VehicleSpecificInformation != '')
        ? product.VehicleSpecificInformation
        : product.ExtraInformation;
}

//PUBLISH SEARCH LISTS (IMAGE VIEW / GULF)
$.publishProductGulfListFromArray = function (list) {
    latestSearchWasGulf = true;
    try {
        if ($.isArray(list)) {
            //cleaning list if needed
            if ($searchlist != undefined)
                $searchlist.html('').hide();
            var $searchlistitem;
            var clear = '<div class="clear">&nbsp;</div>';
            $searchlist = $('#search_result_image_list');

            if (list.length == 0) {
                $.showEmptyResult($searchlist);
                return;
            }

            //showing list if hidden
            if ($searchlist.css('display') == 'none')
                $searchlist.show();
            for (var i in list) {
                $searchlistitem = $('<div class="product_card_medium' + ((i + 1) % 2 == 0 ? ' last' : '') + '"><div class="container"><div class="content"></div></div></div>').appendTo($searchlist);
                $searchlistitem.find('.content').append('<div class="top"><div class="pleft"></div><div class="pright"></div>' + clear + '</div>');
                $searchlistitem.find('.content').append('<div class="middle"><div class="pleft"><table><tr><td></td></tr></table></div><div class="pright"></div>' + clear + '<div class="pbottom"></div>' + clear + '</div>');
                $searchlistitem.find('.content').append('<div class="bottom"><div class="pleft"></div><div class="pright"></div></div>');
                $searchlistitem.find('.top .pleft').append('<div class="title">' + list[i].ArticleNo + '</div>');
                $searchlistitem.find('.top .pleft').append('<div class="desc"></div>');
                $searchlistitem.find('.top .pright').append('&nbsp;');
                $searchlistitem.find('.middle .pleft table tr td').append('<img src="' + $.getImage({ src: list[i].MainImage.ImageVirtualPath, width: 100, height: 140, crop: 5 }) + '" alt="' + list[i].ArticleNo + '" />');
                $searchlistitem.find('.middle .pright').append('<div><strong>' + list[i].Description + '</strong><br/>' + list[i].ExtraInformation + '</div>');
                $searchlistitem.find('.middle .pbottom').append('<ul class="documentlist"></ul>');
                if (list[i].ArticleDocuments != null && list[i].ArticleDocuments.length > 0) {
                    $searchlistitem.find('.middle .pbottom .documentlist').append('<li><strong>' + $.tr('Ladda hem') + '</strong></li>');
                }
                if (list[i].ArticleDocuments != null) {
                    for (var j in list[i].ArticleDocuments) {
                        $searchlistitem.find('.middle .pbottom .documentlist').append('<li><a target="_blank" href="' + list[i].ArticleDocuments[j].DocumentVirtualPath + '">' + list[i].ArticleDocuments[j].DocumentName + '</a></li>');
                    }
                }
                $searchlistitem.find('.bottom').append(clear);
            }
        }
        else {
            $.showResultNotAnArray($('#search_result_image_list'));
        }

        $searchlist.append('<div class="clear">&nbsp;</div>');
    }
    catch (e) {
        alert('Something went wrong with function: $.publishProductImageListFromArray');
        alert(e.Message);
    }
}



//ADD PRODUCTS TO CART
$.addProductToCart = function (o) {
    if (o.data == undefined)
        var oo = o;
    else
        var oo = o.data;

    $.ajaxLoadingStatus({ text: $.tr('Lägger till produkt i kundkorg, var god vänta.') });
    var p = $.extend({
        updateCart: true,
        artNo: false,
        quantity: 1,
        url: '/webservices/basketservice.svc/addtobasket'
    }, oo);

    if (p.artNo) {
        $.ajax({
            url: p.url + '?articleNo=' + encodeURI(p.artNo) + '&quantity=' + p.quantity.val(),
            success: function (res) {
                
                if (hashSerializer.site != 'interchange' || hashSerializer.site != 'artnr') {
                    afterCartUpdatedCallback = function () {
                        $("#interFreeTextSearchInput").focus().select();
                        $(window).scrollTop($("#interFreeTextSearchInput").offset().top - 30);
                    }
                }
                if (p.updateCart) {
                    $.updateSmallCart();
                }
                else {
                    $.ajaxLoadingStatus({ create: false, update: false });
                }
                if (!res.d.Success) {
                    alert(res.d.ErrorMessage);
                }
                else if (res.d.ErrorMessage != null && res.d.ErrorMessage != "") {
                    $.jGrowl(res.d.ErrorMessage);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $.showErrorMessage($.tr('Någonting gick fel när sidan försökte lägga till produkt i kundkorgen!'));
            }
        });

    }
}



//UPDATE LATEST SEARCH LIST
$.fn.updateLatestSearchList = function (options) {
    try {
        if (navigator.cookieEnabled) {
            var settings = $.extend({
                trigger: false,
                list: false
            }, options);
            if ($.isArray(settings.list)) {
                if ($(this).children().length != 0) {
                    $(this).html('');
                }
                for (var i in settings.list) {
                    $(this).append('<li><a href="">' + settings.list[i] + '</a></li>');
                    $(this).find('a:last').click(function () {
                        settings.trigger($(this).html());
                        $("#selectArticleGroupListHolder").hide();
                        return false;
                    });
                }
            }
        }
    }
    catch (e) {
        alert('Something went wrong with function: $.fn.updateLatestSearchList');
        alert(e.Message);
    }
}




//RANDOM FUNCTIONS
//SWAP BETWEEN CHASSIE OR REG NO
$.swapRegChassie = function ($target) {
    var val = $target.find('.radio input:checked').val();
    $target.find('.area .hide').hide();
    $target.find('#' + val).show();
    $target.find('#' + val + 'Button').show();
    $target.find('#' + val + 'LatestSearchList').show();

    $target.find('.radio input').click(function () {
        val = $target.find('.radio input:checked').val();
        $target.find('.area .hide').hide();
        $target.find('#' + val).show();
        $target.find('#' + val + 'Button').show();
        $target.find('#' + val + 'LatestSearchList').show();
    });
}

//THA COOKIE CRUMBLES
var sep = '&nbsp;&gt;&nbsp;';
function crumbMonster(str, section) {
    var s = $.extend({
        s1: false,
        s2: false,
        s3: false,
        s4: false,
        click: false,
        marine: false
    }, section);

    //CAR
    if (!s.marine) {
        $('#getCarSearchPath').html($.tr('Du har valt: '));

        if (s.s1) {
            crumbArray[0] = [str, '#CarModels'];
            if (!s.click) {
                $('#getCarSearchPath')
                .append($('<a href="">' + crumbArray[0][0] + '</a>')
                    .bind('click', { name: crumbArray[0][0], panel: crumbArray[0][1], s: { s1: true, click: true} }, crumbMonsterHideAndSeek));
            }
            if (s.click) {
                $('#getCarSearchPath').hide();
            }
        }
        if (s.s2) {
            crumbArray[1] = [str, '#ulYearModels'];
            $('#getCarSearchPath')
            .append($('<a href="">' + crumbArray[0][0] + '</a>')
                .bind('click', { name: crumbArray[0][0], panel: crumbArray[0][1], s: { s1: true, click: true} }, crumbMonsterHideAndSeek)).append(sep);
            if (!s.click) {
                $('#getCarSearchPath').append($('<a href="">' + crumbArray[1][0] + '</a>')
                .bind('click', { name: crumbArray[1][0], panel: crumbArray[1][1], s: { s2: true, click: true} }, crumbMonsterHideAndSeek));
            }
        }
        if (s.s3) {
            crumbArray[2] = [str, '#ulModels'];
            $('#getCarSearchPath')
            .append($('<a href="">' + crumbArray[0][0] + '</a>')
                .bind('click', { name: crumbArray[0][0], panel: crumbArray[0][1], s: { s1: true, click: true} }, crumbMonsterHideAndSeek)).append(sep)
            .append($('<a href="">' + crumbArray[1][0] + '</a>')
                .bind('click', { name: crumbArray[1][0], panel: crumbArray[1][1], s: { s2: true, click: true} }, crumbMonsterHideAndSeek)).append(sep)
            if (!s.click) {
                $('#getCarSearchPath').append($('<a href="">' + crumbArray[2][0] + '</a>')
                .bind('click', { name: crumbArray[2][0], panel: crumbArray[2][1], s: { s3: true, click: true} }, crumbMonsterHideAndSeek));
            }
        }
        if (s.s4) {
            crumbArray[3] = [str, '#ulEngineTypes'];
            $('#getCarSearchPath')
            .append($('<a href="">' + crumbArray[0][0] + '</a>')
                .bind('click', { name: crumbArray[0][0], panel: crumbArray[0][1], s: { s1: true, click: true} }, crumbMonsterHideAndSeek)).append(sep)
            .append($('<a href="">' + crumbArray[1][0] + '</a>')
                .bind('click', { name: crumbArray[1][0], panel: crumbArray[1][1], s: { s2: true, click: true} }, crumbMonsterHideAndSeek)).append(sep)
            .append($('<a href="">' + crumbArray[2][0] + '</a>')
                .bind('click', { name: crumbArray[2][0], panel: crumbArray[2][1], s: { s3: true, click: true} }, crumbMonsterHideAndSeek)).append(sep);
            if (!s.click) {
                $('#getCarSearchPath').append($('<a href="">' + crumbArray[3][0] + '</a>')
                .bind('click', { name: crumbArray[3][0], panel: crumbArray[3][1], s: { s4: true, click: true} }, crumbMonsterHideAndSeek));
            }
            //Hiding big panel with car information
            $('#carInformationTable').hide();
        }
    }

    //MARINE
    if (s.marine) {
        $('#getMarineSearchPath').html($.tr('Du har valt: '));

        if (s.s1) {
            crumbArrayMarine[0] = [str, '#MarineModelsHolder'];
            if (!s.click) {
                $('#getMarineSearchPath')
                .append($('<a href="">' + crumbArrayMarine[0][0] + '</a>')
                    .bind('click', { name: crumbArrayMarine[0][0], panel: crumbArrayMarine[0][1], s: { s1: true, click: true, marine: true} }, crumbMonsterHideAndSeek));
            }
            if (s.click) {
                $('#getMarineSearchPath').hide();
            }
        }
        if (s.s2) {
            crumbArrayMarine[1] = [str.replace('%28', '(').replace('%29', ')').replace('%22', '\"'), '#ulMarineEnginesHolder, #ulMarineSprocketsHolder'];
            $('#getMarineSearchPath')
            .append($('<a href="">' + crumbArrayMarine[0][0] + '</a>')
                .bind('click', { name: crumbArrayMarine[0][0], panel: crumbArrayMarine[0][1], s: { s1: true, click: true, marine: true} }, crumbMonsterHideAndSeek)).append(sep);
            if (!s.click) {
                $('#getMarineSearchPath').append($('<a href="">' + crumbArrayMarine[1][0] + '</a>')
                .bind('click', { name: crumbArrayMarine[1][0], panel: crumbArrayMarine[1][1], s: { s2: true, click: true, marine: true} }, crumbMonsterHideAndSeek));
            }
        }
        if (s.s3) {
            crumbArrayMarine[2] = [str, '#ulMarineYearModelsHolder'];
            $('#getMarineSearchPath')
            .append($('<a href="">' + crumbArrayMarine[0][0] + '</a>')
                .bind('click', { name: crumbArrayMarine[0][0], panel: crumbArrayMarine[0][1], s: { s1: true, click: true, marine: true} }, crumbMonsterHideAndSeek)).append(sep)
            .append($('<a href="">' + crumbArrayMarine[1][0] + '</a>')
                .bind('click', { name: crumbArrayMarine[1][0], panel: crumbArrayMarine[1][1], s: { s2: true, click: true, marine: true} }, crumbMonsterHideAndSeek)).append(sep);
            if (!s.click) {
                $('#getMarineSearchPath').append($('<a href="">' + crumbArrayMarine[2][0] + '</a>')
                .bind('click', { name: crumbArrayMarine[2][0], panel: crumbArrayMarine[2][1], s: { s3: true, click: true, marine: true} }, crumbMonsterHideAndSeek));
            }
        }
    }
}

function crumbMonsterHideAndSeek(e) {
    //CAR
    if (!e.data.s.marine)
        $('#selectCarPanel ul, #selectCarPanel table').hide();
    //MARINE
    if (e.data.s.marine)
        $('#MarineModelsHolder, #ulMarineEnginesHolder, #ulMarineSprocketsHolder, #ulMarineYearModelsHolder').hide();

    $(e.data.panel).show();
    crumbMonster(e.data.name, e.data.s);

    return false;
}



//FUNCTION TO RESET ALL SEARCH VARIABLES
$.resetAllSearchVariables = function () {
    //if a search has been perfomed we show reset section and bind button
    if (location.hash != '' && !location.hash.match('#start') && !location.hash.match('#innehall')) {
        $('.reset_all_search_variables_section').show();

        //unbinding button
        $('.reset_all_search_variables').unbind('click');
        //binding button
        $('.reset_all_search_variables').click(function () {
            location.hash = '';
            location.href = location.href.replace('#', '');
            return false;
        });
    }
}

//SPEED ORDER SPECIAL FUNCTIONS
$.textboxQuickJump = function () {
    //binding flow for speed order
    $('#speedOrderArticleNo').keyup(function (e) {
        if ((e.keyCode == '13') && (this.value != '')) {
            $('#speedOrderQuantity').focus();
        }
    });
    $('#speedOrderQuantity').keyup(function (e) {
        if ((e.keyCode == '13') && (this.value != '') && (!isNaN(parseInt(this.value)))) {
            $('#speedOrderAddButton').click();
        }
    });
    $('#speedOrderAddButton').click(function () {
        $('#speedOrderArticleNo').focus();
    });
   
}
$.openExpandedSearchFilter = function () {
    var searchFilterContainerHeight = $("#searchFilterContainer").height();
    var searchresultheaderHeight = $("#searchresultheader").height();
    var openHeight = searchFilterContainerHeight + 68;
    var animateButtonHeight = searchFilterContainerHeight + 38;
    if (searchresultheaderHeight > 40) {
        $("#searchresultheader").animate({
            height: openHeight
        }, 600);

        $("#show_filter_button").animate({
            top: animateButtonHeight,
            value: $("#hide_filter_button_value").val()
        }, 600);
        //        $("#show_filter_button").val("Dölj filtreringsalternativ");
        $("#clear_button").animate({
            top: animateButtonHeight
        }, 600);
    }
}
$.expandSearchFilter = function () {
    var height = $("#searchresultheader").height();
    var searchFilterContainerHeight = $("#searchFilterContainer").height();
    
    var animateTime = 600;

    var movementHeight = height + searchFilterContainerHeight;
    var animateTopButton = movementHeight + 6;
    var animateHeigtDiv = movementHeight + 34;
    if (height < 80) {
        $("#searchresultheader").animate({
            height: animateHeigtDiv
        }, animateTime);

        $("#show_filter_button").animate({
            top: animateTopButton
        }, animateTime);
        $("#show_filter_button").val($("#hide_filter_button_value").val());
        $("#show_filter_button").css('background-image', ' url("files/system/css/Image/pilarsompekaruppat.png")')
        $("#clear_button").animate({
            top: animateTopButton
        }, animateTime);
    }
    else {
        $("#searchresultheader").animate({
            height: "32px"
        }, animateTime);

        $("#show_filter_button").animate({
            top: "6px"
        }, animateTime);
        $("#show_filter_button").val($("#show_filter_button_value").val());
        $("#show_filter_button").css('background-image', ' url("files/system/css/Image/pilarsompekarnedat.png")')
//        $("#show_filter_button").val("Dölj filtreringsalternativ");
        $("#clear_button").animate({
            top: "6px"
        }, animateTime);
    }

}
