var center_div = '';
var center_offset = 0;


var project = {
	event : {
		editor : {
			/**
			 * Shows resetted editor view for events.
			 * 
			 */
			show : function() {

				util.hide_workingspace();
				
				jQuery('#event-editor').css({
					'position' : 'absolute',
//					'height' : '450px',
					'width' : '1000px',					
//					'overflow' : 'auto',					
					'z-index' : '99999'					
				});
				
				jQuery('#event-editor div.event-user-list').css({
//					'position' : 'absolute',
//					'height' : '360px',
//
//					'overflow' : 'auto'					
//					'z-index' : '99999'					
				});
				jQuery('#event-editor div.boxContent').css({
//					'position' : 'absolute',
//					'height' : '360px',
					'overflow' : 'auto'					
//					'z-index' : '99999'					
				});
				
				jQuery('#event-editor').appendTo('body');

				// init datepicker
				jQuery('#event-date').datepicker({ 
					defaultDate: new Date(),
					dateFormat: 'yy-mm-dd', 
					changeMonth: true,
					changeYear: true
					});

				// init datepicker
				jQuery('#event-to-date').datepicker({ 
					defaultDate: new Date(),
					dateFormat: 'yy-mm-dd', 
					changeMonth: true,
					changeYear: true
					});
					
				jQuery('#ui-datepicker-div').css('z-index', 99999);
				
				WYMeditor.INSTANCES = new Array();
		    	jQuery('.wym_box').remove();
				var wym = jQuery('.event-wymeditor').wymeditor(core.wymconfig);
				 jQuery('.wym_classes').hide();					
				
				// position of the event-editor
				center_div = 'event-editor'; // defined global
				jQuery(window).bind('scroll', util.position);				
				util.position();

				jQuery('#event-editor').show('normal');
				
				user.box.get('event-user-list', jQuery('#project_room_id').val());
			},
			
			
			/**
			 * resets and closes the editor for events.
			 */
			close : function() {
				util.close('event-editor');
			},
			
			reset : function() {
				jQuery('#event-edit-id').val('');
				
				jQuery('#event-date').val('');
				jQuery('#event-hour').val('');
				jQuery('#event-minute').val('');
				
				jQuery('#event-to-date').val('');
				jQuery('#event-to-hour').val('');
				jQuery('#event-to-minute').val('');
				
				jQuery('#event-title').val('');
				jQuery('#event-description').val('');
				

			}
		},
		
		/**
		 * Appends a div to columns-div and shows the todays events.
		 */
		show : function(day, type) {
			util.hide_workingspace();				
				
			if (jQuery('#event-day-view').length > 0) {
				jQuery('#event-day-view').fadeIn('normal', function() {
					jQuery('#day-events').html('<img src="' + doc_root + 'misc/icons/loader.gif" style="padding-top:10%;padding-left:47%;padding-right:47%;"/>' +
							'<div style="padding:42%;padding-top:0;" >' + gt.gettext("Lade Details...") + '</div>');
				});
			}
			else {
				var event_div = '<div class="box" id="event-day-view" style="position:absolute; height:400px; margin:0px;  z-index:99999; display:none; border:1px solid black;">' +
						'		<div class="boxHeader">' +
						'			<h3><span>' + gt.gettext("Terminübersicht") + '</span></h3>' +
						'		      <a href="javascript:;" onclick="util.close(\'event-day-view\');" style="z-index:999999; float:right; margin-top:-20px; margin-right:10px;" ' +
						'					alt="' + gt.gettext("Dieses Fenster schließen") + '" ' +
						'					title="' + gt.gettext("Dieses Fenster schließen") + '" ' +
	      				'<img src="' + doc_root + 'templates/base/misc/images/icon_close.gif" border="0"/></a>'+
						'		</div>' +
						'		<div id="events-content-box" class="boxContent" style="height:500px; overflow:auto;">' +
						'			<div id="day-events"><img src="' + doc_root + 'misc/icons/loader.gif" style="padding-top:10%;padding-left:47%;padding-right:47%;"/>' +
								'<div style="padding:42%;padding-top:0;" >' + gt.gettext("Lade Details...") + '</div></div>' +
						'		</div>' +
						'	</div>';
						

				jQuery(event_div).prependTo('body');
				
				jQuery('#event-day-view').css({
					'position' : 'absolute',
					'height' : '400px',
					'width' : jQuery('#mainCol').width() + 'px',
					'z-index' : '99999'
	  			});						
				
				jQuery('#event-day-view').fadeIn('normal', function() {
					jQuery('#day-events').html('<img src="' + doc_root + 'misc/icons/loader.gif" style="padding-top:10%;padding-left:47%;padding-right:47%;"/>' +
							'<div style="padding:42%;padding-top:0;" >' + gt.gettext("Lade Details...") + '</div>');
				});
			}
			
			
			window.setTimeout(function() {
				jQuery.post(doc_root + "includes/ajax/project.event.day.get.php", {
					'day': day,
					'type': type
				}, function (data, status) {
					jQuery('#day-events').html(data);
				}, 'json');				
			}, 500);
			
			//Resize div
			if(type == 'single_event'){
				//jQuery('#event-day-view').css('height', '300px');
				jQuery('#events-content-box').css('height', '300px');
			}else{
				jQuery('#event-day-view').css('height', '400px');
				jQuery('#events-content-box').css('height', '353px');
			}
				
			
			// position of the event-editor
			center_div = 'event-day-view'; // defined global
			jQuery(window).bind('scroll', util.position);				
			util.position();			
			
		},
		toggle_active : function(event_id) {
			jQuery.post(doc_root + "includes/ajax/project.event.toggle-active.php", {
				'intEventId': event_id
			}, function (data, status) {			
				// update event boxes
				user.box.get('events-overview');
				user.load_all_events();
				user.box.get('event-calendar', false);
			}, 'json');
		},
		edit : function(event_id) {
			
			project.event.editor.reset();
			
			// load the event
			jQuery.post(doc_root + "includes/ajax/project.event.get.php", {
				'intEventId': event_id
			}, function (data, status) {
				var event = data.event;
				if (event !== false) {
					project.event.editor.show();
					
					jQuery('#project_room_id').val(event.intProjectroomId);
					jQuery('#event-edit-id').val(event.intEventId);
					
					jQuery('#event-date').val(event.dateFrom);
					jQuery('#event-hour').val(event.hourFrom);
					jQuery('#event-minute').val(event.minuteFrom);
					
					jQuery('#event-to-date').val(event.dateTo);
					jQuery('#event-to-hour').val(event.hourTo);
					jQuery('#event-to-minute').val(event.minuteTo);
					
					jQuery('#event-title').val(event.strTitle);
					jQuery('#event-description').val(event.strDescription);


					
					
					window.setTimeout(function() {
						if (typeof WYMeditor.INSTANCES[0] !== 'undefined') {
							WYMeditor.INSTANCES[0].html("<h1>das ist ein test</h1>");
						}
						else {
							alert('there where no wymeditor instances');
						}
						
						var users = data.event_users;
						for (index in users) {
//							alert('try to check' + users[index].intUserId);
							jQuery('#event-user-' + users[index].intUserId).val([users[index].intUserId]);
						}
					}, 1000);

					
				}
				else {
					alert(gt.gettext("Daten zum Termin konnten nicht geladen werden"));
				}
				
			}, 'json');
			
		},
		
		save : function() {
			// TODO validate values 
			
			// generate first json from the checkboxes as they are not 
			// in the form tag and will not be seen by serializeArray() fct.
			var event_users = '{';
			jQuery('.event-user-checkbox').each(function(i) {
				event_users += '"' + jQuery(this).val() + '": "' + jQuery(this).attr('checked') + '"';
				if (i < jQuery('.event-user-checkbox').length - 1)  {
					event_users += ', ';
				}
			});
			event_users += '}';
			
			// get form data
			var formdata = jQuery('#event-form').serializeArray();
			
			// add event_users to formdata
//			formdata.event_users = event_users;
//			formdata.push({'name': 'event_users', 'value': event_users});
//			alert(dump(formdata));
			
			
			// json form data
			var formdata_json = '{';
			jQuery.each(formdata, function(i, field){
				formdata_json += '"' + field.name + '": "' + field.value + '"';
				if (i < formdata.length - 1)  {
					formdata_json += ', ';
				}
			});			
			formdata_json += '}';
			
			jQuery.post(doc_root + "includes/ajax/project.event.save.php", {
				'event_params': formdata_json,
				'event_users' : event_users
			}, function (data, status) {
				
				project.event.editor.close();
				
				// update event boxes
				user.box.get('events-overview');
				user.load_all_events();
				user.box.get('event-calendar', false);
				
				project.event.editor.reset();
			}, 'json');
				
			return false;
		}
	},
	
	
	/**
	 * Checks if a module has been added to the projectroom.
	 * and loads the forum-categories as well as initializes the editor
	 * it is wasn't. 
	 * @param {Integer} projectroom_id
	 * @param {String} module
	 * @return {Boolean}
	 */
	check_added_module: function(projectroom_id, module) {
		jQuery.post(doc_root + "includes/ajax/projectroom.check-module.php", {
				projectroom_id: projectroom_id,
				module: module
		}, function (data, status) {
			if (data) {
				if(module == 'forum'){
					forum.categories.get(projectroom_id);
				}
			}
			else { // remove forum-tab 
				// get tab index (hadcode here)
				if(module == 'forum'){
					jQuery('#tabForum').hide();
				}
				if(module == 'brainstorming'){
					jQuery('#tabBrain').hide();
				}
			}
					
		}, "json");			
	},
	
	open_tab: function(tabId, disableLogging){
		jQuery('#'+tabId).trigger('click');
		
		disableLogging = typeof disableLogging != 'undefined' ? disableLogging : false; 
		
		if (!disableLogging) {
			user.log('Tab', tabId);
		}
	},
	
	viewForum: function() {
		//jQuery('#tabForum').trigger('click');
		open_tab('tabForum');
	},
	
	viewBrainstormings: function(projectroom_id){
		jQuery.post(doc_root + "includes/ajax/projectroom.load-brainstormings.php?mode=user", {
				projectroom_id: projectroom_id
			}, function (data) {
				if(data){
					jQuery('#brainstorming').html(data);
				}
		
		}, "json");
	},
	
	open_brain: function(projectroom_id, brain_id){
		jQuery.post(doc_root + "includes/ajax/projectroom.brainstorming-database-setname.php", {
				projectroom_id: projectroom_id,
				brain_id: brain_id
		},
		function (data) {
			window.open(doc_root + "brainstorming/user.php", "", "scrollbars=yes,toolbar=no,status=no,menubar=no,location=no,resizable=yes");
		}, "json");
		
	},
	
	contact_form_open: function (project_room_id, mail_to, receiver_id) {
		util.hide_workingspace();

		jQuery('#contact-form-content').html('<img src="' + doc_root + 'misc/icons/loader.gif" style="padding-top:10%;padding-left:47%;padding-right:47%;"/>' +
				'<div style="padding:42%;padding-top:0;" >' + gt.gettext("Lade Details...") + '</div>');
		
		jQuery('#contact-form').css({
			'position' : 'absolute',
			'z-index' : '9999',
			'width' : '600px'
		});
		
		jQuery('#contact-form').appendTo('body');
		
		jQuery('#contact-form').fadeIn('normal');		
		
		// position of the event-editor
		center_div = 'contact-form'; // defined global

		jQuery(window).bind('scroll', util.position);				
		util.position();		
		
		jQuery.post(doc_root + "includes/ajax/user.project-contact-form.open.php", {
			project_room_id: project_room_id,
			mail_to: mail_to,
			receiver_id: receiver_id
		}, function (data) { 
			html = data;
			jQuery('#contact-form-content').html(html);			
		}, "json");
	},
	
	contact_form_close: function() {
		$('#contact-form').hide();	
	},
	
	contact_form_send: function () {
		$.post(doc_root + "includes/ajax/user.project-contact-form.send.php", {
			projectroom_id: jQuery('#projectroom_id').val(),
			rcv_id: jQuery('#rcv_id').val(),
			rcv_role: jQuery('#rcv_role').val(),
			rcv_mail: jQuery('#rcv_mail').val(),
			subject: jQuery('#Subject').val(),
			message: jQuery('#Message').val()
		}, function (data) { 
				$('#contact-form-content').html(data);
		}, "json");		
	},
	
	
	check_tab_changed_status: function (projectroom_id) {
		jQuery.post(doc_root + "includes/ajax/project.check-change-status.get.php", {
			projectroom_id : projectroom_id
		}, 
		function (data, status) {
			data.projectroom ? jQuery('#tabDescription').addClass('new-marker') : false;
			data.news ? jQuery('#tabNews').addClass('new-marker') : false;
			data.team ? jQuery('#tabTeam').addClass('new-marker') : false;
			data.forum ? jQuery('#tabForum').addClass('new-marker') : false;
			data.brain ? jQuery('#tabBrain').addClass('new-marker') : false;
			data.documents ? jQuery('#tabDocuments').addClass('new-marker') : false;
			data.cloud ? jQuery('#tabCloud').addClass('new-marker') : false;

			// update view
//			projectroom.box.get('added-moderator', 'Lade Moderator', projectroom_id);
//			projectroom.box.get('added-leader', 'Lade Projektleiter', projectroom_id);
//			projectroom.box.get('added-experts', 'Lade Team', projectroom_id);
			// TODO
		}, "json");			
			
	}
};

/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 
