var Dom = YAHOO.util.Dom; 
var DDM = YAHOO.util.DragDropMgr; 
var YEvent = YAHOO.util.Event; 
var $=Dom.get;

var date =new Date();
var calendar1;
var boot = 1;
var oCalendarMenu;
var panel_eventeditor_btn_date;
var oCalendar;
var date_selected = new Date();
date_selected.setHours(0,0,0,0);
var date_selected_b;
var hour_selected;
var panel_eventeditor;
var event_edited;

var div_day_click = function(e) { 
	var target = YAHOO.util.Event.getTarget(e); 
	//alert( elTarget.className );
	if (target.className=='div_day') {
		var editor = YAHOO.util.Dom.getElementsByClassName('div_event_free','',target);
		editor = editor[0];
		day_showeditor(editor);
	}
}


init = function() {
  var elements = YAHOO.util.Dom.getElementsByClassName('div_event','div');
  if (boot==1) {
	for (var i=0; i < elements.length; i++) {
		event_setupDragDrop(elements[i]);
	}
	panel_eventeditor = new YAHOO.widget.Panel("mypanel", { 
		width:"400px",  
		fixedcenter: true,  
		constraintoviewport: true,  
		underlay:"matte",  
		close:true,  
		visible:false,  
		zindex: 4,
		modal:true,
		draggable:false}); 
	panel_eventeditor.render();
	$('mypanel').style.display = 'block';
	
	var panel_eventeditor_btn_save = new YAHOO.widget.Button("panel_eventeditor_btn_save"); 
	var panel_eventeditor_btn_cancel = new YAHOO.widget.Button("panel_eventeditor_btn_cancel"); 
	panel_eventeditor_btn_save.on("click", panel_eventeditor_btn_save_click); 
	panel_eventeditor_btn_cancel.on("click", panel_eventeditor_btn_cancel_click); 
	
	oCalendarMenu = new YAHOO.widget.Overlay("calendarmenu");
	//var oDateFields = YAHOO.util.Dom.get("datefields");
	panel_eventeditor_btn_date = new YAHOO.widget.Button({  
			type: "menu",  
			id: "calendarpicker",  
			label: "Select Date",  
			menu: oCalendarMenu,
			container: 'panel_eventeditor_btn_date' 
			}); 
	panel_eventeditor_btn_date.on("click", panel_eventeditor_btn_date_click); 
	
  }
  YAHOO.util.Event.removeListener(elements, 'mouseover');
  YAHOO.util.Event.removeListener(elements, 'mouseout');
  YAHOO.util.Event.removeListener(elements, 'click');
  YAHOO.util.Event.addListener(elements, "mouseover", div_event_over);
  YAHOO.util.Event.addListener(elements, "mouseout", div_event_out);
  YAHOO.util.Event.addListener(elements, "click", div_event_click);
  YAHOO.util.Event.addListener(elements, "dblclick", div_event_dblclick);
  
  if (boot==1) {
	var elements = YAHOO.util.Dom.getElementsByClassName('div_day','div');
	for (var i=0; i < elements.length; i++) {
		var d = new YAHOO.util.DDTarget( elements[i] ); 
	}
	
	YAHOO.util.Event.addListener(elements, "click", div_day_click);
	//YAHOO.util.Event.addListener(elements, "mouseover", div_day_over);
	
	
	date.setTime(date_time * 1000);
	var selected = (date.getMonth()+1) + "/" + date.getDate() + "/" + date.getFullYear();
	var page = (date.getMonth()+1) + "/" + date.getFullYear();
	calendar1 = new YAHOO.widget.CalendarGroup("cal1Container_t",'cal1Container',{selected: selected, pagedate: page, PAGES:2, start_weekday:1, show_week_header:true}); 
	calendar1.selectEvent.subscribe(calendar1_selectdate);
	calendar1.render();
  }

  var elements = YAHOO.util.Dom.getElementsByClassName('div_event_free','div');
  YAHOO.util.Event.removeListener(elements, 'click');
  YAHOO.util.Event.addListener(elements, "click", div_event_free_click);

  var elements = YAHOO.util.Dom.getElementsByClassName('div_event_delete','a');
  YAHOO.util.Event.removeListener(elements, 'click');
  YAHOO.util.Event.addListener(elements, "click", div_event_delete_click);

  var elements = YAHOO.util.Dom.getElementsByClassName('div_event_editor','input');
  YAHOO.util.Event.removeListener(elements, 'blur');
  YAHOO.util.Event.addListener(elements, "blur", div_event_editor_blur);
  YAHOO.util.Event.addListener(elements, "keypress", div_event_editor_keypress);

  var elements = YAHOO.util.Dom.getElementsByClassName('div_event_free_editor','input');
  YAHOO.util.Event.removeListener(elements, 'blur');
  YAHOO.util.Event.addListener(elements, "blur", div_event_free_editor_blur);
  YAHOO.util.Event.addListener(elements, "keypress", div_event_free_editor_keypress);
  
  YAHOO.util.Event.addListener($('mypanel'), "keypress", div_eventeditor_keypress);
  
  boot = 0;
};

YAHOO.util.Event.addListener(window, 'load', init );

var div_event_over = function(e) { 
	YAHOO.util.Dom.setStyle( this, 'background-color', "#eeeeee"); 
	var del = Dom.getElementsByClassName('div_event_delete','',this)[0];
	YAHOO.util.Dom.setStyle( del, 'display', "block");
        //alert(del.parentNode.parentNode.parentNode.offsetTop);
        var x = del.parentNode.parentNode.parentNode.offsetTop - 110;
        del.style.top = x + "px";
        del.style.right = "475px";
        //alert(del.style.top);
} 

var div_event_out = function(e) { 
	YAHOO.util.Dom.setStyle( this, 'background-color', "#dddddd"); 
	var del = Dom.getElementsByClassName('div_event_delete','',this)[0];
	YAHOO.util.Dom.setStyle( del, 'display', "none"); 
} 

var div_event_click = function(e) { 
	var loading = Dom.getElementsByClassName('div_event_loading','',this)[0];
	display = Dom.getStyle( loading, 'display');
	if (display=='block') return;
	
	var text = Dom.getElementsByClassName('div_event_text','',this)[0];
	var editor = Dom.getElementsByClassName('div_event_editor','',this)[0];
	editor.value = events.get(this.id).title;
	//var del = Dom.getElementsByClassName('div_event_delete','',this)[0];
	YAHOO.util.Dom.setStyle( text, 'display', "none"); 
	YAHOO.util.Dom.setStyle( editor, 'display', "block"); 	
	//YAHOO.util.Dom.setStyle( del, 'display', "none"); 	
	editor.focus();
	focused = editor;
} 

var div_event_free_click = function(e) { 
	day_showeditor(this);
} 


var day_showeditor = function(x) {
	var editor = YAHOO.util.Dom.getElementsByClassName('div_event_free_editor','',x);
	editor = editor[0];
	editor.value = "";
	YAHOO.util.Dom.setStyle( editor, 'display', "block"); 	
	editor.focus();
}


var div_event_delete_click = function(e) { 
	YAHOO.util.Event.preventDefault(e); 
	var id = YAHOO.util.Dom.getAncestorByTagName(this, 'div');
	var td = Dom.getAncestorByClassName(this,"div_day");
	deleteevent(td, id);
} 


var div_event_editor_blur = function(e) { 
        focused = 0;
	var id = YAHOO.util.Dom.getAncestorByTagName(this, 'div');
	var text = Dom.getElementsByClassName('div_event_text','',id)[0];
	var editor = Dom.getElementsByClassName('div_event_editor','',id)[0];	
	YAHOO.util.Dom.setStyle( text, 'display', "block"); 
	YAHOO.util.Dom.setStyle( editor, 'display', "none"); 	
	
	var td = Dom.getAncestorByClassName(this,"div_day");
	var event = events.get(id.id);

	if (editor.value!=event.title) {
		if ( (trim(editor.value)).length==0 ) {
			deleteevent(td,id);
			} else {
			//text.innerHTML = editor.value;
			text.innerHTML = event.time + ' - '  + htmlentities(editor.value);
			saveevent(td, id, editor.value);
			}
	}
} 

var div_event_editor_keypress = function(e) { 
	if (e.keyCode==13) {
		this.blur();
	}
} 


var div_event_free_editor_blur = function(e) { 
	var td = Dom.getAncestorByClassName(this,"div_day");
	
	text = trim(this.value);
	if (text.length>0) {
		addevent(td.id, this.value);
	}
	YAHOO.util.Dom.setStyle( this, 'display', "none"); 	
	this.value = "";
	return;
} 

var div_event_free_editor_keypress = function(e) { 
	if (e.keyCode==13) {
		this.blur();
	}
} 


function saveevent(day, event, text) {
	events.get(event.id).title = text;
	
	if (userid==0) {
		return;
	}

        var span_text = Dom.getElementsByClassName('div_event_text','',event)[0];
	var span_loading = Dom.getElementsByClassName('div_event_loading','',event)[0];
	Dom.setStyle( span_text, 'display', 'none'); 
	Dom.setStyle( span_loading, 'display', 'block');
	Dom.setStyle( event, 'background-color', "#ffffff"); 
	Dom.setStyle( event, 'color', "#ffffff"); 

	var callback = { 
		success:handleSuccess2, 
		failure: handleFailure, 
		argument: [event, span_text, span_loading] 
		}; 
	var postData = "id=" + event.id + "&text=" + urlencode(text);
	
	if (userid==0) {
		return;
	}
	
	var request = YAHOO.util.Connect.asyncRequest('POST', "do_event_modify.php", callback, postData); 	
}

var handleSuccess2 = function(o){ 
	//alert(o.responseText);
	 if(o.responseText !== undefined){ 
		var text = o.argument[1];
		var loading = o.argument[2];
		Dom.setStyle( text, 'display', 'block'); 
		Dom.setStyle( loading, 'display', 'none');
	 
	 	var attributes = { 
			color: { to: '#000000' }, 
			backgroundColor: { to: '#dddddd' } 
		}; 	
		var anim = new YAHOO.util.ColorAnim(o.argument[0], attributes); 
		anim.animate();
	} 
} 

var handleFailure = function(o){ 
	Dom.setStyle( o.argument, 'display', 'none'); 
} 


var addevent = function (day, text) {
	var day = Dom.get(day);
	var last = Dom.getElementsByClassName('div_event_free','',day);
	last = last[0];

	div = document.createElement('div');
	div.innerHTML = '<span class="div_event_loading">saving...</span><span class="div_event_text">' + '</span>'
		+ '<input type="text" class="div_event_editor" value="" style="display: none; ">'
		+ '<a href="delete" class="div_event_delete">[X]</a>';
	div.className = 'div_event div_categ categ_1';
	
	Dom.setStyle( div, 'background-color', "#ffffff"); 
	Dom.setStyle( div, 'color', "#ffffff"); 
	
	if (userid==0) {
		if (confirm('Would you like to register a new account so you can save this new event?')) {
			$('edit_register_starttime').value = starttime;
			$('edit_register_endtime').value = endtime;
			$('edit_register_title').value = text;
			$('form_register').submit();
			return;
		} else {
			//removeElement2(newevent);
		}
		if (C_NEWUSER_SHOW_EVENTS==0) return;
	}	
	
	var newevent = Dom.insertBefore(div, last);

	var span_text = Dom.getElementsByClassName('div_event_text','',newevent)[0];
	var span_loading = Dom.getElementsByClassName('div_event_loading','',newevent)[0];
	Dom.setStyle( span_text, 'display', 'none'); 
	Dom.setStyle( span_loading, 'display', 'block');

	var d = new Date();

	var d_sel = new Date();
	d_sel.setTime( parseInt(day.id)*1000 );
	d.setFullYear(d_sel.getFullYear(), d_sel.getMonth(), d_sel.getDate());
	d.setHours(d_sel.getHours(), 0, 0, 0);	
	//var starttime = parseInt(day.id) + 60 * 60 * 12;
	//var endtime = starttime + 60 * 60;
	var event = new Event(day.id);
	//event.starttime = starttime;
	//event.endtime = endtime;
	event.starttime = d.getTime()/1000;
	//var starttime = event.starttime - d.getTimezoneOffset() * 60;
	var starttime = event.starttime;
	//event.starttime = event.starttime - d.getTimezoneOffset() * 60;
	event.endtime = d.getTime()/1000;
	//var endtime = event.endtime - d.getTimezoneOffset() * 60 + 60*60;
	var endtime = event.endtime + 60*60;
	//event.endtime = event.endtime - d.getTimezoneOffset() * 60;
	event.title = text;
	//alert(event.starttime);
	//var d = new Date();
	//d.setTime(event.starttime * 1000);
	d.setTime( (event.starttime  + d.getTimezoneOffset() * 60) * 1000);
	event.time = d.format('g:i A');
	span_text.innerHTML = event.time + ' - ' + htmlentities(event.title);

	var callback = { 
		success:handleSuccess, 
		failure: handleFailure, 
		argument: [newevent, span_text, span_loading, event] 
		}; 
	var postData = "starttime=" + starttime + "&endtime=" + endtime +  "&text=" + urlencode(text);
	var request = YAHOO.util.Connect.asyncRequest('POST', "do_event_add.php", callback, postData); 
	init();
}

var handleSuccess = function(o){ 
	//alert('success');
        //alert(o.statusText);
	 if(o.responseText !== undefined){ 
		var event = o.argument[0];
		var text = o.argument[1];
		var loading = o.argument[2];
		event.id = o.responseText;
		var day = Dom.getAncestorByClassName(event,"div_day");
		var e = o.argument[3];
		
		e.id = event.id;
		events.add(e);
		
		Dom.setStyle( text, 'display', 'block'); 
		Dom.setStyle( loading, 'display', 'none');
	 	var attributes = { 
			color: { to: '#000000' }, 
			backgroundColor: { to: '#dddddd' } 
		}; 	
		var anim = new YAHOO.util.ColorAnim(o.argument[0], attributes); 
		anim.animate();
 
		event_setupDragDrop( event );		
	} 
} 

function deleteevent(day, event) {
	var span_text = Dom.getElementsByClassName('div_event_text','',event)[0];
	var span_loading = Dom.getElementsByClassName('div_event_loading','',event)[0];
	var del = Dom.getElementsByClassName('div_event_delete','',event)[0];
	del.innerHTML = "";
	span_loading.innerHTML = 'deleting...';
	Dom.setStyle( span_text, 'display', 'none'); 
	Dom.setStyle( span_loading, 'display', 'block');
	//Dom.setStyle( event, 'background-color', "#ffffff"); 
	//Dom.setStyle( event, 'color', "#ffffff"); 
	var callback = { 
		success:handleSuccess3, 
		failure: handleFailure3,
		 //timeout: 10000,
		argument: [event, span_text, span_loading] 
		}; 
	var postData = "id=" + event.id;
	events.remove_by_id(event.id);
	
	if (userid==0) {
		removeElement2(event);
		return;
	}	
	
	var request = YAHOO.util.Connect.asyncRequest('POST', "do_event_delete.php", callback, postData); 
}


var handleSuccess3 = function(o){ 
	//alert('success');
	 if(o.responseText !== undefined){ 
		//Dom.setStyle(o.argument[0], 'display', 'none');
		
		
		//var text = o.argument[1];
		var loading = o.argument[2];
		//Dom.setStyle( text, 'display', 'block'); 
		Dom.setStyle( loading, 'display', 'none');
		
	 	var attributes = { 
			color: { to: '#000000' }, 
			backgroundColor: { to: '#ffffff' } 
		}; 	
		var anim = new YAHOO.util.ColorAnim(o.argument[0], attributes); 
		//anim.onComplete.subscribe(removeElement); 
		
		var attributes2 = {  height: { to : 0} }
		var anim2 = new YAHOO.util.Anim(o.argument[0], attributes2); 
		anim2.duration = 0.4;
		anim2.onComplete.subscribe(removeElement); 
		
		anim.animate();
		anim2.animate();
		
	}  else {
		alert(o.responseText);
	}
} 

var handleFailure3 = function(o){ 
	//alert('failed3');
} 


var calendar1_selectdate = function (p_sType, p_aArgs) {
	var aDate, nMonth, nDay, nYear;
	if (p_aArgs) {
		aDate = p_aArgs[0][0];

		nMonth = aDate[1];
		nDay = aDate[2];
		nYear = aDate[0];

		//var d = new Date();
		//d.setFullYear( nYear, nMonth-1, nDay);
		$('edit_newdate_day').value = nDay;
		$('edit_newdate_month').value = nMonth;
		$('edit_newdate_year').value = nYear;
		$('form_changedate').submit();
	}
};


var event_setupDragDrop = function(e)  {
	var z = new YAHOO.util.DDProxy(e); 
	var el = z.getDragEl();
	Dom.setStyle(el, "opacity", 0.67);
	z.startDrag = event_startDrag;
	z.endDrag = event_endDrag;
	z.onDragDrop = event_dragDrop;
	z.onDragOver = event_dragOver;
}

var event_startDrag = function(x, y) {
	var dragEl = this.getDragEl(); 
	var clickEl = this.getEl(); 
	Dom.setStyle(clickEl, "visibility", "hidden"); 
 
	dragEl.innerHTML = clickEl.innerHTML; 

	Dom.setStyle(dragEl, "color", Dom.getStyle(clickEl, "color")); 
	Dom.setStyle(dragEl, "backgroundColor", Dom.getStyle(clickEl, "backgroundColor")); 
	Dom.setStyle(dragEl, "border", "2px solid gray"); 	
        Dom.addClass(dragEl, clickEl.className);
}


var event_endDrag = function(e) {
	var srcEl = this.getEl(); 
	var proxy = this.getDragEl(); 
 
	// Show the proxy element and animate it to the src element's location 
	Dom.setStyle(proxy, "visibility", ""); 
	var a = new YAHOO.util.Motion(  
		proxy, {  
			points: {  
				to: Dom.getXY(srcEl) 
			} 
		},  
		0.3,  
		YAHOO.util.Easing.easeOut  
	) 
	var proxyid = proxy.id; 
	var thisid = this.id; 

	// Hide the proxy and show the source element when finished with the animation 
	a.onComplete.subscribe(function() { 
		Dom.setStyle(proxyid, "visibility", "hidden"); 
		Dom.setStyle(thisid, "visibility", ""); 
		}); 
	a.animate(); 
}

var event_dragDrop = function(e, id) {
//var event_dragDrop = function(e, ddarray) {
//	alert(ddarray.length);
	//if (ddarray.length<1) return;
	//var id = ddarray[0];
	// If there is one drop interaction, the li was dropped either on the list, 
	// or it was dropped on the current location of the source element. 
	var destEl = Dom.get(id); 
	//alert(destEl.className + " - " + DDM.interactionInfo.drop.length);
	
	
	//if (DDM.interactionInfo.drop.length === 1) { 
	if (DDM.interactionInfo.drop.length>0  && destEl.className=="div_day" ) { 
 
		// The position of the cursor at the time of the drop (YAHOO.util.Point) 
		var pt = DDM.interactionInfo.point;  

		// The region occupied by the source element at the time of the drop 
		var region = DDM.interactionInfo.sourceRegion;  

		// Check to see if we are over the source element's location.  We will 
		// append to the bottom of the list once we are sure it was a drop in 
		// the negative space (the area of the list without any list items) 
		//alert("a");
		if (!region.intersect(pt)) { 
			//alert("a");
			var destEl = Dom.get(id); 
			var destDD = DDM.getDDById(id); 
			//destEl.appendChild(this.getEl()); 
			destEl.insertBefore(this.getEl(),destEl.firstChild); 
			destDD.isEmpty = false; 
			DDM.refreshCache(); 
			
			moveevent(this.getEl());
		} 
	} 
}

var event_dragOver = function(e, id) {
	//alert("over");
	return;
	var srcEl = this.getEl(); 
	var destEl = Dom.get(id); 
 
	// We are only concerned with list items, we ignore the dragover 
	// notifications for the list. 
	if (destEl.cassName.toLowerCase() == "div_day") { 
		var orig_p = srcEl.parentNode; 
		var p = destEl.parentNode; 

		//if (this.goingUp) { 
			//p.insertBefore(srcEl, destEl); // insert above 
			//p.insertBefore(srcEl, destEl.firstChild); // insert above 
			DOM.insertBefore(srcEl, destEl.firstChild);
		//} else { 
		//	p.insertBefore(srcEl, destEl.nextSibling); // insert below 
		//} 
		DDM.refreshCache(); 
	} 
}


function moveevent(event) {
	var day = Dom.getAncestorByClassName(event,"div_day");
	//alert(event.id + ' - ' + day.id);
	var callback = { 
		success:handleSuccess4, 
		failure: handleFailure3,
		argument: [event] 
		}; 
	var e = events.get(event.id);
	var date_new = new Date();
	date_new.setTime(day.id * 1000);
	
	var date_starttime = new Date();
	date_starttime.setTime(e.starttime * 1000);
	date_starttime.setFullYear(date_new.getFullYear(), date_new.getMonth(), date_new.getDate() );
	date_starttime.setHours(date_new.getHours(), 0, 0, 0)
	var starttime = date_starttime.getTime() / 1000;
	var starttime2 = date_starttime.getTime() / 1000 + date_starttime.getTimezoneOffset() * 60; 
	var date_endtime = new Date();
	date_endtime.setTime(e.endtime * 1000);
	date_endtime.setFullYear(date_new.getFullYear(), date_new.getMonth(), date_new.getDate() );
	date_endtime.setHours(date_new.getHours() + 1, 0, 0, 0)
	var endtime = date_endtime.getTime() / 1000;
	var endtime2 = date_endtime.getTime() / 1000 + date_endtime.getTimezoneOffset() * 60; 
	
	e.starttime = starttime2;
	e.endtime = endtime2;
	
	var span_text = Dom.getElementsByClassName('div_event_text','',event)[0];
	date_starttime.setTime( starttime2 * 1000 );
	e.time = date_starttime.format('g:i A');
	//span_text.innerHTML = e.time + ' - ' + e.title;
	span_text.innerHTML = e.time + ' - ' + htmlentities(e.title);
		
	var postData = "id=" + event.id + '&starttime=' + starttime + '&endtime=' + endtime;
	
	if (userid==0) {
		return;
	}	
	
	var request = YAHOO.util.Connect.asyncRequest('POST', "do_event_move.php", callback, postData); 			
}


var handleSuccess4 = function(o){ 
	//alert(o.responseText);
	 if(o.responseText !== undefined){ 
	//	
	}  else {
	//alert(o.responseText);
	}
} 


var div_event_dblclick = function(e) { 
	display_eventeditor(events.get(this.id));
}

function display_eventeditor(event) {
  var title = Dom.get('panel_eventeditor_title');
  title.value = event.title;
  var notes = Dom.get('panel_eventeditor_notes');
  notes.value = event.content;  
  
  event_edited = event;
  
  var d1 = new Date();
  d1.setTime(event.starttime * 1000);
  var d2 = new Date();
  d2.setTime(event.endtime * 1000);
   
  selectoption( $('panel_eventeditor_edit_start1'), d1.getHours() );
  selectoption( $('panel_eventeditor_edit_start2'), d1.getMinutes() );
  selectoption(  $('panel_eventeditor_edit_end1'), d2.getHours() );
  selectoption(  $('panel_eventeditor_edit_end2'), d2.getMinutes() );
  selectoption(  $('panel_eventeditor_type'), event.category );
  
  hour_selected = d1.getHours();
  
  date_selected.setFullYear(d1.getFullYear(), d1.getMonth(), d1.getDate());
	
 var s = d1.getDate() + " . "  + (d1.getMonth()+1) + " . " + d1.getFullYear();
 panel_eventeditor_btn_date.set("label", s);
	
  if (oCalendar) {
	select_calendar_date(oCalendar,event.starttime);
  }
  
  panel_eventeditor.show();
  title.focus();
}

var panel_eventeditor_btn_date_click = function (e) {
	/*
                 Create an empty body element for the Overlay instance in order 
                 to reserve space to render the Calendar instance into.
            */
            oCalendarMenu.setBody("&#32;");
            oCalendarMenu.body.id = "calendarcontainer";

            // Render the Overlay instance into the Button's parent element
            oCalendarMenu.render(this.get("container"));

            // Align the Overlay to the Button instance
            oCalendarMenu.align();
            /*
                 Create a Calendar instance and render it into the body 
                 element of the Overlay.
		*/

        //    var oCalendar = new YAHOO.widget.Calendar("buttoncalendar", oCalendarMenu.body.id);
	oCalendar = new YAHOO.widget.Calendar("bbb", oCalendarMenu.body.id);
	select_calendar_date(oCalendar,event_edited.starttime);
	oCalendar.render();

           /* 
                Subscribe to the Calendar instance's "changePage" event to 
                keep the Overlay visible when either the previous or next page
                controls are clicked.
            */

            oCalendar.changePageEvent.subscribe(function () {
            window.setTimeout(function () {
                    oCalendarMenu.show();              
                }, 0);
            });

            /*
                Subscribe to the Calendar instance's "select" event to 
                update the Button instance's label when the user
                selects a date.
            */

           oCalendar.selectEvent.subscribe(function (p_sType, p_aArgs) {
				var aDate,
					nMonth,
					nDay,
					nYear;

				if (p_aArgs) {
					aDate = p_aArgs[0][0];

					nMonth = aDate[1];
					nDay = aDate[2];
					nYear = aDate[0];

					panel_eventeditor_btn_date.set("label", (nDay + " . " + nMonth + " . " + nYear));
					
					date_selected_b = 1;
					date_selected.setFullYear(nYear, nMonth-1, nDay );

					/*
	`				// Sync the Calendar instance's selected date with the date form fields
					YAHOO.util.Dom.get("month").selectedIndex = (nMonth - 1);
					YAHOO.util.Dom.get("day").selectedIndex = (nDay - 1);
					YAHOO.util.Dom.get("year").value = nYear;
					*/
				}
				oCalendarMenu.hide();
            
            });


            /*
                 Unsubscribe from the "click" event so that this code is 
                 only executed once
            */
            this.unsubscribe("click", panel_eventeditor_btn_date_click);
}

var select_calendar_date = function(cal, date) {
 var d = new Date();
 d.setTime(date * 1000);
 var selected = (d.getMonth()+1) + "/" + d.getDate() + "/" + d.getFullYear();
 var page = (d.getMonth()+1) + "/" + d.getFullYear();
 cal.cfg.setProperty("selected",  selected, false ); 
 cal.cfg.setProperty("pagedate",  page, false );
 cal.render();
 date_selected_b = 0;
}

var panel_eventeditor_btn_save_click = function(e) { 
  var event = event_edited;
  var d1 = new Date();
  var changed = 0;
  d1.setTime(event.starttime * 1000);
  var d2 = new Date();
  d2.setTime(event.endtime * 1000);

  d1.setHours( TryParseInt($('panel_eventeditor_edit_start1').value,1), TryParseInt($('panel_eventeditor_edit_start2').value,1) );
  d2.setHours( TryParseInt($('panel_eventeditor_edit_end1').value,1), TryParseInt($('panel_eventeditor_edit_end2').value,1) );
  
  var hour_selected_b = 0;
  if (hour_selected!=TryParseInt($('panel_eventeditor_edit_start1').value,1)) {
	hour_selected_b = 1;
  }

  if (date_selected_b==1 || hour_selected_b) {
	changed = 1;
	d1.setFullYear(date_selected.getFullYear(), date_selected.getMonth(), date_selected.getDate()  );
	d2.setFullYear(date_selected.getFullYear(), date_selected.getMonth(), date_selected.getDate()  );
	date_selected.setHours( TryParseInt($('panel_eventeditor_edit_start1').value,1)   );
	
	var x = date_selected.getTime() / 1000 - date_selected.getTimezoneOffset() * 60; 
	var z = document.getElementById(x);
	var div_event = $(event.id);	
	if (z) {
		Dom.insertBefore(div_event, z.firstChild);
	} else {
		removeElement2(div_event);
	}
  }

  var starttime2 = d1.getTime() / 1000
  var starttime3 =  starttime2 - d1.getTimezoneOffset() * 60; 
  var endtime2 = d2.getTime() / 1000;
  var endtime3 = endtime2 - d2.getTimezoneOffset() * 60;

  if (starttime2!=event.starttime) {
	changed = 1;
	event.starttime = starttime2;
  }
  if (endtime2!=event.endtime) {
	changed = 1;
	event.endtime = endtime2;
  }
  if (event.title!=$('panel_eventeditor_title').value) {
	changed = 1;
	event.title = $('panel_eventeditor_title').value;
  }
  if (event.content!=$('panel_eventeditor_notes').value) {
	changed = 1;
	event.content = $('panel_eventeditor_notes').value;
  }  
  
  var categ_old = event.category;
  var categ_new = TryParseInt($('panel_eventeditor_type').value,0);
  if (categ_old!=categ_new) {
      changed = 1;
      event.category = categ_new;
  }

  if (changed) {
	var div_event = $(event.id);
	var span_text = Dom.getElementsByClassName('div_event_text','',div_event)[0];
	var span_loading = Dom.getElementsByClassName('div_event_loading','',div_event)[0];
        if (categ_old!=categ_new) {
            Dom.replaceClass(div_event,"categ_" + categ_old, "categ_" + categ_new );
        }
	
	event.time = d1.format('g:i A');
	span_text.innerHTML = event.time + ' - ' + htmlentities(event.title);	
	if (userid==0) {
		panel_eventeditor.hide();
		return;
	}	
	
	Dom.setStyle( span_text, 'display', 'none'); 
	Dom.setStyle( span_loading, 'display', 'block');
	Dom.setStyle( div_event, 'background-color', "#ffffff"); 
	Dom.setStyle( div_event, 'color', "#ffffff"); 
        
	var callback = { 
		success:handleSuccess2, 
		failure: handleFailure, 
		argument: [div_event, span_text, span_loading] 
		}; 
	var postData = "starttime=" + starttime3 + "&endtime=" + endtime3 + "&id=" + event.id + "&category=" + event.category + "&title=" + urlencode(event.title) + "&content=" + urlencode(event.content);

	var request = YAHOO.util.Connect.asyncRequest('POST', "do_event_modify2.php", callback, postData); 	
  }

  panel_eventeditor.hide();
}

var panel_eventeditor_btn_cancel_click = function(e) {
	panel_eventeditor.hide();
}

var div_eventeditor_keypress = function(e) { 
	if (e.keyCode==27) {
		panel_eventeditor.hide();
	}
} 
