/* 
 * Фокус формы поиска
 */
$( function() {
	var
		Query		= $("div.insales-header input.query"),
		Form		= Query.parent(),
		className	= "searchform-focus";
		
	Query.bind({
		focus: function() {
			Form.addClass(className);
		},
		
		blur: function() {
			Form.removeClass(className);
		}
	});
});


/*
 * Знак рубля
 */
 

$( Theme.render = function(context) {
	context = typeof context != "function" ? context : $("body");
	$("span.rouble-sign", context).each( function(){
		var Container = $(this)
		
		if(Container.attr("data-roublesign"))
			return;
			
		Container.append(
			$( "<span/>",{ "class": "char", "text": "Р" }),
			$( "<span/>",{ "class": "ndash", "html": "&ndash;" })
		 )
		 	.attr("title", "Российский рубль")
		 	.attr("data-roublesign","done")
 	});
 	
 	$(".d-link", context).each( function(){
		var
			Link = $(this),
			html = Link.html(),
			Layer = $("<span/>", { html: html } );
			
		if(Link.attr("data-dlink"))
			return;
			
		Link
			.attr("data-dlink","done")
			.empty()
			.append( Layer.clone().addClass("d-shadow"),
			         Layer.clone().addClass("d-text") );	
	});
});

/*
 * Галерея на странице товара
 */
 
$( function() {
	var 
		activeThumb = $(),
		thumbContainer = $("div.large-preview");
		thumbList = $("ul.product-photo-preview li");
		showThumb = function(node) {
			activeThumb.removeClass("active");			
			activeThumb = node.addClass("active");
			thumbContainer.css("background-image","url("+node.attr('data-src')+")");
		};
		
	if(thumbList.length) {		
		thumbList.bind("click", function(){
			showThumb($(this));
		});
		
		showThumb(thumbList.eq(0));
	}
})

/*
 * Добавление в корзину
 */
 
$( function() {
	var Body = $("body"),
		Cart = $("div.cart")
		Loader = $("div.cart-loading", Cart),
		Products = $("span.count", Cart),
		Price = $("span.sum-container"),
		addToCart = function(variantId) {
					
			$.ajax({
				type: "post",
				url: Insales.addToCartUrl,
				data: {"variant_id":variantId},
				dataType: "json",
				beforeSend: function(){
					Loader.css("display","block")
					Body.addClass("loading");
				},
				complete: function(){
					Loader.css("display","none")
					Body.removeClass("loading")
				},
				success: function(data){
					Price.html(data.currency_format
						.replace(/\{\{\w+\}\}/, data.total_price));					
					Products.html(data.items_count);
					
					Theme.render(Cart);
				}
			});
		};
	
	$("a[data-buy]").live( "click", function() {
		addToCart($(this).attr("data-buy"));
		return false;
	});
});

$( function(){
	$("a[data-remove]").bind("click", function(){
		Insales.removeProduct($(this).attr("data-remove"));
		return false;
	});
});

$( function(){
	$("a[data-submitparentform], a.submitparentform").bind("click", function(){
		var Button = $(this), Form = Button.parents("form");
		
		if(Button.attr("data-name"))
			Form.append($("<input/>",{type:"hidden",name:Button.attr("data-name"),value:Button.attr("data-value")}));
			
		Form.submit();
		return false;
	});
});

$( function(){
	if(!Theme.Product)
		return;
		
	var Legend = $("div.product-legends"),
		BuyButton = $("#buy-button"), 
		ResetButton = $("#reset-button").bind("click", 
			function(){ $(".selected", jqContainer).removeClass("selected"); selectionHappened(); return false;}),
		HelpButton = $("#help-button").bind("click", function(){Legend.slideToggle();return false;}),
		Options = {}, jqContainer = $("div.product-variants"),
	
	selectionTrigger =  function(){
		var Clicked = $(this), isSelected = Clicked.hasClass("selected"),
			canBeSelected = Clicked.hasClass("aviable");
			
		if(isSelected)
			Clicked.removeClass("selected")
			
		else if(canBeSelected)
			Clicked.addClass("selected")
		else {
			$(".selected", jqContainer).removeClass("selected");
			Clicked.addClass("selected")
		}
				
		selectionHappened();
	},
	selectionHappened = function() {
		var Selected = {};
		$.each(Options, function(optionId, Option){
			$.each(Option, function(value, jqElement){
				if(jqElement.hasClass("selected"))
					Selected[optionId] = value;
			});
		});
		
		if(Insales.objectLength(Selected) == Insales.objectLength(Options)) {
			var SelectedProduct =  (function(){var Result=false;$.each(Theme.Product.getVariants(Selected),function(){Result=this}); return Result})();
			
			BuyButton
				.html('Купить <span class="buy-button-for">за</span> ' + Insales.money.replace(/\{\{\w+\}\}/, SelectedProduct.price) )
				.attr("data-buy",SelectedProduct.id)
				.css("visibility","visible");
				
			Theme.render(BuyButton.removeAttr("data-dlink").parent());
		}
		else {
			BuyButton.css("visibility","hidden");
		}
		
		var AviableOptions = Theme.Product.getOptions(Selected);
		
		$.each(Options, function(optionId, Option){
			$.each(Option, function(value, jqElement){
				if(AviableOptions[optionId] 
					&& AviableOptions[optionId][value]) {
					
					jqElement.addClass("aviable");
				}
				else 
					jqElement.removeClass("aviable");
			});
		});
	};
	
	$.each(Theme.Product.getStructure(), function(optionId, Option){
			
		var jqOption = $("<ul/>",{"class":"variants-list"}),
			OptionValues = {};
		
		$("<li/>",{"class":"title","html":Option.title})
			.appendTo(jqOption);
			
		$.each(Option.Values, function(value, Variants) {
			OptionValues[value] = 	$("<li/>",{"html":value,"data-value":value,"data-option":optionId})
				.appendTo(jqOption)
				.bind("click", selectionTrigger);
		});
		
		jqOption.appendTo(jqContainer);
		
		Options[optionId] = OptionValues;
	});
	
	var FirstVariant = false;
	
	$.each(Theme.Product.getVariants(), function(variantId, Variant) {
		FirstVariant = Variant.Options;
		return false;
	});
	
	$.each(FirstVariant, function(optionId, valueId){
		selectionTrigger.apply(Options[optionId][valueId]);
	});
	

});
