var InfoOverlay = (function(url){
	var $_overlay = $('<div id="info-overlay" class="overlay"></div>');
	var $_container = $('<div id="info-overlay-box" clas="overlay-block">'
										+ '<div class="more-options"><a href="#" class="close">Aizvērt</a></div>'
										+ '<div class="body"></div>'
										+ '</div>');
	var _init = function(){
		$_overlay.hide();
		$_container.hide();
		$('body').append($_overlay);
		$('body').append($_container);	
	},
	_openUrl = function(url){
		$_container.find('.body').empty();
		_loadUrl(url);
		$_container.find('a.close').bind('click', _close);
		$_overlay.fadeIn();
		$_container.fadeIn();
	},
	_openBody = function(body){
		_setBody(body);
		$_container.find('a.close').bind('click', _close);
		$_overlay.fadeIn();
		$_container.fadeIn();
	},
	_loadUrl = function(url){
		$.ajax(url, {
			dataType: 'html',
			success : _setBody
		}); 
	},
	_setBody = function(body){
		$_container.find('.body').empty();
		$_container.find('.body').append(body);
	},
	_close = function(e){
		e.preventDefault();
		$_container.find('a.close').unbind('click', _close);
		$_container.fadeOut();
		$_overlay.fadeOut();
	};
	
	return {
		Init : _init,
		OpenUrl : _openUrl,
		OpenBody : _openBody
	};
})();
var ProductUnitSize = (function(){
	var _unit_size_map = {};
	
	var _unit_id = 0;
	var _size_id = 0;
	
	var _init = function(unit_size_map){
		_unit_size_map = unit_size_map;
		
		_unit_id = parseInt($('#unit-size fieldset.color input:checked').val());
		$('#unit-size fieldset.color input:checked').next().addClass('selected');
		if (!isFinite(_unit_id)){
			_unit_id = 0;
		}
		$('#unit-size fieldset.size div').hide();
		if (typeof _unit_size_map[_unit_id] != 'undefined'){
			for (var a in _unit_size_map[_unit_id]){
				$('#size-' + a).parent().show();
			}
		}
		
		_size_id = parseInt($('#unit-size fieldset.size input:checked').val());
		$('#unit-size fieldset.size input:checked').next().addClass('selected');
		if (!isFinite(_size_id)){
			_size_id = 0;
		}
		
		$('#unit-size fieldset.color input').change(_onChangeUnit);
		$('#unit-size fieldset.size input').change(_onChangeSize);
		
		$('#buy-button').click(_onSubmit);
	},
	_setUnit = function(unit_id){
		_unit_id = 0;
		// Remove size
		$('#unit-size fieldset.size label').removeClass('selected');
		$('#unit-size fieldset.size input').attr('checked', '');
		$('#unit-size fieldset.size div').hide();
		
		if (isFinite(unit_id)){
			_unit_id = unit_id;
			if (typeof _unit_size_map[_unit_id] != 'undefined'){
				for (var a in _unit_size_map[_unit_id]){
					$('#size-' + a).parent().show();
				}
			}
		}
	},
	_setSize = function(size_id){
		_size_id = 0; 
		if (isFinite(size_id)){
			_size_id = size_id;
			if (typeof _unit_size_map[_unit_id] != 'undefined'){
				if (typeof _unit_size_map[_unit_id][_size_id] != 'undefined'){
					$('p.price').text(_unit_size_map[_unit_id][_size_id]);
				}
			}
		}
	},
	_onChangeUnit = function(e){
		// Set unit
		$('#unit-size fieldset.color label').removeClass('selected');
		$(this).next().addClass('selected');
		
		_setUnit(parseInt($(this).val()));
	},	
	_onChangeSize = function(e){
		// Set size
		$('#unit-size fieldset.size label').removeClass('selected');
		$(this).next().addClass('selected');
		
		_setSize(parseInt($(this).val()));
	},
	_onSubmit = function(e){
		if (_size_id <= 0 || _unit_id <= 0){
			e.preventDefault();
			InfoOverlay.OpenBody('<h1>' + PRODUCT_SIZE_ERROR_TITLE + '</h1><p>' + PRODUCT_SIZE_ERROR_MSG + '</p>');
		}
	};
	
	return {
		Init : _init
	};
})();
var Slider = function($object){
	var $_slider = $object.find('.slide');
	var _viewWidth = $object.find('.slide-container').width();
	var _itemsPerView = 5;
	var _itemWidth = $object.find('.index').outerWidth(true);
	var _itemCount = $object.find('.index').size();
	var _totalWidth = _itemCount * _itemWidth;
	$_slider.css('width', _totalWidth);
	$_slider.css('position', 'absolute');
	
	var _slideLeft = function(e){
		e.preventDefault();
		if (_viewWidth < _totalWidth){
			if ($_slider.queue().length <= 0){
				var x = $_slider.position().left;
				x -= (_itemsPerView * _itemWidth);
				if (Math.abs(x) + (_itemsPerView * _itemWidth) >= _totalWidth){
					x = 0 - (_totalWidth - (_itemsPerView * _itemWidth));
				}
				$_slider.animate({
					left : x + 'px'
				}, 400);
			}
		}
	},
	_slideRight = function(e){
		e.preventDefault();
		if (_viewWidth < _totalWidth){
			if ($_slider.queue().length <= 0){
				var x = $_slider.position().left;
				x += (_itemsPerView * _itemWidth);
				if (x > 0){
					x = 0;
				}
				$_slider.animate({
					left : x + 'px'
				}, 400);
			}
		}
	};
	
	$object.find('.next a').click(_slideLeft);
	$object.find('.previous a').click(_slideRight);
};
var LoginOverlay = (function(){
	var $_overlay = $('<div id="login-overlay" class="overlay"></div>');
	var $_form_holder = null;
	var $_form_login = null;
	var $_form_fastreg = null;
	var _allow_close = true;
		
	var _init_overlay = function(form_holder_id, autohide, allow_close){
		$_form_holder = $(form_holder_id);
		if (typeof autohide == 'undefined'){
			autohide = true;
		}
		if (typeof allow_close == 'undefined'){
			_allow_close = true;
		} else {
			_allow_close = allow_close;
		}
		$_form_holder.before($_overlay);
		if (autohide){
			$_form_holder.hide();
			$_overlay.hide();
		} else {
			_open_login();
		}
	},
	_init_login_form = function(form_login_id){
		$_form_login = $(form_login_id);
		$_form_login.show();
	},
	_init_fastreg_form = function(form_fastreg_id){
		$_form_fastreg = $(form_fastreg_id);
		$_form_fastreg.hide();
	},
	_init_caller = function(caller_id){
		$(caller_id).bind('click', _call_open);
	},
	_call_open = function(e){
		e.preventDefault();
		_open_login();
	},
	_call_close = function(e){
		e.preventDefault();
		_close_login();
	},
	_close_login = function(){
		console.log(_allow_close);
		if (_allow_close){
			$_overlay.fadeOut();
			$_form_holder.fadeOut();
			$_form_holder.find('a.close').unbind('click', _call_close);
			if ($_form_fastreg != null){
				$_form_holder.find('.profile-register a').unbind('click', _enable_fastreg);
				$_form_holder.find('.profile-login a').unbind('click', _disable_fastreg);
			}
		}
	},
	_open_login = function(){
		if ($_form_login != null){
			$_form_login.show();
		}
		if ($_form_fastreg != null){
			$_form_fastreg.hide();
		}
		if (_allow_close){
			$_form_holder.find('a.close').bind('click', _call_close);
			$_form_holder.find('a.close').show();
		} else {
			$_form_holder.find('a.close').hide();
		}
		if ($_form_fastreg != null){
			$_form_holder.find('.profile-register a').bind('click', _enable_fastreg);
			$_form_holder.find('.profile-login a').bind('click', _disable_fastreg);
		}
		$_form_holder.fadeIn();
		$_overlay.fadeIn();
	},
	_enable_fastreg = function(e){
		if ($_form_login != null && $_form_fastreg != null){
			e.preventDefault();
			$_form_login.fadeOut();
			$_form_fastreg.fadeIn();
		}
	},
	_disable_fastreg = function(e){
		if ($_form_login != null && $_form_fastreg != null){
			e.preventDefault();
			$_form_fastreg.fadeOut();
			$_form_login.fadeIn();
		}
	};
	
	return {
		InitOverlay : _init_overlay,
		AddLoginForm : _init_login_form,
		AddFastRegForm : _init_fastreg_form,
		Show : _open_login,
		Hide : _close_login,
		AddCaller : _init_caller
	};
})();
var LoginEmbeded = (function(){
	var $_form_login = null;
	var $_form_fastreg = null;
	
	_init_login_form = function(form_login_id){
		$_form_login = $(form_login_id);
		if ($_form_fastreg != null){
			$_form_login.find('.profile-register a').bind('click', _enable_fastreg);
			$_form_fastreg.find('.profile-login a').bind('click', _disable_fastreg);
		}
		$_form_login.show();
	},
	_init_fastreg_form = function(form_fastreg_id){
		$_form_fastreg = $(form_fastreg_id);
		if ($_form_login != null){
			$_form_login.find('.profile-register a').bind('click', _enable_fastreg);
			$_form_fastreg.find('.profile-login a').bind('click', _disable_fastreg);
		}
		$_form_fastreg.hide();
	},
	_enable_fastreg = function(e){
		if ($_form_login != null && $_form_fastreg != null){
			e.preventDefault();
			$_form_login.fadeOut();
			$_form_fastreg.fadeIn();
		}
	},
	_disable_fastreg = function(e){
		if ($_form_login != null && $_form_fastreg != null){
			e.preventDefault();
			$_form_fastreg.fadeOut();
			$_form_login.fadeIn();
		}
	},
	_show_fast_reg = function(){
		$_form_fastreg.show();
		$_form_login.hide();
	};
	
	return {
		InitLoginForm : _init_login_form,
		InitFastRegForm : _init_fastreg_form,
		ShowFastReg : _show_fast_reg
	};
})();
var CartForm = (function(){
	var _delivery_prices = [];
	var _cart_prices = [];
	var _gift_wrap_price = 0;
	var _after_effects_price = 0;
	
	var _products = 0,
	_delivery = 0,
	_discount = 0;
	
	var $_cart;
	
	var _init = function(cart_prices, delivery_prices, gift_wrap_price, after_effects_price){
		_cart_prices = cart_prices;
		_delivery_prices = delivery_prices;
		_gift_wrap_price = gift_wrap_price;
		_after_effects_price = after_effects_price;
		
		$_cart = $('#cart-form');
		_calcProductPrice();
		_calcDeliveryPrice();
		_getDiscount();
		
		$_cart.find('div.cart-index div.options input').change(_updateExtras);
		//$_cart.find('div.cart-index div.options span.checkbox').mousedown(_updateExtras);
		$_cart.find('input.quantity').keyup(_updateQuantity);
		$_cart.find('div.delivery-types input').change(_updateDelivery);
	},
	_updateTotalPrice = function(){
		var total = _products + _delivery - _discount;
		$_cart.find('span.price-total').text(showPrice(total));
	}
	_calcProductPrice = function(){
		_products = 0;
		var item_price = 0;
		var item_qunatity = 0;
		for (var item_id in _cart_prices){
			$item = $_cart.find('#cart-item-' + item_id);
			item_qunatity = parseInt($item.find('input.quantity').val());
			if (!isFinite(item_qunatity)){
				item_qunatity = 0;
			}
			item_price = _cart_prices[item_id];
			if ($item.find('div.gift-wrap input').is(':checked')){
				item_price += _gift_wrap_price;
			}
			if ($item.find('div.after-effects input').is(':checked')){
				item_price += _after_effects_price;
			}
			$item.find('div.count strong.item-price').text(showPrice(item_price));
			_products += item_price * item_qunatity;
		}
		$_cart.find('span.price-products').text(showPrice(_products));
	},
	_calcDeliveryPrice = function(){
		_delivery = 0;
		var delivery_id = $_cart.find('div.delivery-types input:checked').val();
		if (typeof _delivery_prices[delivery_id] != 'undefined'){
			_delivery = _delivery_prices[delivery_id];
		}
		$_cart.find('span.price-delivery').text(showPrice(_delivery));
	},
	_getDiscount = function(){
		_discount = 0;
	},
	_updateExtras = function(e){
		_calcProductPrice();
		_updateTotalPrice();
	},
	_updateQuantity = function(e){
		_calcProductPrice();
		_updateTotalPrice();
	},
	_updateDelivery = function(e){
		_calcDeliveryPrice();
		_updateTotalPrice();
	},
	_onSubmit = function(e){
		
	};
	
	return {
		Init : _init
	};
})();

$(document).ready(function(){
	// Fancybox pop-up
	$('a.lightbox').fancybox();
	// Set up sliders
	$('.index-block').each(function(i, item){
		 new Slider($(item));
	});
	// Design/product descriptions
	$('.design-desc .read-more').click(function(e){
		e.preventDefault();
		$('.design-desc .description').fadeIn(500);
	});
	$('.design-desc .description .close').click(function(e){
		e.preventDefault();
		$('.design-desc .description').fadeOut(500);
	});
	// Initialize overlay info block
	InfoOverlay.Init();
	$('a.info').click(function(e){
		e.preventDefault();
		var url = $(this).attr('href');
		InfoOverlay.OpenUrl(url);
	});
	// Social block
	$('.social-panel').tabs();
	$('#newsletter input, #faq-mini-form input').focus(function(e){
		//var $form = $(this).parent().parent().parent();
		//$form.submit();
		var $btn = $(this).next();
		$btn.click();
	});
});
