PageSourceSearch

https://secure.kolbe.com/_shared/js/kcom.js

js kolbe.com collected 2026-09-24 17:20:34 UTC 14,315 bytes, 384 lines download raw bytes

1function parseNav(thisStr){
2	var qParams = {};
3	var currStr = '';
4	if(typeof thisStr === 'undefined' || thisStr == ''){
5	   return qParams;
6	};
7
8	// clean and prep string
9	if(thisStr.slice(-1) != '/'){
10		thisStr = thisStr+'/';
11	}
12	thisStr = thisStr.replace('http://','');
13	thisStr = thisStr.replace('https://','');
14	thisStr = thisStr.replace('//','');
15	if(thisStr.substring(0,1) == '/'){
16		thisStr = thisStr.replace('/','');
17	}
18	// build object
19	while(thisStr != ''){
20		thisI = thisStr.indexOf('/');
21		if(thisI <= 1 ){
22			thisStr = '';
23		} else {
24			currStr = thisStr.substring(0,thisI+1);
25			if(currStr.indexOf('_') > 0){
26				splitStr = currStr.replace('/','').split('_');
27				qParams[splitStr[0]] = splitStr[1];
28			}
29			thisStr = thisStr.replace(currStr,'');
30		}
31	}
32	return qParams;
33}
34
35function navActivator(){
36	var thisUrl = window.location.href+'/';
37	var hasActive = false;
38	urlQuery = parseNav(thisUrl);
39	if(Object.keys(urlQuery).length == 0){
40		$('#nav').find('.navLink:first').closest('li').addClass('active');
41		return;
42	}
43
44	$('.nav li a.navLink').each(function(){
45		var thisNav = $(this).attr('href');
46		// bail on links that are # or links that 
47		if(thisNav.length < 2){
48			return;
49		}
50		var navQuery =  parseNav(thisNav);
51		if(Object.keys(urlQuery).length != 0){
52			if (JSON.stringify(urlQuery) == JSON.stringify(navQuery)) {
53				$(this).closest('li').addClass('active');
54			}
55		}
56	});
57}
58
59function addToCart(prod,qty){
60	var pBar = "<div class='progress progress-striped active'><div class='progress-bar'  role='progressbar' aria-valuenow='100' aria-valuemin='0' aria-valuemax='100' style='width: 100%'><span class='sr-only'>Processing</span></div></div>";
61	$('#shoppingCart').append(pBar);
62	if(qty === undefined){qty = 1;}
63	if(prod === undefined){prod = '';}
64	$.ajax({
65	    type: 'get',
66	    url: '/com/webService/ajax.cfc',
67	    data: {method:'addToCart'
68	    	, sku: prod
69	    	, quantity:qty
70	    		},
71	    dataType: 'json',
72	    async: false,
73	    success: function(result){
74			if(!result.SUCCESS){
75				alert(result.ERROR);
76			} else {
77				displayCart();
78			}
79		} 
80    });		
81}
82function removeFromCat(prod){
83	var pBar = "<div class='progress progress-striped active'><div class='progress-bar'  role='progressbar' aria-valuenow='100' aria-valuemin='0' aria-valuemax='100' style='width: 100%'><span class='sr-only'>Processing</span></div></div>";
84	$('#shoppingCart').append(pBar);
85	if(prod === undefined){prod = '';}
86	$.ajax({
87	    type: 'get',
88	    url: '/com/webService/ajax.cfc',
89	    data: {method:'removeFromCart'
90	    	, sku: prod.split('_')[0]
91	    	, lineItem: prod.split('_')[1]
92	    		},
93	    dataType: 'json',
94	    async: false,
95	    success: function(result){
96			if(!result.SUCCESS){
97				alert(result.ERROR);
98			} else {
99				displayCart();
100			}
101		} 
102    });		
103
104}
105function displayCart(){
106	$.ajax({
107	    type: 'get',
108		url: '/com/webService/ajax.cfc',
109	    data: {method:'displayShoppingCart'
110	    		},
111	    dataType: 'json',
112	    async: false,
113	    success: function(result){
114	    	// console.log(result);
115			$('#shoppingCart').html(result);
116			$('.delItem').on('click',function(){
117				removeFromCat($(this).attr('rel'));
118			});
119		} 
120    });		
121}
122
123
124
125function clearCheckAvail(){
126	$('#basicForm #uName').closest('.form-group').removeClass('has-success has-error');
127	$('#basicForm #messageUname').html('');
128}
129function checkAvail(){
130	clearCheckAvail();
131	var uName = $('#basicForm #uName').val();
132	if(uName.length<5){
133		$('#basicForm #uName').closest('.form-group').addClass('has-error');
134		$('#basicForm #messageUname').html('User name must be at least 5 characters');
135		return;
136	}
137	$.ajax({
138	    type: 'get',
139	    url: '/com/webService/ajax.cfc',
140	    data: {method:'checkUserNameAvailablity'
141	    	, uName: uName
142	    	/* ,personGUID: personGUID */
143	    		},
144	    dataType: 'json',
145	    async: false,
146	    success: function(result){
147	    	if(result.SUCCESS){
148				$('#basicForm #uName').closest('.form-group').addClass('has-success');
149			} else {
150				$('#basicForm #uName').closest('.form-group').addClass('has-error');
151				$('#basicForm #messageUname').html('User name not available');
152			}	
153		}
154	}); 
155}
156
157
158function checkPasswordStrength(holder){
159	var val = $("#"+holder).val();
160	var meter = $("#password_meter")[0];
161	var pass_type = $("#password_type")[0];
162	var no=0;
163	if(val!=""){
164		// If the password length is less than or equal to 6
165		if(val.length<6){
166			no=1;
167		} else {
168			no=2;
169		}
170		// if the password is at least 6 characters add 1 for each match
171		if(no>1){
172			if(val.match(/[a-z]/)){
173				no++;
174			}
175			if(val.match(/[A-Z]/)){
176				no++;
177			}
178			if(val.match(/\d+/)){
179				no++;
180			}
181			if(val.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/)){
182				no++;
183			}
184		}
185		if(no==1){
186			$("#password_meter").css('background-color', 'transparent');
187			pass_type.innerHTML="6 char min.";
188		} else if(no<=3){
189			$("#password_meter").animate({width:'28px'},300).css('background-color', 'red');
190			pass_type.innerHTML="Very Weak";
191		} else if(no==4){
192			$("#password_meter").animate({width:'56px'},300).css('background-color', '#F5BCA9');
193			pass_type.innerHTML="Weak";
194		} else if(no==5){
195			$("#password_meter").animate({width:'84px'},300).css('background-color', '#FF8000');
196			pass_type.innerHTML="Good";
197		} else if(no==6){
198			$("#password_meter").animate({width:'112px'},300).css('background-color', '#00FF40');
199			pass_type.innerHTML="Strong";
200		}
201	} else {
202		$("#password_meter").animate({width:'0'},300).css('background-color', 'transparent');
203		pass_type.innerHTML="";
204	}
205}
206(function($) {
207	/***************************************
208		EXTEND
209	***************************************/
210	$.fn.extend({
211		/***************************************
212			cityStateLoader
213		***************************************/
214		cityStateLoader:function(config){
215			var config = $.extend({}, $.cityStateLoader.defaults, config);
216			config.cityStateContainer = this.attr("id");
217			config.zipLens = {};
218			config.currentZip = '';
219			config.currentCountry = '';
220			config.countryOptionString = '';
221			getAndLoadCountries(config);
222			config.zipInput = $('#'+config.cityStateContainer+' [name="'+config.zipFieldName+'"]');
223			config.countryInput = $('#'+config.cityStateContainer+' [name="'+config.countryFieldName+'"]');
224			config.stateInput = $('#'+config.cityStateContainer+' [name="'+config.stateFieldName+'"]');
225			config.cityInput = $('#'+config.cityStateContainer+' [name="'+config.cityFieldName+'"]');
226			config.zipClass = $(config.zipInput).prop('class');
227			config.countryClass = $(config.countryInput).prop('class');
228			config.stateClass = $(config.stateInput).prop('class');
229			config.cityClass = $(config.cityInput).prop('class');
230			$(config.countryInput).empty().append(config.countryOptionString);
231			$(config.countryInput).on('change keyup',function(){lookUpZip(config);})
232			$(config.zipInput).on('keyup',function(){lookUpZip(config);})
233			$(config.countryInput).val(config.startingSelectedCountry);
234			return this;
235		}
236	});
237	/***************************************
238		DEFAULTS
239	***************************************/
240	$.cityStateLoader = {
241		defaults:{
242			zipFieldName : 'zip',
243			countryFieldName : 'country',
244			stateFieldName : 'state',
245			cityFieldName : 'city',
246			startingSelectedCountry : 'US'
247		}
248	};
249	/***************************************
250		START cityStateLoader functions
251	***************************************/
252	function getAndLoadCountries(config){
253		$.ajax({
254		    type: 'get',
255		    url: '/_shared/com/webService/Zip.cfc',
256		    data: {method:'getCountryLookupSerialized'
257		    	  ,countriesWithZipOnly:false},
258		    dataType: 'json',
259		    async: false,
260		    success: function(result){
261				config.countryOptionString = '<option value="">Select your Country</option>';
262			    for (i=0;i<result.length;i++) {
263			        config.countryOptionString += '<option value="' + result[i].COUNTRYCODE2 + '">' + result[i].COUNTRY + '</option>';
264			        config.zipLens[result[i].COUNTRYCODE2] = result[i].ZIPLENGTH;
265			    }
266			}
267	    });	
268	}
269	function lookUpZipReset(config){
270		config.stateInput = $('#'+config.cityStateContainer+' [name="'+config.stateFieldName+'"]');
271		config.cityInput = $('#'+config.cityStateContainer+' [name="'+config.cityFieldName+'"]');
272		$(config.countryInput).closest('.form-group').removeClass('success').removeClass('error');
273		$(config.zipInput).closest('.form-group').removeClass('success').removeClass('error');
274		$('#'+config.stateInput.prop('id')).val('').off('change keyup').closest('.form-group').removeClass('success').removeClass('error').find('.help-inline').text('');
275		$('#'+config.cityInput.prop('id')).val('').off('change keyup').closest('.form-group').removeClass('success').removeClass('error');
276		$cityControls = $(config.cityInput).closest('.controls');
277		$stateControls = $(config.stateInput).closest('.controls');
278		$cityControls.html('<input type="text" id="'+config.cityFieldName+'" name="'+config.cityFieldName+'" class="'+config.cityClass+'" readonly="true" value="">');
279		$stateControls.html('<input type="text" id="'+config.stateFieldName+'" name="'+config.stateFieldName+'" class="'+config.stateClass+'" readonly="true" value="" >');		
280	}
281	function lookUpZip(config){
282		var $c = $(config.countryInput).val();		//country selected
283		var $z = $(config.zipInput).val();			//zip Entered
284		if(config.currentZip == $z && config.currentCountry == $c){return;} //make sure the zip or the country has changed
285		lookUpZipReset(config);
286		config.currentCountry = $c;				//set global value
287		config.currentZip = $z;					//set global value
288		$zc = config.zipLens[$c];				//lengths the zip should be
289		$zfl = $z.length;						//length of the zipcode entered
290		if($c.toLowerCase() == 'gb' && ($zfl == 2 || $zfl == 3 || $zfl == 4 )){$zc = $zfl;}  //for GB 
291		if($zfl == $zc){	
292				$.ajax({
293				    type: 'get',
294				    url: '/_shared/com/webService/Validate.cfc',
295				    data: {method:'validateZipReturnJSONStruct'
296				    	, country: $c
297				    	, zip: $z.substring(0,$zfl)
298				    		},
299				    dataType: 'json',
300				    async: false,
301				    success: function(result){
302						if(result[0].ERRORMESSAGE !=''){
303							$(config.zipInput).closest('.form-group').addClass('error');
304							$(config.zipInput).closest('.form-group').find('.help-inline').text(result[0].ERRORMESSAGE);
305						} else {
306							var delay = setTimeout(function(){
307						        $(config.zipInput).closest('.form-group').removeClass("success");
308						        $(config.stateInput).closest('.form-group').removeClass("success");
309						        $(config.countryInput).closest('.form-group').removeClass("success");
310						        $(config.cityInput).closest('.form-group').removeClass("success");
311						     }, 800)
312							$(config.zipInput).closest('.form-group').addClass('success');
313							$(config.countryInput).closest('.form-group').addClass('success');
314							if(result.length == 1){	
315								$('#'+config.stateInput.prop('id')).val(result[0].STATENAME != '' ? result[0].STATENAME : ' ').closest('.form-group').addClass('success');
316								$('#'+config.cityInput.prop('id')).val(result[0].CITY).closest('.form-group').addClass('success');
317							} else {
318								var cityArray = [];
319								var stateArray = [];
320								var statePairArray = [];
321								for(i=0;i<result.length;i++){
322									if($.inArray(result[i].CITY,cityArray) == -1){
323										cityArray.push(result[i].CITY);
324									}
325									if($.inArray(result[i].STATE,stateArray) == -1){
326										stateArray.push(result[i].STATE);
327										thisObj = {'stateAbbr' : result[i].STATE , 'stateName' : result[i].STATENAME};
328										statePairArray.push(thisObj);
329									}
330								}
331								cityArray.sort();
332								stateArray.sort();
333								var cityOptions = '';
334								if(cityArray.length > 1){
335									cityOptions = '<option value="">Select your City</option>';
336								}
337								for(i=0;i<cityArray.length;i++){
338									cityOptions += '<option value="' + cityArray[i]+ '">' + cityArray[i] + '</option>';
339								}
340								var stateOptions = '';
341								if(stateArray.length > 1){
342									stateOptions = '<option value="">Select your State / Providence</option>';
343								}
344								for(i=0;i<statePairArray.length;i++){
345									stateOptions += '<option value="' + statePairArray[i].stateAbbr+ '">' + statePairArray[i].stateName + '</option>';
346								}
347								var citySelect = '<select id="'+config.cityFieldName+'" name="'+config.cityFieldName+'" class="'+config.cityClass+'">'+cityOptions+'</select>';
348								$cityControls.html(citySelect);
349								config.cityInput = $('#'+config.cityStateContainer+' [name="'+config.cityFieldName+'"]');
350								var stateSelect = '<select id="'+config.stateFieldName+'" name="'+config.stateFieldName+'" class="'+config.stateClass+'">'+stateOptions+'</select>';
351								$stateControls.html(stateSelect);
352								config.stateInput = $('#'+config.cityStateContainer+' [name="'+config.stateFieldName+'"]');
353								if(stateArray.length == 1){
354									$(config.stateInput).closest('.form-group').addClass('success');
355								} else {
356									$(config.stateInput).on('change keyup',function(){
357										if( $(config.stateInput).val()){
358											$(config.stateInput).closest('.form-group').addClass('success');
359										} else {
360											$(config.stateInput).closest('.form-group').removeClass('success').removeClass('error');
361										}
362									});
363								}
364								if(cityArray.length == 1){
365									$(config.cityInput).closest('.form-group').addClass('success');
366								} else {
367									$(config.cityInput).on('change keyup',function(){
368										if( $(config.cityInput).val()){
369											$(config.cityInput).closest('.form-group').addClass('success');
370										} else {
371											$(config.cityInput).closest('.form-group').removeClass('success').removeClass('error');
372										}
373									});
374								}
375							}
376						}
377					} 
378			    });		
379		}
380	}
381	/***************************************
382		END cityStateLoader functions
383	***************************************/
384})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.