jQuery.extend({
    postJSON: function(url, data, callback)
    {
        $.post(url, data, callback, "json");
    }
});
/*
 *  Fixed floating fn pomocne menu
 */
$.fn.fixedFloating = function(options) {
    var opts = $.extend({margin: 20, holder: '#subnav-fix', wrapper: '#subnav-w'}, options);
    return this.each(function() {
        var self = $(this),
            offset = self.offset().top - opts.margin,
			holder = $(opts.holder),
			wrapper = $(opts.wrapper),
			bottomOffset = holder.offset().top + holder.outerHeight() - self.outerHeight() - opts.margin,
            originalPosition = self.css('position'),
            originalTop = self.css('top');

        $(window).scroll(function(){
            var scrolled = $(window).scrollTop();
            if (scrolled >= offset && scrolled <= bottomOffset) {
				wrapper.css({top: 0, bottom: 'auto'});
                self.css({position: 'fixed', top: opts.margin, bottom: 'auto'});
				//console.log(bottomOffset - scrolled);
            } else if (scrolled >= bottomOffset) {
				wrapper.css({top: 'auto', bottom: 0});
				self.css({position: 'absolute', top: 'auto', bottom: 0});
 			} else {
				wrapper.css({top: 0, bottom: 'auto'});
                self.css({position: originalPosition, top: originalTop});
            }
        });
    });
}

function updateUserDiffData() {
	if($('#user-diffdata').length) {
		if($('#user-diffdata').attr('checked')) {
			$('#invoicing-data').show();
		} else {
			$('#invoicing-data').hide();
		}
	}
}

$(document).ready(function() {
	var msie6 = $.browser.msie == true && $.browser.version < 7;

/*
 *  HTML5 placeholder attr fallback
 */
	if(!Modernizr.input.placeholder){
		$('[placeholder]').focus(function() {
			var input = $(this);
			if (input.val() == input.attr('placeholder')) {
				input.val('');
				input.removeClass('placeholder');
			}
		}).blur(function() {
			var input = $(this);
			if (input.val() == '' || input.val() == input.attr('placeholder')) {
				input.addClass('placeholder');
				input.val(input.attr('placeholder'));
			}
		}).blur();
		$('[placeholder]').parents('form').submit(function() {
			$(this).find('[placeholder]').each(function() {
				var input = $(this);
				if (input.val() == input.attr('placeholder')) {
					input.val('');
				}
			})
		});
	}

/*
 *  Header - shopping cart and navigation pop-ups
 */
	$('#cartbox:not(.empty)').hover(function() {
		$(this).addClass('active');
		$('#cartbox-in').show();
	}, function() {
		$(this).removeClass('active');
		$('#cartbox-in').hide();
	});
	$('#cat-nav .popup').each(function(index) {
		var $popup = $(this);
		/* prob. will be deprecated
		var width = 0;
		$popup.find('.col').each(function(index) {
			width += $(this).outerWidth() + parseInt($(this).css('margin-right'));
		});
		$popup.css('width', width + 'px');*/
		$popup.parent().hover(function() {
			$(this).addClass('popuped');
			$popup.show();
		}, function() {
			$(this).removeClass('popuped');
			$popup.hide();
		});
	});

	// Width helper for Bonus products nav link
	var $bonusesLink = $('#cat-nav .bonuses > a');
	$bonusesLink.css('width', $('#cat-nav').outerWidth() - $('#cat-nav ul.main').outerWidth() - parseInt($bonusesLink.css('padding-left')) - parseInt($bonusesLink.css('padding-right')) - 1);

/*
 *  Products listing
 */
	_appCmpLinks();

/*
 *  Order
 */
	$('#shipping3-sub1, #shipping3-sub2').change(function() {
		$('#shipping3').attr('checked', true).change();
	});

	$('#user-diffdata').change(updateUserDiffData);

	updateUserDiffData();
/*
 *  Text pages
 */
	if (!msie6) {
		$('#subnav-fix')
			.parents('.boxin').css('z-index', 1)
			.end()
			.find('#subnav-w > .subnav').fixedFloating();
	}

/*
 *  Product detail
 */
	$('#comms input[name=check]').val(23 + 3).parents('.txt').hide();
	
	$('#comms form').live('submit', function(e) {
		var $commForm = $(this);
		$.postJSON('/comment/add-comment', $(this).serializeArray(), function(json) {
			$('#comms textarea').qtip('destroy');
			$('#comms input').qtip('destroy');
			if(json.status) {
				if(json.comment.parent_id) {
					$commForm.parents('.comm').after(json.html);
					$commForm.hide();
					$commForm.parents('.comm').removeClass('replying');
				} else {
					$commForm.before('<div class="thread">' + json.html + '</div>');
				}
				$commForm.find('textarea[name=text]').val('');
				if(!$commForm.find('input[name=email]').attr('readonly')) {
					$commForm.find('input[name=email]').val('');
					$commForm.find('input[name=fullname]').val('');
				}
				if($('.comm').length) {
					$('#comms').removeClass('no-borders');
				}
			} else {
				$.each(json.errors, function(name, msg) {
					if(name == 'text') {
						var $inputField = $commForm.find('textarea');
					} else {
						var $inputField = $commForm.find('input[name=' + name + ']').focus();
					}
					
					$inputField.qtip({
					   content: msg,
					   position: {
							my: 'center left',  // arrow position
							at: 'center right' // tooltip position
					   },
					   style: {
						      classes: 'ui-tooltip-red ui-tooltip-shadow'
						},
						show: {
				            when: false, // Don't specify a show event
				            ready: true // Show the tooltip when ready
				        }
					});
					
					$inputField.focus();					
				});
			}
		});		
		return false;
	});

	$('#comms .link-arr2').live('click', function(e) {
		e.preventDefault();
		$('form[id^=reply-]').hide();
		$('#reply textarea').focus();
		var targetOffset = $('#reply').offset().top;
		$('html, body').animate({scrollTop:targetOffset}, 'slow');
	});
	
	$('#comms a.reply').live('click', function(e) {
		e.preventDefault();
		var $context = $(this).parents('.comm');
		var thisId = $context.attr('id');
		if ($context.is('.replying')) { // Odpovida se prave na tento komentar?
			$('#reply-' + thisId).hide();
			$context.removeClass('replying');
		} else {
			$('form[id^=reply-]').hide();
			$('.comm').removeClass('replying');
			if ($('#reply-' + thisId).length > 0) { // Byl uz drive pripojen formular pro odpoved?
				$('#reply-' + thisId).show(); // Zobrazime drive pripojeny formular
			} else {
				$('#reply').clone().appendTo($context) // Pripojime formular poprve a nastavime mu unikatni ID pro jeho identifikaci
					.attr('id', 'reply-' + thisId)
					.find('h3').hide()
					.end()
					.find('input[name=parentId]').val(thisId.substr(5));
				
				$context.find('input[name=level]').val($context.attr('rel'));
					// .find('.txt:first label').text('Odpoved');
			}
			$context.addClass('replying');
		}
		$('#reply-' + thisId + ' textarea').focus();
		var targetOffset = $context.offset().top;
		$('html, body').animate({scrollTop:targetOffset}, 'slow');
	});
	
	$('#comms a.delete').live('click', function(e) {
		e.preventDefault();
		var $context = $(this).parents('.comm');
		var thisId = $context.attr('id');
		if(confirm('Skutečně chcete komentář smazat?')) {
			$.getJSON('/comment/delete/commentId/' + thisId.substr(5), function(json) {
				$context.remove();
			});
		} 
	});

/*
 *  Logged user's box in top navigation
 */
	$('#userbox').hover(function() {
			var $this = $(this);
			$this.addClass('active');
		}, function() {
			var $this = $(this);
			$this.removeClass('active');
		});

});

function _appCmpLinks() {
	$('.products .product').each(function() {
		var compareLink = $(this).find('.compare');
		_cmpLink(this, compareLink);
	});
}

function _cmpLink(obj, compareLink) {
	$(obj).hover(function() {
		$(obj).addClass('hover');
		compareLink.show();
	}, function() {
		$(obj).removeClass('hover');
		compareLink.hide();
	});
	
	compareLink.click(function(e) {
		e.preventDefault();
		$('#comparison-bar').animate({backgroundColor: '#ff9'}, 200, function() {
			$(this).delay(1500).animate({backgroundColor: '#d8eef4'}, 1000);
		});
	});
	
}
