/*--------------------------------------------------------------------------
// _members object
//..........................................................................
//		com object for owner _iPhone and _group
*/
function _members () {
	// this is a singelton object
	member = this;
	// the member record list
	var memberships = [];
	// reset all member tables
	for ( var i = 0; i < tables_container.length; ++i )
		document.getElementById(tables_container[i]).innerHTML = "";

	//--------------------------------------------------------------------------
	//  fromDate														public
	//..........................................................................
	//	returns a start date string
	this.fromDate = function ( ) {
		return member_from_cal.selectedDate.timestamp();
	}

	//--------------------------------------------------------------------------
	//  untilDate														public
	//..........................................................................
	//	returns a stop (end) date string
	this.untilDate = function ( ) {
		return member_until_cal.selectedDate.timestamp();
	}

	//--------------------------------------------------------------------------
	//  save															public
	//..........................................................................
	//	save a new group record to the server
	this.save = function ( ) {
		if ( inputChecked() ) {
			ajax("upload.php",
				 "job=save_member" +
				 "&user="	+ iPhone.user + 
				 "&group="	+ groups.selected() + 
 				 "&from="	+ this.fromDate() + 
 				 "&until="	+ this.untilDate(),
 				  function ( reply) {
 				  	if ( "OK" != reply )
 				  		alert (reply);
 				  	new _members();
 				  } );
		}
	}
	function inputChecked ( ) {
		if ( ! iPhone.is_valid() )
			alert ( _s("Es muss eine gueltige iPhone ID eingetragen werden.") );
		// do we have a user selected?
		else if ( !iPhone.has_user_selected() )
			alert ( _s("Es ist kein Benutzer ausgewaehlt.") );
		// do we have a category selected
		else if ( categories.none_selected() )
			alert ( _s("Es ist keine Kategorie ausgewaehlt.") );
		// do we have a group selected
		else if ( groups.none_selected() )
			alert ( _s("Es ist keine Gruppe ausgewaehlt.") );
		else if ( ( member.untilDate() - now(true) ) < 86400 )
			return confirm(_s("Ist diese Mitgliedschaft nur heute gueltig?"));
		else
			return true;
		return false;
	}

	//--------------------------------------------------------------------------
	//  remove															public
	//..........................................................................
	//	remove a membership record from the database
	//		index = index into list[]
	this.remove = function ( index ) {
		if ( deleteApproved ( memberships[index].group, memberships[index].id ) )
			ajax("upload.php","job=delete_member&id=" + memberships[index].id,
					function ( reply) {
					  	if ( "OK" == reply )
		 					new _members;
		 				else
					  		alert (reply);
					} );
	}
	// confirm the delete command
	function deleteApproved ( name, id ) {
		if ( spamCheck() )
			return confirm(sprintf(_s("Wollen Sie die Mitgliedschaft in der Gruppe %s (%d) loeschen?"),name,id));
		alert(_s("Du musst noch das Resultat in der Spamschutz Rechnung eintragen."));
		return false;
	}

	//--------------------------------------------------------------------------
	//  makeTable														private
	//..........................................................................
	// make the table html
	function makeTable ( memberships ) {
		html  = "<table cellspacing='0'>" +
					"<caption>" + _s('Bestehende Mitgliedschaften') + "</caption>" +
					"<thead>" +
						"<tr>" +
							"<th></th>" +
							"<th class='zahl'>" + _s('ID') + "</th>" +
							"<th class='txt'>" + _s('Kategorie') + "</th>" +
							"<th class='txt'>" + _s('Gruppe') + "</th>" +
							"<th class='txt'>" + _s('Start') + "</th>" +
							"<th class='txt'>" + _s('Ende') + "</th>" +
						"</tr>" +
					"</thead>" +
					"<tbody>";
		var start = new Date();
		var end = new Date();
		for ( var i = 0; i < memberships.length; ++i ) {
			start.setUnixDate(memberships[i].start);
			end.setUnixDate(memberships[i].end);
			html += "<tr class='" + rowClass[i%2] + "'>" +
						"<td class='delete' onclick=\"member.remove(" + i + ")\">" + _s('Loeschen') + "</td>" +
						"<td class='zahl'>" + memberships[i].id + "</td>" +
						"<td class='txt'>" + memberships[i].cat + "</td>" +
						"<td class='txt'>" + memberships[i].group + "</td>" +
						"<td class='txt'>" + start.localDate() + "</td>" +
						"<td class='txt'>" + end.localDate() + "</td>" +
					"</tr>";
		}
		html += 	"</tbody>" +
				"</table>";
		return html;
	}
	// memberships only apply to users --> no user - no member object
	if ( ! iPhone.has_user_selected() ) return;
	// get all memberships for the selected user
	ajax("download.php","job=members&format=jason&user=" + iPhone.user, 
		function ( reply ) {
			memberships = eval ( '(' + reply + ')' );
			if ( memberships.length > 0 ) {
				for ( var i = 0; i < memberships.length; ++i ) {
					memberships[i].group = memberships[i].group;
					memberships[i].cat = memberships[i].cat;
//					memberships[i].group = base64_decode ( memberships[i].group );
//					memberships[i].cat = base64_decode ( memberships[i].cat );
				}
				var html = makeTable ( memberships );
				for ( var i = 0; i < tables_container.length; ++i ) {
					document.getElementById(tables_container[i]).innerHTML = html;
				}
			}
		});
}

