(function($){

	/**
	 * GLOBAL METHODS
	 */
	
	$.fn.category_tree_toggle = function() {
		$('a.branch_closed', $('#mwrc_featured_brand')).click(function() {
			$(this).nextAll('ul').toggle();
			$(this).toggleClass('branch_open');
		});
	}
	
	$.fn.image_swap = function(settings) {
	
		var settings = $.extend({
			target: '#mwrc_product_detail_image',
			target_caption: '#img_caption'
		},settings);
		
		this.each(function() {
			$(this).mouseover(function() {				
				try {
					
					var img_cap = $(this).attr('title');
					var dtl_img = $(settings.target);
					 
					if(img_cap.length)
					{
						$(settings.target_caption).html(img_cap);
						dtl_img.attr('title', img_cap);
					}
					else $(settings.target_caption).html('&nbsp;');
	
					dtl_img.attr('src', $(this).attr('src'));
					
				} catch(e) {}
				
			});
		});
	}

	/**
	 * BRAND ONLY METHODS
	 */
	
	$.fn.outofstock_signup = function(container) {
		
		var product_id = $('#signup_form input[type=hidden]', this).val();
		
		$('button#mwrc_outofstock_signup_btn').click(function() {
			
			var email_regex = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i;
			var email_input = $('input#notify_email');
			var email = email_input.val();
			var error_txt = "";
			if(!email) { error_txt = "E-mail required"; }
			else if(!email_regex.test(email)) { error_txt = "Invalid E-mail"; }
			
			if(error_txt)
			{
				email_input.addClass('mwrc_error_fields').focus();
				$('#outofstock_error').html(error_txt).show();
				return;
			}
			
			$.post('outofstock_signups.php', {product_id: product_id, email: email}, function(data) {
				try {

					if(data.status)
					{
						$('#signup_form').hide();
			 			$('#signup_success').html("An email will be sent to <strong>"+email+"</strong> when this item is back in stock.").show();
						$('#mwrc_outofstock_signup_btn').hide();
					}
					else
					{
						$('#notify_email').addClass('mwrc_error_fields').focus();
				    	$('#outofstock_error').html(data.message).show();
					}
				}
				catch(e) {}
				
			}, "json");

			return;	
			
		});
	}
	
	$.fn.search_refinement_display = function() {
		
		$(this).click(function() {
			$(this).text(($(this).text()=="+ more")?"- hide":"+ more");
			$(this).parent('.mwrc_showhide_refineable').prev('.hidden_refinables').toggle();
		})
	}
	
	/**
	 * RETAILER METHODS
	 */
	
	$.fn.promo_code_validator = function() {
		
		$(this).click(function() {

			var promo_spinner = $('#mwrc_promo_code_spinner');
			promo_spinner.show();
			
			$("span[id^='mwrc_prompt_success'], span[id^='mwrc_prompt_error']").each(function(i, it) {
				$(it).removeClass('mwrc_prompt_error_show');
				$(it).removeClass('mwrc_prompt_success_show');
			});

			$.post('checkout1.php',
					$('form#checkout1 #mwrc_promotional_code_box :input').serializeArray(),
					function(data) {
						try {
							$.each(data, function(idx, elem) {
								if(elem) $("#mwrc_prompt_"+elem.resp+"_"+idx).addClass("mwrc_prompt_"+elem.resp+"_show").html(elem.msg);
							});
						}
						catch (e) {}
						
						promo_spinner.hide();
						
					}, "json");
			
		});
		
	}
	
})($mwrc);
