function popup(url)
{
	newWindow = window.open(url, "", "height=500,width=710,resizable=no,scrollbars=no");
	newWindow.focus();
}

function kaufm(x) 
{
  var k = (Math.round(x * 100) / 100).toString();
  k += (k.indexOf('.') == -1)? '.00' : '00';
  var p = k.indexOf('.'), m = k.indexOf('-.');
  var f = (p == 0 || m == 0)? '0,' : ',';
  return k.substring(0, p) + f + k.substring(p+1, p+3);
}

function showBookingInformation(text)
{
	document.getElementById('informationLayer').innerHTML = text;
    document.getElementById('informationLayer').style.visibility = "visible";
}

function showPrice(element, user, currency)
{
	var clickedC = element.cellIndex - 1;
	var clickedR = element.parentNode.rowIndex - 1;
	
	if(nodePointer && nodePointer2)
	{
		var n1C = nodePointer.cellIndex - 1;
		var n1R = nodePointer.parentNode.rowIndex - 1;
		
		var n2C = nodePointer2.cellIndex - 1;
		var n2R = nodePointer2.parentNode.rowIndex - 1;
		
		if(clickedC == n1C && n1R <= clickedR && clickedR <= n2R)
		{	
			var table = element.parentNode.parentNode;
			var tableR = table.rows.length - 1;
			
			var sum1 = 0;
			var sum2 = 0;
			for(i = n1R; i <= n2R; ++i)
			{
				sum1 += parseFloat(table.rows[i + 1].cells[clickedC + 1].getAttribute('price1'));
				sum2 += parseFloat(table.rows[i + 1].cells[clickedC + 1].getAttribute('price2'));
			}
			
			document.getElementById('informationLayer').innerHTML = "Basispreis: " + kaufm(sum1) + " " + currency;
			if(user.length > 0)
				document.getElementById('informationLayer').innerHTML += "<br>Sonderpreis: " + kaufm(sum2) + " " + currency;
			document.getElementById('informationLayer').style.visibility = "visible";
		}
	}
}

function showGroups(text)
{
	document.getElementById('informationLayer').innerHTML = text;
    document.getElementById('informationLayer').style.visibility = "visible";
}

function showUser(text)
{
	document.getElementById('informationLayer').innerHTML = text;
    document.getElementById('informationLayer').style.visibility = "visible";
}

function hideInformationLayer()
{
	document.getElementById('informationLayer').style.visibility = "hidden";
}

function changePosition(mouseEvent, pX, pY)
{
	if(document.getElementById('informationLayer').style.visibility == "visible")
	{
		if (!pX) pX = 10;
		if (!pY) pY = 10;
		if (!mouseEvent) var mouseEvent = event;
		if (mouseEvent.pageX || mouseEvent.pageY)
		{
			PositionX = mouseEvent.pageX;
			PositionY = mouseEvent.pageY;
		}
		else if (mouseEvent.clientX || mouseEvent.clientY)
		{
			PositionX = mouseEvent.clientX + document.body.scrollLeft;
			PositionY = mouseEvent.clientY + document.body.scrollTop;
		}
		
		document.getElementById('informationLayer').style.left = (PositionX + pX) + "px";
		document.getElementById('informationLayer').style.top = (PositionY + pY) + "px";
	}
}

var nodePointer;
var nodePointer2;
var doSelection = false;

function disableSelect(mouseEvent)
{
	if (!mouseEvent) 
		var mouseEvent = event;
	if (typeof mouseEvent.preventDefault != 'undefined') 
		mouseEvent.preventDefault();
}

function clearTable(table)
{
	for(i = 0; i != table.rows.length; ++i)
		for(j = 0; j != table.rows[i].cells.length; ++j)
			table.rows[i].cells[j].style.backgroundColor = '';
}

function startSelection(element, tR, tRU, bRU, sB, dB)
{
	var table = element.parentNode.parentNode;
	var tableC = table.rows[0].cells.length - 1;
	var tableR = table.rows.length - 1;
	
	var clickedC = element.cellIndex - 1;
	var clickedR = element.parentNode.rowIndex - 1;
		
	var tRR = tRU / tR;
	var bRR = bRU / tR;
	var sBR = sB / tR;
	
	var markedC;
	var markedR;

	doSelection = true;
		
	rowIndex = Math.min(Math.floor(clickedR / tRR) * tRR, tableR - sBR);
	colIndex = clickedC;
		
	clearTable(table);
			
	nodePointer = table.rows[rowIndex + 1].cells[colIndex + 1];
	nodePointer2 = table.rows[rowIndex + sBR].cells[colIndex + 1];
			
	for(i = 0; i != sBR; ++i) 
		if(table.rows[rowIndex + i + 1].cells[colIndex + 1].bgColor == '')
			table.rows[rowIndex + i + 1].cells[colIndex + 1].style.backgroundColor = '#D4D0C8';
		else
			table.rows[rowIndex + i + 1].cells[colIndex + 1].style.backgroundColor = '#FF0000';
		
	if(document.forms.bookingForm)
	{
		obj1 = document.forms.bookingForm.elements['bookingForm[begin]'];
		obj2 = document.forms.bookingForm.elements['bookingForm[end]'];
		obj3 = document.forms.bookingForm.elements['bookingForm[court]'];
		firstVal = parseInt(obj1.options[0].value);
		lastVal = parseInt(obj1.options[obj1.options.length - 1].value);
		selectedBegin = firstVal + tR * rowIndex;
		selectedEnd = firstVal + tR * rowIndex + sB;
			
		for(i = 0; i != obj1.options.length; ++i)
			if(obj1.options[i].value == selectedBegin)
				obj1.selectedIndex = i;		
				
		while(obj2.options.length > 0)
			obj2.remove(0);
		
		for(i = selectedBegin + sB; i <= lastVal + sB; i += bRU)
		{
			temp = document.createElement('option');
			temp.text = formatTime(i);
			temp.value = i;
			try 
			{
				obj2.add(temp, null); // standards compliant; doesn't work in IE
			}
			catch(ex) 
			{
				obj2.add(temp); // IE only
			}
		}
		
		for(i = 0; i != obj2.options.length; ++i)
			if(obj2.options[i].value == selectedEnd)
				obj2.selectedIndex = i;
				
		obj3.selectedIndex = colIndex;
	}
	
	if(document.getElementById('newBookingLink'))
	{
		obj1 = document.getElementById('newBookingLink');
		hrefString = obj1.getAttribute('href');
		hrefString = hrefString.substr(hrefString.indexOf('?') + 1);
		hrefString = hrefString.split('&');
		
		for(i = 0; i != hrefString.length; ++i)
		{
			hrefString[i] = hrefString[i].split('=');
			if(hrefString[i][0] == 'court')
				hrefString[i][1] = colIndex;
			if(hrefString[i][0] == 'begin')
				hrefString[i][1] = dB + tR * rowIndex;
			if(hrefString[i][0] == 'end')
				hrefString[i][1] = dB + tR * rowIndex + sB;
			hrefString[i] = hrefString[i].join('=');
		}
		
		obj1.href = 'index.php?' + hrefString.join('&');
	}
	
}

function continueSelection(element, tR, tRU, bRU, sB, dB)
{
	var table = element.parentNode.parentNode;
	var tableC = table.rows[0].cells.length - 1;
	var tableR = table.rows.length - 1;
	
	var clickedC = element.cellIndex - 1;
	var clickedR = element.parentNode.rowIndex - 1;
		
	var tRR = tRU / tR;
	var bRR = bRU / tR;
	var sBR = sB / tR;
	
	var markedC;
	var markedR;
	
	if(nodePointer && doSelection)
	{
		var markedC = nodePointer.cellIndex - 1;
		var markedR = nodePointer.parentNode.rowIndex - 1;
		
		if(clickedC == markedC)
		{
			clearTable(table);
			
			rowIndex = markedR;
			colIndex = markedC;
			
			for(i = 0; i != sBR; ++i)
			{
				if(table.rows[rowIndex + i + 1].cells[colIndex + 1].className != "abo")
					table.rows[rowIndex + i + 1].cells[colIndex + 1].style.backgroundColor = '#D4D0C8';
				else
					table.rows[rowIndex + i + 1].cells[colIndex + 1].style.backgroundColor = '#FF0000';
			}
			rowIndex += sBR;
			
			
			while(rowIndex <= clickedR && rowIndex + bRR <= tableR)
			{
				for(i = 0; i != bRR; ++i)
					if(table.rows[rowIndex + i + 1].cells[colIndex + 1].className != "abo")
						table.rows[rowIndex + i + 1].cells[colIndex + 1].style.backgroundColor = '#D4D0C8';
					else
						table.rows[rowIndex + i + 1].cells[colIndex + 1].style.backgroundColor = '#FF0000';
					
				rowIndex += bRR;				
			}
			
			nodePointer2 = table.rows[rowIndex].cells[colIndex + 1];
			
			if(document.forms.bookingForm)
			{
				obj1 = document.forms.bookingForm.elements['bookingForm[begin]'];
				obj2 = document.forms.bookingForm.elements['bookingForm[end]'];
				firstVal = parseInt(obj1.options[0].value);
				selectedEnd = firstVal + tR * rowIndex;
				
				for(i = 0; i != obj2.options.length; ++i)
					if(obj2.options[i].value == selectedEnd)
						obj2.selectedIndex = i;	
			}
			
			if(document.getElementById('newBookingLink'))
			{
				obj1 = document.getElementById('newBookingLink');
				hrefString = obj1.getAttribute('href');
				hrefString = hrefString.substr(hrefString.indexOf('?') + 1);
				hrefString = hrefString.split('&');
				
				for(i = 0; i != hrefString.length; ++i)
				{
					hrefString[i] = hrefString[i].split('=');
					if(hrefString[i][0] == 'end')
						hrefString[i][1] = dB + tR * rowIndex;
					hrefString[i] = hrefString[i].join('=');
				}
				
				obj1.href = 'index.php?' + hrefString.join('&');
			}
		
		}		
	}	
}

function formSelection(tR, tRU, bRU, sB)
{	
	obj1 = document.forms.bookingForm.elements['bookingForm[begin]'];
	obj2 = document.forms.bookingForm.elements['bookingForm[end]'];
	obj3 = document.forms.bookingForm.elements['bookingForm[court]'];
	table = document.getElementById('dayCalendar');
	firstVal = parseInt(obj1.options[0].value);
	
	for(i = 0; i != table.rows.length; ++i)
		for(j = 0; j != table.rows[i].cells.length; ++j)
		{
			table.rows[i].cells[j].onmousedown = null;
			table.rows[i].cells[j].onmouseover = null;
			table.rows[i].cells[j].onmouseup = null;
		}
	
	rowIndexBegin = (obj1.options[obj1.selectedIndex].value - firstVal) / tR;
	rowIndexEnd = (obj2.options[obj2.selectedIndex].value - firstVal - sB) / tR;
	colIndex = obj3.selectedIndex;
	
	targetCell1 = table.rows[rowIndexBegin + 1].cells[colIndex + 1];
	targetCell2 = table.rows[rowIndexEnd + 1].cells[colIndex + 1];
	startSelection(targetCell1, tR, tRU, bRU, sB);
	continueSelection(targetCell2, tR, tRU, bRU, sB);
	doSelection = false;
	
	for(i = 1; i != table.rows.length; ++i)
		for(j = 1; j != table.rows[i].cells.length - 1; ++j)
		{
			
			table.rows[i].cells[j].onmousedown = function() { startSelection(this, tR, tRU, bRU, sB); };
			table.rows[i].cells[j].onmouseover = function() { continueSelection(this, tR, tRU, bRU, sB); };
			table.rows[i].cells[j].onmouseup = function() { doSelection = false; };
		}
}

function formatTime(minutes)
{
	hours = Math.floor(minutes / 60);
	minutes = minutes - hours * 60;
	return (String(hours).length == 2 ? String(hours) : "0" + String(hours)) + ":" + (String(minutes).length == 2 ? String(minutes) : "0" + String(minutes)); 
}

