var Dom = YAHOO.util.Dom; 
var DDM = YAHOO.util.DragDropMgr; 
var YEvent = YAHOO.util.Event; 
var $=Dom.get;
var lastselectedday = 1;
var boot = 1;
var panel_eventeditor;
var panel_eventeditor_btn_date;
var oCalendarMenu;
var oCalendar;
var event_edited;
var date_selected_b;
var date_selected = new Date();
var previous_scroll;

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"); 
} 

//GSL - change event background color to transparent when mouse leaves event
var div_event_out = function(e) { 
//	YAHOO.util.Dom.setStyle( this, 'background-color', "#dddddd"); 
	YAHOO.util.Dom.setStyle( this, 'background-color', "transparent"); 
	var del = Dom.getElementsByClassName('div_event_delete','',this)[0];
	YAHOO.util.Dom.setStyle( del, 'display', "none"); 
} 



var div_day_over = function(e) { 
	var day = days[this.id];
	if (day==lastselectedday) return;
	var img = $('img');


	Dom.replaceClass('img', 'day' + lastselectedday, 'day' + day);
    img.title = captions[day];
    img.alt = captions[day];
    $('div_themepack_caption').innerHTML = captions[day];
	lastselectedday = day;
	
	if (previous_scroll)
		previous_scroll.style.overflow = 'hidden';
	this.style.overflow = 'auto';
	previous_scroll = this;
}

var div_day_out = function(e) { 
	//this.style.overflow = 'hidden';
}


var div_day_dblclick = function(e) { 
	$('form_day2_day').value = days[this.id];
	$('form_day2').submit();
}


var div_event_dblclick = function(e) { 
	//alert(this.id);
	display_eventeditor(events.get(this.id));
}


init = function() {
  var elements = YAHOO.util.Dom.getElementsByClassName('div_event','div');
  YAHOO.util.Event.addListener(elements, "click", div_event_dblclick);
  YAHOO.util.Event.addListener(elements, "mouseover", div_event_over);
  YAHOO.util.Event.addListener(elements, "mouseout", div_event_out);  
  if (boot==1) {
	var elements = YAHOO.util.Dom.getElementsByClassName('div_day','div');
	YAHOO.util.Event.addListener(elements, "mouseover", div_day_over);
	YAHOO.util.Event.addListener(elements, "mouseout", div_day_out);
	YAHOO.util.Event.addListener(elements, "dblclick", div_day_dblclick);
	
	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");
	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.addListener($('mypanel'), "keypress", div_eventeditor_keypress);
  boot = 0;
}

YAHOO.util.Event.addListener(window, 'load', init );


////////////////

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 );
	
 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_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) );

  if (date_selected_b==1) {
	changed = 1;
	d1.setFullYear(date_selected.getFullYear(), date_selected.getMonth(), date_selected.getDate()  );
	d2.setFullYear(date_selected.getFullYear(), date_selected.getMonth(), date_selected.getDate()  );
	
	
	var x = date_selected.getTime() / 1000 - date_selected.getTimezoneOffset() * 60; 
	var z = document.getElementById(x);
	var div_event = $(event.id);	
	//alert(z + ' ' + x + ' ' + date_selected.getTime() / 1000 );
	if (z) {
		//Dom.insertBefore(div_event, z.firstChild);
		z.appendChild(div_event);
	} 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);	
	span_text.innerHTML = htmlentities(event.title);	
	span_text.title = htmlentities(event.title);	
	span_text.alt = 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 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 );
					date_selected.setHours(0, 0, 0, 0);	

					/*
	`				// 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 handleSuccess2 = function(o){ 
	//alert('success');
	//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 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 div_eventeditor_keypress = function(e) { 
	if (e.keyCode==27) {
		panel_eventeditor.hide();
	}
} 
