var GoodTyreGuide = window.GoodTyreGuide || {}; GoodTyreGuide.Common = function() { return { handleError: function(msg) { alert(msg) }, getQueryStringParam: function(param, url) { param = param.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = "[\\?&]" + param + "=([^&#]*)"; regex = new RegExp(regex); var results = regex.exec(url); return (results) ? results[1] : "" }, callAjaxService: function(url, callback) { $.ajax({ url: url, type: "GET", contentType: "application/json", dataType: "json", success: callback, error: function(xhr, message, ex) { GoodTyreGuide.Common.handleError("Ajax error:" + message) } }) } } } (); GoodTyreGuide.Search = function() { var searchResultsPage = "tyresearchresults.aspx"; return { getTyreCategories: function() { $("#TyreCategories").removeOption(/./); $("#TyreCategories").addOption("-1", "Loading..."); GoodTyreGuide.Common.callAjaxService("/TyreSizeService.svc/GetTyreCategories", function(result) { for (var i = 0; i < result.length; i++) { $("#TyreCategories").addOption(result[i].Key, result[i].Value) } $("#TyreCategories")[0].selectedIndex = 0; $("#TyreCategories").addOption("-1", "Any Category"); $("#TyreCategories").trigger("change") }) }, getTyreWidths: function() { $("#TyreWidths").removeOption(/./); $("#TyreWidths").addOption("-1", "Loading..."); GoodTyreGuide.Common.callAjaxService("/TyreSizeService.svc/GetTyreWidths/" + $("#TyreCategories").val(), function(result) { for (var i = 0; i < result.length; i++) { $("#TyreWidths").addOption(result[i], result[i]) } $("#TyreWidths")[0].selectedIndex = 0; $("#TyreWidths").addOption("-1", "Any Width"); $("#TyreWidths").trigger("change") }) }, getTyreProfiles: function() { $("#TyreProfiles").removeOption(/./); $("#TyreProfiles").addOption("-1", "Loading..."); GoodTyreGuide.Common.callAjaxService("/TyreSizeService.svc/GetTyreProfiles/" + $("#TyreCategories").val() + "/" + $("#TyreWidths").val(), function(result) { for (var i = 0; i < result.length; i++) { $("#TyreProfiles").addOption(result[i], result[i]) } $("#TyreProfiles")[0].selectedIndex = 0; $("#TyreProfiles").addOption("-1", "Any Profile"); $("#TyreProfiles").trigger("change") }) }, getTyreRims: function() { $("#TyreRims").removeOption(/./); $("#TyreRims").addOption("-1", "Loading..."); GoodTyreGuide.Common.callAjaxService("/TyreSizeService.svc/GetTyreRims/" + $("#TyreCategories").val() + "/" + $("#TyreWidths").val() + "/" + $("#TyreProfiles").val(), function(result) { for (var i = 0; i < result.length; i++) { $("#TyreRims").addOption(result[i], result[i]) } $("#TyreRims")[0].selectedIndex = 0; $("#TyreRims").addOption("-1", "Any Rim"); $("#TyreRims").trigger("change") }) }, getSpeedRatings: function() { $("#SpeedRatings").removeOption(/./); $("#SpeedRatings").addOption("-1", "Loading..."); GoodTyreGuide.Common.callAjaxService("/TyreSizeService.svc/GetSpeedRatings/" + $("#TyreCategories").val() + "/" + $("#TyreWidths").val() + "/" + $("#TyreProfiles").val() + "/" + $("#TyreRims").val(), function(result) { for (var i = 0; i < result.length; i++) { $("#SpeedRatings").addOption(result[i], result[i]) } $("#SpeedRatings").addOption("-1", "Any Speed"); $("#SpeedRatings")[0].selectedIndex = 0 }) }, search: function(e) { e.preventDefault(); if (e.keyCode && e.keyCode != "13") { return } window.location.href = searchResultsPage + "?Brand=&Range=&Sort=1&PageIndex=0&TyreType=" + $("#TyreCategories").val() + "&TyreWidth=" + $("#TyreWidths").val() + "&TyreProfile=" + $("#TyreProfiles").val() + "&TyreRim=" + $("#TyreRims").val() + "&TyreSpeed=" + $("#SpeedRatings").val() }, init: function(resultsPage) { $("#TyreCategories").bind("change", GoodTyreGuide.Search.getTyreWidths); $("#TyreWidths").bind("change", GoodTyreGuide.Search.getTyreProfiles); $("#TyreProfiles").bind("change", GoodTyreGuide.Search.getTyreRims); $("#TyreRims").bind("change", GoodTyreGuide.Search.getSpeedRatings); $("#TyreSizeSearchButton").bind("click", GoodTyreGuide.Search.search); $("#HomeTyreSelector").bind("keypress", GoodTyreGuide.Search.search); GoodTyreGuide.Search.getTyreCategories(); if (resultsPage && resultsPage != "") { searchResultsPage = resultsPage } } } } ();