﻿$(function(){
	/*
	$(".accomodation").mouseenter(function(){
		$(this).find(".more").slideDown(500);
	}).mouseleave(function(){
		$(this).find(".more").slideUp(500);
	});
	*/
	
	$(".accomodation .gallery").mouseenter(function(){
		$(this).find(".expander").show();
	}).mouseleave(function(){
		$(this).find(".expander").hide();
	});
	
	$(".accomodation .expander").click(function(){
		if ($(this).hasClass("expanded")) {
			$(this).removeClass("expanded");
			$(this).parent().find(".gallery-images").removeClass("expanded");
			$(this).parent().find(".image_div").removeClass("contracted");
		} else {
			$(this).addClass("expanded");
			$(this).parent().find(".gallery-images").addClass("expanded");
			$(this).parent().find(".image_div").addClass("contracted");
		}
		return false;
	});
	
	
	var reservationURL = SERVER_DATA.__URLPATH__+"/modules/accomodation/reserve.php";
	
	var prices = {};
	
	var show_loading_state = function($container) {
		$container.children().hide();
		if ($container.find(".loading").length == 0) {
		$container.append("<div class='loading'><br /><br /><br / ><br />Učitavanje...</div>");
		}
		$container.find(".loading").show();
	} 
	
	var hide_loading_state = function($container) {
		$container.find(".loading").hide().siblings().show();
	}
	
	
	var dateflow_select_complete = function(dates,currentMarker) {
		var numDays = dates.length,startdate_formated,enddate_formated;
		var $container = $("#reservation");
		if (typeof dates == "object" && dates.length > 0) {
			var startdate = dates[0];
			var enddate = dates[dates.length-1];
			
			$container.find("[name=startdate]").val(startdate);
			$container.find("[name=enddate]").val(enddate);
			
			startdate_formated = date("d.m.Y.",Date.parse(startdate)/1000 );
			enddate_formated = date("d.m.Y.",Date.parse(enddate)/1000 );
			
			var total = 0;
			for (var i in dates) {
				total += prices [ dates[i] ]*1;
			}
			
			validityMessage = "Rezervacija je ispravna";
			valid = true;
		} else {
			startdate_formated = enddate_formated = "-";
			numDays = total = 0;
			validityMessage = "Odaberite datume noćenja!";
			valid = false;
		}
		
		total=total.toFixed(2)+'';
		total=total.replace(".",",")+ " &euro;";
		
		$container.find(".first_night").html(startdate_formated);
		$container.find(".last_night").html(enddate_formated);
		$container.find(".num_days").html(numDays);
		$container.find(".total").html(total);
		$container.find(".validity").html(validityMessage);
		
		if (valid) {
			$container.find(".validity").removeClass("invalid");
			// $container.find(".continue").removeClass("hidden");
		} else {
			$container.find(".validity").addClass("invalid");
			// $container.find(".continue").addClass("hidden")
		}
		
	}
	
	
	var start_reservation = function(id_reservation,id_unit,$container,selectedDates) {
		var id_reservation = id_reservation;
		var $container = $container;
		$.post(reservationURL,{id_reservation:id_reservation,id_unit:id_unit,action:'start_reservation'},function(response){
			if (response) {
				if (response.success) {
					id_reservation = response.id_reservation;
					prices = response.prices;
					$container.html(response.html);
					
					$container.find(".dateflow").dateflow({
						markers:{
							vacant:{
								style:"white",
								letter:"O",
								title:'Slobodno'
							},
							occupied:{
								style:"black",
								letter:"V",
								title:'Zauzeto'
							},
							unavailable:{
								style:'darkred',
								letter:'P',
								title:'Isteklo'
							}
						},
						allowMarkerSelection:false,
						simpleSelection:true,
						simpleSelectionAllowedMarkers:{'vacant':true},
						simpleSelectionAllowDispersive:false,
						defaultMarker:'vacant',
						selected: response.vacancy,
						range: response.range,
						onSelectComplete:dateflow_select_complete
					}).dateflow("simpleselect",selectedDates);
					
					dateflow_select_complete(selectedDates,false);
					
					
					// verify_date
					$container.find(".button.continue").click(function(){
						var selectedDates = $container.find(".dateflow").dateflow("selectedDates",false,true)
						var postVars = $(this).closest("form").getFormValues();
						$.post(reservationURL,postVars,function(response){
							if (response) {
								if (response.success) {
									$container.html(response.html);
									
									
									// verify_subscriber
									$container.find(".button.continue").click(function(){
										var postVars = $(this).closest("form").getFormValues();
										$.post(reservationURL,postVars,function(response){
											if (response) {
												if (response.success) {
													$container.html(response.html);
													// to payway...
													$container.find("form").submit();
													
												} else if (response.error) {
														alert(response.message);
												}
											}
										},'json');
									});
									
									var id_unit = $container.find("[name=id_unit]").val();
									$container.find(".button.back").click(function(){
										start_reservation(id_reservation,id_unit,$container,selectedDates);
									});
									
									
								} else if (response.error) {
									alert(response.message);
								}
							}
						},'json');
					});
					
					$container.find(".button.cancel").click(function(){
						
						var id_reservation = $container.find("[name=id_reservation]").val();
						$.post(reservationURL,{action:'cancel',id_reservation:id_reservation},function(affected_rows_int){
								$container.overlay("hide");
						},'json');
					});
						
						
					
				} else if (response.error) {
					err = "DB ERROR";
				} else {
					err = "UNKNOWN SERVER ERROR";
				}
			} else {
				err = "SERVER/CONNECTION ERROR";
			}
		},'json');
		
	
	}
	
	
	
	
	
	$(".start-reservation").click(function(){
		var err = false;
		var id_unit = $(this).attr("rel");
		var $container = $("#reservation");
		$container.overlay("show");
		
		start_reservation(0,id_unit,$container,[]);
		return false;
	});
	
	// todo: place somewhere general!
	$(".toggler").click(function(){
		var $obj = $($(this).attr("rel"));
		if ($obj.hasClass("hidden")) {
			$obj.slideDown(300).removeClass("hidden");
		} else {
			$obj.slideUp(300).addClass("hidden");
		}
	});
	
	$("body").prepend($("<div>").addClass("overlay").attr({id:'reservation'}).hide());
	$(".overlay").overlay({
		useCurtain:false,
		opacity:0.4,
		animDuration:100
	});
	 $("#reservation").ajaxStart(function(){
		show_loading_state($(this));
	 }).ajaxComplete(function(){
		hide_loading_state($(this));
	 });
	 
	 
	 $(".unit h3").click(function(){
		$div = $(this).parent().find(".padding:first");
		if ($div.hasClass("hidden")) {
			$div.slideDown(300,function(){
				$(this).removeClass("hidden")
			});
		} else {
			$div.slideUp(300,function(){
				$(this).addClass("hidden")
			});
		}
	 });
	  
});
