var ProjectListInvitation = Class.create(isTable, {
	initialize : function($super, oAjax, sName, sModule, sLoadPageEvent, sTableOrderEvent, sFilterEvent, sItemBlockEvent, sItemUnBlockEvent) {
		$super(oAjax, sName, sModule, sLoadPageEvent, sTableOrderEvent, sFilterEvent, sItemBlockEvent, sItemUnBlockEvent);
	},

	tableOrder : function($super, sFilterOrder, sFilterOrderDir) {
		$super(sFilterOrder, sFilterOrderDir);
	},

	filter : function($super) {
		$super();
	},

	changeCheckAllItems : function($super) {
		$super();
	},

	changeCheck : function($super, oCheckbox) {
		$super(oCheckbox);
	},

	loadPage : function($super, iPage) {
		$super(iPage);
	},

	actionItemListCheckBox : function($super) {
		return $super();
	},

	block : function($super,sItems) {
		$super(sItems);
	},

	unblock : function($super,sItems) {
		$super(sItems);
	}
});

var ProjectOverview = Class.create(isTable, {
	initialize : function($super, oAjax, sName, sModule, sLoadPageEvent, sTableOrderEvent, sFilterEvent) {
		$super(oAjax, sName, sModule, sLoadPageEvent, sTableOrderEvent, sFilterEvent);
	},

	tableOrder : function($super, sFilterOrder, sFilterOrderDir) {
		$super(sFilterOrder, sFilterOrderDir);
	},

	filter : function($super) {
		$super();
	},

	changeCheckAllItems : function($super, oAllCheckbox) {
		$super(oAllCheckbox);
	},

	loadPage : function($super, iPage) {
		$super(iPage);
	},

	actionItemListCheckBox : function($super) {
		return $super();
	}
});

function ProjectList()
{
	this.oAjax = new sack();
	this.resetAjax();
	this.resetTables();
}

ProjectList.prototype = {
	init : function()
	{
	},

	resetAjax : function()
	{
		this.oAjax = new sack('index.php');
		this.oAjax.reset();
		this.oAjax.method = "POST";
		this.oAjax.setVar('module', 'ProjectList');
	},

	//---------------------------------------------------------------------------

	//---------------------------------------------------------------------------

	changeProject : function(iProjectID, iMenuID)
	{
		this.resetAjax();
		this.oAjax.setVar('event', 'on_ProjectListChangeProject');
		this.oAjax.setVar('iProjectID', iProjectID);
		this.oAjax.setVar('iMenuID', iMenuID);
		this.oAjax.runAJAX();

		oThis = this;
		onCompletionAJAX = function () {
			oThis.writeOutput(oAJAX.responseText);
		};
	},

	accept : function()
	{
		this.actionInvitation('accept');
	},

	refuse : function()
	{
		this.actionInvitation('refuse');
	},

	actionInvitation : function(sAction)
	{
		var aItems = this.oInvitations.actionItemListCheckBox();

		if (aItems.length > 0) {
			switch (sAction) {
				case 'accept':
					this.acceptItems(aItems.join(';'));
					break;
				case 'refuse':
					this.refuseItem(aItems.join(';'));
					break;
			}
		} else {
			this.loadView('on_ProjectInvitationNothingSelected');
		}
	},

	loadView : function(sEvent)
	{
		this.oAjax.setVar('event', sEvent);
		this.oAjax.runAJAX();

		oThis = this;
		onCompletionAJAX = function () {
			oThis.writeOutput(oAJAX.responseText);
		};
	},

	acceptItems : function(sInvitationIDs)
	{
		this.resetAjax();
		this.oAjax.setVar('event', 'on_ProjectListAcceptInvitation');
		this.oAjax.setVar('invitationids', sInvitationIDs);
		this.oAjax.runAJAX();

		oThis = this;
		onCompletionAJAX = function () {
			oThis.writeOutput(oAJAX.responseText);
		};
	},

	refuseItem : function(sInvitationIDs)
	{
		this.resetAjax();
		this.oAjax.setVar('event', 'on_ProjectListRefuseInvitation');
		this.oAjax.setVar('invitationids', sInvitationIDs);
		this.oAjax.runAJAX();

		oThis = this;
		onCompletionAJAX = function () {
			oThis.writeOutput(oAJAX.responseText);
		};
	},

	writeOutput : function(sResponse)
	{//alert(sResponse);
		var oResponse = eval(sResponse);

		try {
			if (oResponse.sErrors != "" && oResponse.sErrors != undefined) {
				if (document.popup == null) document.popup = new isPopup();
				document.popup.show("OK", oResponse.sHeadline, 300, 130, oResponse.sErrors);
			}
		} catch (e) {
		}

		try {
			if (oResponse.sContent != "" && oResponse.sContent != undefined) {
				if (oResponse.sContent.sContentProjectList != "" && oResponse.sContent.sContentProjectList != undefined) {
					oProjectListContent = _gel("projectListContent");
					if (oProjectListContent) {
						oProjectListContent.innerHTML = oResponse.sContent.sContentProjectList;
					}
				}

				if (oResponse.sContent.sContentProjectInvitationList != "" && oResponse.sContent.sContentProjectInvitationList != undefined) {
					oProjectInvitationListContent = _gel("projectInvitationListContent");
					if (oProjectInvitationListContent) {
						oProjectInvitationListContent.innerHTML = oResponse.sContent.sContentProjectInvitationList;
					}
				}

				if (oResponse.sContent.sContentCommand != "" && oResponse.sContent.sContentCommand != undefined) {
					if (oResponse.sContent.sContentCommand.indexOf("==") != -1) {
						var aResponse = oResponse.sContent.sContentCommand.split("==");
						var sCommand = aResponse[0];
						var sValue = aResponse[1];
						if (sCommand == 'location') {
							window.location.href = sValue;
						}
					}
				}
			}
		} catch (e) {
		}
	},




	//Everything below is needed for Standard Table!
	changeCheckAllItems : function(sTable, oAllCheckbox)
	{
		switch (sTable) {
			case "ProjectInvitation":
				this.oInvitations.changeCheckAllItems(oAllCheckbox);
				break;
			case "ProjectList":
				this.oProjectList.changeCheckAllItems(oAllCheckbox);
				break;
		}
	},

	changeCheck : function(sTable, oCheckbox)
	{
		switch (sTable) {
			case "ProjectInvitation":
				this.oInvitations.changeCheck(oCheckbox);
				break;
		}
	},

	resetTables : function()
	{
		this.oInvitations = new ProjectListInvitation(this.oAjax, "ProjectInvitation", "ProjectList", "on_ProjectListShowInvitations", "on_ProjectListShowInvitations", "on_ProjectListShowInvitations");
		this.oProjectList = new ProjectOverview(this.oAjax, "ProjectList", "ProjectList", "on_ProjectListShowList", "on_ProjectListShowList", "on_ProjectListShowList");
	},

	tableOrder : function(sTable, sFilterOrder, sFilterOrderDir)
	{
		switch (sTable) {
			case "ProjectInvitation":
				this.oInvitations.tableOrder(sFilterOrder, sFilterOrderDir);
				break;
			case "ProjectList":
				this.oProjectList.tableOrder(sFilterOrder, sFilterOrderDir);
				break;
		}

		this.oAjax.runAJAX();

		oThis = this;
		onCompletionAJAX = function () {
			oThis.writeOutput(oAJAX.responseText);
		};
	},

	filter : function(sTable)
	{
		switch (sTable) {
			case "ProjectInvitation":
				this.oInvitations.filter();
				break;
			case "ProjectList":
				this.oProjectList.filter();
				break;
		}

		this.oAjax.runAJAX();

		oThis = this;
		onCompletionAJAX = function () {
			oThis.writeOutput(oAJAX.responseText);
		};
	},

	loadPage : function(sTable, iPage)
	{
		switch (sTable) {
			case "ProjectList":
				this.oProjectList.loadPage(iPage);
				break;
		}
		this.oAjax.runAJAX();

		oThis = this;
		onCompletionAJAX = function () {
			sResponse = eval(oAJAX.responseText);
			oThis.writeOutput(oAJAX.responseText);
		};
	},

	itemLink : function( sTable, iItemID )
	{
		switch ( sTable ) {
			case "ProjectList":
				this.changeProject( iItemID );
				break;
		}
	},

	actionItemListCheckBox : function(sTable, sAction, sTargetForm, sTargetCheckboxGroup)
	{
		switch (sTable) {
			case "ProjectList":
				this.aItems = this.oProjectList.actionItemListCheckBox();
				break;
		}
		//alert(aItems);

		this.checkBoxAction(this.aItems,sAction);

	},

	checkBoxAction : function(aItems,sAction)
	{

		if (aItems.length > 0) {
			switch (sAction) {
				case 'edit':
					this.ActionSwitch(sAction,aItems[0]);
					break;
				case 'block':
					this.blockItem(aItems.join(';'));
					break;
				case 'unblock':
					this.unblockItem(aItems.join(';'));
					break;
				case 'delete':
					this.loadContent('on_ProjectListDelete', 'language_list_form');;
					break;
			}
		} else {
			alert("No item selected");
			//this.loadView('on_MessengerNoMessageSelected');
		}
	},

	block : function(sTable,sItems)
	{
		switch (sTable) {
			case "ProjectList":
				this.oProjectList.block(sItems);
				break;
		}
		this.oAjax.runAJAX();

		oThis = this;
		onCompletionAJAX = function () {
			sResponse = eval(oAJAX.responseText);
			oThis.writeOutput(oAJAX.responseText,"adminLanguageTable");
		};
	},

	unblock : function(sTable,sItems)
	{
		switch (sTable) {
			case "ProjectList":

				this.oProjectList.unblock(sItems);
				break;
		}
		this.oAjax.runAJAX();

		oThis = this;
		onCompletionAJAX = function () {
			sResponse = eval(oAJAX.responseText);
			oThis.writeOutput(oAJAX.responseText,"adminLanguageTable");
		};
	}




}