var ccm_calendar = {  
	
	response: function(data) {
		
		resp = eval("(" + data + ")");
		var respDiv = $("div#ccm-calendar-add-event-response")
		if (resp.errors) {
			for(i = 0; i < resp.errors.length; i++) {
				respDiv.html('<div class="ccm-error">' + resp.errors[i] + '</div>');
				respDiv.show();
			}
			tinyMCE.execCommand('mceAddControl', false, 'calendar_event_description_textarea');
		} else if (resp.response) {
			respDiv.html(resp.response);
			respDiv.show();
			setTimeout(function() {
				window.location.reload();
			}, 500);
		}
		//$(respDiv.getParent('.ccm-dialog-content')).scrollTo(0,0);
		setTimeout('$(".ccm-dialog-content").animate({ scrollTop: 0}, 1000);',500);
	},
	
	addEventSubmit:function(addEventForm){  
		try{
			tinyMCE.execCommand('mceRemoveControl', false, 'calendar_event_description_textarea'); 
			
			this.servicesAjax = $.ajax({ 
				url: addEventForm.action,
				data: $(addEventForm).serialize(),
				type: 'POST',
				success: function(resp){   
					ccm_calendar.response(resp);
				}
			});			
		}catch(e){
			alert(e.message)	
		}
		return false;
	},
	
	init:function(type){
		
		this.type = type;
		
		var trigs=$('.ccm-calendar-popup-trigger');
		for(var i=0;i<trigs.length;i++){
			var id=trigs[i].id.replace('calPopupTrigger','');
			var p=$('#calPopup'+id); 
			if (p.length == 0) {
				continue;
			}
			trigs[i].popup=p;
			trigs[i].onmouseover=function(e){ 
				offs = $(this).position();
				clearTimeout(this.popup.tmr); 
				$('.ccm-calendar-popup').hide();
				this.popup.css('display','block'); 
				this.popup.css('position','absolute'); 

				var mwidth = this.popup.width();
				var mheight = this.popup.height();
				var posX = offs.left;
				var posY = offs.top;
				
				var offsetY = (ccm_calendar.type == 'WEEK') ? 30 : 20;

				if ($(window).height() < e.clientY + mheight) {
					posY = posY - mheight - 30;
				} else {
					posY = posY + offsetY;
				}
				
				if ($(window).width() < e.clientX + mwidth) {
					posX = e.pageX - mwidth - 20;
				}
				
				this.popup.css('top', posY); 
				this.popup.css('left', posX); 				
			}
			trigs[i].onmouseout=function(){ this.popup.tmr=setTimeout(function() { "$('#"+this.popup.attr('id')+"').css('display','none');"},1000); }
			p.mouseover(function(){ clearTimeout(this.tmr); });
			p.mouseout(function(){ this.tmr=setTimeout("$('#"+this.id+"').css('display','none');",1000); });
			
		}
 
		if ($("#ccm-calendar-add-event").length > 0) {
			 
			/*
			$(".ccm-calendar-add-event-form").submit(function(){ 
				tinyMCE.execCommand('mceRemoveControl', false, 'calendar_event_description_textarea'); 
			})
			
			$(".ccm-calendar-add-event-form").ajaxForm({
				beforeSubmit: function(){ 
					//alert('before submit');
				},
				success: function(resp) {
					ccm_calendar.response(resp);
				}
			});
			*/ 
			
			$(".ccm-calendar-events a").click(function(e) {
				e.stopPropagation();
			});
			
			$("#calendar_event_is_all_day").click(function() {
				var cbiad = $(this).get(0);
				$("#calendar_event_start_date_tw").each(function() {
					if (cbiad.checked) {
						$("#calendar_event_start_date_tw").hide();
						$("#calendar_event_end_date_tw").hide();
					} else {
						$("#calendar_event_start_date_tw").show();
						$("#calendar_event_end_date_tw").show();
					}
				});
			});
			
			
			//$('#calendar_event_description').addClass('advancedEditor');
			
			$("#calendar_event_start_date_a").change(ccm_calendar.autoEndTime);
			$("#calendar_event_start_date_m").change(ccm_calendar.autoEndTime);
			$("#calendar_event_start_date_h").change(ccm_calendar.autoEndTime);
			$("#calendar_event_start_date_dt").change(ccm_calendar.autoEndTime);			
			
			// if you have the ability to hover over a cell with ccm-calendar-event-hover then that means you get the add 
			$(".ccm-calendar-cell-add-event").click(function() {
				var date = $(this).attr('ccm-calendar-cell-date');
				$("#calendar_event_start_date_dt").val(date);
				$("#calendar_event_end_date_dt").val(date);
				$.fn.dialog.open({
					title: "Add Event",
					element: '#ccm-calendar-add-event',
					width: 620,
					height: 380, 
					modal: false, 
					onClose: function() {
						// we have to retrieve the add event element and insert it back into the dom where it used to be
						// trust me, this is necessary due to the javascript we're loading into the popup
						$("#ccm-calendar-add-event").prependTo("#ccm-calendar-add-event-wrapper");						
					}					
				});
				
				//giving the duplicated description textarea a unique id so that it can have a unique reference
				//(hiding big chunks of html that are copied into the dialog window seems to cause lots of problems like this)
				var desc=$('.ccm-dialog-window #calendar_event_description').get(0);
				if(desc) desc.id='calendar_event_description_textarea';
				tinyMCE.execCommand('mceAddControl', false, 'calendar_event_description_textarea');
			});
			


		}
				
	},
	
	autoEndTime:function(){ 
		var start_caldate = $("#calendar_event_start_date_dt").val();
		var start_hour = $("#calendar_event_start_date_h").val();
		var start_minute = $("#calendar_event_start_date_m").val();		
		var start_ampm = $("#calendar_event_start_date_a").val();
		
		var start_date = new Date( );
		var start_caldateParts=start_caldate.split('/');
		start_date.setFullYear( start_caldateParts[2] );
		start_date.setMonth( start_caldateParts[0] );
		start_date.setDate( start_caldateParts[1] );
		//alert(start_caldate+' '+start_hour+":"+start_minute+' '+start_ampm);
		var start_24_hours = (start_ampm=='PM')?(parseInt(start_hour)+12):start_hour; 
		start_date.setHours( start_24_hours );
		start_date.setMinutes( start_minute );
		//alert( start_date.getMonth()+'/'+start_date.getDate()+'/'+start_date.getFullYear()+' '+start_date.getHours()+':'+start_date.getMinutes() );
		
		var end_date = new Date();
		end_date.setTime( start_date.getTime() + (3600*1000) );
		//alert( end_date.getMonth()+'/'+end_date.getDate()+'/'+end_date.getFullYear()+' '+end_date.getHours()+':'+end_date.getMinutes() );
		
		$("#calendar_event_end_date_dt").val( end_date.getMonth()+'/'+end_date.getDate()+'/'+end_date.getFullYear() );
		var end_hours = (end_date.getHours()<=12)?end_date.getHours():end_date.getHours()-12;
		$("#calendar_event_end_date_h").val( end_hours );
		var end_minute = (end_date.getMinutes()<10)?'0'+end_date.getMinutes():end_date.getMinutes();
		$("#calendar_event_end_date_m").val( end_minute );
		var end_ampm = (end_date.getHours()<=12)?'AM':'PM';
		$("#calendar_event_end_date_a").val( end_ampm );		
	}
}