
var Event = {
	events: [],
	cells: [],
	month: null,
	year: null,
	dayEvents: [],
	duration: 500,
	object: null,

	init: function() {
		$.ajax({
		  url: "/eventXmlList.xml",
		  success: Event.retrievingSuccessful,
		  error: Event.retrievingFailed
		});
	},
	
	 retrievingSuccessful: function(data, textStatus, jqXHR) {
  	var jData = $( data );
  	var items = jData.find("item");
  	
  	var table = $("#littleTable")[0];
  	
  	for(var i = 0; i < $(items).size(); i++)	{
  	var item = items[i];	
  		var tmpObj = {
  			title: $(item).find('title').text(),
  			id: $(item).find('id').text(),
  			content: htmlEntitiesConvert($(item).find('content').text()),
  			startsAt: new Date($(item).find('startsAt').text() * 1000),
  			finishesAt: new Date($(item).find('finishesAt').text() * 1000),
  			foundationId: $(item).find('foundationId').text(),
  			foundation: $(item).find('foundation').text()}
  		
  		Event.events.push(tmpObj);
  	}
  	Event.fillCalendar();
  },
  retrievingFailed: function(data, textStatus, jqXHR) {
  	
  },
  
  fillCalendar: function() {
  
  	if(!isNaN(this.year)) { 
	  	this.dayEvents = [];
	  	for(i = 1; i <=31; i++) this.dayEvents[i] = [];
	  	
	  	var firstDay = new Date(this.year, this.month, 1, 0,0,0,0);
	  	var lastDay = new Date(this.year, this.month, $(this.cells).size(), 23,59,59,0);
	  	
	    
	  	
	  	for(var i = 0 ; i < $(this.events).size(); i++) {
	  		var event = this.events[i];
	  		if(event.startsAt.getTime() < lastDay.getTime() &&
	  			event.finishesAt.getTime() > firstDay.getTime()) {
	  				var a = 1;
	  				
	  				
	  				if(event.startsAt.getTime() > firstDay.getTime())
	  					a = event.startsAt.getDate();
	  					
	  				var b = lastDay.getDate();
	  				if(event.finishesAt.getTime() < lastDay.getTime())
	  					b = event.finishesAt.getDate();
	  				
	  				for(; a <= b; a++) {
	  					var tmp = this.dayEvents[a].push(event);
	  					if(tmp > 1)
	  						this.cells[a].title += ", ";
	  					else {
	  						if($.browser.msie  && parseInt($.browser.version, 10) < 8)
	  							$(this.cells[a]).bind(
		  							"click", {events: this.dayEvents[a], td: this.cells[a], clicked: false}, 
		  							Event.eventDateClicked);
	  						else {
		  						this.cells[a].innerHTML = "<div>" + $(this.cells[a]).text() + "</div>";
		  						
								$(this.cells[a]).find("div").addClass("aa").bind(
		  							"click", {events: this.dayEvents[a], td: this.cells[a], clicked: false}, 
		  							Event.eventDateClicked); }
	  						}
	  					this.cells[a].title += event.title;
	  					
	  					$(this.cells[a]).addClass("event");
	  				}
	  			}
	  	}
	  }
  },
  
  eventDateClicked: function(event) {
  		var obj = event.data;
  		
  		if(!obj.clicked) {
  			obj.clicked = true;
	  		$(obj.td).css("cursor", "default");
	  		$(obj.td).find("div").css("zIndex", 6);
	  		obj.title = $(obj.td).attr("title");
  			$(obj.td).removeAttr("title");
  			
  			obj.dimmedPane = $("<div>", {
 					"class": "dimmedBackground"	  			
 					}).appendTo($("body")).bind("click", obj, Event.closeBubble)[0]; 
	  	
	  		if($.browser.msie  && parseInt($.browser.version, 10) < 8)
  				obj.box = $("<div>", {
	  				"class": "eventBox"  			
	  				}).css("left", $(obj.td).offset().left + 20)
	  				.css("top", $(obj.td).offset().top - 250)
	  				.appendTo($("body"))[0];
  				else obj.box = $("<div>", {
	  							"class": "eventBox"  			
	  								}).appendTo($(obj.td).find("div"))[0];
	  		
	  		
	  		var arrow = $("<div>", {
	  			"class": "eventArrow"  			
	  		}).appendTo($(obj.box))[0];
	  		
	  		var main = $("<div>", {
	  			"class": "eventMain"  			
  			}).appendTo($(obj.box))[0];
  			
  			Event.object = obj;
  			
  			$(arrow).animate( {height: 250, width: 92, top: 10}, Event.duration );
  			
  			$(main).animate(
  				{height: 370, width: 600, left: 92, top: 0}, 
  				Event.duration , function() {
    				$("<div>", { "class": "eventClose" }).bind("click", Event.object, Event.closeBubble).appendTo(this);
			  		$("<div>", { "class": "eventLabel" }).appendTo(this);
			  		var scrollPane = $("<div>", { "class": "eventScrollPane" }).appendTo(this)[0];
			  		var content = $("<div>", { "class": "jScrollbar_mask eventScrollMask" }).appendTo(scrollPane)[0];	
			  		var slider = $("<div>", { "class": "jScrollbar_draggable eventScrollbar" }).appendTo(scrollPane)[0];
			  		$("<a>", { "class": "draggable" }).appendTo(slider); 
			  		$("<div>", { "class": "clr" }).appendTo(scrollPane);	
			  		
			  		for( j = 0; j < $(Event.object.events).size(); j++) {
			  			var ev = Event.object.events[j];
			  			var d = ev.startsAt.format("dd/mm/yy HH:MM") + " - " + ev.finishesAt.format("dd/mm/yy HH:MM");
			  			var tmp = $("<div>", { "class": "eventSingle" }).appendTo(content)[0];
			  			$("<span>", { "class": "eventDates", text: d }).appendTo(tmp);
			  			$("<a>", { "class": "eventTitle", text: ev.title, "href": "/event/details/" + ev.id  }).appendTo(tmp);
			  			var t = $("<div>", { "class": "eventContent", text: ev.content }).appendTo(tmp);
			  			$("<a>", { "class": "eventLink", text: "Więcej", "href": "/event/details/" + ev.id }).appendTo(t);
			  			t = $("<div>", { "class": "eventFoundation", text: "Autor: " }).appendTo(tmp);
			  			if(ev.foundationId > 0)
			  				$("<a>", { "class": "eventFoundation", 
			  							text: ev.foundation,
			  							"href": "/user/foundation/" +  ev.foundationId}).appendTo(t);
			  			else 
			  				$("<a>", { "class": "eventFoundation", 
			  							text: ev.foundation,
			  							"style": "cursor: default;"}).appendTo(t);
			  			}
			  			
			  		$(scrollPane).jScrollbar();
			  	});
  			
  		}
  },
  
  closeBubble: function(event) {
 
  	var obj = event.data;
    obj.clicked = false;
  	$(obj.td).css("cursor", "pointer");
  	$(obj.td).find("div").css("zIndex", 1);
  	$(obj.td).attr("title", obj.title);
  	$(obj.box).remove();
  	$(obj.dimmedPane).remove();
  	 event.stopPropagation();
  }
}
$(document).ready(Event.init);
	
