
var toCancel = '';
$(document).ready(function () {
	var to = $('.calendar-day').index($("#cal-day-curr"))-3;
	var api = $("div.scrollable").scrollable({
		size: 7,
		move: 10
	}).mousewheel({api: true});
	if(api)
		api.move(to);

//tooltip
	$(".calendar-court").tooltip({ effect: 'fade', position: 'center right', offset: [-20, -376]});


	$("div.calScrollable").scrollable({
		items: ".calItems",
		item: ".calItem",
		prevPage: ".calPrevPage",
		nextPage: ".calNextPage",
		size: 6,
		disabledClass: "disabledTmp"
	}).mousewheel();

//give alert if not logged
	$(".free").click(function (){
		if($(".logged-as").html() == null)
			jAlert(lang.loginFirst,lang.alert);
	});

//setting right address for reservation
	$("#do-reservation").attr("href",'?pid=reservation&code=add&ticket='+$("#ticket option:selected").val()+'&carnet='+$("#carnet option:selected").val());

//chosing another day - reload calendar

	$('.calendar-day').click(function () {

		var content_show = 'pid=reservation&code=getAjaxCalendar&ticket='+$('#ticket option:selected').val()+'&carnet='+$('#carnet option:selected').val()+'&date='+$(this).attr('rel');
		var clicked = $(this);
		$.ajax({
			type: "get",
			url: "index.php",
			data: content_show,
			cache: false,
			beforeSend: function(){
				var api = $("div.calScrollable").scrollable();
				var apiHeight = $("div.calScrollable").height();
				api.begin();
				api.getItemWrap().html('<img src="images/ajax-loader.gif" style="float: left; margin-top:'+(apiHeight/2-27)+'px; margin-left: 350px; " />');
			},
			success: function(data){
				$('.calendar-day').removeClass('selected');
				clicked.addClass('selected');
				var api = $("div.calScrollable").scrollable();
				api.getItemWrap().html(data);
				api.reload();
			},
			error: function() {
				$(".calScrollable").html(lang.calendarLoadError);
			}
		});

		return false;

	});

//changing ticket type - reload carnets, reload calendar, reset reservation

	$('#ticket').change( function (){

		var content_show = 'pid=reservation&code=getAjaxCarnets&ticket='+$('#ticket option:selected').val();
		$(document).queue(function (){
		$.ajax({
			type: "get",
			url: "index.php",
			data: content_show,
			cache: false,
			beforeSend: function(){
				$("#carnet").attr("disabled",true);
			},
			success: function(data){
				$("#carnet option").remove();
				data = $.evalJSON(data);
                                var counter = 0;
				$.each(data, function (){
                                        ++counter;
                                        var selected = '';
                                        if(counter == 1)
                                            selected = ' selected="selected"';
                                        else
                                            selected = '';

					if(this['const'] == 1)
						this.count = 0;
					$("#carnet").append('<option value="'+this.id+'" id="'+this.count+'-'+this.buy_all+'-'+this.price+'-'+this.multisport+'"'+selected+'>'+this.title+'</option>');
				})
				//setting right address for reservation
				$("#do-reservation").attr("href",'?pid=reservation&code=add&ticket='+$("#ticket option:selected").val()+'&carnet='+$("#carnet option:selected").val());
				$('.chosen-options').css('display','');
				if($("#ticket option:first").val() == 0)
					$("#ticket option:first").remove();
				$('.chosen-ticket').html($("#ticket option:selected").html());
				$('.chosen-carnet').html($("#carnet option:selected").html());
				var carnet = $("#carnet option:selected").attr("id").split('-');
				$('.chosen-price').html(carnet[2]+' PLN');

			},
			complete: function (){
				$(document).dequeue();
			},
			error: function() {
			}
		});
		});


		$(document).queue(function (){
		var content_show = 'pid=reservation&code=getAjaxCalendar&ticket='+$('#ticket option:selected').val()+'&carnet='+$('#carnet option:selected').val()+'&date='+$('.calendar-day.selected').attr('rel')+'&term=reset';
		$.ajax({
			type: "get",
			url: "index.php",
			data: content_show,
			cache: false,
			beforeSend: function(){
				var api = $("div.calScrollable").scrollable();
				var apiHeight = $("div.calScrollable").height();
				api.begin();
				api.getItemWrap().html('<img src="images/ajax-loader.gif" style="float: left; margin-top:'+(apiHeight/2-27)+'px; margin-left: 350px; " />');
			},
			success: function(data){
				var api = $("div.calScrollable").scrollable();
				api.getItemWrap().html(data);
				api.reload();
				$("#reservation ul li").remove();
				$("#reservation").css("display","none");
				$("#carnet").attr("disabled",false);
			},
			complete: function (){
				$(document).dequeue();
			},
			error: function() {
				$(".calScrollable").html(lang.calendarLoadError);
			}
		});
		});

	});


//changing carnet type -  reload calendar, reset reservation

	$('#carnet').change( function (){
		var content_show = 'pid=reservation&code=getAjaxCalendar&ticket='+$('#ticket option:selected').val()+'&carnet='+$('#carnet option:selected').val()+'&date='+$('.calendar-day.selected').attr('rel')+'&term=reset';
		$.ajax({
			type: "get",
			url: "index.php",
			data: content_show,
			cache: false,
			beforeSend: function(){
				var api = $("div.calScrollable").scrollable();
				var apiHeight = $("div.calScrollable").height();
				api.begin();
				api.getItemWrap().html('<img src="images/ajax-loader.gif" style="float: left; margin-top:'+(apiHeight/2-27)+'px; margin-left: 350px; " />');
			},
			success: function(data){
				var api = $("div.calScrollable").scrollable();
				api.getItemWrap().html(data);
				api.reload();
				$("#reservation ul li").remove();
				$("#reservation").css("display","none");
				//setting right address for reservation
				$("#do-reservation").attr("href",'?pid=reservation&code=add&ticket='+$("#ticket option:selected").val()+'&carnet='+$("#carnet option:selected").val());
				$('.chosen-options').css('display','');
				$('.chosen-carnet').html($("#carnet option:selected").html());
				var carnet = $("#carnet option:selected").attr("id").split('-');
				$('.chosen-price').html(carnet[2]+' PLN');

			},
			complete: function (){
				$(document).dequeue();
			},
			error: function() {
				$(".calScrollable").html(lang.calendarLoadError);
			}
		});


	});

//add term to reservation

	$.listen("click",".clickabble", function() {
		var term = $(this);
		if(toCancel != '')
		{
			cancelAndReserve(toCancel, term);
			toCancel = '';
		}
		else if($("#ticket").val() == 0 || $("#carnet").val() == 0)
			jAlert(lang.chooseTicketCarnet,lang.alert);
		else
		{
			addTermToReservation(term);
		}
	});

//remove term from reservation

	$.listen("click","a.abort", function (){
		term = $(this).parent("div");
		var content_show = 'pid=reservation&code=removeTermFromSession&term='+term.attr("id");
		$.ajax({
			type: "get",
			url: "index.php",
			data: content_show,
			cache: false,
			beforeSend: function(){
			},
			success: function(data){
				$("#term-"+term.attr("id")).remove();
				if($("#reservation ul li").size() == 0)
					$("#reservation").css("display","none");
				return false;
			},
			complete: function (){
				term.removeClass("selected");
				term.addClass("free");
				term.html('rezerwuj');
				$(".free").addClass('clickabble');
				term.addClass("clickabble");
			},
			error: function() {
				jAlert(lang.cancelReservationFail,lang.alert);
			}
		});
		return false;
	});

//finish reservation

	$("#do-reservation").click( function (){
		var carnet = $("#carnet option:selected").attr("id").split("-");
		if($("#ticket").val() == 0 || $("#carnet").val() == 0)
		{
			jAlert(lang.chooseTicketCarnet,lang.alert);
			return false;
		}
		else if(carnet[1] == 1 && $("#reservation ul li").size() != carnet[0])
		{
			var missed = carnet[0]-$("#reservation ul li").size();
			jAlert(lang.mustChoose+' '+missed+' '+lang.reservations,lang.alert);
			return false;
		}
		else
			return true;
	});

//cancel reserved term
	$.listen("click",".cancel", function (){
		$(".toCancel").removeClass("toCancel");
		var term = $(this).attr("id").split("-");
		if(term[2] == 1)
		{
			jAlert(lang.chooseAlternative,lang.alert);
			toCancel = $(this);
			$(this).parent('div').addClass("toCancel");
		}
		else
			cancelTerm($(this));
		return false;
	});

});

//call dialog if cancel goes from user panel
function panelCancel(term,carnet_type,reservation_id)
{
	jAlert(lang.chooseAlternative,lang.alert);
	toCancel = $("#cancel-"+term+"-"+carnet_type+"-"+reservation_id);
}


function addTermToReservation(term)
{
	var carnet = $("#carnet option:selected").attr("id").split("-");
	$(".free").removeClass("clickabble");
	$(document).queue(function (){
		var status = 1;

		$(document).queue(function (){
			var max = carnet[0];
			var reserved = 0;
			$("#reservation ul li").each(function (){
				if($(this).attr("rel") == 0.5)
					reserved += parseFloat($(this).attr("rel"));
				else
					reserved += 1;
			});
			if(reserved >= max-0.5)
			{
				jAlert(lang.canReserve+" "+max+" "+lang.terms,lang.alert);
				status = -1;
			}
			$(document).dequeue();
		});
		//check login session
		$(document).queue(function (){
			var content_show = 'code=checkLog&ajax=1';
			$.ajax({
				type: "get",
				url: "index.php",
				data: content_show,
				cache: false,
				beforeSend: function(){
				},
				success: function(data){
					if(data == 0)
					{
						jAlert(lang.notLogged,lang.alert);
						status = -1;
					}
				},
				complete: function (){
					$(document).dequeue();
				},
				error: function() {
				}
			});
		});

		//check term status
		$(document).queue(function (){
			var content_show = 'pid=reservation&code=checkTermStatus&term='+term.attr('id')+'&ajax=2';
			$.ajax({
				type: "get",
				url: "index.php",
				data: content_show,
				cache: false,
				beforeSend: function(){
				},
				success: function(data){
					if(data != 0)
					{
						jAlert(lang.termIsUnavailable,lang.alert);
						term.removeClass("free");
						term.removeClass("clickabble");
						term.addClass("disabled");
						term.html(lang.termUnavailable);
						status = 0;
					}
				},
				complete: function (){
					$(document).dequeue();
				},
				error: function() {
				}
			});
		});

		$(document).queue(function (){
			if(status == 1)
			{
				var content_show = 'pid=reservation&code=addTermToSession&term='+term.attr("id");
				$.ajax({
					type: "get",
					url: "index.php",
					data: content_show,
					cache: false,
					beforeSend: function(){
					},
					success: function(data){
						if($("#term-"+term.attr("id")).length == 0)
						{
						term.addClass("selected");
						term.removeClass("clickabble");
						term.removeClass("free");
						term.html('<b>'+lang.reservation+'</b><br /><a href="#" class="back abort">'+lang.cancel+' <span>&raquo;</span></a>');
						$(".free").addClass("clickabble");
						$("#reservation").css("display","block");
						var params = term.attr("id").split('-');
						var hour_start = new Date(params[1]*1000);
						hour_start = new Date( (params[1]*1000) + (hour_start.getTimezoneOffset()*60000) );
						var hour_end = new Date(params[2]*1000);
						hour_end = new Date( (params[2]*1000) + (hour_end.getTimezoneOffset()*60000) );
						var court = "#court-"+params[0];
						$("#reservation ul").append('<li id="term-'+term.attr("id")+'">'+lang.date+': '+dateFormat(hour_start, "dd-mm-yyyy")+', '+lang.hours+': '+dateFormat(hour_start,"HH:MM")+' - '+dateFormat(hour_end,"HH:MM")+', '+lang.court+': '+$(court).html()+'</li>');
						}
					},
					complete: function (){
						$(document).dequeue();
					},
					error: function() {
						jAlert(lang.reservationFail,lang.alert);
					}
				});

			}
			else if(status == 0)
			{
				jAlert(lang.termAlreadyReserved,lang.alert);
				term.addClass("reserved");
				term.removeClass("clickabble");
				term.removeClass("free");
				$(".free").addClass("clickabble");
			}
			$(document).dequeue();

		});

	});
	$(document).dequeue();
}

//cancelling open term
function cancelTerm(term)
{
	var termin = term.attr("id").split("-");
	var content_show = 'pid=reservation&code=cancelTerm&term='+termin[1];
	jConfirm(lang.cancelConfirm,lang.alert,function (r){
		if(r == true)
		{
			$.ajax({
				type: "get",
				url: "index.php",
				data: content_show,
				cache: false,
				beforeSend: function(){
				},
				success: function(data){
					if(data == 1)
					{
						term.parent("div").removeClass("user-reservation");
						term.parent("div").removeClass("reserved");
						term.parent("div").addClass("clickabble");
						term.parent("div").addClass("free");
						term.parent("div").html(lang.reserve);
						jAlert(lang.termCanceled,lang.alert);
					}
					else
						jAlert(lang.termCancelFail,lang.alert);
				},
				complete: function (){
					$(document).dequeue();
				},
				error: function() {
				}
			});
		}
	});
}

//cancelling term and reservation requirement
function cancelAndReserve(termCancel, term)
{
	var cancel = termCancel.attr("id").split("-");
	var termin = term.attr("id");
	var status = 1;
	jConfirm(lang.cancelAndReserveConfirm,lang.alert,function (r){
		if(r == true)
		{
			//check login session
			$(document).queue(function (){
				var content_show = 'code=checkLog&ajax=1';
				$.ajax({
					type: "get",
					url: "index.php",
					data: content_show,
					cache: false,
					beforeSend: function(){
					},
					success: function(data){
						if(data == 0)
						{
							jAlert(lang.notLogged,lang.alert);
							status = 0;
						}
					},
					complete: function (){
						$(document).dequeue();
					},
					error: function() {
					}
				});
			});

			//check term status
			$(document).queue(function (){
				var content_show = 'pid=reservation&code=checkTermStatus&term='+term.attr('id')+'&ajax=2';
				$.ajax({
					type: "get",
					url: "index.php",
					data: content_show,
					cache: false,
					beforeSend: function(){
					},
					success: function(data){
						if(data != 0)
						{
							jAlert(lang.termIsUnavailable,lang.alert);
							term.removeClass("free");
							term.removeClass("clickabble");
							term.addClass("disabled");
							term.html(lang.termUnavailable);
							status = 0;
						}
					},
					complete: function (){
						$(document).dequeue();
					},
					error: function() {
					}
				});
			});
			$(document).queue(function (){
				if(status == 1)
				{
					var content_show = 'pid=reservation&code=cancelAndReserve&cancel='+cancel[1]+'&term='+termin+'&reservation='+cancel[3];
					$.ajax({
						type: "get",
						url: "index.php",
						data: content_show,
						cache: false,
						beforeSend: function(){
						},
						success: function(data){
							if(data == 1)
							{
								termCancel.parent("div").removeClass("user-reservation");
								termCancel.parent("div").removeClass("reserved");
								termCancel.parent("div").removeClass("toCancel");
								termCancel.parent("div").addClass("clickabble");
								termCancel.parent("div").addClass("free");
								termCancel.parent("div").html(lang.reserve);
								term.removeClass("free");
								term.removeClass("clickabble");
								term.addClass("reserved");
								term.addClass("user-reservation");
								term.html(lang.yourReservation+' (ID: '+cancel[3]+')');
								jAlert(lang.cancelAndReserveOk,lang.alert);
							}
							else
								jAlert(lang.cancelAndReserveFail,lang.alert);
						},
						complete: function (){
							$(document).dequeue();
						},
						error: function() {
						}
					});
				}
				else
				{
					jAlert('Termin został już zarezerowany przez inną osobę.',lang.alert);
					term.addClass("reserved");
					term.removeClass("clickabble");
					term.removeClass("free");
					toCancel = termCancel;
				}
			});
		}
	});
}

