/************************************************************************************************/
/*** Tennis Helper Class ************************************************************************/
/************************************************************************************************/

function Tennis()
{
	this.bookingPannelVisible = false;
	this.user_id = -1;
	this.place = 0;
	this.date = "";
	this.time = 0;
	this.startdate = "";

	this.init = function()
	{
		this.hideBookingPannel();
	}

	this.showBookingPannel = function(user_id, obj, b_place, b_day, b_date, b_date_show, b_time, startdate) {
		var div = document.getElementById('booking_pannel');
		if (div)
		{
			this.move(findPosX(obj) + getObjWidth(obj)+3, findPosY(obj), 'booking_pannel');
			div.style.visibility='visible';
			this.bookingPannelVisible = true;

			document.getElementById('booking_place').innerHTML = b_place;
			document.getElementById('booking_date').innerHTML = b_day + ", " + b_date_show;
			document.getElementById('booking_time').innerHTML = b_time + ":00";

			this.user_id = user_id;
			this.place = b_place;
			this.date = b_date;
			this.time = b_time;
			this.startdate = startdate;

			var enddate = document.getElementById('booking_enddate');
			if (enddate) enddate.value = b_date;
		}
	}

	this.hideBookingPannel = function()
	{
		var div = document.getElementById('booking_pannel');
		if (div)
		{
			div.style.left = "-2000px";
			div.style.top = "-2000px";
			div.style.visibility='hidden';
			this.bookingPannelVisible = false;
		}
	}

	this.move = function(x, y, id) {

		var div = document.getElementById(id);
		if (div)
		{
			var innersize = getInnerSize();

			var width = getObjWidth(div);
			var divright = x + width - getXOffset();

			var height = getObjHeight(div);
			var divbottom = y + height - getYOffset();

			var xoffset = 0;
			var yoffset = 0;
			if (divright > (innersize.width-20)) xoffset = (divright - (innersize.width-20)); //width;
			if (divbottom > innersize.height) yoffset = (divbottom - innersize.height); //height;

			div.style.left = (x-xoffset)+"px";
			div.style.top = (y-yoffset)+"px";
		}
	}

	this.doBooking = function()
	{
		var info_text = "";
		var info = document.getElementById('booking_description');
		if (info) info_text = info.value;

		var booking_type_text = "0";
		var booking_type = document.getElementById('booking_type');
		if (booking_type) booking_type_text = booking_type.value;

		var booking_enddate = document.getElementById('booking_enddate');
		if (booking_enddate && booking_type.value==2 && booking_enddate.value.length==0) {
			alert("Bitte geben Sie ein gültiges Datum ein!");
			return;
		}

		var link="doreservation.php?p="+this.place+"&date="+this.date+"&time="+this.time+"&info="+info_text+"&type="+booking_type_text;

		var interval_type = document.getElementById('booking_abo_type');
		if (interval_type && interval_type.style.display != "none") {
			link += "&interval="+interval_type.value;
		}

		var booking_userid = document.getElementById('booking_userid');
		if (booking_userid) {
			link += "&u="+booking_userid.value;
		} else {
			link += "&u="+this.user_id;
		}

		if (booking_enddate) {
			link += "&enddate="+booking_enddate.value;
		}

		if (this.startdate) {
			link += "&startdate="+this.startdate;
		}

		this.hideBookingPannel();

		// open file now
		window.location.href=link;
	}

	this.bookingTypeChanged = function()
	{
		var booking_abo_type = document.getElementById('booking_abo_type');
		var booking_enddatetr = document.getElementById('booking_enddatetr');
		var booking_type = document.getElementById('booking_type');
		var booking_desc_table = document.getElementById('booking_desc_table');

		if (booking_type && booking_type.value==0) {
			document.getElementById('booking_interval').style.display = "none";
			document.getElementById('booking_enddatetr').style.display = "none";
			booking_desc_table.style.display ="";
		} else {
			document.getElementById('booking_interval').style.display = "";
			booking_desc_table.style.display ="none";
			if (booking_type.value==2) {
				document.getElementById('booking_enddatetr').style.display = "";
			} else {
				document.getElementById('booking_enddatetr').style.display = "none";
			}
		}
	}

	// Reservierung neu für Verschieben neu aufbauen.
	this.moveReservation = function(reservation_id, type)
	{
		var link="?show=Verschieben&res_id="+reservation_id+"&res_type="+type;
		window.location.href=link;
	}

	this.doMove = function(type, res_id, b_place, b_day, b_date, b_time)
	{
		var link="domove.php?p="+b_place+"&date="+b_date+"&time="+b_time+"&res_id="+res_id+"&type="+type;
		//alert(link);
		window.location.href=link;
	}
}

/************************************************************************************************/
/*** Tennis-User Helper Class *******************************************************************/
/************************************************************************************************/

function TennisUser()
{
	this.user_id = 0;

	this.init = function()
	{
		this.hideUserPannel();
	}

	this.openUserPannelRel = function(user_id, obj)
	{
		var div = document.getElementById('user_pannel');
		if (div) {
			this.move(findPosX(obj) + getObjWidth(obj) + 3, findPosY(obj), 'user_pannel');
			this.open(div, user_id);
		}
	}

	this.openUserPannel = function(user_id, x, y)
	{
		var div = document.getElementById('user_pannel');
		if (div) {
			this.move(x + 16, y + 16, 'user_pannel');
			this.open(div, user_id);
		}
	}

	this.open = function(div, user_id)
	{
		if (g_TennisRecharge) g_TennisRecharge.hide();
		if (g_TennisChangeUserPsw) g_TennisChangeUserPsw.hide();

		this.user_id = user_id;
		div.style.visibility='visible';
		var query = "do=load&user_id="+user_id;

		if (user_id != -1)
			performQuery("user_xml.php", query, this.updatePannel);
		else
		{
			document.getElementById('user_code').value = "";
			document.getElementById('user_vname').value = "";
			document.getElementById('user_nname').value = "";
			document.getElementById('user_street').value = "";
			document.getElementById('user_plz').value = "";
			document.getElementById('user_email').value = "";
			document.getElementById('user_tel').value = "";
		}
	}

	this.move = function(x, y, id) {

		var div = document.getElementById(id);
		if (div) {
			var innersize = getInnerSize();

			var width = getObjWidth(div);
			var divright = x + width - getXOffset();

			var height = getObjHeight(div);
			var divbottom = y + height - getYOffset();

			var xoffset = 0;
			var yoffset = 0;
			if (divright > (innersize.width-20)) xoffset = (divright - (innersize.width-20)); //width;
			if (divbottom > innersize.height) yoffset = (divbottom - innersize.height); //height;

			div.style.left = (x-xoffset)+"px";
			div.style.top = (y-yoffset)+"px";
		}
	}

	this.hideUserPannel = function()
	{
		var div = document.getElementById('user_pannel');
		if (div) {
			div.style.left = "-2000px";
			div.style.top = "-2000px";
			div.style.visibility='hidden';
		}
	}

	this.saveUser = function()
	{
		var code = document.getElementById('user_code').value;
		var vname = document.getElementById('user_vname').value;
		var nname = document.getElementById('user_nname').value;
		var street = document.getElementById('user_street').value;
		var plz = document.getElementById('user_plz').value;
		var email = document.getElementById('user_email').value;
		var tel = document.getElementById('user_tel').value;
		var admin = document.getElementById('user_type').value;

		var query = "do=update&user_id="+this.user_id;
		query += "&code="+code;
		query += "&vname="+URLEncode(vname);
		query += "&nname="+URLEncode(nname);
		query += "&street="+URLEncode(street);
		query += "&plz="+plz;
		query += "&email="+URLEncode(email);
		query += "&tel="+URLEncode(tel);
		query += "&admin="+URLEncode(admin);

		performQuery("user_xml.php", query, this.saveUserResponse);
	}

	this.saveUserResponse = function(xml)
	{
		var error = xml.getElementsByTagName('error');
		if (error.length>0) {
			alert(error[0].getAttribute('desc'));
		}

		g_TennisUser.hideUserPannel();
		location.reload();
	}

	this.updatePannel = function(xml)
	{
		var user = xml.getElementsByTagName('user');
		if (user.length>0) {
			var admin = user[0].getAttribute('type');

			document.getElementById('user_type').selectedIndex = user[0].getAttribute('type');
			document.getElementById('user_code').value = user[0].getAttribute('code');
			document.getElementById('user_vname').value = user[0].getAttribute('vname');
			document.getElementById('user_nname').value = user[0].getAttribute('nname');
			document.getElementById('user_street').value = user[0].getAttribute('street');
			document.getElementById('user_plz').value = user[0].getAttribute('plz');
			document.getElementById('user_email').value = user[0].getAttribute('email');
			document.getElementById('user_tel').value = user[0].getAttribute('tel');
		} else {
			alert("Benutzer nicht gefunden!");
		}
	}
}


/************************************************************************************************/
/*** Tennis-Saison Helper Class *******************************************************************/
/************************************************************************************************/

function TennisSaison()
{
	this.saison_id = 0;

	this.init = function()
	{
		this.hidePannel();
	}

	this.openSaisonPannelRel = function(saison_id, obj)
	{
		var div = document.getElementById('saison_pannel');
		if (div) {
			this.move(findPosX(obj) + getObjWidth(obj) + 3, findPosY(obj), 'saison_pannel');
			this.open(div, saison_id);
		}
	}

	this.openSaisonPannel = function(saison_id, x, y)
	{
		var div = document.getElementById('saison_pannel');
		if (div) {
			this.move(x + 16, y + 16, 'saison_pannel');
			this.open(div, saison_id);
		}
	}

	this.open = function(div, saison_id)
	{
		this.saison_id = saison_id;
		div.style.visibility='visible';
		var query = "do=load&saison_id="+saison_id;

		if (saison_id != -1)
			performQuery("saison_xml.php", query, this.updatePannel);
		else
		{
			document.getElementById('saison_name').value = "";
			document.getElementById('saison_von').value = "";
			document.getElementById('saison_bis').value = "";
		}
	}

	this.hidePannel = function()
	{
		var div = document.getElementById('saison_pannel');
		if (div) {
			div.style.left = "-2000px";
			div.style.top = "-2000px";
			div.style.visibility='hidden';
		}
	}

	this.move = function(x, y, id) {

		var div = document.getElementById(id);
		if (div) {
			var innersize = getInnerSize();

			var width = getObjWidth(div);
			var divright = x + width - getXOffset();

			var height = getObjHeight(div);
			var divbottom = y + height - getYOffset();

			var xoffset = 0;
			var yoffset = 0;
			if (divright > (innersize.width-20)) xoffset = (divright - (innersize.width-20)); //width;
			if (divbottom > innersize.height) yoffset = (divbottom - innersize.height); //height;

			div.style.left = (x-xoffset)+"px";
			div.style.top = (y-yoffset)+"px";
		}
	}

	this.updatePannel = function(xml)
	{
		var user = xml.getElementsByTagName('saison');
		if (user.length>0) {
			document.getElementById('saison_name').value = user[0].getAttribute('name');
			document.getElementById('saison_von').value = user[0].getAttribute('von');
			document.getElementById('saison_bis').value = user[0].getAttribute('bis');
		} else {
			alert("Saison nicht gefunden!");
		}
	}

	this.save = function()
	{
		var saison_name = document.getElementById('saison_name').value;
		var saison_von = document.getElementById('saison_von').value;
		var saison_bis = document.getElementById('saison_bis').value;

		var query = "do=update&saison_id="+this.saison_id;
		query += "&name="+URLEncode(saison_name);
		query += "&from="+URLEncode(saison_von);
		query += "&to="+URLEncode(saison_bis);

		performQuery("saison_xml.php", query, this.saveSaisonResponse);
	}

	this.saveSaisonResponse = function(xml)
	{
		var error = xml.getElementsByTagName('error');
		if (error.length>0) {
			alert(error[0].getAttribute('desc'));
		}

		g_TennisSaison.hidePannel();
		location.reload();
	}
}

/************************************************************************************************/
/*** Tennis-Recharge Helper Class *******************************************************************/
/************************************************************************************************/

function TennisRecharge()
{
	this.user_id = 0;

	this.init = function()
	{
		this.hide();
	}

	this.openRel = function(user_id, obj)
	{
		var div = document.getElementById('recharge_pannel');
		if (div) {
			this.move(findPosX(obj) + getObjWidth(obj) + 3, findPosY(obj), 'recharge_pannel');
			this.open_int(div, user_id);
		}
	}

	this.open = function(user_id, x, y)
	{
		var div = document.getElementById('recharge_pannel');
		if (div) {
			this.move(x + 16, y + 16, 'recharge_pannel');
			this.open_int(div, user_id);
		}
	}

	this.open_int = function(div, user_id)
	{
		if (g_TennisUser) g_TennisUser.hideUserPannel();
		if (g_TennisChangeUserPsw) g_TennisChangeUserPsw.hide();

		this.user_id = user_id;
		div.style.visibility='visible';

		var jetzt = new Date();
		var stringdate = jetzt.getFullYear() + "-" + prependZero(jetzt.getMonth()+1) + "-" + prependZero(jetzt.getDate());

		document.getElementById('recharge_date').value = stringdate;
		document.getElementById('recharge_sum').value = "120";
	}

	function prependZero(temp)
	{
		var tempstr = String(temp);
		if (tempstr.length<=1)
			return "0"+tempstr;
		else
			return tempstr;
	}

	this.hide = function()
	{
		var div = document.getElementById('recharge_pannel');
		if (div) {
			div.style.left = "-2000px";
			div.style.top = "-2000px";
			div.style.visibility='hidden';
		}
	}

	this.move = function(x, y, id) {

		var div = document.getElementById(id);
		if (div) {
			var innersize = getInnerSize();

			var width = getObjWidth(div);
			var divright = x + width - getXOffset();

			var height = getObjHeight(div);
			var divbottom = y + height - getYOffset();

			var xoffset = 0;
			var yoffset = 0;
			if (divright > (innersize.width-20)) xoffset = (divright - (innersize.width-20)); //width;
			if (divbottom > innersize.height) yoffset = (divbottom - innersize.height); //height;

			div.style.left = (x-xoffset)+"px";
			div.style.top = (y-yoffset)+"px";
		}
	}

	this.save = function()
	{
		var date = document.getElementById('recharge_date').value;
		var sum = document.getElementById('recharge_sum').value;

		var query = "user_id="+this.user_id;
		query += "&date="+URLEncode(date);
		query += "&sum="+URLEncode(sum);

		performQuery("recharge_xml.php", query, this.saveResponse);
	}

	this.saveResponse = function(xml)
	{
		var error = xml.getElementsByTagName('error');
		if (error.length>0) {
			alert(error[0].getAttribute('desc'));
			return;
		}

		alert("Die Summe wurde erfolgreich aufgeladen");
		g_TennisRecharge.hide();
	}
}


/************************************************************************************************/
/*** TennisChangeUserPsw ************************************************************************/
/************************************************************************************************/

function TennisChangeUserPsw()
{
	this.user_id = 0;

	this.init = function()
	{
		this.hide();
	}

	this.openRel = function(user_id, obj)
	{
		var div = document.getElementById('changepsw_pannel');
		if (div) {
			this.move(findPosX(obj) + getObjWidth(obj) + 3, findPosY(obj), 'changepsw_pannel');
			this.open_int(div, user_id);
		}
	}

	this.open = function(user_id, x, y)
	{
		var div = document.getElementById('changepsw_pannel');
		if (div) {
			this.move(x + 16, y + 16, 'changepsw_pannel');
			this.open_int(div, user_id);
		}
	}

	this.open_int = function(div, user_id)
	{
		if (g_TennisUser) g_TennisUser.hideUserPannel();
		if (g_TennisRecharge) g_TennisRecharge.hide();

		document.getElementById('old_password').innerHTML = "Loading..."
		document.getElementById('password').value = "";
		document.getElementById('password_confirm').value = "";

		this.user_id = user_id;
		div.style.visibility='visible';

		var query = "do=load&user_id="+user_id;
		performQuery("changepsw_xml.php", query, this.updatePannel);
	}

	function prependZero(temp)
	{
		var tempstr = String(temp);
		if (tempstr.length<=1)
			return "0"+tempstr;
		else
			return tempstr;
	}

	this.updatePannel = function(xml)
	{
		var password = xml.getElementsByTagName('password');
		if (password.length>0) {
			document.getElementById('old_password').innerHTML = password[0].getAttribute('pwd');
		}
	}

	this.hide = function()
	{
		var div = document.getElementById('changepsw_pannel');
		if (div) {
			div.style.left = "-2000px";
			div.style.top = "-2000px";
			div.style.visibility='hidden';
		}
	}

	this.move = function(x, y, id) {

		var div = document.getElementById(id);
		if (div) {
			var innersize = getInnerSize();

			var width = getObjWidth(div);
			var divright = x + width - getXOffset();

			var height = getObjHeight(div);
			var divbottom = y + height - getYOffset();

			var xoffset = 0;
			var yoffset = 0;
			if (divright > (innersize.width-20)) xoffset = (divright - (innersize.width-20)); //width;
			if (divbottom > innersize.height) yoffset = (divbottom - innersize.height); //height;

			div.style.left = (x-xoffset)+"px";
			div.style.top = (y-yoffset)+"px";
		}
	}

	this.save = function()
	{
		var password = document.getElementById('password').value;
		var password_confirm = document.getElementById('password_confirm').value;

		var query = "user_id="+this.user_id;
		query += "&password="+URLEncode(password);
		query += "&password_confirm="+URLEncode(password_confirm);

		performQuery("changepsw_xml.php", query, this.saveResponse);
	}

	this.saveResponse = function(xml)
	{
		var error = xml.getElementsByTagName('error');
		if (error.length>0) {
			alert(error[0].getAttribute('desc'));
			return;
		}

		alert("Das Passwort wurde erfolgreich geändert.");
		g_TennisChangeUserPsw.hide();
	}
}


/************************************************************************************************/
/*** xmlhttp Helper function ********************************************************************/
/************************************************************************************************/

function performQuery(filename, query, trigger)
{
	var xmlhttp = new XMLHttpRequest();
	xmlhttp.open("POST", filename, true);

	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState && xmlhttp.readyState == 4) {
			if (xmlhttp.status && xmlhttp.status == 200) {
				if (trigger != null)
					trigger(xmlhttp.responseXML);
			}
		}
	}

	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.send(query);
}

