function InvitationFormClass() {	
	var invitations = false;
	
	this.init = function() {
		invitations = new Array();
		
		this.buildContainer();
		
		this.contactsList = new FriendslistClass();
		this.contactsList.id = this.id + "ContactsContainer";
		this.contactsList.eventController = this;
		this.contactsList.title = 'Kontakte';
		this.contactsList.limit = 9;
		this.contactsList.type = 'mini';
		this.contactsList.className = 'embeddedFriendslist ';

		this.contactsList.name = this.name + '.contactsList';
		this.contactsList.init();
	}
	
	this.onRecipientFocus = function() {
		if(document.getElementById(this.id + "invitationsInputField").value == 'E-Mail-Adressen hier eingeben ...') {
			document.getElementById(this.id + "invitationsInputField").value = '';
		}
	}
		
	this.onInvitationMessageFocus = function() {
		if(document.getElementById(this.id + "invitationsMessage").value == 'Dein Einladungstext ...') { 
			document.getElementById(this.id + "invitationsMessage").value = '';
		}
	}
	
	this.recipientsChanged = function(evt) {
		if (navigator.appName=="Microsoft Internet Explorer") {
			keyCode = evt.keyCode;
		}
				
		if (navigator.appName=="Netscape") {
			keyCode = evt.which;
		}
		
		if(keyCode==27 || keyCode==13) {
			document.defaultAction = false;
			var specialCharPressed = true;
			
			if(keyCode==27) {
				// Escape-Key
				document.getElementById(this.id + 'invitationsInputField').value = '';
			} else if(keyCode==13) {
				// Enter-Key
				
				this.addMailAdress();
			}	
		}
	}
	
	this.addMailAdress = function() {
		if(document.getElementById(this.id + 'invitationsInputField').value != 'E-Mail-Adressen hier eingeben ...') {
			var inputValue = document.getElementById(this.id + 'invitationsInputField').value.toLowerCase();
			inputValue = inputValue.replace(/ /g, "");
			inputArray = inputValue.split(",");
			
			inputLength = inputArray.length;
			
			for(inputCounter = 0; inputCounter < inputLength; inputCounter++) {
				if(inputValue.length > 4) {
					invitation = new Object();
					invitation.type = 'mailAdress';
					invitation.name = inputArray[inputCounter];
					invitation.id = inputArray[inputCounter];
											
					this.addInvitation(invitation);
				}
			}		
	
			document.getElementById(this.id + 'invitationsInputField').value = '';
		}
	}
	
	this.contactClicked = function(contactObject) {
		var invitation = new Object();
		invitation.type = 'user';
		invitation.name = contactObject["name"];
		invitation.id = contactObject["userName"];
		
		this.addInvitation(invitation);	
	}
	
	this.addInvitation = function(contactObject) {
		contactAlreadyAdded = false;
		
		for(invitesCounter = 0; invitesCounter < invitations.length; invitesCounter++) {
			if(invitations[invitesCounter].id == contactObject.id && invitations[invitesCounter].type == contactObject.type && invitations[invitesCounter].status != 'deleted') {
				contactAlreadyAdded = true;
			}
		}
		
		if(!contactAlreadyAdded) {
			invitesLength = invitations.length;
			invitations[invitesLength] = new Object;
			invitations[invitesLength].id = contactObject.id;
			invitations[invitesLength].type = contactObject.type;			
			invitations[invitesLength].status = 'active';
			
			var invitationContainer = document.createElement("DIV");
			invitationContainer.id = this.id + 'invitation' + invitations.length;
			invitationContainer.className = 'invitationContainer';
			eval("invitationContainer.onmouseover = function() { document.getElementById('" + escape(this.id + 'invitation' + invitations.length) + "').className = 'invitationContainer hovered'; };");
			eval("invitationContainer.onmouseout = function() { document.getElementById('" + escape(this.id + 'invitation' + invitations.length) + "').className = 'invitationContainer'; };");
			eval("invitationContainer.onclick = function() { document.getElementById('" + escape(this.id + 'invitation' + invitations.length) + "').style.display = 'none'; " + escape(this.name) + ".deleteInvitation(" + invitesLength + ");};");
									
			var invitationName = document.createElement("DIV");
			invitationName.className = 'invitationName';
			invitationName.innerHTML = contactObject.name;
			
			var deleteIcon = document.createElement("IMG");
			deleteIcon.className = 'deleteIcon';
			deleteIcon.src = '/images/style/icons/deleteOnGreyMini.gif';
			
			invitationContainer.appendChild(invitationName);
			invitationContainer.appendChild(deleteIcon);
			
			document.getElementById(this.id + 'invitationsFormInvitations').appendChild(invitationContainer);
		}
	}
	
	this.deleteInvitation = function(id) {
		invitations[id].status = 'deleted';
	}
	
	this.sendInvitations = function() {
		this.addMailAdress();

		if(userLoggedIn) {
			if(invitations.length > 0) {
				var output = new Object();
				output.objectType = this.objectType;
				output.objectId = this.objectId;
				output.invitations = invitations;
				output.message = encodeURIComponent(document.getElementById(this.id + 'invitationsMessage').value);
					
				outputString = JSONstring.make(output);
			
				jsonPostData('json/invitations/sendInvitations.php', escape(outputString), this.name + '.sendInvitationsInt');		
			} else {
				this.messageWindow = new MessageWindowClass();
				this.messageWindow.className = 'photoUploadMessageWindow';
				this.messageWindow.title = 'Keine Empf&auml;nger...';
				this.messageWindow.message = 'Du hast noch keine Empf&auml;nger f&uuml;r die Einladung ausgew&auml;hlt.';
				this.messageWindow.name = this.name + '.messageWindow';
				this.messageWindow.displayCurtain = false;
				this.messageWindow.display();		
			}
		} else {
			this.messageWindow = new MessageWindowClass();
			this.messageWindow.className = 'photoUploadMessageWindow';
			this.messageWindow.title = 'Bitte melde dich an...';
			this.messageWindow.message = 'Du musst dich anmelden um Einladungen zu verschicken. <br /><br /><li><a href="/login/">Zur Anmeldung &raquo;</a></li>';
			this.messageWindow.name = this.name + '.messageWindow';
			this.messageWindow.displayCurtain = false;
			this.messageWindow.display();					
		}
	}
	
	this.sendInvitationsInt = function(Object) {
		if(Object["status"] == 'ok') {
			this.messageWindow = new MessageWindowClass();
			this.messageWindow.className = 'photoUploadMessageWindow';
			this.messageWindow.title = 'Einladungen verschickt...';
			this.messageWindow.message = 'Die Einladungen wurden erfolgreich verschickt.';
			this.messageWindow.name = this.name + '.messageWindow';
			this.messageWindow.displayCurtain = false;
			this.messageWindow.display();
			
			document.getElementById(this.id + 'invitationsFormInvitations').innerHTML = '';
			document.getElementById(this.id + 'invitationsMessage').value = '';
			
			invitations = new Array();		
		}	
	}
	
	this.buildContainer = function() {
		var invitationsBoxContainer = document.createElement("DIV");
		invitationsBoxContainer.className = 'invitationsBoxContainer';
		
		var invitationsFormInputBar = document.createElement("DIV");
		invitationsFormInputBar.className = 'invitationsFormInputBar';
		
		var invitationsInputField = document.createElement("INPUT");
		invitationsInputField.id = this.id + 'invitationsInputField';
		invitationsInputField.type = 'text';
		invitationsInputField.className = 'invitationsInputField';
		invitationsInputField.value = 'E-Mail-Adressen hier eingeben ...';
		eval("invitationsInputField.onfocus = function() { " + escape(this.name) + ".onRecipientFocus(); };");
		eval("invitationsInputField.onkeydown = function(event) { " + escape(this.name) + ".recipientsChanged(event); };");
				
		var invitationsAddButton = document.createElement("INPUT");
		invitationsAddButton.type = 'button';	
		invitationsAddButton.value = 'Mail-Adresse speichern';
		invitationsAddButton.className = 'addButton';
		eval("invitationsAddButton.onclick = function() { " + escape(this.name) + ".addMailAdress(); };");
				
		invitationsFormInputBar.appendChild(invitationsInputField);
		invitationsFormInputBar.appendChild(invitationsAddButton);
	
		var invitationsFormInvitations = document.createElement("DIV");
		invitationsFormInvitations.id = this.id + 'invitationsFormInvitations';
		invitationsFormInvitations.className = 'invitationsFormInvitations';
		
		var invitationsFormTextInputContainer = document.createElement("DIV");
		invitationsFormTextInputContainer.className = 'invitationsFormTextInputContainer';						
							
		var invitationsMessage = document.createElement("TEXTAREA");
		invitationsMessage.id = this.id + 'invitationsMessage';
		eval("invitationsMessage.onfocus = function() { " + escape(this.name) + ".onInvitationMessageFocus(); };");
		invitationsMessage.value = 'Dein Einladungstext ...';
		
		invitationsFormTextInputContainer.appendChild(invitationsMessage);
		
		var invitationsFormButtons = document.createElement("DIV");
		invitationsFormButtons.className = 'invitationsFormButtons';
		
		var sendButton = document.createElement("INPUT");
		sendButton.type = 'button';
		sendButton.className = 'defaultButton';
		sendButton.value = 'Einladungen verschicken';
		eval("sendButton.onclick = function() { " + this.name + ".sendInvitations(); };");
		
		invitationsFormButtons.appendChild(sendButton);

		var contactsList = document.createElement("DIV");
		contactsList.className = 'eventInvitationsContactsList';
		contactsList.id = this.id + 'ContactsContainer';
			
		invitationsBoxContainer.appendChild(invitationsFormInputBar);
		invitationsBoxContainer.appendChild(invitationsFormInvitations);
		invitationsBoxContainer.appendChild(invitationsFormTextInputContainer);
		invitationsBoxContainer.appendChild(invitationsFormButtons);
	
		document.getElementById(this.id).innerHTML = '';
	
		document.getElementById(this.id).appendChild(contactsList);
		document.getElementById(this.id).appendChild(invitationsBoxContainer);	
	}
}
