/**
 * Hulbee.Shopping Widget on main page 
 */
$(document).ready(function (){
	
	if ($('#sexy-products').length){	
		$.ajax({
			url: 'http://'+shoppingDomain+'/services/sexyproducts',
			dataType:'jsonp',
			success: function(data) {
				if (data.length > 0) {
					var ul = $('#sexy-products .items-wrap ul'),
						marks = $('#sexy-products .slider-marks');
					
					data = [{
						ImageUrl: "images/hulbee-banner.jpg",
						ItemType: 1,
						Product: {
							Name: "Hulbee Desktop PRO",
							Price: {
								Value: 59.95
							}
						},
						ProductUrl: 'http://company.hulbee.com/products_and_solutions/hulbee_desktop_pro/'
					}].concat(data);
					
					ul.empty();
					marks.empty();
					
					var itemsLoaded = 0, callback;
					
					callback = function() {
		                var item = null;
		                $('#sexy-products').css('visibility', 'visible');
						$('.poweredbyShopping').css('visibility', 'visible');
		                $('#sexy-products .items-wrap').jCarouselLite({
		                    auto: 10000,
		                    btnNext: '#sexy-products .btn-slide-right',
		                    btnPrev: '#sexy-products .btn-slide-left',
		                    afterEnd: function(o) {
		                        var current = $(o[1]);
		                        if (!current.hasClass('active')) {
		                            item.css({ 'left': item.parent().css('left').replace('-','') });
		                            current.css({ 'position': 'absolute', 'z-index': 10, 'left': item.parent().css('left').replace('-','') });
		                            item.fadeOut(1000, function() {
		                                $(this).css({ 'position': 'static', 'z-index':0 });
		                                $(this).removeClass('active');
		                                $(this).show();
		                            });
		                            setTimeout(function() {
		                                $('.slider-marks .active', '#sexy-products').removeClass('active');
		                                $('.slider-marks .slider-marker-' + (o[0] + 1), '#sexy-products').addClass('active');
		                            }, 100);
		                        }
		                    },
		                    beforeStart: function(o) {
		                        item = $(o[1]);                        
		                        item.css({ 'position': 'absolute', 'z-index': 20, 'left': item.parent().css('left').replace('-','') });
		                        item.addClass('active');
		                    },
		                    btnGo: $('#sexy-products .slider-marks').children(),
		                    circular: false,
		                    speed: 0,
		                    visible: 1
		                });
		            };
					
					$.each(data, function(i, item) {
						var li = $('<li>').addClass('item');
						
						var a = $('<a>', {
							href: item.ProductUrl.replace('/Proxy', 'http://'+shoppingDomain+'/Proxy')
						}).appendTo(li);
						
						var img = new Image();
						$(img).attr('alt', item.Product.Name).load(function(){
							++itemsLoaded;
							$(this).appendTo(a);
							
							if (itemsLoaded == data.length) {
								callback();
							}							
						});
						
						img.src = item.ImageUrl;
						
						var price = $('<div>', {
							'class': 'price-wrap',
							html: (item.ItemType == 1) ? 'ab ' : ''
						}).appendTo(li);
						
						$('<span class="price"><sup class="currency">€</sup>' + Math.floor(item.Product.Price.Value) + '.<sup>' +  
							(Math.round((item.Product.Price.Value - Math.floor(item.Product.Price.Value)) * 100) >= 10 ?
								Math.round((item.Product.Price.Value - Math.floor(item.Product.Price.Value)) * 100) :
								'0' + Math.round((item.Product.Price.Value - Math.floor(item.Product.Price.Value)) * 100)).toString() + 
							'</sup></span>').appendTo(price);
						
						li.appendTo(ul);
						
						$('<li>', {
							'class': 'slider-marker slider-marker-'+(i+1) + ( i == 0 ? ' active' : '' )	
						}).appendTo(marks);
					});
				}
				
			}
		});
	}
});


/**
 * Hulbee.Shopping item in search results
 */
$(document).bind('dataload', function(){
	var query = window.query;
	if (query != null && query != '') {
		$('#tab-shopping').attr('href', 'http://'+window.shoppingDomain+'/?query=' + query);
	}			
	$.ajax({
		url: 'http://'+window.shoppingDomain+'/services/forwebsearch/1',
		data: { query: query },
		dataType: 'jsonp',
		jsonpCallback: "_",					
		success: function(data) {
			if (data != null && data.length != null && data.length > 0)	{
				var tmpl = new String(
					'<div class="resultLine shopping-result">'+
						'<div style="width: 16px; height: 16px; float: left;"><img alt="" src="favicons/html/img/shopping_favicon.png"></div>' +
						'<a target="_blank" href="{0}"><img class="result-image" alt="{1}" src="{3}" /></a>'+
						'<a class="result-price-link" target="_blank" href="{0}"><span class="result-price">ab '+
							'<span class="price"><sup class="currency">€</sup>{5}.<sup>{6}</sup></span>'+
							'<span class="offers">{7} Angebote</span>'+
						'</span></a>'+
						'<div id="resultTitle" style="margin-left:23px;padding-left:0px">'+
							'<a class="resultTitle" target="_blank" href="{0}" title="{1}">{1}</a>'+ 
						'</div>'+
						'<div id="abstract0" class="resultAbstract">{2}</div>'+
						'<div class="resultInfo">'+
							'<span class="resultLink">{4}</span><a class="shopping-link" href="{8}">powered by Shopping.com</a>'+
						'</div>'+
					'</div>');
					
				var abstract = [data[0].Product.ShortDescription, data[0].Product.FullDescription].join('<br />');
					
				$.each([
					/*{0}*/ data[0].ProductUrl,
					/*{1}*/ data[0].Product.Name,
					/*{2}*/ (abstract.length > 150) ? abstract.substr(0, 150) + '...' : abstract,
					/*{3}*/ data[0].Product.Images[0].SourceUrl,
					/*{4}*/ (data[0].ProductUrl.length > 50) ? data[0].ProductUrl.substr(0, 50) + '...' : data[0].ProductUrl,
					/*{5}*/ Math.floor(data[0].Product.MinPrice.Value),
					/*{6}*/ (Math.round((data[0].Product.MinPrice.Value - Math.floor(data[0].Product.MinPrice.Value)) * 100) >= 10 ?
							Math.round((data[0].Product.MinPrice.Value - Math.floor(data[0].Product.MinPrice.Value)) * 100) :
							'0' + Math.round((data[0].Product.MinPrice.Value - Math.floor(data[0].Product.MinPrice.Value)) * 100)).toString(),
					/*{7}*/ data[0].Product.Offers.MatchedCount,
					/*{8}*/ shoppingSite  
				], function(i, value) {
					tmpl = tmpl.replace(new RegExp('\\{'+i+'\\}', 'gi'), value);
				});
						
				$(tmpl).prependTo('#searchResults');							
			}	
		}
	});
});
