$(document).ready(
		function()
		{
//			bt.timesheet.init();
		}
);

var year = new Date().getFullYear();
var month = new Date().getMonth();
var day = new Date().getDate();

var eventData = {
	events : [	]
};



bt.timesheet = {
		doTypeFilter : function(){
			var $this = $(this);
			var isall = $this.val() == 0;
			if ( isall )
				$this.siblings(".ts_filter").attr('checked',$this.is(':checked'));
			else{
				var count_checked = $(".ts_filter").not('[value=0]').filter(':checked').length;
				var count = $(".ts_filter").not('[value=0]').length;
				if ( count_checked > 0){
					$('.ts_filter[value=0]').attr('checked', count == count_checked );
				}
				else
					$(".ts_filter").attr('checked',true);
			}
			
			var vals =  $('.ts_filter:checked').map(function() {  return this.value;}).get().join(',');	
			var r = bt.ajax({action: 'timesheet.filter',f: vals});
			$("#calendar").weekCalendar("refresh");
},reservation_dialog:{
			selector : '.event_reservation_popup',
			options :{
				show: 'puff',
				modal: true,
				autoOpen: false,
				closeText: 'Bezár',
				draggable: true,
				title: 'Helyfoglalás',
				resizable: false,
				buttons: { 
					"Foglalás" :function(){bt.notifyBar("Foglalás folyamatban..."); bt.timesheet.doReservation() },
					"Mégsem" : function(){ $(this).dialog("close");}
				}
			}			
		}
		,disclaim_dialog:{
			selector : '.event_reservation_popup',
			options :{
				show: 'puff',
				modal: true,
				autoOpen: false,
				closeText: 'Bezár',
				draggable: true,
				title: 'Helyfoglalás',
				resizable: false,
				buttons: { 
					"Lemondom" :function(){bt.notifyBar("Lemondás folyamatban..."); bt.timesheet.doDisclaim() },
					"Mégsem" : function(){ $(this).dialog("close");}
				}
			}			
		}
		,event_detials_dialog:{
			selector : '.event_reservation_popup',
			options :{
				show: 'puff',
				modal: true,
				autoOpen: false,
				closeText: 'Bezár',
				draggable: true,
				title: 'Esemény részletei',
				resizable: false,
				buttons: { 
					"Foglalás" :function(){ $(this).dialog("close"); bt.loginorregisterDialog(); },
					"Ok" : function(){ $(this).dialog("close");}
				}
			}			
		},showDialog :function(d,a){
			var evt = bt.ajax({action: 'timesheet.event.detials',id_event: a});
			evt = bt.toJSON(evt); 
			var dialog = $(d.selector).find(".event_details");
			dialog.find('.event_name').html(evt.name);
			dialog.find('.event_start').html(evt.start);
			dialog.find('.event_end').html(evt.end);
			dialog.find('.event_trainer').html(evt.trainer);
			dialog.find('.event_room').html(evt.room);
			bt.dialog.init( d );
			bt.dialog.open(d);
			$.data(document.body,'event',a);
		}
		,showReserveDialog: function(a){//show resere dialog with event details
			bt.timesheet.showDialog(bt.timesheet.reservation_dialog,a);
		}
		,showDetailsDialog: function(a){//show resere dialog with event details
			bt.timesheet.showDialog(bt.timesheet.event_detials_dialog,a);
		},showDisclaimDialog: function(a){//show resere dialog with event details
			bt.timesheet.showDialog(bt.timesheet.disclaim_dialog,a);
		}
		,doReservation : function(){
			var e = $.data(document.body,'event');
			var r = bt.ajax({action: 'timesheet.reservation', id_event: e });
			if ( !r ){
				bt.notifyBar("A foglalás nem sikerült!");
			}else{
				r = bt.toJSON(r);
				if ( r.code == "1")
					bt.notifyBar( r.message, "error" );
				else
					bt.notifyBar( r.message );
			}
			bt.dialog.close( bt.timesheet.reservation_dialog );
			$("#calendar").weekCalendar("refresh");
		},doDisclaim: function(){
			var e = $.data(document.body,'event');
			var r = bt.ajax({action: 'timesheet.disclaim', id_event: e });
			if ( !r ){
				bt.notifyBar("A müvelet nem sikerült!");
			}else{
				r = bt.toJSON(r);
				if ( r.code == "1")
					bt.notifyBar( r.message, "error" );
				else
					bt.notifyBar( r.message );
			}
			bt.dialog.close( bt.timesheet.disclaim_dialog );
			$("#calendar").weekCalendar("refresh");
		}
		,init: function(){
			$(".ts_filter").change(bt.timesheet.doTypeFilter);
			$(".ts_only_free").change(function(){ var on = $('.ts_only_free:checked').length > 0 ? '1' : '0'; bt.ajax({action: 'timesheet.only.free',f: on }); $("#calendar").weekCalendar("refresh");});
			var copts = {
						timeslotsPerHour: 4,
						scrollToHourMillis : 0,
						displayOddEven: true,
						businessHours: {start: 6, end: 22, limitDisplay: true},
						use24Hour: true,
						timeSeparator: ' - ',
						allowEventCreation: false,
						dateFormat: 'Y M d',
						shortMonths: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', 'Júl', 'Aug', 'Szept', 'Okt', 'Nov', 'Dec'],
				        longMonths: ['Január', 'Február', 'Márc', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],
				        shortDays: ['V', 'H', 'K', 'Sz', 'Cs', 'P', 'Sz'],
				        longDays: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],
				        buttonText: {
				            today: 'Ma',
				            lastWeek: 'Előző hét',
				            nextWeek: 'Következő hét'
				          },
						readonly: false,
						allowCalEventOverlap: true,
						overlapEventsSeparate: true,
						eventClick: function(calEvent, element, dayFreeBusyManager, 
		                     calendar, clickEvent) {
		                 //console.info(calEvent);
						var c = $('input[type=hidden][name=id_customer]').length > 0;
		                 if ( calEvent.open != true ){
		                 	//only details
		                 	bt.timesheet.showDetailsDialog(calEvent.id);
		                 }else if ( calEvent.reserved == true ){
		                	 if ( c )
		                		 bt.timesheet.showDisclaimDialog(calEvent.id);
		                	 else
		                		 bt.timesheet.showDetailsDialog(calEvent.id);
		                 }else if ( calEvent.full == true){
		                	 if ( c )
		                		 bt.timesheet.showReserveDialog(calEvent.id);
		                	 else
		                		 bt.timesheet.showDetailsDialog(calEvent.id);
		                 	
		                 }else{
		                	 if ( c )
		                		 bt.timesheet.showReserveDialog(calEvent.id);
		                	 else
		                		 bt.timesheet.showDetailsDialog(calEvent.id);
						 }
						},
						draggable: function(calEvent, element) {
				          return false;
				        },
				        resizable: function(calEvent, element) {
				          return false;
				        },
				        height: function($calendar){
				        	//return $(window).height() - $("h1").outerHeight(true);
				        	return $('#main_content').height() - $('div.dv_options').height()- $("h1").outerHeight(true);
				        },
				        eventRender : function(calEvent, $event) {
				        	//if in past
				        	if(calEvent.end.getTime() < new Date().getTime() || calEvent.open != true ) {
				        		$event.css("backgroundColor", "#aaa");
				        		$event.find(".wc-time").css({"backgroundColor": "#999", "border":"1px solid #888"});
				        	}else{
				        		//if in future
				        		if( calEvent.reserved == true ){//reserved
				        			$event.css({"backgroundColor": "#ffcc66", "border":"1px solid #e2e2e2"});
				        		}else if ( calEvent.full == true ){//full
				        			$event.css({"backgroundColor": "#ff6600", "border":"1px solid #e2e2e2"});
				        		}else{//has free slots
				        			if ( calEvent.box_color.length > 0){
				        				$event.css("backgroundColor", calEvent.box_color);
				        				$event.find(".wc-title").css("color","#000");
				        			}
				        			//$event.css({"backgroundColor": "#66ff33", "border":"1px solid #e2e2e2"});
				        			//console.info($event);
				        			//$event.append("<a href='javascript: ;'>On</a>");
				        		}
				        	}
				        },
				        eventNew : function(calEvent, $event) {
				        	alert("You've added a new event. You would capture this event, add the logic for creating a new event with your own fields, data and whatever backend persistence you require.");
				        },
				        data: function(start, end, callback) {
				        	var date = bt.convertDateToStr($("#calendar").weekCalendar("getCurrentFirstDay"));
				        	var r = bt.ajax( {action: 'timesheet.events',date: date }	);
							if ( r == "0")
								bt.notifyBar("A frissítés sikertelen volt!","error");
							else{
								r =bt.toJSON(r);//strign to json
								r = bt.convertEventResponse(r);//string date to js date
								var e = { events: r }
								callback( e );
							}
			            }
				};
	
			$("#calendar").weekCalendar(copts);
			$("#btnLoad").click(
					function(){
							$("#calendar").weekCalendar("refresh");
						}
			);
		}
};

//convert string dates to js date obj
bt.convertEventResponse = function(a){
	for(var i=0;i<a.length;i++){
		var obj = a[i];
		obj['start'] = bt.convertStrToDate(obj['start']);
		obj['end'] = bt.convertStrToDate(obj['end']);
	}
	return a;
}
