function CheckBasePage(){ return (document.location.pathname.toLowerCase() == '/katalog/catalogue.aspx'); } function LoadCatalogue(catalogueId){ SetCatalogue(catalogueId); LoadInfo("params:nid="+catalogueId+"&t=news"); //GetMenu(document.location, catalogueId); } function SetCatalogue(catalogueId){ var numTries = 0; setFlash(); function setFlash(){ if($("#menu").get(0).sendTextToFlash) $("#menu").get(0).sendTextToFlash(catalogueId); else if(numTries < 20){ numTries++; setTimeout(setFlash, 10); } } //Set body background $("body").attr("class", "b_" + catalogueId); //Set menuHeadingColor $("#"+_masterId + "_MenuHeading").attr("class", "linkTree lt_" + catalogueId); //Set menuHeadingText var catalogueTxt; switch(Number(catalogueId)){ case 4253: catalogueTxt = "Moped"; break; case 4219: catalogueTxt = "Cykel"; break; case 4249: catalogueTxt = "ATV"; break; case 4250: catalogueTxt = "Snö"; break; case 4251: catalogueTxt = "Marin"; break; case 326548: catalogueTxt = "Personlig utrustning"; break; default: catalogueTxt = "MC"; break; } //alert(catalogueTxt); $("#"+_masterId + "_MenuHeading").html(catalogueTxt); //Set MenuContainerColor $("#"+_masterId + "_MenuContainer").attr("class", "menublocks mb_" + catalogueId); //Set global catalogueId _catalogueId = catalogueId; } function TransformXml(xsltOptions){ if(xsltOptions["el"] != null) $(xsltOptions.el).html("\"Laddar\""); new $.transform(xsltOptions); } function ParentSelected(nodeId){ return $("#nodeId_" + nodeId).hasClass("linkMenuSelected"); } function ParentExists(nodeId){ return ($("#nodeId_" + nodeId).size() > 0); } function GetMenu(fallBackUrl, nodeId){ var xsltOpt = { el: "#"+_masterId + "_MenuContainer", xml: "/katalog/ws/catalogueService.asmx/GetMenu?nodeId=" + nodeId, xsl: "/katalog/publicXslt/menu.xsl", cache: true, error: function(html,xsl,xml,obj,ex){ NavigateToUrl(fallBackUrl); }, success: function(html, xsl, xml, obj, ex){ if(!html) NavigateToUrl(fallBackUrl); }, xslParams:{startLevel:0} }; TransformXml(xsltOpt); } function GetMenuPart(fallBackUrl, parentId){ var p = SetMenuSelection(parentId); if(p.children(".submenuNode").is(':visible')) p.children(".submenuNode").fadeOut(500); else if(p.children(".submenuNode").length > 0){ p.children(".submenuNode").fadeIn(500); }else{ var xsltOpt = { xml: '/katalog/ws/catalogueService.asmx/GetMenuPart?nodeId=' + parentId, xsl: '/katalog/publicXslt/menu.xsl', cache: true, //Remove after testing error: function(html, xsl, xml, obj, ex) { NavigateToUrl(fallBackUrl); }, success: function(html, xsl, xml, obj, ex) { if (!html) { alert(html); NavigateToUrl(fallBackUrl); } else { p.append(html); p.children("ul").fadeIn(500); } }, xslParams: { startLevel: 1 } }; TransformXml(xsltOpt); } } function SetMenuSelection(nodeId){ var p = $("#nodeId_" + nodeId); //Hide all opened submenus not ancestor to parent $(".submenuNode:visible").not(p.parents().andSelf()).removeClass("linkMenuSelected").addClass("linkMenu").hide(500); p.siblings().removeClass("linkMenuSelected").addClass("linkMenu"); p.addClass("linkMenuSelected"); return p; } function LoadProductOverview(fallBackUrl, nodeId, page, numItemsPerPage, baseLink, overview){ _nodeId = nodeId; _baseLink = ChangeBaseLink(baseLink, {nid: nodeId}); var params = null; if(numItemsPerPage != ''){ params = { startindex: (numItemsPerPage==''?1:(numItemsPerPage * (page-1))+1), numitems: numItemsPerPage, baselink: _baseLink, dynamicRead: 'True' } } var xmlUrl; if(overview) xmlUrl = "/katalog/ws/catalogueService.asmx/GetProductsForNode?nodeId=" + nodeId; else xmlUrl = "/katalog/ws/catalogueService.asmx/GetRandomProductsForNode?nodeId=" + nodeId + '&numProds=' + numItemsPerPage; var xsltOpt = { el: "#DataDiv", xml: xmlUrl, xsl: "/katalog/publicXslt/productOverview.xsl", cache: true, //Remove after testing error: function(html,xsl,xml,obj,ex){ NavigateToUrl(fallBackUrl); }, success: function(html,xsl,xml,obj,ex){ if(!html) NavigateToUrl(fallBackUrl); }, xslParams: params }; TransformXml(xsltOpt); //NavigateToUrl(fallBackUrl); } function LoadProductInfo(fallBackUrl, nodeId, artnr){ _nodeId = nodeId; _baseLink = ChangeBaseLink(_baseLink, {nid: nodeId}); var xsltOpt = { el: "#DataDiv", xml: "/katalog/ws/catalogueService.asmx/GetProductInfo?nodeId=" + nodeId, xsl: "/katalog/publicXslt/productInfo.xsl", cache: false, error: function(html, xsl, xml, obj, ex) { NavigateToUrl(fallBackUrl); }, success: function(html, xsl, xml, obj, ex) { if (!html) { NavigateToUrl(fallBackUrl); } else { //Transform text to html if ($('#prodBeskHldr').text().indexOf('<') >= 0){ var str = $('#prodBeskHldr').text(); $('#prodBeskHldr').html(str); } } }, xslParams: { dynamicRead: 'True', markArticle: 'nr:' + artnr } }; TransformXml(xsltOpt); //NavigateToUrl(fallBackUrl); } function LoadProductRek(fallBackUrl, nodeId){ _nodeId = nodeId; _baseLink = ChangeBaseLink(_baseLink, {nid: nodeId}); var xsltOpt = { el: "#DataDiv", xml: "/katalog/ws/catalogueService.asmx/GetProductRek?nodeId=" + nodeId, xsl: "/katalog/publicXslt/productRek.xsl", cache: true, error: function(html,xsl,xml,obj,ex){ NavigateToUrl(fallBackUrl); }, success: function(html,xsl,xml,obj,ex){ if(!html) NavigateToUrl(fallBackUrl); }, xslParams: {dynamicRead: 'True'} }; TransformXml(xsltOpt); //NavigateToUrl(fallBackUrl); } function ChangeBaseLink(baseLink, addOrChange, remove){ var querystring = ''; if(baseLink.indexOf('?')) querystring = baseLink.substr(baseLink.indexOf('?')+1); var qStr = new Querystring(querystring); if(typeof(addOrChange) == 'object'){ for(param in addOrChange) qStr.params[param] = addOrChange[param]; } if(typeof(remove) == 'object'){ for(param in remove) qStr.remove(param); } baseLink = baseLink.substring(0, baseLink.indexOf('?')); baseLink += '?' + qStr; return baseLink; } function NavigateToUrl(url){ document.location = url; } function LoadInfo(hashParam){ //dhtmlHistory.add(hashParam, null); //document.location.hash=hashParam; //document.title = "Duells - Riders Choice" $.historyLoad(hashParam); //CheckVariables('#'+hashParam); } function HistoryChange(newLocation){ if(newLocation) CheckVariables('#' + newLocation); else if($.historyInitialState != '') CheckVariables('#' + $.historyInitialState); else{ var qStr = new Querystring(document.location.search.substr(1)); $.historyInitialState = "params:" + qStr + "&t=" + _template; } var testUrl = document.location.pathname; if (testUrl.toLowerCase().indexOf('shop') > -1 && newLocation) { var qStr = new Querystring(document.location.search.substr(1)); var fallBackUrl = testUrl.substring(0, testUrl.toLowerCase().indexOf('shop')) + "Catalogue.aspx" + '?' + qStr +"#"+newLocation; NavigateToUrl(fallBackUrl); } // if (testUrl.toLowerCase().indexOf('login.aspx') > -1 && newLocation) { // var qStr = new Querystring(document.location.search.substr(1)); // var fallBackUrl = testUrl.substring(0, testUrl.toLowerCase().indexOf('login.aspx')) + "Catalogue.aspx" + '?' + qStr + "#" + newLocation; // NavigateToUrl(fallBackUrl); // } } function CheckVariables(hash){ if(hash && hash.substr(0,8) == '#params:'){ var qStr = new Querystring(hash.substr(8, hash.length-8)); var id = qStr.get('nid'); var p = qStr.get('p','1'); var template = qStr.get('t'); qStr.remove('t'); var testUrl = document.location.pathname; var fallBackUrl; if (testUrl.toLowerCase().indexOf('shop') > -1) { fallBackUrl = testUrl.substring(0, testUrl.toLowerCase().indexOf('shop')) + "Catalogue.aspx" + '?' + qStr; //fallBackUrl = myOldString.replace("shop/Quicklist.aspx", "Catalogue.aspx"); //Dummy } else { fallBackUrl = document.location.pathname + '?' + qStr; } //Load product info if(template.toLowerCase() == 'rek') LoadProductRek(fallBackUrl, id) else if(template.toLowerCase() == 'info'){ LoadProductInfo(fallBackUrl, id, qStr.get('artnr','-1')); //Load product overview }else{ var overview = (template.toLowerCase() == 'overview'); LoadProductOverview(fallBackUrl, id, p, _numItemsPerPage, _baseLink, overview); } } } function Querystring(qs){ this.params = {}; this.get=function(key, def) { var value=this.params[key]; return (value != null) ? value : def; }; this.remove = function(key){ delete this.params[key]; }; this.toString = function(){ output = ''; for(param in this.params){ var tmpValue = this.params[param].toString().split(', '); for(var i = 0; i < tmpValue.length; i++){ output += '&' + escape(param.replace(/\s/g, '+')) + '=' + escape(tmpValue[i].replace(/\s/g, '+')); } } if(output.substring(0,1) == '&') output = output.substr(1); return output; }; if (qs == null) qs=location.search.substring(1,location.search.length); if (qs.length == 0) return; // Turn back to // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1 qs = qs.replace(/\+/g, ' '); var args = qs.split('&'); // parse out name/value pairs separated via & // split out each name=value pair for (var i=0;i < args.length;i++) { var pair = args[i].split('='); var name = unescape(pair[0]); var value = (pair.length==2) ? unescape(pair[1]) : ''; if(typeof(this.params[name]) != 'undefined') this.params[name] += ', ' + value; else this.params[name] = value; } } function LoadRecList(action){ var formPost = ''; var serviceName = 'Get' + action; var boxToFill = 'rec' + action + 'List'; var nodeName = 'CatData'; if(action == 'Brand' || action == 'Year' || action == 'CC' || action == 'Model') formPost = 'catId=' + escape($('#recCatList').val()); if(action == 'Year' || action == 'CC' || action == 'Model'){ formPost += '&brandId=' + escape($('#recBrandList').val()); nodeName = 'CatData2'; } if(action == 'CC' || action == 'Model') formPost += '&year=' + escape($('#recYearList').val()); if(action == 'Model') formPost += '&CC=' + escape($('#recCCList').val()); //Dölj alla efterföljande boxar $('#' + boxToFill.replace(/List/, 'Hldr')).nextAll('div').hide(); freezeRecSearch(); var settings = { dataType: 'xml', url: '/katalog/ajaxWs.asmx/' + serviceName, timeout: 60000, type: 'POST', data: formPost, success: function(xml) { var selBox = $('#' + boxToFill).get(0); selBox.length = 0; var decoderDiv = $('
'); if($(nodeName, xml).size() > 0){ selBox.options[selBox.length] = new Option('Välj', ''); selBox.options[selBox.length] = new Option('-------------------', ''); } $(nodeName, xml).each(function(){ decoderDiv.html($("Name", this).text()); selBox.options[selBox.length] = new Option(decoderDiv.text(), $("ID", this).text()); }); if(selBox.length == 0) $('#'+boxToFill.replace(/List/,'Hldr')).hide(); else $('#'+boxToFill.replace(/List/,'Hldr')).show(); }, error: function(xml) { alert(xml.responseText);}, complete: function(reqObj, textStatus) { //Ladda år och kubik samtidigt if (action == 'Year') LoadRecList('CC'); if($("#recYearHldr").is(':visible')) $("#recSearchBtn").removeAttr('disabled'); unfreezeRecSearch(); } } $.ajax(settings); } function ClearRecList(action){ var listName = 'rec' + action + 'List'; var selBox = $('#' + listName).get(0); selBox.length = 0; $('#'+listName.replace(/List/,'Hldr')).hide(); } function freezeRecSearch(){ $("#recSearchBtn").attr('disabled','disabled'); $("#recTableForm").find("select").attr('disabled','disabled'); $("#recWaiting").show(); } function unfreezeRecSearch(){ $("#recTableForm").find("select").removeAttr('disabled'); $("#recWaiting").hide(); } function LoadRecSearchResult(pageSize, page){ var catId = $('#recCatList').val(); var brandId = $('#recBrandList').val(); var year = $('#recYearList').val(); var model = $('#recModelList').val(); var cc = $('#recCCList').val(); freezeRecSearch(); $.ajax({ dataType: 'xml', url: '/katalog/ajaxWs.asmx/GetPagedResult', timeout: 60000, type: 'POST', data: 'catId='+ escape(catId) +'&brandId='+ escape(brandId) +'&year='+ escape(year) +'&cc='+ escape(cc) +'&model='+ escape(model) +'&freeText=false&pageSize='+ pageSize +'&page=' + page, success: function(xml) { //var decoderDiv = $('
'); var numItems = Number($('NumItems', xml).text()); var numPages = Number($('NumPages', xml).text()); var pageSize = Number($('PageSize', xml).text()); var currentPage = Number($('CurrentPage', xml).text()); var i; var $hldr = $('#recSearchResult'); $hldr.show(); $hldr.html(''); var htmlData = ''; var pagingHtml=''; if(numPages > 1){ pagingHtml = '
Nr.ArtikelnummerRubrikBeskrivning
'; for(i = 1; i < numPages; i++){ if(i == currentPage) pagingHtml += '' else pagingHtml += '' } pagingHtml += '
'+ i +''+ i +'
' } i = 0; $("ResultData", xml).each( function(){ i++; //decoderDiv.html($('Artikeltext1', this).text()); htmlData += ''+ (((currentPage-1)*pageSize) + i) +''+ $('Artnr', this).text() +''+ $('Artikeltext1', this).text() +''+ $('Artikeltext2', this).text() +''; } ); htmlData += ''; $hldr.html(pagingHtml + htmlData + pagingHtml); }, error: function(xml) { //alert(xml.responseText); alert("Tyvärr uppstod ett fel i sökninge. Vänligen försök igen!"); }, complete: function(xml, text){ $("#recSearchBtn").removeAttr('disabled'); unfreezeRecSearch(); } }); } function LoadProdSearchResult(pageSize, page){ var catId = $('#prodSearchCatList').val(); var searchStr = $('#prodSearchStr').val(); freezeProdSearch(); $.ajax({ dataType: 'xml', url: '/katalog/ajaxWs.asmx/GetPagedProductSearch', timeout: 60000, type: 'POST', data: { catalogue: catId, searchStr: searchStr, pageSize: pageSize, page: page }, success: function(xml) { //var decoderDiv = $('
'); var numItems = Number($('NumItems', xml).text()); var numPages = Number($('NumPages', xml).text()); var pageSize = Number($('PageSize', xml).text()); var currentPage = Number($('CurrentPage', xml).text()); var i; var $hldr = $('#prodSearchResult'); $hldr.show(); $hldr.html(''); var htmlData = ''; var pagingHtml = ''; if (numPages > 1) { pagingHtml = '
Nr.Rubrik
'; for (i = 1; i < numPages; i++) { if (i == currentPage) pagingHtml += '' else pagingHtml += '' } pagingHtml += '
' + i + '' + i + '
' } i = 0; $("ProductSearchResult", xml).each( function() { i++; //decoderDiv.html($('Artikeltext1', this).text()); htmlData += '' + (((currentPage - 1) * pageSize) + i) + '' + $('Artikeltext', this).text() + ''; } ); htmlData += ''; $hldr.html(pagingHtml + htmlData + pagingHtml); }, error: function(xml) { //alert(xml.responseText); alert('Tyvärr uppstod ett fel i sökningen. Vänligen försök igen!'); }, complete: function(xml, text) { $("#recSearchBtn").removeAttr('disabled'); unfreezeProdSearch(); } }); } function freezeProdSearch(){ $("#prodSearchBtn").attr('disabled','disabled'); $("#recTableForm").find("select").attr('disabled','disabled'); $("#prodWaiting").show(); } function unfreezeProdSearch(){ $("#prodSearchBtn").removeAttr('disabled'); $("#recTableForm").find("select").removeAttr('disabled'); $("#prodWaiting").hide(); } function EnableProdSearch(enable){ if(enable) $('#prodSearchBtn').removeAttr('disabled'); else $('#prodSearchBtn').attr('disabled','disabled'); }