function boxBasketHide(e) {
	if (e == undefined) {

	} else {
		e.preventDefault();
	}
	$('#id_box_basket').fadeOut();
}

function boxBasketShow(e) {
	e.preventDefault();
	$('#id_box_basket').fadeIn();
}

function boxBasketShow2() {
	var box = $('#id_box_basket');
	var pos = $("#boxBasket").position();
	box.css({left: pos.left-box.outerWidth(), top: pos.top});
	box.fadeIn();
}

function boxBasketPopupAdded(resp, notClose, buttons) {
	var timeout = undefined;
	if( notClose == undefined )	{
		timeout = 3000;
	}
	if(buttons == undefined )	{
		buttons = false;
	}
	boxBasketUpdate(resp.b, "Dodano do koszyka: ",
			resp.servicesAddedHeaderDesc, buttons, timeout);
}

function boxBasketPopupRemoved(resp) {
	boxBasketUpdate(resp.b, "Usunięto z koszyka: ",
			resp.servicesRemovedHeaderDesc, false, 3000);
}


/**
 * - gdy użytkownik nie ma nic w koszyku pokazanie popupu z informacją "Nie masz
 * żadnych usług w koszyku" - ten popup ma sam zniknąć po kilku sekundach - gdy
 * użytkownik nie jest zalogowany - pokazanie NOWEGO POPUPA 2 (opisany w punkcie
 * 8) - gdy użytkownik jest zalogowany - przejście do koszyka
 *
 * @param b
 * @return
 */
function boxBasketPopup2() {
	var empty = false;
	var logged = false;
	var uid = $("#id_box_basket_uid").attr("title");

	if (uid != '') {
		logged = true;
	}

	empty = $("tr[id^='id_bb_tr_']").size() == 0;
	if (empty) {
		// pokaz popup - znika automatycznie
		boxBasketUpdate(null, "Koszyk: ", null, false, 3000);
		return true;
	} else {
		if (logged) {
			// przejdz do koszyka
			var loc = $('#id_basket_count').attr('href');
			window.location = loc;
			return false;
		} else {
			// pokaz popup
			boxBasketUpdate(null, "Koszyk: ", null, true);
			return true;
		}
	}
	return true;
}

function boxBasketUpdate(b, header1, header2, buttons, timeout) {
	var box = $('#id_box_basket');
	var pos = $("#boxBasket").position();
	box.css({left: pos.left-box.outerWidth(), top: pos.top});

	if (b != undefined && b != null) {
		boxBasketManageItems(b);
		// update view - check if empty

		if (b.services.length == 0) {
			$("#id_box_basket_services").fadeOut();
			$("#id_box_basket_none").fadeIn();
		} else {
			$("#id_box_basket_services").fadeIn();
			$("#id_box_basket_none").fadeOut();
			$("#id_box_basket_none").hide();
		}
	}
	// update header
	if (header1 != undefined && header1 != null) {
		$("#id_box_basket_header1").html(header1);
	}
	if (header2 != undefined && header2 != null) {
		$("#id_box_basket_header2").html(header2);
	}

	if (buttons != undefined && buttons != null) {
		if (buttons) {
			$("a[id^='id_box_basket_buttons']").show();
		} else {
			$("a[id^='id_box_basket_buttons']").hide();
		}
	}

	if (timeout != undefined) {
		setTimeout(function(e) {
			$('#id_box_basket').fadeOut();
		}, timeout);
	}

	boxBasketRefreshBasketCount();
}

function boxBasketRefreshBasketCount() {
	//var c = $('tbody.services tr').size();
	var c = $("div[id='id_box_basket_services'] div table tr").size();
	setBasketCount(c);
}


/**
 * porownuje to co jest w zwroconym koszyku z tym co jest wyswietlone. w razie
 * potrzebu usuwa z widoku albo dodaje wiersze do widoku
 */
function boxBasketManageItems(b) {
	var services = new Array();
	for (i = 0; i < b.services.length; i++) {
		var s = b.services[i];
		services[s.handle] = s;
	}
	var servicesView = $("tr[id^='id_bb_tr_']");
	var view = new Array();
	for (i = 0; i < servicesView.length; i++) {
		var s = $(servicesView[i]);
		view[s.attr('id').substring(9)] = '1';
	}

	/*
	 * dla kazdego service sprawdz czy jest taki wiersz z usluga, jesli nie ma
	 * to dodaj wiersz
	 */
	var logged = (b.loggedUserUid != null);
	for (x in services) {
		var s = services[x];
		if (view[x] != '1') {
			// styl ostatniego tr
			var cls = 'class="white"';
			var vv = $('#id_box_basket_services div table tr:last td:first');
			if (vv.hasClass('white')) {
				cls = "";
			}

			$('#id_box_basket_services div table').append(
					"<tr id='id_bb_tr_" + s.handle + "'><td " + cls
							+ " id='id_bb_name_" + s.handle + "'></td><td "
							+ cls + " id='id_bb_netto_" + s.handle + "'></td>"
							+ "<td " + cls + "><a name='remove_bb_" + s.handle
							+ "' href='#'>usuń</a></td></tr>");
			$("a[name='remove_bb_" + s.handle + "']")
					.click(boxBasketRemoveItem);
			boxBasketUpdateRow(s, logged);
			$('#id_bb_tr_' + s.handle).hide();
			$('#id_bb_tr_' + s.handle).fadeIn(1000);
		} else {
			// update itemow
			boxBasketUpdateRow(s, logged);
		}
	}

	/*
	 * dla kazdego wiesza z usluga sprawdz czy jest taka usluga w koszyku, jak
	 * nie ma to usun dany wiersz z widoku
	 */
	for (x in view) {
		if (services[x] == undefined) {
			$("#id_bb_tr_" + x).fadeOut(500, function() {
				$(this).remove();
				boxBasketRefreshBasketCount();
			});
		}
	}
}

function boxBasketRemoveItem(e) {
	e.preventDefault();
	var handle = $(this).attr('name').substring(10);
	Ajax.serviceDelete(handle, boxBasketRemoveItemAfter);
}
function boxBasketRemoveItemAfter(resp) {
	boxBasketUpdate(resp.b, "Koszyk:", resp.b.headerDesc, resp.b.services.length>0, null);
	showErrorsAndInformations(resp);
}

/**
 * odswieza opis uslugi, ceny oraz okres
 */
function boxBasketUpdateRow(s, logged) {
	$('#id_bb_name_' + s.handle).html(s.text);
	if (logged) {
		$('#id_bb_netto_' + s.handle).html(
				"<strong>" + s.nettoFormated + " zł" + "</strong>");
	} else {
		$('#id_bb_netto_' + s.handle).html("<strong></strong>");
	}
}

function afterAddItemsToBasket(resp, sub, toTop, notClose, buttons) {
	if( resp.servicesAdded.length>0 || resp.servicesRemoved.length>0 )	{
		var box = $('#id_box_basket');
		var pos = $("#boxBasket").position();
		// box.css({left: pos.left-box.outerWidth(), top: pos.top});
		//box.centerInParent();

		if( toTop == undefined )	{
			toTop = true;
		}

		//przewin do gory
		if( toTop ){
			$('html, body').animate({scrollTop:0}, 'slow');
		}
		if( resp.servicesAdded.length>0 )	{
			boxBasketPopupAdded(resp, notClose, buttons);
		}else if( resp.servicesRemoved.length>0 ){
			boxBasketPopupRemoved(resp);
		}else	{
			boxBasketPopupAdded(resp, notClose);
		}


		box.fadeIn();
	}
	if (sub) {
		$('#formDomainsFound').submit();
	}
}

function showErrorsAndInformations(resp)	{
	var er = resp.validationErrors;
	var info = resp.infoMessages;
	if( er.length>0 || info.length>0 )	{
		var c = '';
		for( i=0; i<er.length; i++ )	{
			c += er[i]+"<br />";
		}
		for( i=0; i<info.length; i++ )	{
			c += info[i]+"<br />";
		}
		showBoxInfoAlert('Informacje', c, 7000);
	} 
	if (er.length == 0) {
		var box = $("#errors").hide();
	}
	if (info.length == 0) {
		var box = $("#informations").hide();
	}
}

function removeShops()	{
	Ajax.removeAllShopCreators(function (resp) {afterAddItemsToBasket(resp, false); showErrorsAndInformations(resp); });
}
