var price_change_promo = function(){

	var searchArray = function(needle, haystack, case_insensitive) {
		if (typeof(haystack) === 'undefined' || !haystack.length) return -1;
		
		var high = haystack.length - 1;
		var low = 0;
		case_insensitive = (typeof(case_insensitive) === 'undefined' || case_insensitive) ? true:false;
		needle = (case_insensitive) ? needle.toLowerCase():needle;
		
		while (low <= high) {
			mid = parseInt((low + high) / 2)
			element = (case_insensitive) ? haystack[mid].toLowerCase():haystack[mid];
			if (element > needle) {
				high = mid - 1;
			} else if (element < needle) {
				low = mid + 1;
			} else {
				return mid;
			}
		}

		return -1;
	};

	var process_items = function(discount_message, sorted_sku_list, is_whitelist, listcell_price_selector__container) {
		var $				= jQuery;
		var id_set			= $()
								.add( $('.listItem[id]') )
								.add( $('.customizer[id]') )
								.add( $('.bazaar[id]') )
							  ;
		var sku_set			= $()
								.add( $('#productDrill[sku]') )
							  ;

		// normalize attributes: copy "id" to "sku"
		id_set.each(function(){
			var sku = $(this).attr('id');
			$(this).attr('sku', sku);
		});
		sku_set				= sku_set.add( id_set );

		var found_sku_list	= [];
		var process_price_container;
		sku_set.each(function(){
			var sku = $(this).attr('sku');
			var index = searchArray(sku, sorted_sku_list, false);
			if (
				( (  is_whitelist) && (index !== -1) ) ||
				( (! is_whitelist) && (index === -1) )
			){
				found_sku_list.push( {"sku":sku} );
			}
		});
		if (found_sku_list.length > 0) {

			process_price_container	= function(price_container){
				var discount_notice = '<div class="promo_verbage" style="clear:both;">' + discount_message + '</div>';
				price_container.after( $(discount_notice) );
			};

			$.each(found_sku_list, function(i){
				var price_container		= $( listcell_price_selector__container.replace(/\[(id|sku)\]/g, '[$1=' + found_sku_list[i]['sku'] + ']') );
				process_price_container(price_container);
			});
		}
		return found_sku_list;
	};

	var passes_breadcrumb_filter = function() {
		var $					= jQuery;
		var page_crumb_trail	= $('#slb_bread_crumb').text()/*.unescapeHtml()*/.replace(/[\r\n]/g, '').replace(new RegExp("[" + unescape("%C2%A0") + "]", "g"), '').replace(/\s*>\s*/g, ' > ').replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' ');
		var crumb_trails		= {
			"glob": [
						 "Bedding > Sheeting >"
						,"Furniture >"
					],
			"exact":[
					]
		};
		var i;
		var crumb_trail;
		for (i=0; i<crumb_trails.glob.length; i++) {
			crumb_trail = crumb_trails.glob[i];
			if (page_crumb_trail.indexOf( crumb_trail ) === 0) {
				return true;
			}
		}
		for (i=0; i<crumb_trails.exact.length; i++) {
			crumb_trail = crumb_trails.exact[i];
			if (page_crumb_trail === crumb_trail) {
				return true;
			}
		};
		return false;
	}

	var passes_cookie_filter = function() {
		var cookie_value = '' + $.cookie('price_change_promo');
		return (cookie_value === '1');
	}

	var document_ready = function(discount_message, sorted_sku_list, is_whitelist, listcell_price_selector__container){
		var items;
		if (
				passes_cookie_filter()
		//	&&	passes_breadcrumb_filter()
		) {
			items = process_items(discount_message, sorted_sku_list, is_whitelist, listcell_price_selector__container);
			return true;
		}
		else {
			return false;
		}
	};

	this.document_ready = document_ready;
};

jQuery(window).load(function($){
	var discount_factor, discount_message, sorted_sku_list, is_whitelist, listcell_price_selector__container, __price_change_promo;
		discount_message					= '<span style="font-style:italic;">Enter code <span style="color:#990000;">PASSITON20</span> at checkout to save 20%.</span>';
		sorted_sku_list						= ["ACC10-S2","BZR-01813","BZR-02103","BZR-02104","BZR-02107","BZR-02632","BZR-02851","BZR-02862","BZR-02875","BZR-02876","BZR-02877","BZR-02878","BZR-02879","BZR-02880","BZR-02881","BZR-02882","BZR-02883","BZR-02884","BZR-02885","BZR-02886","BZR-02887","BZR-02889","BZR-02890","BZR-02895","BZR-02896","BZR-02903","BZR-02906","BZR-02913","BZR-02914","BZR-02915","BZR-02916","BZR-02917","BZR-02918","BZR-02919","BZR-02922","BZR-02923","BZR-02924","BZR-02925","BZR-03038","BZR-03041","BZR-03042","BZR-03058","BZR-03210","BZR-03211","BZR-03212","BZR-03215","BZR-03218","BZR-03220","BZR-03223","BZR-03224","BZR-03225","BZR-03226","BZR-03235","BZR-03238","BZR-03239","BZR-03240","BZR-03247","BZR-03259","BZR-03260","BZR-03262","BZR-03267","BZR-03268","BZR-03269","BZR-03270","BZR-03272","BZR-03274","BZR-03275","BZR-03276","BZR-03315","BZR-03318","BZR-03327","BZR-03333","BZR-03335","BZR-03336","BZR-03337","BZR-03338","BZR-03339","BZR-03340","BZR-03341","BZR-03342","BZR-03343","BZR-03344","BZR-03347","BZR-03348","BZR-03349","BZR-03350","BZR-03351","BZR-03352","CH23-01","CH23-01-S2","RG44","RG44-210","RG44-57","RG44-810","RG44-912","TB-ACC10"];
		is_whitelist						= false;
		listcell_price_selector__container	= [
												  '.listItem[id] div.listItemPrices div.sale_price'
												, '.customizer[id] div.listItemPrices div.sale_price'
												, '.bazaar[id] #categoryDescriptionArea div.cartButtons'
												, '#productDrill[sku] #categoryDescriptionArea div.displayPrices'
											  ].join(', ');
		__price_change_promo				= new price_change_promo();
		if (!
			__price_change_promo.document_ready(discount_message, sorted_sku_list, is_whitelist, listcell_price_selector__container)
		){
			__price_change_promo			= undefined;
			sorted_sku_list					= undefined;
			window.price_change_promo		= undefined;
		}
});

